From a310fe30079ea8f484e596d77c5132d3f73b517c Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Fri, 29 Oct 2010 22:18:52 -0700 Subject: Adding doxyxml python package. Acts as interface to doxygen-generated xml. --- config/grc_gnuradio_core.m4 | 6 +- gnuradio-core/src/python/gnuradio/Makefile.am | 2 +- .../src/python/gnuradio/utils/Makefile.am | 41 + .../src/python/gnuradio/utils/__init__.py | 0 .../src/python/gnuradio/utils/doxyxml/__init__.py | 62 + .../src/python/gnuradio/utils/doxyxml/base.py | 198 + .../src/python/gnuradio/utils/doxyxml/doxyindex.py | 216 + .../python/gnuradio/utils/doxyxml/example/Doxyfile | 1551 ++++ .../gnuradio/utils/doxyxml/example/aadvark.cc | 29 + .../gnuradio/utils/doxyxml/example/aadvark.h | 23 + .../utils/doxyxml/example/xml/aadvark_8cc.xml | 88 + .../utils/doxyxml/example/xml/aadvark_8h.xml | 72 + .../utils/doxyxml/example/xml/classAadvark.xml | 86 + .../utils/doxyxml/example/xml/combine.xslt | 15 + .../utils/doxyxml/example/xml/compound.xsd | 814 ++ .../gnuradio/utils/doxyxml/example/xml/index.xml | 17 + .../gnuradio/utils/doxyxml/example/xml/index.xsd | 66 + .../gnuradio/utils/doxyxml/generated/__init__.py | 7 + .../gnuradio/utils/doxyxml/generated/compound.py | 503 ++ .../utils/doxyxml/generated/compoundsuper.py | 8342 ++++++++++++++++++++ .../gnuradio/utils/doxyxml/generated/index.py | 77 + .../gnuradio/utils/doxyxml/generated/indexsuper.py | 523 ++ .../src/python/gnuradio/utils/doxyxml/text.py | 36 + .../src/python/gnuradio/utils/run_tests.in | 16 + 24 files changed, 12788 insertions(+), 2 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/utils/Makefile.am create mode 100644 gnuradio-core/src/python/gnuradio/utils/__init__.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py create mode 100644 gnuradio-core/src/python/gnuradio/utils/run_tests.in diff --git a/config/grc_gnuradio_core.m4 b/config/grc_gnuradio_core.m4 index 269634324..a116b882c 100644 --- a/config/grc_gnuradio_core.m4 +++ b/config/grc_gnuradio_core.m4 @@ -104,12 +104,16 @@ AC_DEFUN([GRC_GNURADIO_CORE],[ gnuradio-core/src/python/gnuradio/gru/Makefile \ gnuradio-core/src/python/gnuradio/gruimpl/Makefile \ gnuradio-core/src/python/gnuradio/vocoder/Makefile \ + gnuradio-core/src/python/gnuradio/utils/run_tests \ + gnuradio-core/src/python/gnuradio/utils/Makefile \ gnuradio-core/src/tests/Makefile \ gnuradio-core/src/utils/Makefile \ ]) GRC_BUILD_CONDITIONAL(gnuradio-core, [ dnl run_tests is created from run_tests.in. Make it executable. - AC_CONFIG_COMMANDS([run_tests_core],[chmod +x gnuradio-core/src/python/gnuradio/gr/run_tests]) + AC_CONFIG_COMMANDS([run_tests_core],[chmod +x gnuradio-core/src/python/gnuradio/gr/run_tests]) \ + AC_CONFIG_COMMANDS([run_tests_utils],[chmod +x gnuradio-core/src/python/gnuradio/utils/run_tests]) ]) + ]) diff --git a/gnuradio-core/src/python/gnuradio/Makefile.am b/gnuradio-core/src/python/gnuradio/Makefile.am index a3f3518de..55a2ba1df 100644 --- a/gnuradio-core/src/python/gnuradio/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/Makefile.am @@ -22,7 +22,7 @@ include $(top_srcdir)/Makefile.common if PYTHON -SUBDIRS = gr gru gruimpl blks2 blks2impl vocoder +SUBDIRS = gr gru gruimpl blks2 blks2impl vocoder utils grpython_PYTHON = \ __init__.py \ diff --git a/gnuradio-core/src/python/gnuradio/utils/Makefile.am b/gnuradio-core/src/python/gnuradio/utils/Makefile.am new file mode 100644 index 000000000..ed6958669 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/Makefile.am @@ -0,0 +1,41 @@ +# +# Copyright 2007,2009 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. +# + +include $(top_srcdir)/Makefile.common + +if PYTHON +utilspythondir = $(grpythondir)/utils + +TESTS = \ + run_tests + +nobase_utilspython_PYTHON = \ + __init__.py \ + doxyxml/__init__.py \ + doxyxml/base.py \ + doxyxml/doxyindex.py \ + doxyxml/text.py \ + doxyxml/generated/__init__.py \ + doxyxml/generated/index.py \ + doxyxml/generated/indexsuper.py \ + doxyxml/generated/compound.py \ + doxyxml/generated/compoundsuper.py +endif \ No newline at end of file diff --git a/gnuradio-core/src/python/gnuradio/utils/__init__.py b/gnuradio-core/src/python/gnuradio/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py new file mode 100644 index 000000000..b2560b6e0 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py @@ -0,0 +1,62 @@ +""" +Python interface to contents of doxygen xml documentation. + +Example use: +See the contents of the example folder for the C++ and +doxygen-generated xml used in this example. + +>>> # Parse the doxygen docs. +>>> import os +>>> this_dir = os.path.dirname(globals()['__file__']) +>>> xml_path = this_dir + "/example/xml/" +>>> di = DoxyIndex(xml_path) + +Get a list of all top-level objects. + +>>> print([mem.name() for mem in di.members()]) +[u'Aadvark', u'aadvarky_enough', u'main'] + +Get all functions. + +>>> print([mem.name() for mem in di.in_category(DoxyFunction)]) +[u'aadvarky_enough', u'main'] + +Check if an object is present. + +>>> di.has_member(u'Aadvark') +True +>>> di.has_member(u'Fish') +False + +Get an item by name and check its properties. + +>>> aad = di.get_member(u'Aadvark') +>>> print(aad.brief_description) +Models the mammal Aadvark. +>>> print(aad.detailed_description) +Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. + +This line is uninformative and is only to test line breaks in the comments. +>>> [mem.name() for mem in aad.members()] +[u'aadvarkness', u'print', u'Aadvark', u'get_aadvarkness'] +>>> aad.get_member(u'print').brief_description +u'Outputs the vital aadvark statistics.' + +""" + +from gnuradio.utils.doxyxml.doxyindex import DoxyIndex, DoxyFunction, DoxyParam, DoxyClass, DoxyFile, DoxyNamespace, DoxyGroup, DoxyFriend, DoxyOther + +def _test(): + import os + this_dir = os.path.dirname(globals()['__file__']) + xml_path = this_dir + "/example/xml/" + di = DoxyIndex(xml_path) + # Get the Aadvark class + aad = di.get_member('Aadvark') + aad.brief_description + import doctest + return doctest.testmod() + +if __name__ == "__main__": + _test() + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py new file mode 100644 index 000000000..4d4ea2c75 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py @@ -0,0 +1,198 @@ +""" +A base class is created. + +Classes based upon this are used to make more user-friendly interfaces +to the doxygen xml docs than the generated classes provide. +""" + +import os +import pdb + +from xml.parsers.expat import ExpatError + +from gnuradio.utils.doxyxml.generated import compound + + +class Base(object): + + class Duplicate(StandardError): + pass + + class NoSuchMember(StandardError): + pass + + class ParsingError(StandardError): + pass + + def __init__(self, parse_data, top=None): + self._parsed = False + self._error = False + self._parse_data = parse_data + self._members = [] + self._dict_members = {} + self._in_category = {} + self._data = {} + if top is not None: + self._xml_path = top._xml_path + # Set up holder of references + else: + top = self + self._refs = {} + self._xml_path = parse_data + self.top = top + + @classmethod + def from_refid(cls, refid, top=None): + """ Instantiate class from a refid rather than parsing object. """ + # First check to see if its already been instantiated. + if top is not None and refid in top._refs: + return top._refs[refid] + # Otherwise create a new instance and set refid. + inst = cls(None, top=top) + inst.refid = refid + inst.add_ref(inst) + return inst + + @classmethod + def from_parse_data(cls, parse_data, top=None): + refid = getattr(parse_data, 'refid', None) + if refid is not None and top is not None and refid in top._refs: + return top._refs[refid] + inst = cls(parse_data, top=top) + if refid is not None: + inst.refid = refid + inst.add_ref(inst) + return inst + + def add_ref(self, obj): + if hasattr(obj, 'refid'): + self.top._refs[obj.refid] = obj + + mem_classes = [] + + def get_cls(self, mem): + for cls in self.mem_classes: + if cls.can_parse(mem): + return cls + raise StandardError('Did not find a class for this object.') + + def convert_mem(self, mem): + cls = self.get_cls(mem) + converted = cls.from_parse_data(mem, self.top) + if converted is None: + raise StandardError('No class matched this object.') + self.add_ref(converted) + return converted + + @classmethod + def includes(cls, inst): + return isinstance(inst, cls) + + @classmethod + def can_parse(cls, obj): + return False + + def _parse(self): + self._parsed = True + + def _get_dict_members(self, cat=None): + """ + For given category a dictionary is returned mapping member names to + members of that category. For names that are duplicated the name is + mapped to None. + """ + self.confirm_no_error() + if cat not in self._dict_members: + new_dict = {} + for mem in self.in_category(cat): + if mem.name() not in new_dict: + new_dict[mem.name()] = mem + else: + new_dict[mem.name()] = self.Duplicate + self._dict_members[cat] = new_dict + return self._dict_members[cat] + + def in_category(self, cat): + self.confirm_no_error() + if cat is None: + return self._members + if cat not in self._in_category: + self._in_category[cat] = [mem for mem in self._members + if cat.includes(mem)] + return self._in_category[cat] + + def get_member(self, name, cat=None): + self.confirm_no_error() + # Check if it's in a namespace or class. + bits = name.split('::') + first = bits[0] + rest = '::'.join(bits[1:]) + member = self._get_dict_members(cat).get(first, self.NoSuchMember) + # Raise any errors that are returned. + if member in set([self.NoSuchMember, self.Duplicate]): + if member == self.Duplicate: + import pdb + pdb.set_trace() + raise member() + if rest: + return member.get_member(rest, cat=cat) + return member + + def has_member(self, name, cat=None): + try: + mem = self.get_member(name, cat=cat) + return True + except self.NoSuchMember: + return False + + def data(self): + self.confirm_no_error() + return self._data + + def members(self): + self.confirm_no_error() + return self._members + + def process_memberdefs(self): + mdtss = [] + for sec in self._retrieved_data.compounddef.sectiondef: + mdtss += sec.memberdef + # At the moment we lose all information associated with sections. + # Sometimes a memberdef is in several sectiondef. + # We make sure we don't get duplicates here. + uniques = set([]) + for mem in mdtss: + converted = self.convert_mem(mem) + pair = (mem.name, mem.__class__) + if pair not in uniques: + uniques.add(pair) + self._members.append(converted) + + def retrieve_data(self): + filename = os.path.join(self._xml_path, self.refid + '.xml') + try: + self._retrieved_data = compound.parse(filename) + except ExpatError: + print('Error in xml in file %s' % filename) + self._error = True + self._retrieved_data = None + + def check_parsed(self): + if not self._parsed: + self._parse() + + def confirm_no_error(self): + self.check_parsed() + if self._error: + raise self.ParsingError() + + def error(self): + self.check_parsed() + return self._error + + def name(self): + # first see if we can do it without processing. + if self._parse_data is not None: + return self._parse_data.name + self.check_parsed() + return self._retrieved_data.compounddef.name diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py new file mode 100644 index 000000000..c9076a26a --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py @@ -0,0 +1,216 @@ +""" +Classes providing more user-friendly interfaces to the doxygen xml +docs than the generated classes provide. +""" + +import os + +from gnuradio.utils.doxyxml.generated import index +from gnuradio.utils.doxyxml.base import Base +from gnuradio.utils.doxyxml.text import description + +class DoxyIndex(Base): + """ + Parses a doxygen xml directory. + """ + + __module__ = "gnuradio.utils.doxyxml" + + def _parse(self): + if self._parsed: + return + super(DoxyIndex, self)._parse() + 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 + # from the parent rather than having to go through the file + # object. I'm not interested in the file object and will + # not add it to the index. + if self.get_cls(mem) == DoxyFile: + if mem.name.endswith('.h'): + self._members += converted.members() + else: + self._members.append(converted) + + +def generate_swig_doc_i(self): + """ + %feature("docstring") gr_make_align_on_samplenumbers_ss::align_state " + Wraps the C++: gr_align_on_samplenumbers_ss::align_state"; + """ + pass + + +class DoxyCompMem(Base): + + + kind = None + + def __init__(self, *args, **kwargs): + super(DoxyCompMem, self).__init__(*args, **kwargs) + #pd = self._parse_data + #self.name = pd.name + + @classmethod + def can_parse(cls, obj): + return obj.kind == cls.kind + + def set_descriptions(self, parse_data): + bd = description(getattr(parse_data, 'briefdescription', None)) + dd = description(getattr(parse_data, 'detaileddescription', None)) + self._data['brief_description'] = bd + self._data['detailed_description'] = dd + +class DoxyCompound(DoxyCompMem): + pass + +class DoxyMember(DoxyCompMem): + pass + + +class DoxyFunction(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'function' + + def _parse(self): + if self._parsed: + 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)) + + 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(DoxyFunction) + + +class DoxyParam(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + def _parse(self): + if self._parsed: + return + super(DoxyParam, self)._parse() + self.set_descriptions(self._parse_data) + self._data['declname'] = self._parse_data.declname + + 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']) + +class DoxyClass(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'class' + + def _parse(self): + if self._parsed: + return + super(DoxyClass, self)._parse() + self.retrieve_data() + if self._error: + return + self.set_descriptions(self._retrieved_data.compounddef) + # Sectiondef.kind tells about whether private or public. + # We just ignore this for now. + self.process_memberdefs() + + brief_description = property(lambda self: self.data()['brief_description']) + detailed_description = property(lambda self: self.data()['detailed_description']) + +Base.mem_classes.append(DoxyClass) + + +class DoxyFile(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'file' + + def _parse(self): + if self._parsed: + return + super(DoxyFile, self)._parse() + self.retrieve_data() + if self._error: + return + self.process_memberdefs() + + +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' + + def _parse(self): + if self._parsed: + return + super(DoxyGroup, self)._parse() + self.retrieve_data() + if self._error: + return + cdef = self._retrieved_data.compounddef + self._data['title'] = description(cdef.title) + # Process inner groups + grps = cdef.innergroup + for grp in grps: + converted = DoxyGroup.from_refid(grp.refid, top=self.top) + self._members.append(converted) + # Process inner classes + klasses = cdef.innerclass + for kls in klasses: + converted = DoxyClass.from_refid(kls.refid, top=self.top) + self._members.append(converted) + # Process normal members + self.process_memberdefs() + + title = property(lambda self: self.data()['title']) + + +Base.mem_classes.append(DoxyGroup) + + +class DoxyFriend(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'friend' + +Base.mem_classes.append(DoxyFriend) + + +class DoxyOther(Base): + + __module__ = "gnuradio.utils.doxyxml" + + kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', 'dir', 'page']) + + @classmethod + def can_parse(cls, obj): + return obj.kind in cls.kinds + +Base.mem_classes.append(DoxyOther) + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile new file mode 100644 index 000000000..9780043be --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile @@ -0,0 +1,1551 @@ +# Doxyfile 1.6.3 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = YES + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc new file mode 100644 index 000000000..014b00ef6 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc @@ -0,0 +1,29 @@ +#include +#include "aadvark.h" + +void Aadvark::print() { + std::cout << "aadvark is " << aadvarkness << "/10 aadvarky" << std::endl; +} + +Aadvark::Aadvark(int aaness): aadvarkness(aaness) {} + +bool aadvarky_enough(Aadvark aad) { + if (aad.get_aadvarkness() > 6) + return true; + else + return false; +} + +int Aadvark::get_aadvarkness() { + return aadvarkness; +} + +int main() { + Aadvark arold = Aadvark(6); + arold.print(); + if (aadvarky_enough(arold)) + std::cout << "He is aadvarky enough" << std::endl; + else + std::cout << "He is not aadvarky enough" << std::endl; +} + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h new file mode 100644 index 000000000..6a2fd06b2 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h @@ -0,0 +1,23 @@ +#include + +/*! + * \brief Models the mammal Aadvark. + * + * Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. + * + * This line is uninformative and is only to test line breaks in the comments. + */ +class Aadvark { +public: + //! \brief Outputs the vital aadvark statistics. + void print(); + //! \param aaness The aadvarkness of an aadvark is a measure of how aadvarky it is. + Aadvark(int aaness); + int get_aadvarkness(); +private: + int aadvarkness; +}; + +bool aadvarky_enough(Aadvark aad); + +int main(); diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml new file mode 100644 index 000000000..f031e01ac --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml @@ -0,0 +1,88 @@ + + + + aadvark.cc + iostream + aadvark.h + aadvark.cc + + + + + + + + + + + + + + bool + bool aadvarky_enough + (Aadvark aad) + aadvarky_enough + + Aadvark + aad + + + + + + + + + + + int + int main + () + main + + + + + + + + + + + + + + +#include<iostream> +#include"aadvark.h" + +voidAadvark::print(){ +std::cout<<"aadvarkis"<<aadvarkness<<"/10aadvarky"<<std::endl; +} + +Aadvark::Aadvark(intaaness):aadvarkness(aaness){} + +boolaadvarky_enough(Aadvarkaad){ +if(aad.get_aadvarkness()>6) +returntrue; +else +returnfalse; +} + +intAadvark::get_aadvarkness(){ +returnaadvarkness; +} + +intmain(){ +Aadvarkarold=Aadvark(6); +arold.print(); +if(aadvarky_enough(arold)) +std::cout<<"Heisaadvarkyenough"<<std::endl; +else +std::cout<<"Heisnotaadvarkyenough"<<std::endl; +} + + + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml new file mode 100644 index 000000000..a1854b685 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml @@ -0,0 +1,72 @@ + + + + aadvark.h + iostream + + + + + + + + + + + + Aadvark + + + bool + bool aadvarky_enough + (Aadvark aad) + aadvarky_enough + + Aadvark + aad + + + + + + + + + + + int + int main + () + main + + + + + + + + + + + + + + +#include<iostream> + +classAadvark{ +public: +voidprint(); +Aadvark(intaaness); +intget_aadvarkness(); +private: +intaadvarkness; +}; + +boolaadvarky_enough(Aadvarkaad); + +intmain(); + + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml new file mode 100644 index 000000000..54fe8b32c --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml @@ -0,0 +1,86 @@ + + + + Aadvark + aadvark.h + + + int + int Aadvark::aadvarkness + + aadvarkness + + + + + + + + + + + + void + void Aadvark::print + () + print + +Outputs the vital aadvark statistics. + + + + + + + + + Aadvark::Aadvark + (int aaness) + Aadvark + + int + aaness + + + + + + +aaness + + +The aadvarkness of an aadvark is a measure of how aadvarky it is. + + + + + + + + + int + int Aadvark::get_aadvarkness + () + get_aadvarkness + + + + + + + + + + +Models the mammal Aadvark. + +Sadly the model is incomplete and cannot capture all aspects of an aadvark yet.This line is uninformative and is only to test line breaks in the comments. + + + AadvarkAadvark + Aadvarkaadvarkness + Aadvarkget_aadvarkness + Aadvarkprint + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt new file mode 100644 index 000000000..abdd9ac75 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd new file mode 100644 index 000000000..369e2300f --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml new file mode 100644 index 000000000..13fd53f90 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml @@ -0,0 +1,17 @@ + + + Aadvark + aadvarkness + print + Aadvark + get_aadvarkness + + aadvark.cc + aadvarky_enough + main + + aadvark.h + aadvarky_enough + main + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd new file mode 100644 index 000000000..d7ab2a906 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py new file mode 100644 index 000000000..39823979f --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py @@ -0,0 +1,7 @@ +""" +Contains generated files produced by generateDS.py. + +These do the real work of parsing the doxygen xml files but the +resultant classes are not very friendly to navigate so the rest of the +doxyxml module processes them further. +""" diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py new file mode 100644 index 000000000..1522ac23f --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py @@ -0,0 +1,503 @@ +#!/usr/bin/env python + +""" +Generated Mon Feb 9 19:08:05 2009 by generateDS.py. +""" + +from string import lower as str_lower +from xml.dom import minidom +from xml.dom import Node + +import sys + +import compoundsuper as supermod +from compoundsuper import MixedContainer + + +class DoxygenTypeSub(supermod.DoxygenType): + def __init__(self, version=None, compounddef=None): + supermod.DoxygenType.__init__(self, version, compounddef) + + def find(self, details): + + return self.compounddef.find(details) + +supermod.DoxygenType.subclass = DoxygenTypeSub +# end class DoxygenTypeSub + + +class compounddefTypeSub(supermod.compounddefType): + def __init__(self, kind=None, prot=None, id=None, compoundname='', title='', basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): + supermod.compounddefType.__init__(self, kind, prot, id, compoundname, title, basecompoundref, derivedcompoundref, includes, includedby, incdepgraph, invincdepgraph, innerdir, innerfile, innerclass, innernamespace, innerpage, innergroup, templateparamlist, sectiondef, briefdescription, detaileddescription, inheritancegraph, collaborationgraph, programlisting, location, listofallmembers) + + def find(self, details): + + if self.id == details.refid: + return self + + for sectiondef in self.sectiondef: + result = sectiondef.find(details) + if result: + return result + + +supermod.compounddefType.subclass = compounddefTypeSub +# end class compounddefTypeSub + + +class listofallmembersTypeSub(supermod.listofallmembersType): + def __init__(self, member=None): + supermod.listofallmembersType.__init__(self, member) +supermod.listofallmembersType.subclass = listofallmembersTypeSub +# end class listofallmembersTypeSub + + +class memberRefTypeSub(supermod.memberRefType): + def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope='', name=''): + supermod.memberRefType.__init__(self, virt, prot, refid, ambiguityscope, scope, name) +supermod.memberRefType.subclass = memberRefTypeSub +# end class memberRefTypeSub + + +class compoundRefTypeSub(supermod.compoundRefType): + def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.compoundRefType.__init__(self, mixedclass_, content_) +supermod.compoundRefType.subclass = compoundRefTypeSub +# end class compoundRefTypeSub + + +class reimplementTypeSub(supermod.reimplementType): + def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.reimplementType.__init__(self, mixedclass_, content_) +supermod.reimplementType.subclass = reimplementTypeSub +# end class reimplementTypeSub + + +class incTypeSub(supermod.incType): + def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.incType.__init__(self, mixedclass_, content_) +supermod.incType.subclass = incTypeSub +# end class incTypeSub + + +class refTypeSub(supermod.refType): + def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.refType.__init__(self, mixedclass_, content_) +supermod.refType.subclass = refTypeSub +# end class refTypeSub + + + +class refTextTypeSub(supermod.refTextType): + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + supermod.refTextType.__init__(self, mixedclass_, content_) + +supermod.refTextType.subclass = refTextTypeSub +# end class refTextTypeSub + +class sectiondefTypeSub(supermod.sectiondefType): + + + def __init__(self, kind=None, header='', description=None, memberdef=None): + supermod.sectiondefType.__init__(self, kind, header, description, memberdef) + + def find(self, details): + + for memberdef in self.memberdef: + if memberdef.id == details.refid: + return memberdef + + return None + + +supermod.sectiondefType.subclass = sectiondefTypeSub +# end class sectiondefTypeSub + + +class memberdefTypeSub(supermod.memberdefType): + def __init__(self, initonly=None, kind=None, volatile=None, const=None, raise_=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition='', argsstring='', name='', read='', write='', bitfield='', reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): + supermod.memberdefType.__init__(self, initonly, kind, volatile, const, raise_, virt, readable, prot, explicit, new, final, writable, add, static, remove, sealed, mutable, gettable, inline, settable, id, templateparamlist, type_, definition, argsstring, name, read, write, bitfield, reimplements, reimplementedby, param, enumvalue, initializer, exceptions, briefdescription, detaileddescription, inbodydescription, location, references, referencedby) +supermod.memberdefType.subclass = memberdefTypeSub +# end class memberdefTypeSub + + +class descriptionTypeSub(supermod.descriptionType): + def __init__(self, title='', para=None, sect1=None, internal=None, mixedclass_=None, content_=None): + supermod.descriptionType.__init__(self, mixedclass_, content_) +supermod.descriptionType.subclass = descriptionTypeSub +# end class descriptionTypeSub + + +class enumvalueTypeSub(supermod.enumvalueType): + def __init__(self, prot=None, id=None, name='', initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): + supermod.enumvalueType.__init__(self, mixedclass_, content_) +supermod.enumvalueType.subclass = enumvalueTypeSub +# end class enumvalueTypeSub + + +class templateparamlistTypeSub(supermod.templateparamlistType): + def __init__(self, param=None): + supermod.templateparamlistType.__init__(self, param) +supermod.templateparamlistType.subclass = templateparamlistTypeSub +# end class templateparamlistTypeSub + + +class paramTypeSub(supermod.paramType): + def __init__(self, type_=None, declname='', defname='', array='', defval=None, briefdescription=None): + supermod.paramType.__init__(self, type_, declname, defname, array, defval, briefdescription) +supermod.paramType.subclass = paramTypeSub +# end class paramTypeSub + + +class linkedTextTypeSub(supermod.linkedTextType): + def __init__(self, ref=None, mixedclass_=None, content_=None): + supermod.linkedTextType.__init__(self, mixedclass_, content_) +supermod.linkedTextType.subclass = linkedTextTypeSub +# end class linkedTextTypeSub + + +class graphTypeSub(supermod.graphType): + def __init__(self, node=None): + supermod.graphType.__init__(self, node) +supermod.graphType.subclass = graphTypeSub +# end class graphTypeSub + + +class nodeTypeSub(supermod.nodeType): + def __init__(self, id=None, label='', link=None, childnode=None): + supermod.nodeType.__init__(self, id, label, link, childnode) +supermod.nodeType.subclass = nodeTypeSub +# end class nodeTypeSub + + +class childnodeTypeSub(supermod.childnodeType): + def __init__(self, relation=None, refid=None, edgelabel=None): + supermod.childnodeType.__init__(self, relation, refid, edgelabel) +supermod.childnodeType.subclass = childnodeTypeSub +# end class childnodeTypeSub + + +class linkTypeSub(supermod.linkType): + def __init__(self, refid=None, external=None, valueOf_=''): + supermod.linkType.__init__(self, refid, external) +supermod.linkType.subclass = linkTypeSub +# end class linkTypeSub + + +class listingTypeSub(supermod.listingType): + def __init__(self, codeline=None): + supermod.listingType.__init__(self, codeline) +supermod.listingType.subclass = listingTypeSub +# end class listingTypeSub + + +class codelineTypeSub(supermod.codelineType): + def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): + supermod.codelineType.__init__(self, external, lineno, refkind, refid, highlight) +supermod.codelineType.subclass = codelineTypeSub +# end class codelineTypeSub + + +class highlightTypeSub(supermod.highlightType): + def __init__(self, class_=None, sp=None, ref=None, mixedclass_=None, content_=None): + supermod.highlightType.__init__(self, mixedclass_, content_) +supermod.highlightType.subclass = highlightTypeSub +# end class highlightTypeSub + + +class referenceTypeSub(supermod.referenceType): + def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): + supermod.referenceType.__init__(self, mixedclass_, content_) +supermod.referenceType.subclass = referenceTypeSub +# end class referenceTypeSub + + +class locationTypeSub(supermod.locationType): + def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): + supermod.locationType.__init__(self, bodystart, line, bodyend, bodyfile, file) +supermod.locationType.subclass = locationTypeSub +# end class locationTypeSub + + +class docSect1TypeSub(supermod.docSect1Type): + def __init__(self, id=None, title='', para=None, sect2=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect1Type.__init__(self, mixedclass_, content_) +supermod.docSect1Type.subclass = docSect1TypeSub +# end class docSect1TypeSub + + +class docSect2TypeSub(supermod.docSect2Type): + def __init__(self, id=None, title='', para=None, sect3=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect2Type.__init__(self, mixedclass_, content_) +supermod.docSect2Type.subclass = docSect2TypeSub +# end class docSect2TypeSub + + +class docSect3TypeSub(supermod.docSect3Type): + def __init__(self, id=None, title='', para=None, sect4=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect3Type.__init__(self, mixedclass_, content_) +supermod.docSect3Type.subclass = docSect3TypeSub +# end class docSect3TypeSub + + +class docSect4TypeSub(supermod.docSect4Type): + def __init__(self, id=None, title='', para=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect4Type.__init__(self, mixedclass_, content_) +supermod.docSect4Type.subclass = docSect4TypeSub +# end class docSect4TypeSub + + +class docInternalTypeSub(supermod.docInternalType): + def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): + supermod.docInternalType.__init__(self, mixedclass_, content_) +supermod.docInternalType.subclass = docInternalTypeSub +# end class docInternalTypeSub + + +class docInternalS1TypeSub(supermod.docInternalS1Type): + def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): + supermod.docInternalS1Type.__init__(self, mixedclass_, content_) +supermod.docInternalS1Type.subclass = docInternalS1TypeSub +# end class docInternalS1TypeSub + + +class docInternalS2TypeSub(supermod.docInternalS2Type): + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + supermod.docInternalS2Type.__init__(self, mixedclass_, content_) +supermod.docInternalS2Type.subclass = docInternalS2TypeSub +# end class docInternalS2TypeSub + + +class docInternalS3TypeSub(supermod.docInternalS3Type): + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + supermod.docInternalS3Type.__init__(self, mixedclass_, content_) +supermod.docInternalS3Type.subclass = docInternalS3TypeSub +# end class docInternalS3TypeSub + + +class docInternalS4TypeSub(supermod.docInternalS4Type): + def __init__(self, para=None, mixedclass_=None, content_=None): + supermod.docInternalS4Type.__init__(self, mixedclass_, content_) +supermod.docInternalS4Type.subclass = docInternalS4TypeSub +# end class docInternalS4TypeSub + + +class docURLLinkSub(supermod.docURLLink): + def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docURLLink.__init__(self, mixedclass_, content_) +supermod.docURLLink.subclass = docURLLinkSub +# end class docURLLinkSub + + +class docAnchorTypeSub(supermod.docAnchorType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docAnchorType.__init__(self, mixedclass_, content_) +supermod.docAnchorType.subclass = docAnchorTypeSub +# end class docAnchorTypeSub + + +class docFormulaTypeSub(supermod.docFormulaType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docFormulaType.__init__(self, mixedclass_, content_) +supermod.docFormulaType.subclass = docFormulaTypeSub +# end class docFormulaTypeSub + + +class docIndexEntryTypeSub(supermod.docIndexEntryType): + def __init__(self, primaryie='', secondaryie=''): + supermod.docIndexEntryType.__init__(self, primaryie, secondaryie) +supermod.docIndexEntryType.subclass = docIndexEntryTypeSub +# end class docIndexEntryTypeSub + + +class docListTypeSub(supermod.docListType): + def __init__(self, listitem=None): + supermod.docListType.__init__(self, listitem) +supermod.docListType.subclass = docListTypeSub +# end class docListTypeSub + + +class docListItemTypeSub(supermod.docListItemType): + def __init__(self, para=None): + supermod.docListItemType.__init__(self, para) +supermod.docListItemType.subclass = docListItemTypeSub +# end class docListItemTypeSub + + +class docSimpleSectTypeSub(supermod.docSimpleSectType): + def __init__(self, kind=None, title=None, para=None): + supermod.docSimpleSectType.__init__(self, kind, title, para) +supermod.docSimpleSectType.subclass = docSimpleSectTypeSub +# end class docSimpleSectTypeSub + + +class docVarListEntryTypeSub(supermod.docVarListEntryType): + def __init__(self, term=None): + supermod.docVarListEntryType.__init__(self, term) +supermod.docVarListEntryType.subclass = docVarListEntryTypeSub +# end class docVarListEntryTypeSub + + +class docRefTextTypeSub(supermod.docRefTextType): + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docRefTextType.__init__(self, mixedclass_, content_) +supermod.docRefTextType.subclass = docRefTextTypeSub +# end class docRefTextTypeSub + + +class docTableTypeSub(supermod.docTableType): + def __init__(self, rows=None, cols=None, row=None, caption=None): + supermod.docTableType.__init__(self, rows, cols, row, caption) +supermod.docTableType.subclass = docTableTypeSub +# end class docTableTypeSub + + +class docRowTypeSub(supermod.docRowType): + def __init__(self, entry=None): + supermod.docRowType.__init__(self, entry) +supermod.docRowType.subclass = docRowTypeSub +# end class docRowTypeSub + + +class docEntryTypeSub(supermod.docEntryType): + def __init__(self, thead=None, para=None): + supermod.docEntryType.__init__(self, thead, para) +supermod.docEntryType.subclass = docEntryTypeSub +# end class docEntryTypeSub + + +class docHeadingTypeSub(supermod.docHeadingType): + def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docHeadingType.__init__(self, mixedclass_, content_) +supermod.docHeadingType.subclass = docHeadingTypeSub +# end class docHeadingTypeSub + + +class docImageTypeSub(supermod.docImageType): + def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docImageType.__init__(self, mixedclass_, content_) +supermod.docImageType.subclass = docImageTypeSub +# end class docImageTypeSub + + +class docDotFileTypeSub(supermod.docDotFileType): + def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docDotFileType.__init__(self, mixedclass_, content_) +supermod.docDotFileType.subclass = docDotFileTypeSub +# end class docDotFileTypeSub + + +class docTocItemTypeSub(supermod.docTocItemType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docTocItemType.__init__(self, mixedclass_, content_) +supermod.docTocItemType.subclass = docTocItemTypeSub +# end class docTocItemTypeSub + + +class docTocListTypeSub(supermod.docTocListType): + def __init__(self, tocitem=None): + supermod.docTocListType.__init__(self, tocitem) +supermod.docTocListType.subclass = docTocListTypeSub +# end class docTocListTypeSub + + +class docLanguageTypeSub(supermod.docLanguageType): + def __init__(self, langid=None, para=None): + supermod.docLanguageType.__init__(self, langid, para) +supermod.docLanguageType.subclass = docLanguageTypeSub +# end class docLanguageTypeSub + + +class docParamListTypeSub(supermod.docParamListType): + def __init__(self, kind=None, parameteritem=None): + supermod.docParamListType.__init__(self, kind, parameteritem) +supermod.docParamListType.subclass = docParamListTypeSub +# end class docParamListTypeSub + + +class docParamListItemSub(supermod.docParamListItem): + def __init__(self, parameternamelist=None, parameterdescription=None): + supermod.docParamListItem.__init__(self, parameternamelist, parameterdescription) +supermod.docParamListItem.subclass = docParamListItemSub +# end class docParamListItemSub + + +class docParamNameListSub(supermod.docParamNameList): + def __init__(self, parametername=None): + supermod.docParamNameList.__init__(self, parametername) +supermod.docParamNameList.subclass = docParamNameListSub +# end class docParamNameListSub + + +class docParamNameSub(supermod.docParamName): + def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): + supermod.docParamName.__init__(self, mixedclass_, content_) +supermod.docParamName.subclass = docParamNameSub +# end class docParamNameSub + + +class docXRefSectTypeSub(supermod.docXRefSectType): + def __init__(self, id=None, xreftitle=None, xrefdescription=None): + supermod.docXRefSectType.__init__(self, id, xreftitle, xrefdescription) +supermod.docXRefSectType.subclass = docXRefSectTypeSub +# end class docXRefSectTypeSub + + +class docCopyTypeSub(supermod.docCopyType): + def __init__(self, link=None, para=None, sect1=None, internal=None): + supermod.docCopyType.__init__(self, link, para, sect1, internal) +supermod.docCopyType.subclass = docCopyTypeSub +# end class docCopyTypeSub + + +class docCharTypeSub(supermod.docCharType): + def __init__(self, char=None, valueOf_=''): + supermod.docCharType.__init__(self, char) +supermod.docCharType.subclass = docCharTypeSub +# end class docCharTypeSub + +class docParaTypeSub(supermod.docParaType): + def __init__(self, char=None, valueOf_=''): + supermod.docParaType.__init__(self, char) + + self.parameterlist = [] + self.simplesects = [] + self.content = [] + + def buildChildren(self, child_, nodeName_): + supermod.docParaType.buildChildren(self, child_, nodeName_) + + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == "ref": + obj_ = supermod.docRefTextType.factory() + obj_.build(child_) + self.content.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameterlist': + obj_ = supermod.docParamListType.factory() + obj_.build(child_) + self.parameterlist.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'simplesect': + obj_ = supermod.docSimpleSectType.factory() + obj_.build(child_) + self.simplesects.append(obj_) + + +supermod.docParaType.subclass = docParaTypeSub +# end class docParaTypeSub + + + +def parse(inFilename): + doc = minidom.parse(inFilename) + rootNode = doc.documentElement + rootObj = supermod.DoxygenType.factory() + rootObj.build(rootNode) + return rootObj + + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py new file mode 100644 index 000000000..6255dda16 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py @@ -0,0 +1,8342 @@ +#!/usr/bin/env python + +# +# Generated Thu Jun 11 18:44:25 2009 by generateDS.py. +# + +import sys +import getopt +from string import lower as str_lower +from xml.dom import minidom +from xml.dom import Node + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError, exp: + + class GeneratedsSuper: + def format_string(self, input_data, input_name=''): + return input_data + def format_integer(self, input_data, input_name=''): + return '%d' % input_data + def format_float(self, input_data, input_name=''): + return '%f' % input_data + def format_double(self, input_data, input_name=''): + return '%e' % input_data + def format_boolean(self, input_data, input_name=''): + return '%s' % input_data + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Support/utility functions. +# + +def showIndent(outfile, level): + for idx in range(level): + outfile.write(' ') + +def quote_xml(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + +def quote_attrib(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +class MixedContainer: + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace): + if self.category == MixedContainer.CategoryText: + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace,name) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g' % (self.name, self.value, self.name)) + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s",\n' % \ + (self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class _MemberSpec(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type(self): return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +# +# Data representation classes. +# + +class DoxygenType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, version=None, compounddef=None): + self.version = version + self.compounddef = compounddef + def factory(*args_, **kwargs_): + if DoxygenType.subclass: + return DoxygenType.subclass(*args_, **kwargs_) + else: + return DoxygenType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compounddef(self): return self.compounddef + def set_compounddef(self, compounddef): self.compounddef = compounddef + def get_version(self): return self.version + def set_version(self, version): self.version = version + def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): + outfile.write(' version=%s' % (quote_attrib(self.version), )) + def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): + if self.compounddef: + self.compounddef.export(outfile, level, namespace_, name_='compounddef') + def hasContent_(self): + if ( + self.compounddef is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='DoxygenType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.version is not None: + showIndent(outfile, level) + outfile.write('version = "%s",\n' % (self.version,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.compounddef: + showIndent(outfile, level) + outfile.write('compounddef=model_.compounddefType(\n') + self.compounddef.exportLiteral(outfile, level, name_='compounddef') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('version'): + self.version = attrs.get('version').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compounddef': + obj_ = compounddefType.factory() + obj_.build(child_) + self.set_compounddef(obj_) +# end class DoxygenType + + +class compounddefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, prot=None, id=None, compoundname=None, title=None, basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): + self.kind = kind + self.prot = prot + self.id = id + self.compoundname = compoundname + self.title = title + if basecompoundref is None: + self.basecompoundref = [] + else: + self.basecompoundref = basecompoundref + if derivedcompoundref is None: + self.derivedcompoundref = [] + else: + self.derivedcompoundref = derivedcompoundref + if includes is None: + self.includes = [] + else: + self.includes = includes + if includedby is None: + self.includedby = [] + else: + self.includedby = includedby + self.incdepgraph = incdepgraph + self.invincdepgraph = invincdepgraph + if innerdir is None: + self.innerdir = [] + else: + self.innerdir = innerdir + if innerfile is None: + self.innerfile = [] + else: + self.innerfile = innerfile + if innerclass is None: + self.innerclass = [] + else: + self.innerclass = innerclass + if innernamespace is None: + self.innernamespace = [] + else: + self.innernamespace = innernamespace + if innerpage is None: + self.innerpage = [] + else: + self.innerpage = innerpage + if innergroup is None: + self.innergroup = [] + else: + self.innergroup = innergroup + self.templateparamlist = templateparamlist + if sectiondef is None: + self.sectiondef = [] + else: + self.sectiondef = sectiondef + self.briefdescription = briefdescription + self.detaileddescription = detaileddescription + self.inheritancegraph = inheritancegraph + self.collaborationgraph = collaborationgraph + self.programlisting = programlisting + self.location = location + self.listofallmembers = listofallmembers + def factory(*args_, **kwargs_): + if compounddefType.subclass: + return compounddefType.subclass(*args_, **kwargs_) + else: + return compounddefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compoundname(self): return self.compoundname + def set_compoundname(self, compoundname): self.compoundname = compoundname + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_basecompoundref(self): return self.basecompoundref + def set_basecompoundref(self, basecompoundref): self.basecompoundref = basecompoundref + def add_basecompoundref(self, value): self.basecompoundref.append(value) + def insert_basecompoundref(self, index, value): self.basecompoundref[index] = value + def get_derivedcompoundref(self): return self.derivedcompoundref + def set_derivedcompoundref(self, derivedcompoundref): self.derivedcompoundref = derivedcompoundref + def add_derivedcompoundref(self, value): self.derivedcompoundref.append(value) + def insert_derivedcompoundref(self, index, value): self.derivedcompoundref[index] = value + def get_includes(self): return self.includes + def set_includes(self, includes): self.includes = includes + def add_includes(self, value): self.includes.append(value) + def insert_includes(self, index, value): self.includes[index] = value + def get_includedby(self): return self.includedby + def set_includedby(self, includedby): self.includedby = includedby + def add_includedby(self, value): self.includedby.append(value) + def insert_includedby(self, index, value): self.includedby[index] = value + def get_incdepgraph(self): return self.incdepgraph + def set_incdepgraph(self, incdepgraph): self.incdepgraph = incdepgraph + def get_invincdepgraph(self): return self.invincdepgraph + def set_invincdepgraph(self, invincdepgraph): self.invincdepgraph = invincdepgraph + def get_innerdir(self): return self.innerdir + def set_innerdir(self, innerdir): self.innerdir = innerdir + def add_innerdir(self, value): self.innerdir.append(value) + def insert_innerdir(self, index, value): self.innerdir[index] = value + def get_innerfile(self): return self.innerfile + def set_innerfile(self, innerfile): self.innerfile = innerfile + def add_innerfile(self, value): self.innerfile.append(value) + def insert_innerfile(self, index, value): self.innerfile[index] = value + def get_innerclass(self): return self.innerclass + def set_innerclass(self, innerclass): self.innerclass = innerclass + def add_innerclass(self, value): self.innerclass.append(value) + def insert_innerclass(self, index, value): self.innerclass[index] = value + def get_innernamespace(self): return self.innernamespace + def set_innernamespace(self, innernamespace): self.innernamespace = innernamespace + def add_innernamespace(self, value): self.innernamespace.append(value) + def insert_innernamespace(self, index, value): self.innernamespace[index] = value + def get_innerpage(self): return self.innerpage + def set_innerpage(self, innerpage): self.innerpage = innerpage + def add_innerpage(self, value): self.innerpage.append(value) + def insert_innerpage(self, index, value): self.innerpage[index] = value + def get_innergroup(self): return self.innergroup + def set_innergroup(self, innergroup): self.innergroup = innergroup + def add_innergroup(self, value): self.innergroup.append(value) + def insert_innergroup(self, index, value): self.innergroup[index] = value + def get_templateparamlist(self): return self.templateparamlist + def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist + def get_sectiondef(self): return self.sectiondef + def set_sectiondef(self, sectiondef): self.sectiondef = sectiondef + def add_sectiondef(self, value): self.sectiondef.append(value) + def insert_sectiondef(self, index, value): self.sectiondef[index] = value + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_inheritancegraph(self): return self.inheritancegraph + def set_inheritancegraph(self, inheritancegraph): self.inheritancegraph = inheritancegraph + def get_collaborationgraph(self): return self.collaborationgraph + def set_collaborationgraph(self, collaborationgraph): self.collaborationgraph = collaborationgraph + def get_programlisting(self): return self.programlisting + def set_programlisting(self, programlisting): self.programlisting = programlisting + def get_location(self): return self.location + def set_location(self, location): self.location = location + def get_listofallmembers(self): return self.listofallmembers + def set_listofallmembers(self, listofallmembers): self.listofallmembers = listofallmembers + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='compounddefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='compounddefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='compounddefType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='compounddefType'): + if self.compoundname is not None: + showIndent(outfile, level) + outfile.write('<%scompoundname>%s\n' % (namespace_, self.format_string(quote_xml(self.compoundname).encode(ExternalEncoding), input_name='compoundname'), namespace_)) + if self.title is not None: + showIndent(outfile, level) + outfile.write('<%stitle>%s\n' % (namespace_, self.format_string(quote_xml(self.title).encode(ExternalEncoding), input_name='title'), namespace_)) + for basecompoundref_ in self.basecompoundref: + basecompoundref_.export(outfile, level, namespace_, name_='basecompoundref') + for derivedcompoundref_ in self.derivedcompoundref: + derivedcompoundref_.export(outfile, level, namespace_, name_='derivedcompoundref') + for includes_ in self.includes: + includes_.export(outfile, level, namespace_, name_='includes') + for includedby_ in self.includedby: + includedby_.export(outfile, level, namespace_, name_='includedby') + if self.incdepgraph: + self.incdepgraph.export(outfile, level, namespace_, name_='incdepgraph') + if self.invincdepgraph: + self.invincdepgraph.export(outfile, level, namespace_, name_='invincdepgraph') + for innerdir_ in self.innerdir: + innerdir_.export(outfile, level, namespace_, name_='innerdir') + for innerfile_ in self.innerfile: + innerfile_.export(outfile, level, namespace_, name_='innerfile') + for innerclass_ in self.innerclass: + innerclass_.export(outfile, level, namespace_, name_='innerclass') + for innernamespace_ in self.innernamespace: + innernamespace_.export(outfile, level, namespace_, name_='innernamespace') + for innerpage_ in self.innerpage: + innerpage_.export(outfile, level, namespace_, name_='innerpage') + for innergroup_ in self.innergroup: + innergroup_.export(outfile, level, namespace_, name_='innergroup') + if self.templateparamlist: + self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') + for sectiondef_ in self.sectiondef: + sectiondef_.export(outfile, level, namespace_, name_='sectiondef') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + if self.detaileddescription: + self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') + if self.inheritancegraph: + self.inheritancegraph.export(outfile, level, namespace_, name_='inheritancegraph') + if self.collaborationgraph: + self.collaborationgraph.export(outfile, level, namespace_, name_='collaborationgraph') + if self.programlisting: + self.programlisting.export(outfile, level, namespace_, name_='programlisting') + if self.location: + self.location.export(outfile, level, namespace_, name_='location') + if self.listofallmembers: + self.listofallmembers.export(outfile, level, namespace_, name_='listofallmembers') + def hasContent_(self): + if ( + self.compoundname is not None or + self.title is not None or + self.basecompoundref is not None or + self.derivedcompoundref is not None or + self.includes is not None or + self.includedby is not None or + self.incdepgraph is not None or + self.invincdepgraph is not None or + self.innerdir is not None or + self.innerfile is not None or + self.innerclass is not None or + self.innernamespace is not None or + self.innerpage is not None or + self.innergroup is not None or + self.templateparamlist is not None or + self.sectiondef is not None or + self.briefdescription is not None or + self.detaileddescription is not None or + self.inheritancegraph is not None or + self.collaborationgraph is not None or + self.programlisting is not None or + self.location is not None or + self.listofallmembers is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='compounddefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('compoundname=%s,\n' % quote_python(self.compoundname).encode(ExternalEncoding)) + if self.title: + showIndent(outfile, level) + outfile.write('title=model_.xsd_string(\n') + self.title.exportLiteral(outfile, level, name_='title') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('basecompoundref=[\n') + level += 1 + for basecompoundref in self.basecompoundref: + showIndent(outfile, level) + outfile.write('model_.basecompoundref(\n') + basecompoundref.exportLiteral(outfile, level, name_='basecompoundref') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('derivedcompoundref=[\n') + level += 1 + for derivedcompoundref in self.derivedcompoundref: + showIndent(outfile, level) + outfile.write('model_.derivedcompoundref(\n') + derivedcompoundref.exportLiteral(outfile, level, name_='derivedcompoundref') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('includes=[\n') + level += 1 + for includes in self.includes: + showIndent(outfile, level) + outfile.write('model_.includes(\n') + includes.exportLiteral(outfile, level, name_='includes') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('includedby=[\n') + level += 1 + for includedby in self.includedby: + showIndent(outfile, level) + outfile.write('model_.includedby(\n') + includedby.exportLiteral(outfile, level, name_='includedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.incdepgraph: + showIndent(outfile, level) + outfile.write('incdepgraph=model_.graphType(\n') + self.incdepgraph.exportLiteral(outfile, level, name_='incdepgraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.invincdepgraph: + showIndent(outfile, level) + outfile.write('invincdepgraph=model_.graphType(\n') + self.invincdepgraph.exportLiteral(outfile, level, name_='invincdepgraph') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('innerdir=[\n') + level += 1 + for innerdir in self.innerdir: + showIndent(outfile, level) + outfile.write('model_.innerdir(\n') + innerdir.exportLiteral(outfile, level, name_='innerdir') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerfile=[\n') + level += 1 + for innerfile in self.innerfile: + showIndent(outfile, level) + outfile.write('model_.innerfile(\n') + innerfile.exportLiteral(outfile, level, name_='innerfile') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerclass=[\n') + level += 1 + for innerclass in self.innerclass: + showIndent(outfile, level) + outfile.write('model_.innerclass(\n') + innerclass.exportLiteral(outfile, level, name_='innerclass') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innernamespace=[\n') + level += 1 + for innernamespace in self.innernamespace: + showIndent(outfile, level) + outfile.write('model_.innernamespace(\n') + innernamespace.exportLiteral(outfile, level, name_='innernamespace') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerpage=[\n') + level += 1 + for innerpage in self.innerpage: + showIndent(outfile, level) + outfile.write('model_.innerpage(\n') + innerpage.exportLiteral(outfile, level, name_='innerpage') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innergroup=[\n') + level += 1 + for innergroup in self.innergroup: + showIndent(outfile, level) + outfile.write('model_.innergroup(\n') + innergroup.exportLiteral(outfile, level, name_='innergroup') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.templateparamlist: + showIndent(outfile, level) + outfile.write('templateparamlist=model_.templateparamlistType(\n') + self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('sectiondef=[\n') + level += 1 + for sectiondef in self.sectiondef: + showIndent(outfile, level) + outfile.write('model_.sectiondef(\n') + sectiondef.exportLiteral(outfile, level, name_='sectiondef') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.detaileddescription: + showIndent(outfile, level) + outfile.write('detaileddescription=model_.descriptionType(\n') + self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.inheritancegraph: + showIndent(outfile, level) + outfile.write('inheritancegraph=model_.graphType(\n') + self.inheritancegraph.exportLiteral(outfile, level, name_='inheritancegraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.collaborationgraph: + showIndent(outfile, level) + outfile.write('collaborationgraph=model_.graphType(\n') + self.collaborationgraph.exportLiteral(outfile, level, name_='collaborationgraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.programlisting: + showIndent(outfile, level) + outfile.write('programlisting=model_.listingType(\n') + self.programlisting.exportLiteral(outfile, level, name_='programlisting') + showIndent(outfile, level) + outfile.write('),\n') + if self.location: + showIndent(outfile, level) + outfile.write('location=model_.locationType(\n') + self.location.exportLiteral(outfile, level, name_='location') + showIndent(outfile, level) + outfile.write('),\n') + if self.listofallmembers: + showIndent(outfile, level) + outfile.write('listofallmembers=model_.listofallmembersType(\n') + self.listofallmembers.exportLiteral(outfile, level, name_='listofallmembers') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compoundname': + compoundname_ = '' + for text__content_ in child_.childNodes: + compoundname_ += text__content_.nodeValue + self.compoundname = compoundname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_title(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'basecompoundref': + obj_ = compoundRefType.factory() + obj_.build(child_) + self.basecompoundref.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'derivedcompoundref': + obj_ = compoundRefType.factory() + obj_.build(child_) + self.derivedcompoundref.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'includes': + obj_ = incType.factory() + obj_.build(child_) + self.includes.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'includedby': + obj_ = incType.factory() + obj_.build(child_) + self.includedby.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'incdepgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_incdepgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'invincdepgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_invincdepgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerdir': + obj_ = refType.factory() + obj_.build(child_) + self.innerdir.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerfile': + obj_ = refType.factory() + obj_.build(child_) + self.innerfile.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerclass': + obj_ = refType.factory() + obj_.build(child_) + self.innerclass.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innernamespace': + obj_ = refType.factory() + obj_.build(child_) + self.innernamespace.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerpage': + obj_ = refType.factory() + obj_.build(child_) + self.innerpage.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innergroup': + obj_ = refType.factory() + obj_.build(child_) + self.innergroup.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'templateparamlist': + obj_ = templateparamlistType.factory() + obj_.build(child_) + self.set_templateparamlist(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sectiondef': + obj_ = sectiondefType.factory() + obj_.build(child_) + self.sectiondef.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_detaileddescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'inheritancegraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_inheritancegraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'collaborationgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_collaborationgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'programlisting': + obj_ = listingType.factory() + obj_.build(child_) + self.set_programlisting(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'location': + obj_ = locationType.factory() + obj_.build(child_) + self.set_location(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'listofallmembers': + obj_ = listofallmembersType.factory() + obj_.build(child_) + self.set_listofallmembers(obj_) +# end class compounddefType + + +class listofallmembersType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, member=None): + if member is None: + self.member = [] + else: + self.member = member + def factory(*args_, **kwargs_): + if listofallmembersType.subclass: + return listofallmembersType.subclass(*args_, **kwargs_) + else: + return listofallmembersType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_member(self): return self.member + def set_member(self, member): self.member = member + def add_member(self, value): self.member.append(value) + def insert_member(self, index, value): self.member[index] = value + def export(self, outfile, level, namespace_='', name_='listofallmembersType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='listofallmembersType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='listofallmembersType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='listofallmembersType'): + for member_ in self.member: + member_.export(outfile, level, namespace_, name_='member') + def hasContent_(self): + if ( + self.member is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='listofallmembersType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('member=[\n') + level += 1 + for member in self.member: + showIndent(outfile, level) + outfile.write('model_.member(\n') + member.exportLiteral(outfile, level, name_='member') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'member': + obj_ = memberRefType.factory() + obj_.build(child_) + self.member.append(obj_) +# end class listofallmembersType + + +class memberRefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope=None, name=None): + self.virt = virt + self.prot = prot + self.refid = refid + self.ambiguityscope = ambiguityscope + self.scope = scope + self.name = name + def factory(*args_, **kwargs_): + if memberRefType.subclass: + return memberRefType.subclass(*args_, **kwargs_) + else: + return memberRefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_scope(self): return self.scope + def set_scope(self, scope): self.scope = scope + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_ambiguityscope(self): return self.ambiguityscope + def set_ambiguityscope(self, ambiguityscope): self.ambiguityscope = ambiguityscope + def export(self, outfile, level, namespace_='', name_='memberRefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='memberRefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='memberRefType'): + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.ambiguityscope is not None: + outfile.write(' ambiguityscope=%s' % (self.format_string(quote_attrib(self.ambiguityscope).encode(ExternalEncoding), input_name='ambiguityscope'), )) + def exportChildren(self, outfile, level, namespace_='', name_='memberRefType'): + if self.scope is not None: + showIndent(outfile, level) + outfile.write('<%sscope>%s\n' % (namespace_, self.format_string(quote_xml(self.scope).encode(ExternalEncoding), input_name='scope'), namespace_)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + def hasContent_(self): + if ( + self.scope is not None or + self.name is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='memberRefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.ambiguityscope is not None: + showIndent(outfile, level) + outfile.write('ambiguityscope = %s,\n' % (self.ambiguityscope,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('scope=%s,\n' % quote_python(self.scope).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('ambiguityscope'): + self.ambiguityscope = attrs.get('ambiguityscope').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'scope': + scope_ = '' + for text__content_ in child_.childNodes: + scope_ += text__content_.nodeValue + self.scope = scope_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ +# end class memberRefType + + +class scope(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if scope.subclass: + return scope.subclass(*args_, **kwargs_) + else: + return scope(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='scope', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='scope') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='scope'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='scope'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='scope'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class scope + + +class name(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if name.subclass: + return name.subclass(*args_, **kwargs_) + else: + return name(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='name', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='name') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='name'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='name'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='name'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class name + + +class compoundRefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.virt = virt + self.prot = prot + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if compoundRefType.subclass: + return compoundRefType.subclass(*args_, **kwargs_) + else: + return compoundRefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='compoundRefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='compoundRefType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='compoundRefType'): + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='compoundRefType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='compoundRefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class compoundRefType + + +class reimplementType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if reimplementType.subclass: + return reimplementType.subclass(*args_, **kwargs_) + else: + return reimplementType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='reimplementType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='reimplementType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='reimplementType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='reimplementType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='reimplementType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class reimplementType + + +class incType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.local = local + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if incType.subclass: + return incType.subclass(*args_, **kwargs_) + else: + return incType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_local(self): return self.local + def set_local(self, local): self.local = local + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='incType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='incType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='incType'): + if self.local is not None: + outfile.write(' local=%s' % (quote_attrib(self.local), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='incType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='incType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.local is not None: + showIndent(outfile, level) + outfile.write('local = "%s",\n' % (self.local,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('local'): + self.local = attrs.get('local').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class incType + + +class refType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.prot = prot + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if refType.subclass: + return refType.subclass(*args_, **kwargs_) + else: + return refType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='refType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='refType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='refType'): + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='refType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='refType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class refType + + +class refTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + self.kindref = kindref + self.external = external + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if refTextType.subclass: + return refTextType.subclass(*args_, **kwargs_) + else: + return refTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_kindref(self): return self.kindref + def set_kindref(self, kindref): self.kindref = kindref + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='refTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='refTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='refTextType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.kindref is not None: + outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='refTextType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='refTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.kindref is not None: + showIndent(outfile, level) + outfile.write('kindref = "%s",\n' % (self.kindref,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('kindref'): + self.kindref = attrs.get('kindref').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class refTextType + + +class sectiondefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, header=None, description=None, memberdef=None): + self.kind = kind + self.header = header + self.description = description + if memberdef is None: + self.memberdef = [] + else: + self.memberdef = memberdef + def factory(*args_, **kwargs_): + if sectiondefType.subclass: + return sectiondefType.subclass(*args_, **kwargs_) + else: + return sectiondefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_header(self): return self.header + def set_header(self, header): self.header = header + def get_description(self): return self.description + def set_description(self, description): self.description = description + def get_memberdef(self): return self.memberdef + def set_memberdef(self, memberdef): self.memberdef = memberdef + def add_memberdef(self, value): self.memberdef.append(value) + def insert_memberdef(self, index, value): self.memberdef[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='sectiondefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='sectiondefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='sectiondefType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='sectiondefType'): + if self.header is not None: + showIndent(outfile, level) + outfile.write('<%sheader>%s\n' % (namespace_, self.format_string(quote_xml(self.header).encode(ExternalEncoding), input_name='header'), namespace_)) + if self.description: + self.description.export(outfile, level, namespace_, name_='description') + for memberdef_ in self.memberdef: + memberdef_.export(outfile, level, namespace_, name_='memberdef') + def hasContent_(self): + if ( + self.header is not None or + self.description is not None or + self.memberdef is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='sectiondefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('header=%s,\n' % quote_python(self.header).encode(ExternalEncoding)) + if self.description: + showIndent(outfile, level) + outfile.write('description=model_.descriptionType(\n') + self.description.exportLiteral(outfile, level, name_='description') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('memberdef=[\n') + level += 1 + for memberdef in self.memberdef: + showIndent(outfile, level) + outfile.write('model_.memberdef(\n') + memberdef.exportLiteral(outfile, level, name_='memberdef') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'header': + header_ = '' + for text__content_ in child_.childNodes: + header_ += text__content_.nodeValue + self.header = header_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'description': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_description(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'memberdef': + obj_ = memberdefType.factory() + obj_.build(child_) + self.memberdef.append(obj_) +# end class sectiondefType + + +class memberdefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, initonly=None, kind=None, volatile=None, const=None, raisexx=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition=None, argsstring=None, name=None, read=None, write=None, bitfield=None, reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): + self.initonly = initonly + self.kind = kind + self.volatile = volatile + self.const = const + self.raisexx = raisexx + self.virt = virt + self.readable = readable + self.prot = prot + self.explicit = explicit + self.new = new + self.final = final + self.writable = writable + self.add = add + self.static = static + self.remove = remove + self.sealed = sealed + self.mutable = mutable + self.gettable = gettable + self.inline = inline + self.settable = settable + self.id = id + self.templateparamlist = templateparamlist + self.type_ = type_ + self.definition = definition + self.argsstring = argsstring + self.name = name + self.read = read + self.write = write + self.bitfield = bitfield + if reimplements is None: + self.reimplements = [] + else: + self.reimplements = reimplements + if reimplementedby is None: + self.reimplementedby = [] + else: + self.reimplementedby = reimplementedby + if param is None: + self.param = [] + else: + self.param = param + if enumvalue is None: + self.enumvalue = [] + else: + self.enumvalue = enumvalue + self.initializer = initializer + self.exceptions = exceptions + self.briefdescription = briefdescription + self.detaileddescription = detaileddescription + self.inbodydescription = inbodydescription + self.location = location + if references is None: + self.references = [] + else: + self.references = references + if referencedby is None: + self.referencedby = [] + else: + self.referencedby = referencedby + def factory(*args_, **kwargs_): + if memberdefType.subclass: + return memberdefType.subclass(*args_, **kwargs_) + else: + return memberdefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_templateparamlist(self): return self.templateparamlist + def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_definition(self): return self.definition + def set_definition(self, definition): self.definition = definition + def get_argsstring(self): return self.argsstring + def set_argsstring(self, argsstring): self.argsstring = argsstring + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_read(self): return self.read + def set_read(self, read): self.read = read + def get_write(self): return self.write + def set_write(self, write): self.write = write + def get_bitfield(self): return self.bitfield + def set_bitfield(self, bitfield): self.bitfield = bitfield + def get_reimplements(self): return self.reimplements + def set_reimplements(self, reimplements): self.reimplements = reimplements + def add_reimplements(self, value): self.reimplements.append(value) + def insert_reimplements(self, index, value): self.reimplements[index] = value + def get_reimplementedby(self): return self.reimplementedby + def set_reimplementedby(self, reimplementedby): self.reimplementedby = reimplementedby + def add_reimplementedby(self, value): self.reimplementedby.append(value) + def insert_reimplementedby(self, index, value): self.reimplementedby[index] = value + def get_param(self): return self.param + def set_param(self, param): self.param = param + def add_param(self, value): self.param.append(value) + def insert_param(self, index, value): self.param[index] = value + def get_enumvalue(self): return self.enumvalue + def set_enumvalue(self, enumvalue): self.enumvalue = enumvalue + def add_enumvalue(self, value): self.enumvalue.append(value) + def insert_enumvalue(self, index, value): self.enumvalue[index] = value + def get_initializer(self): return self.initializer + def set_initializer(self, initializer): self.initializer = initializer + def get_exceptions(self): return self.exceptions + def set_exceptions(self, exceptions): self.exceptions = exceptions + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_inbodydescription(self): return self.inbodydescription + def set_inbodydescription(self, inbodydescription): self.inbodydescription = inbodydescription + def get_location(self): return self.location + def set_location(self, location): self.location = location + def get_references(self): return self.references + def set_references(self, references): self.references = references + def add_references(self, value): self.references.append(value) + def insert_references(self, index, value): self.references[index] = value + def get_referencedby(self): return self.referencedby + def set_referencedby(self, referencedby): self.referencedby = referencedby + def add_referencedby(self, value): self.referencedby.append(value) + def insert_referencedby(self, index, value): self.referencedby[index] = value + def get_initonly(self): return self.initonly + def set_initonly(self, initonly): self.initonly = initonly + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_volatile(self): return self.volatile + def set_volatile(self, volatile): self.volatile = volatile + def get_const(self): return self.const + def set_const(self, const): self.const = const + def get_raise(self): return self.raisexx + def set_raise(self, raisexx): self.raisexx = raisexx + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_readable(self): return self.readable + def set_readable(self, readable): self.readable = readable + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_explicit(self): return self.explicit + def set_explicit(self, explicit): self.explicit = explicit + def get_new(self): return self.new + def set_new(self, new): self.new = new + def get_final(self): return self.final + def set_final(self, final): self.final = final + def get_writable(self): return self.writable + def set_writable(self, writable): self.writable = writable + def get_add(self): return self.add + def set_add(self, add): self.add = add + def get_static(self): return self.static + def set_static(self, static): self.static = static + def get_remove(self): return self.remove + def set_remove(self, remove): self.remove = remove + def get_sealed(self): return self.sealed + def set_sealed(self, sealed): self.sealed = sealed + def get_mutable(self): return self.mutable + def set_mutable(self, mutable): self.mutable = mutable + def get_gettable(self): return self.gettable + def set_gettable(self, gettable): self.gettable = gettable + def get_inline(self): return self.inline + def set_inline(self, inline): self.inline = inline + def get_settable(self): return self.settable + def set_settable(self, settable): self.settable = settable + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='memberdefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='memberdefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='memberdefType'): + if self.initonly is not None: + outfile.write(' initonly=%s' % (quote_attrib(self.initonly), )) + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + if self.volatile is not None: + outfile.write(' volatile=%s' % (quote_attrib(self.volatile), )) + if self.const is not None: + outfile.write(' const=%s' % (quote_attrib(self.const), )) + if self.raisexx is not None: + outfile.write(' raise=%s' % (quote_attrib(self.raisexx), )) + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.readable is not None: + outfile.write(' readable=%s' % (quote_attrib(self.readable), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.explicit is not None: + outfile.write(' explicit=%s' % (quote_attrib(self.explicit), )) + if self.new is not None: + outfile.write(' new=%s' % (quote_attrib(self.new), )) + if self.final is not None: + outfile.write(' final=%s' % (quote_attrib(self.final), )) + if self.writable is not None: + outfile.write(' writable=%s' % (quote_attrib(self.writable), )) + if self.add is not None: + outfile.write(' add=%s' % (quote_attrib(self.add), )) + if self.static is not None: + outfile.write(' static=%s' % (quote_attrib(self.static), )) + if self.remove is not None: + outfile.write(' remove=%s' % (quote_attrib(self.remove), )) + if self.sealed is not None: + outfile.write(' sealed=%s' % (quote_attrib(self.sealed), )) + if self.mutable is not None: + outfile.write(' mutable=%s' % (quote_attrib(self.mutable), )) + if self.gettable is not None: + outfile.write(' gettable=%s' % (quote_attrib(self.gettable), )) + if self.inline is not None: + outfile.write(' inline=%s' % (quote_attrib(self.inline), )) + if self.settable is not None: + outfile.write(' settable=%s' % (quote_attrib(self.settable), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='memberdefType'): + if self.templateparamlist: + self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') + if self.type_: + self.type_.export(outfile, level, namespace_, name_='type') + if self.definition is not None: + showIndent(outfile, level) + outfile.write('<%sdefinition>%s\n' % (namespace_, self.format_string(quote_xml(self.definition).encode(ExternalEncoding), input_name='definition'), namespace_)) + if self.argsstring is not None: + showIndent(outfile, level) + outfile.write('<%sargsstring>%s\n' % (namespace_, self.format_string(quote_xml(self.argsstring).encode(ExternalEncoding), input_name='argsstring'), namespace_)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + if self.read is not None: + showIndent(outfile, level) + outfile.write('<%sread>%s\n' % (namespace_, self.format_string(quote_xml(self.read).encode(ExternalEncoding), input_name='read'), namespace_)) + if self.write is not None: + showIndent(outfile, level) + outfile.write('<%swrite>%s\n' % (namespace_, self.format_string(quote_xml(self.write).encode(ExternalEncoding), input_name='write'), namespace_)) + if self.bitfield is not None: + showIndent(outfile, level) + outfile.write('<%sbitfield>%s\n' % (namespace_, self.format_string(quote_xml(self.bitfield).encode(ExternalEncoding), input_name='bitfield'), namespace_)) + for reimplements_ in self.reimplements: + reimplements_.export(outfile, level, namespace_, name_='reimplements') + for reimplementedby_ in self.reimplementedby: + reimplementedby_.export(outfile, level, namespace_, name_='reimplementedby') + for param_ in self.param: + param_.export(outfile, level, namespace_, name_='param') + for enumvalue_ in self.enumvalue: + enumvalue_.export(outfile, level, namespace_, name_='enumvalue') + if self.initializer: + self.initializer.export(outfile, level, namespace_, name_='initializer') + if self.exceptions: + self.exceptions.export(outfile, level, namespace_, name_='exceptions') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + if self.detaileddescription: + self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') + if self.inbodydescription: + self.inbodydescription.export(outfile, level, namespace_, name_='inbodydescription') + if self.location: + self.location.export(outfile, level, namespace_, name_='location', ) + for references_ in self.references: + references_.export(outfile, level, namespace_, name_='references') + for referencedby_ in self.referencedby: + referencedby_.export(outfile, level, namespace_, name_='referencedby') + def hasContent_(self): + if ( + self.templateparamlist is not None or + self.type_ is not None or + self.definition is not None or + self.argsstring is not None or + self.name is not None or + self.read is not None or + self.write is not None or + self.bitfield is not None or + self.reimplements is not None or + self.reimplementedby is not None or + self.param is not None or + self.enumvalue is not None or + self.initializer is not None or + self.exceptions is not None or + self.briefdescription is not None or + self.detaileddescription is not None or + self.inbodydescription is not None or + self.location is not None or + self.references is not None or + self.referencedby is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='memberdefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.initonly is not None: + showIndent(outfile, level) + outfile.write('initonly = "%s",\n' % (self.initonly,)) + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.volatile is not None: + showIndent(outfile, level) + outfile.write('volatile = "%s",\n' % (self.volatile,)) + if self.const is not None: + showIndent(outfile, level) + outfile.write('const = "%s",\n' % (self.const,)) + if self.raisexx is not None: + showIndent(outfile, level) + outfile.write('raisexx = "%s",\n' % (self.raisexx,)) + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.readable is not None: + showIndent(outfile, level) + outfile.write('readable = "%s",\n' % (self.readable,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.explicit is not None: + showIndent(outfile, level) + outfile.write('explicit = "%s",\n' % (self.explicit,)) + if self.new is not None: + showIndent(outfile, level) + outfile.write('new = "%s",\n' % (self.new,)) + if self.final is not None: + showIndent(outfile, level) + outfile.write('final = "%s",\n' % (self.final,)) + if self.writable is not None: + showIndent(outfile, level) + outfile.write('writable = "%s",\n' % (self.writable,)) + if self.add is not None: + showIndent(outfile, level) + outfile.write('add = "%s",\n' % (self.add,)) + if self.static is not None: + showIndent(outfile, level) + outfile.write('static = "%s",\n' % (self.static,)) + if self.remove is not None: + showIndent(outfile, level) + outfile.write('remove = "%s",\n' % (self.remove,)) + if self.sealed is not None: + showIndent(outfile, level) + outfile.write('sealed = "%s",\n' % (self.sealed,)) + if self.mutable is not None: + showIndent(outfile, level) + outfile.write('mutable = "%s",\n' % (self.mutable,)) + if self.gettable is not None: + showIndent(outfile, level) + outfile.write('gettable = "%s",\n' % (self.gettable,)) + if self.inline is not None: + showIndent(outfile, level) + outfile.write('inline = "%s",\n' % (self.inline,)) + if self.settable is not None: + showIndent(outfile, level) + outfile.write('settable = "%s",\n' % (self.settable,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.templateparamlist: + showIndent(outfile, level) + outfile.write('templateparamlist=model_.templateparamlistType(\n') + self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') + showIndent(outfile, level) + outfile.write('),\n') + if self.type_: + showIndent(outfile, level) + outfile.write('type_=model_.linkedTextType(\n') + self.type_.exportLiteral(outfile, level, name_='type') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('definition=%s,\n' % quote_python(self.definition).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('argsstring=%s,\n' % quote_python(self.argsstring).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('read=%s,\n' % quote_python(self.read).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('write=%s,\n' % quote_python(self.write).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('bitfield=%s,\n' % quote_python(self.bitfield).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('reimplements=[\n') + level += 1 + for reimplements in self.reimplements: + showIndent(outfile, level) + outfile.write('model_.reimplements(\n') + reimplements.exportLiteral(outfile, level, name_='reimplements') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('reimplementedby=[\n') + level += 1 + for reimplementedby in self.reimplementedby: + showIndent(outfile, level) + outfile.write('model_.reimplementedby(\n') + reimplementedby.exportLiteral(outfile, level, name_='reimplementedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('param=[\n') + level += 1 + for param in self.param: + showIndent(outfile, level) + outfile.write('model_.param(\n') + param.exportLiteral(outfile, level, name_='param') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('enumvalue=[\n') + level += 1 + for enumvalue in self.enumvalue: + showIndent(outfile, level) + outfile.write('model_.enumvalue(\n') + enumvalue.exportLiteral(outfile, level, name_='enumvalue') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.initializer: + showIndent(outfile, level) + outfile.write('initializer=model_.linkedTextType(\n') + self.initializer.exportLiteral(outfile, level, name_='initializer') + showIndent(outfile, level) + outfile.write('),\n') + if self.exceptions: + showIndent(outfile, level) + outfile.write('exceptions=model_.linkedTextType(\n') + self.exceptions.exportLiteral(outfile, level, name_='exceptions') + showIndent(outfile, level) + outfile.write('),\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.detaileddescription: + showIndent(outfile, level) + outfile.write('detaileddescription=model_.descriptionType(\n') + self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.inbodydescription: + showIndent(outfile, level) + outfile.write('inbodydescription=model_.descriptionType(\n') + self.inbodydescription.exportLiteral(outfile, level, name_='inbodydescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.location: + showIndent(outfile, level) + outfile.write('location=model_.locationType(\n') + self.location.exportLiteral(outfile, level, name_='location') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('references=[\n') + level += 1 + for references in self.references: + showIndent(outfile, level) + outfile.write('model_.references(\n') + references.exportLiteral(outfile, level, name_='references') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('referencedby=[\n') + level += 1 + for referencedby in self.referencedby: + showIndent(outfile, level) + outfile.write('model_.referencedby(\n') + referencedby.exportLiteral(outfile, level, name_='referencedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('initonly'): + self.initonly = attrs.get('initonly').value + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('volatile'): + self.volatile = attrs.get('volatile').value + if attrs.get('const'): + self.const = attrs.get('const').value + if attrs.get('raise'): + self.raisexx = attrs.get('raise').value + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('readable'): + self.readable = attrs.get('readable').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('explicit'): + self.explicit = attrs.get('explicit').value + if attrs.get('new'): + self.new = attrs.get('new').value + if attrs.get('final'): + self.final = attrs.get('final').value + if attrs.get('writable'): + self.writable = attrs.get('writable').value + if attrs.get('add'): + self.add = attrs.get('add').value + if attrs.get('static'): + self.static = attrs.get('static').value + if attrs.get('remove'): + self.remove = attrs.get('remove').value + if attrs.get('sealed'): + self.sealed = attrs.get('sealed').value + if attrs.get('mutable'): + self.mutable = attrs.get('mutable').value + if attrs.get('gettable'): + self.gettable = attrs.get('gettable').value + if attrs.get('inline'): + self.inline = attrs.get('inline').value + if attrs.get('settable'): + self.settable = attrs.get('settable').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'templateparamlist': + obj_ = templateparamlistType.factory() + obj_.build(child_) + self.set_templateparamlist(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'type': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_type(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'definition': + definition_ = '' + for text__content_ in child_.childNodes: + definition_ += text__content_.nodeValue + self.definition = definition_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'argsstring': + argsstring_ = '' + for text__content_ in child_.childNodes: + argsstring_ += text__content_.nodeValue + self.argsstring = argsstring_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'read': + read_ = '' + for text__content_ in child_.childNodes: + read_ += text__content_.nodeValue + self.read = read_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'write': + write_ = '' + for text__content_ in child_.childNodes: + write_ += text__content_.nodeValue + self.write = write_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'bitfield': + bitfield_ = '' + for text__content_ in child_.childNodes: + bitfield_ += text__content_.nodeValue + self.bitfield = bitfield_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'reimplements': + obj_ = reimplementType.factory() + obj_.build(child_) + self.reimplements.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'reimplementedby': + obj_ = reimplementType.factory() + obj_.build(child_) + self.reimplementedby.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'param': + obj_ = paramType.factory() + obj_.build(child_) + self.param.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'enumvalue': + obj_ = enumvalueType.factory() + obj_.build(child_) + self.enumvalue.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'initializer': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_initializer(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'exceptions': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_exceptions(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_detaileddescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'inbodydescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_inbodydescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'location': + obj_ = locationType.factory() + obj_.build(child_) + self.set_location(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'references': + obj_ = referenceType.factory() + obj_.build(child_) + self.references.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'referencedby': + obj_ = referenceType.factory() + obj_.build(child_) + self.referencedby.append(obj_) +# end class memberdefType + + +class definition(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if definition.subclass: + return definition.subclass(*args_, **kwargs_) + else: + return definition(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='definition', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='definition') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='definition'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='definition'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='definition'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class definition + + +class argsstring(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if argsstring.subclass: + return argsstring.subclass(*args_, **kwargs_) + else: + return argsstring(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='argsstring', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='argsstring') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='argsstring'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='argsstring'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='argsstring'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class argsstring + + +class read(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if read.subclass: + return read.subclass(*args_, **kwargs_) + else: + return read(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='read', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='read') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='read'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='read'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='read'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class read + + +class write(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if write.subclass: + return write.subclass(*args_, **kwargs_) + else: + return write(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='write', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='write') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='write'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='write'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='write'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class write + + +class bitfield(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if bitfield.subclass: + return bitfield.subclass(*args_, **kwargs_) + else: + return bitfield(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='bitfield', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='bitfield') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='bitfield'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='bitfield'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='bitfield'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class bitfield + + +class descriptionType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, title=None, para=None, sect1=None, internal=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if descriptionType.subclass: + return descriptionType.subclass(*args_, **kwargs_) + else: + return descriptionType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def export(self, outfile, level, namespace_='', name_='descriptionType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='descriptionType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='descriptionType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='descriptionType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect1 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='descriptionType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + childobj_ = docSect1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect1', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class descriptionType + + +class enumvalueType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, prot=None, id=None, name=None, initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): + self.prot = prot + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if enumvalueType.subclass: + return enumvalueType.subclass(*args_, **kwargs_) + else: + return enumvalueType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_initializer(self): return self.initializer + def set_initializer(self, initializer): self.initializer = initializer + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='enumvalueType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='enumvalueType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='enumvalueType'): + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='enumvalueType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.name is not None or + self.initializer is not None or + self.briefdescription is not None or + self.detaileddescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='enumvalueType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + value_ = [] + for text_ in child_.childNodes: + value_.append(text_.nodeValue) + valuestr_ = ''.join(value_) + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'name', valuestr_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'initializer': + childobj_ = linkedTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'initializer', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + childobj_ = descriptionType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'briefdescription', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + childobj_ = descriptionType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'detaileddescription', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class enumvalueType + + +class templateparamlistType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, param=None): + if param is None: + self.param = [] + else: + self.param = param + def factory(*args_, **kwargs_): + if templateparamlistType.subclass: + return templateparamlistType.subclass(*args_, **kwargs_) + else: + return templateparamlistType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_param(self): return self.param + def set_param(self, param): self.param = param + def add_param(self, value): self.param.append(value) + def insert_param(self, index, value): self.param[index] = value + def export(self, outfile, level, namespace_='', name_='templateparamlistType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='templateparamlistType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='templateparamlistType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='templateparamlistType'): + for param_ in self.param: + param_.export(outfile, level, namespace_, name_='param') + def hasContent_(self): + if ( + self.param is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='templateparamlistType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('param=[\n') + level += 1 + for param in self.param: + showIndent(outfile, level) + outfile.write('model_.param(\n') + param.exportLiteral(outfile, level, name_='param') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'param': + obj_ = paramType.factory() + obj_.build(child_) + self.param.append(obj_) +# end class templateparamlistType + + +class paramType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, type_=None, declname=None, defname=None, array=None, defval=None, briefdescription=None): + self.type_ = type_ + self.declname = declname + self.defname = defname + self.array = array + self.defval = defval + self.briefdescription = briefdescription + def factory(*args_, **kwargs_): + if paramType.subclass: + return paramType.subclass(*args_, **kwargs_) + else: + return paramType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_declname(self): return self.declname + def set_declname(self, declname): self.declname = declname + def get_defname(self): return self.defname + def set_defname(self, defname): self.defname = defname + def get_array(self): return self.array + def set_array(self, array): self.array = array + def get_defval(self): return self.defval + def set_defval(self, defval): self.defval = defval + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def export(self, outfile, level, namespace_='', name_='paramType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='paramType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='paramType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='paramType'): + if self.type_: + self.type_.export(outfile, level, namespace_, name_='type') + if self.declname is not None: + showIndent(outfile, level) + outfile.write('<%sdeclname>%s\n' % (namespace_, self.format_string(quote_xml(self.declname).encode(ExternalEncoding), input_name='declname'), namespace_)) + if self.defname is not None: + showIndent(outfile, level) + outfile.write('<%sdefname>%s\n' % (namespace_, self.format_string(quote_xml(self.defname).encode(ExternalEncoding), input_name='defname'), namespace_)) + if self.array is not None: + showIndent(outfile, level) + outfile.write('<%sarray>%s\n' % (namespace_, self.format_string(quote_xml(self.array).encode(ExternalEncoding), input_name='array'), namespace_)) + if self.defval: + self.defval.export(outfile, level, namespace_, name_='defval') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + def hasContent_(self): + if ( + self.type_ is not None or + self.declname is not None or + self.defname is not None or + self.array is not None or + self.defval is not None or + self.briefdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='paramType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.type_: + showIndent(outfile, level) + outfile.write('type_=model_.linkedTextType(\n') + self.type_.exportLiteral(outfile, level, name_='type') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('declname=%s,\n' % quote_python(self.declname).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('defname=%s,\n' % quote_python(self.defname).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('array=%s,\n' % quote_python(self.array).encode(ExternalEncoding)) + if self.defval: + showIndent(outfile, level) + outfile.write('defval=model_.linkedTextType(\n') + self.defval.exportLiteral(outfile, level, name_='defval') + showIndent(outfile, level) + outfile.write('),\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'type': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_type(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'declname': + declname_ = '' + for text__content_ in child_.childNodes: + declname_ += text__content_.nodeValue + self.declname = declname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'defname': + defname_ = '' + for text__content_ in child_.childNodes: + defname_ += text__content_.nodeValue + self.defname = defname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'array': + array_ = '' + for text__content_ in child_.childNodes: + array_ += text__content_.nodeValue + self.array = array_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'defval': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_defval(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) +# end class paramType + + +class declname(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if declname.subclass: + return declname.subclass(*args_, **kwargs_) + else: + return declname(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='declname', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='declname') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='declname'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='declname'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='declname'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class declname + + +class defname(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if defname.subclass: + return defname.subclass(*args_, **kwargs_) + else: + return defname(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='defname', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='defname') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='defname'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='defname'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='defname'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class defname + + +class array(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if array.subclass: + return array.subclass(*args_, **kwargs_) + else: + return array(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='array', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='array') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='array'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='array'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='array'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class array + + +class linkedTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, ref=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if linkedTextType.subclass: + return linkedTextType.subclass(*args_, **kwargs_) + else: + return linkedTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def add_ref(self, value): self.ref.append(value) + def insert_ref(self, index, value): self.ref[index] = value + def export(self, outfile, level, namespace_='', name_='linkedTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='linkedTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='linkedTextType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='linkedTextType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='linkedTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class linkedTextType + + +class graphType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, node=None): + if node is None: + self.node = [] + else: + self.node = node + def factory(*args_, **kwargs_): + if graphType.subclass: + return graphType.subclass(*args_, **kwargs_) + else: + return graphType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_node(self): return self.node + def set_node(self, node): self.node = node + def add_node(self, value): self.node.append(value) + def insert_node(self, index, value): self.node[index] = value + def export(self, outfile, level, namespace_='', name_='graphType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='graphType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='graphType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='graphType'): + for node_ in self.node: + node_.export(outfile, level, namespace_, name_='node') + def hasContent_(self): + if ( + self.node is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='graphType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('node=[\n') + level += 1 + for node in self.node: + showIndent(outfile, level) + outfile.write('model_.node(\n') + node.exportLiteral(outfile, level, name_='node') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'node': + obj_ = nodeType.factory() + obj_.build(child_) + self.node.append(obj_) +# end class graphType + + +class nodeType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, label=None, link=None, childnode=None): + self.id = id + self.label = label + self.link = link + if childnode is None: + self.childnode = [] + else: + self.childnode = childnode + def factory(*args_, **kwargs_): + if nodeType.subclass: + return nodeType.subclass(*args_, **kwargs_) + else: + return nodeType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_label(self): return self.label + def set_label(self, label): self.label = label + def get_link(self): return self.link + def set_link(self, link): self.link = link + def get_childnode(self): return self.childnode + def set_childnode(self, childnode): self.childnode = childnode + def add_childnode(self, value): self.childnode.append(value) + def insert_childnode(self, index, value): self.childnode[index] = value + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='nodeType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='nodeType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='nodeType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='nodeType'): + if self.label is not None: + showIndent(outfile, level) + outfile.write('<%slabel>%s\n' % (namespace_, self.format_string(quote_xml(self.label).encode(ExternalEncoding), input_name='label'), namespace_)) + if self.link: + self.link.export(outfile, level, namespace_, name_='link') + for childnode_ in self.childnode: + childnode_.export(outfile, level, namespace_, name_='childnode') + def hasContent_(self): + if ( + self.label is not None or + self.link is not None or + self.childnode is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='nodeType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('label=%s,\n' % quote_python(self.label).encode(ExternalEncoding)) + if self.link: + showIndent(outfile, level) + outfile.write('link=model_.linkType(\n') + self.link.exportLiteral(outfile, level, name_='link') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('childnode=[\n') + level += 1 + for childnode in self.childnode: + showIndent(outfile, level) + outfile.write('model_.childnode(\n') + childnode.exportLiteral(outfile, level, name_='childnode') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'label': + label_ = '' + for text__content_ in child_.childNodes: + label_ += text__content_.nodeValue + self.label = label_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'link': + obj_ = linkType.factory() + obj_.build(child_) + self.set_link(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'childnode': + obj_ = childnodeType.factory() + obj_.build(child_) + self.childnode.append(obj_) +# end class nodeType + + +class label(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if label.subclass: + return label.subclass(*args_, **kwargs_) + else: + return label(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='label', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='label') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='label'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='label'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='label'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class label + + +class childnodeType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, relation=None, refid=None, edgelabel=None): + self.relation = relation + self.refid = refid + if edgelabel is None: + self.edgelabel = [] + else: + self.edgelabel = edgelabel + def factory(*args_, **kwargs_): + if childnodeType.subclass: + return childnodeType.subclass(*args_, **kwargs_) + else: + return childnodeType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_edgelabel(self): return self.edgelabel + def set_edgelabel(self, edgelabel): self.edgelabel = edgelabel + def add_edgelabel(self, value): self.edgelabel.append(value) + def insert_edgelabel(self, index, value): self.edgelabel[index] = value + def get_relation(self): return self.relation + def set_relation(self, relation): self.relation = relation + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='childnodeType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='childnodeType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='childnodeType'): + if self.relation is not None: + outfile.write(' relation=%s' % (quote_attrib(self.relation), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='childnodeType'): + for edgelabel_ in self.edgelabel: + showIndent(outfile, level) + outfile.write('<%sedgelabel>%s\n' % (namespace_, self.format_string(quote_xml(edgelabel_).encode(ExternalEncoding), input_name='edgelabel'), namespace_)) + def hasContent_(self): + if ( + self.edgelabel is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='childnodeType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.relation is not None: + showIndent(outfile, level) + outfile.write('relation = "%s",\n' % (self.relation,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('edgelabel=[\n') + level += 1 + for edgelabel in self.edgelabel: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(edgelabel).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('relation'): + self.relation = attrs.get('relation').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'edgelabel': + edgelabel_ = '' + for text__content_ in child_.childNodes: + edgelabel_ += text__content_.nodeValue + self.edgelabel.append(edgelabel_) +# end class childnodeType + + +class edgelabel(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if edgelabel.subclass: + return edgelabel.subclass(*args_, **kwargs_) + else: + return edgelabel(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='edgelabel', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='edgelabel') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='edgelabel'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='edgelabel'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='edgelabel'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class edgelabel + + +class linkType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, external=None, valueOf_=''): + self.refid = refid + self.external = external + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if linkType.subclass: + return linkType.subclass(*args_, **kwargs_) + else: + return linkType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='linkType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='linkType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='linkType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='linkType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='linkType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class linkType + + +class listingType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, codeline=None): + if codeline is None: + self.codeline = [] + else: + self.codeline = codeline + def factory(*args_, **kwargs_): + if listingType.subclass: + return listingType.subclass(*args_, **kwargs_) + else: + return listingType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_codeline(self): return self.codeline + def set_codeline(self, codeline): self.codeline = codeline + def add_codeline(self, value): self.codeline.append(value) + def insert_codeline(self, index, value): self.codeline[index] = value + def export(self, outfile, level, namespace_='', name_='listingType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='listingType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='listingType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='listingType'): + for codeline_ in self.codeline: + codeline_.export(outfile, level, namespace_, name_='codeline') + def hasContent_(self): + if ( + self.codeline is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='listingType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('codeline=[\n') + level += 1 + for codeline in self.codeline: + showIndent(outfile, level) + outfile.write('model_.codeline(\n') + codeline.exportLiteral(outfile, level, name_='codeline') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'codeline': + obj_ = codelineType.factory() + obj_.build(child_) + self.codeline.append(obj_) +# end class listingType + + +class codelineType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): + self.external = external + self.lineno = lineno + self.refkind = refkind + self.refid = refid + if highlight is None: + self.highlight = [] + else: + self.highlight = highlight + def factory(*args_, **kwargs_): + if codelineType.subclass: + return codelineType.subclass(*args_, **kwargs_) + else: + return codelineType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_highlight(self): return self.highlight + def set_highlight(self, highlight): self.highlight = highlight + def add_highlight(self, value): self.highlight.append(value) + def insert_highlight(self, index, value): self.highlight[index] = value + def get_external(self): return self.external + def set_external(self, external): self.external = external + def get_lineno(self): return self.lineno + def set_lineno(self, lineno): self.lineno = lineno + def get_refkind(self): return self.refkind + def set_refkind(self, refkind): self.refkind = refkind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='codelineType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='codelineType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='codelineType'): + if self.external is not None: + outfile.write(' external=%s' % (quote_attrib(self.external), )) + if self.lineno is not None: + outfile.write(' lineno="%s"' % self.format_integer(self.lineno, input_name='lineno')) + if self.refkind is not None: + outfile.write(' refkind=%s' % (quote_attrib(self.refkind), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='codelineType'): + for highlight_ in self.highlight: + highlight_.export(outfile, level, namespace_, name_='highlight') + def hasContent_(self): + if ( + self.highlight is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='codelineType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = "%s",\n' % (self.external,)) + if self.lineno is not None: + showIndent(outfile, level) + outfile.write('lineno = %s,\n' % (self.lineno,)) + if self.refkind is not None: + showIndent(outfile, level) + outfile.write('refkind = "%s",\n' % (self.refkind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('highlight=[\n') + level += 1 + for highlight in self.highlight: + showIndent(outfile, level) + outfile.write('model_.highlight(\n') + highlight.exportLiteral(outfile, level, name_='highlight') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('external'): + self.external = attrs.get('external').value + if attrs.get('lineno'): + try: + self.lineno = int(attrs.get('lineno').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (lineno): %s' % exp) + if attrs.get('refkind'): + self.refkind = attrs.get('refkind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'highlight': + obj_ = highlightType.factory() + obj_.build(child_) + self.highlight.append(obj_) +# end class codelineType + + +class highlightType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, classxx=None, sp=None, ref=None, mixedclass_=None, content_=None): + self.classxx = classxx + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if highlightType.subclass: + return highlightType.subclass(*args_, **kwargs_) + else: + return highlightType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_sp(self): return self.sp + def set_sp(self, sp): self.sp = sp + def add_sp(self, value): self.sp.append(value) + def insert_sp(self, index, value): self.sp[index] = value + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def add_ref(self, value): self.ref.append(value) + def insert_ref(self, index, value): self.ref[index] = value + def get_class(self): return self.classxx + def set_class(self, classxx): self.classxx = classxx + def export(self, outfile, level, namespace_='', name_='highlightType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='highlightType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='highlightType'): + if self.classxx is not None: + outfile.write(' class=%s' % (quote_attrib(self.classxx), )) + def exportChildren(self, outfile, level, namespace_='', name_='highlightType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.sp is not None or + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='highlightType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.classxx is not None: + showIndent(outfile, level) + outfile.write('classxx = "%s",\n' % (self.classxx,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('class'): + self.classxx = attrs.get('class').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sp': + value_ = [] + for text_ in child_.childNodes: + value_.append(text_.nodeValue) + valuestr_ = ''.join(value_) + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'sp', valuestr_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class highlightType + + +class sp(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if sp.subclass: + return sp.subclass(*args_, **kwargs_) + else: + return sp(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='sp', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='sp') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='sp'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='sp'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='sp'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class sp + + +class referenceType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): + self.endline = endline + self.startline = startline + self.refid = refid + self.compoundref = compoundref + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if referenceType.subclass: + return referenceType.subclass(*args_, **kwargs_) + else: + return referenceType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_endline(self): return self.endline + def set_endline(self, endline): self.endline = endline + def get_startline(self): return self.startline + def set_startline(self, startline): self.startline = startline + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_compoundref(self): return self.compoundref + def set_compoundref(self, compoundref): self.compoundref = compoundref + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='referenceType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='referenceType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='referenceType'): + if self.endline is not None: + outfile.write(' endline="%s"' % self.format_integer(self.endline, input_name='endline')) + if self.startline is not None: + outfile.write(' startline="%s"' % self.format_integer(self.startline, input_name='startline')) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.compoundref is not None: + outfile.write(' compoundref=%s' % (self.format_string(quote_attrib(self.compoundref).encode(ExternalEncoding), input_name='compoundref'), )) + def exportChildren(self, outfile, level, namespace_='', name_='referenceType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='referenceType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.endline is not None: + showIndent(outfile, level) + outfile.write('endline = %s,\n' % (self.endline,)) + if self.startline is not None: + showIndent(outfile, level) + outfile.write('startline = %s,\n' % (self.startline,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.compoundref is not None: + showIndent(outfile, level) + outfile.write('compoundref = %s,\n' % (self.compoundref,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('endline'): + try: + self.endline = int(attrs.get('endline').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (endline): %s' % exp) + if attrs.get('startline'): + try: + self.startline = int(attrs.get('startline').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (startline): %s' % exp) + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('compoundref'): + self.compoundref = attrs.get('compoundref').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class referenceType + + +class locationType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): + self.bodystart = bodystart + self.line = line + self.bodyend = bodyend + self.bodyfile = bodyfile + self.file = file + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if locationType.subclass: + return locationType.subclass(*args_, **kwargs_) + else: + return locationType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_bodystart(self): return self.bodystart + def set_bodystart(self, bodystart): self.bodystart = bodystart + def get_line(self): return self.line + def set_line(self, line): self.line = line + def get_bodyend(self): return self.bodyend + def set_bodyend(self, bodyend): self.bodyend = bodyend + def get_bodyfile(self): return self.bodyfile + def set_bodyfile(self, bodyfile): self.bodyfile = bodyfile + def get_file(self): return self.file + def set_file(self, file): self.file = file + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='locationType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='locationType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='locationType'): + if self.bodystart is not None: + outfile.write(' bodystart="%s"' % self.format_integer(self.bodystart, input_name='bodystart')) + if self.line is not None: + outfile.write(' line="%s"' % self.format_integer(self.line, input_name='line')) + if self.bodyend is not None: + outfile.write(' bodyend="%s"' % self.format_integer(self.bodyend, input_name='bodyend')) + if self.bodyfile is not None: + outfile.write(' bodyfile=%s' % (self.format_string(quote_attrib(self.bodyfile).encode(ExternalEncoding), input_name='bodyfile'), )) + if self.file is not None: + outfile.write(' file=%s' % (self.format_string(quote_attrib(self.file).encode(ExternalEncoding), input_name='file'), )) + def exportChildren(self, outfile, level, namespace_='', name_='locationType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='locationType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.bodystart is not None: + showIndent(outfile, level) + outfile.write('bodystart = %s,\n' % (self.bodystart,)) + if self.line is not None: + showIndent(outfile, level) + outfile.write('line = %s,\n' % (self.line,)) + if self.bodyend is not None: + showIndent(outfile, level) + outfile.write('bodyend = %s,\n' % (self.bodyend,)) + if self.bodyfile is not None: + showIndent(outfile, level) + outfile.write('bodyfile = %s,\n' % (self.bodyfile,)) + if self.file is not None: + showIndent(outfile, level) + outfile.write('file = %s,\n' % (self.file,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('bodystart'): + try: + self.bodystart = int(attrs.get('bodystart').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (bodystart): %s' % exp) + if attrs.get('line'): + try: + self.line = int(attrs.get('line').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (line): %s' % exp) + if attrs.get('bodyend'): + try: + self.bodyend = int(attrs.get('bodyend').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (bodyend): %s' % exp) + if attrs.get('bodyfile'): + self.bodyfile = attrs.get('bodyfile').value + if attrs.get('file'): + self.file = attrs.get('file').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class locationType + + +class docSect1Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect2=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect1Type.subclass: + return docSect1Type.subclass(*args_, **kwargs_) + else: + return docSect1Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect2(self): return self.sect2 + def set_sect2(self, sect2): self.sect2 = sect2 + def add_sect2(self, value): self.sect2.append(value) + def insert_sect2(self, index, value): self.sect2[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect1Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect1Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect1Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect1Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect2 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect1Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect2': + childobj_ = docSect2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect2', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect1Type + + +class docSect2Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect3=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect2Type.subclass: + return docSect2Type.subclass(*args_, **kwargs_) + else: + return docSect2Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect2Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect2Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect2Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect2Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect3 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect2Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect2Type + + +class docSect3Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect4=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect3Type.subclass: + return docSect3Type.subclass(*args_, **kwargs_) + else: + return docSect3Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect4(self): return self.sect4 + def set_sect4(self, sect4): self.sect4 = sect4 + def add_sect4(self, value): self.sect4.append(value) + def insert_sect4(self, index, value): self.sect4[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect3Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect3Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect3Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect3Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect4 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect3Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect4': + childobj_ = docSect4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect4', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect3Type + + +class docSect4Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect4Type.subclass: + return docSect4Type.subclass(*args_, **kwargs_) + else: + return docSect4Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect4Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect4Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect4Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect4Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect4Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect4Type + + +class docInternalType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalType.subclass: + return docInternalType.subclass(*args_, **kwargs_) + else: + return docInternalType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect1 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + childobj_ = docSect1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect1', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalType + + +class docInternalS1Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS1Type.subclass: + return docInternalS1Type.subclass(*args_, **kwargs_) + else: + return docInternalS1Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect2(self): return self.sect2 + def set_sect2(self, sect2): self.sect2 = sect2 + def add_sect2(self, value): self.sect2.append(value) + def insert_sect2(self, index, value): self.sect2[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS1Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS1Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS1Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS1Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect2 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS1Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect2': + childobj_ = docSect2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect2', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS1Type + + +class docInternalS2Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS2Type.subclass: + return docInternalS2Type.subclass(*args_, **kwargs_) + else: + return docInternalS2Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS2Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS2Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS2Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS2Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect3 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS2Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS2Type + + +class docInternalS3Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS3Type.subclass: + return docInternalS3Type.subclass(*args_, **kwargs_) + else: + return docInternalS3Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS3Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS3Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS3Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS3Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect3 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS3Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS3Type + + +class docInternalS4Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS4Type.subclass: + return docInternalS4Type.subclass(*args_, **kwargs_) + else: + return docInternalS4Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS4Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS4Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS4Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS4Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS4Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS4Type + + +class docTitleType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docTitleType.subclass: + return docTitleType.subclass(*args_, **kwargs_) + else: + return docTitleType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docTitleType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTitleType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docTitleType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docTitleType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTitleType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docTitleType + + +class docParaType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docParaType.subclass: + return docParaType.subclass(*args_, **kwargs_) + else: + return docParaType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docParaType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParaType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docParaType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParaType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParaType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docParaType + + +class docMarkupType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docMarkupType.subclass: + return docMarkupType.subclass(*args_, **kwargs_) + else: + return docMarkupType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docMarkupType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docMarkupType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docMarkupType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docMarkupType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docMarkupType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docMarkupType + + +class docURLLink(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): + self.url = url + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docURLLink.subclass: + return docURLLink.subclass(*args_, **kwargs_) + else: + return docURLLink(*args_, **kwargs_) + factory = staticmethod(factory) + def get_url(self): return self.url + def set_url(self, url): self.url = url + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docURLLink', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docURLLink') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docURLLink'): + if self.url is not None: + outfile.write(' url=%s' % (self.format_string(quote_attrib(self.url).encode(ExternalEncoding), input_name='url'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docURLLink'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docURLLink'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.url is not None: + showIndent(outfile, level) + outfile.write('url = %s,\n' % (self.url,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('url'): + self.url = attrs.get('url').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docURLLink + + +class docAnchorType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docAnchorType.subclass: + return docAnchorType.subclass(*args_, **kwargs_) + else: + return docAnchorType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docAnchorType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docAnchorType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docAnchorType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docAnchorType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docAnchorType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docAnchorType + + +class docFormulaType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docFormulaType.subclass: + return docFormulaType.subclass(*args_, **kwargs_) + else: + return docFormulaType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docFormulaType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docFormulaType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docFormulaType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docFormulaType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docFormulaType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docFormulaType + + +class docIndexEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, primaryie=None, secondaryie=None): + self.primaryie = primaryie + self.secondaryie = secondaryie + def factory(*args_, **kwargs_): + if docIndexEntryType.subclass: + return docIndexEntryType.subclass(*args_, **kwargs_) + else: + return docIndexEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_primaryie(self): return self.primaryie + def set_primaryie(self, primaryie): self.primaryie = primaryie + def get_secondaryie(self): return self.secondaryie + def set_secondaryie(self, secondaryie): self.secondaryie = secondaryie + def export(self, outfile, level, namespace_='', name_='docIndexEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docIndexEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docIndexEntryType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docIndexEntryType'): + if self.primaryie is not None: + showIndent(outfile, level) + outfile.write('<%sprimaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.primaryie).encode(ExternalEncoding), input_name='primaryie'), namespace_)) + if self.secondaryie is not None: + showIndent(outfile, level) + outfile.write('<%ssecondaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.secondaryie).encode(ExternalEncoding), input_name='secondaryie'), namespace_)) + def hasContent_(self): + if ( + self.primaryie is not None or + self.secondaryie is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docIndexEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('primaryie=%s,\n' % quote_python(self.primaryie).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('secondaryie=%s,\n' % quote_python(self.secondaryie).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'primaryie': + primaryie_ = '' + for text__content_ in child_.childNodes: + primaryie_ += text__content_.nodeValue + self.primaryie = primaryie_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'secondaryie': + secondaryie_ = '' + for text__content_ in child_.childNodes: + secondaryie_ += text__content_.nodeValue + self.secondaryie = secondaryie_ +# end class docIndexEntryType + + +class docListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, listitem=None): + if listitem is None: + self.listitem = [] + else: + self.listitem = listitem + def factory(*args_, **kwargs_): + if docListType.subclass: + return docListType.subclass(*args_, **kwargs_) + else: + return docListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_listitem(self): return self.listitem + def set_listitem(self, listitem): self.listitem = listitem + def add_listitem(self, value): self.listitem.append(value) + def insert_listitem(self, index, value): self.listitem[index] = value + def export(self, outfile, level, namespace_='', name_='docListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docListType'): + for listitem_ in self.listitem: + listitem_.export(outfile, level, namespace_, name_='listitem') + def hasContent_(self): + if ( + self.listitem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('listitem=[\n') + level += 1 + for listitem in self.listitem: + showIndent(outfile, level) + outfile.write('model_.listitem(\n') + listitem.exportLiteral(outfile, level, name_='listitem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'listitem': + obj_ = docListItemType.factory() + obj_.build(child_) + self.listitem.append(obj_) +# end class docListType + + +class docListItemType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None): + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docListItemType.subclass: + return docListItemType.subclass(*args_, **kwargs_) + else: + return docListItemType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def export(self, outfile, level, namespace_='', name_='docListItemType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docListItemType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docListItemType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docListItemType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docListItemType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docListItemType + + +class docSimpleSectType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, title=None, para=None): + self.kind = kind + self.title = title + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docSimpleSectType.subclass: + return docSimpleSectType.subclass(*args_, **kwargs_) + else: + return docSimpleSectType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='docSimpleSectType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSimpleSectType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docSimpleSectType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSimpleSectType'): + if self.title: + self.title.export(outfile, level, namespace_, name_='title') + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.title is not None or + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSimpleSectType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.title: + showIndent(outfile, level) + outfile.write('title=model_.docTitleType(\n') + self.title.exportLiteral(outfile, level, name_='title') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_title(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docSimpleSectType + + +class docVarListEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, term=None): + self.term = term + def factory(*args_, **kwargs_): + if docVarListEntryType.subclass: + return docVarListEntryType.subclass(*args_, **kwargs_) + else: + return docVarListEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_term(self): return self.term + def set_term(self, term): self.term = term + def export(self, outfile, level, namespace_='', name_='docVarListEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docVarListEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docVarListEntryType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docVarListEntryType'): + if self.term: + self.term.export(outfile, level, namespace_, name_='term', ) + def hasContent_(self): + if ( + self.term is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docVarListEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.term: + showIndent(outfile, level) + outfile.write('term=model_.docTitleType(\n') + self.term.exportLiteral(outfile, level, name_='term') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'term': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_term(obj_) +# end class docVarListEntryType + + +class docVariableListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docVariableListType.subclass: + return docVariableListType.subclass(*args_, **kwargs_) + else: + return docVariableListType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docVariableListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docVariableListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docVariableListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docVariableListType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docVariableListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docVariableListType + + +class docRefTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + self.kindref = kindref + self.external = external + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docRefTextType.subclass: + return docRefTextType.subclass(*args_, **kwargs_) + else: + return docRefTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_kindref(self): return self.kindref + def set_kindref(self, kindref): self.kindref = kindref + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docRefTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docRefTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docRefTextType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.kindref is not None: + outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docRefTextType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docRefTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.kindref is not None: + showIndent(outfile, level) + outfile.write('kindref = "%s",\n' % (self.kindref,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('kindref'): + self.kindref = attrs.get('kindref').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docRefTextType + + +class docTableType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, rows=None, cols=None, row=None, caption=None): + self.rows = rows + self.cols = cols + if row is None: + self.row = [] + else: + self.row = row + self.caption = caption + def factory(*args_, **kwargs_): + if docTableType.subclass: + return docTableType.subclass(*args_, **kwargs_) + else: + return docTableType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_row(self): return self.row + def set_row(self, row): self.row = row + def add_row(self, value): self.row.append(value) + def insert_row(self, index, value): self.row[index] = value + def get_caption(self): return self.caption + def set_caption(self, caption): self.caption = caption + def get_rows(self): return self.rows + def set_rows(self, rows): self.rows = rows + def get_cols(self): return self.cols + def set_cols(self, cols): self.cols = cols + def export(self, outfile, level, namespace_='', name_='docTableType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTableType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docTableType'): + if self.rows is not None: + outfile.write(' rows="%s"' % self.format_integer(self.rows, input_name='rows')) + if self.cols is not None: + outfile.write(' cols="%s"' % self.format_integer(self.cols, input_name='cols')) + def exportChildren(self, outfile, level, namespace_='', name_='docTableType'): + for row_ in self.row: + row_.export(outfile, level, namespace_, name_='row') + if self.caption: + self.caption.export(outfile, level, namespace_, name_='caption') + def hasContent_(self): + if ( + self.row is not None or + self.caption is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTableType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.rows is not None: + showIndent(outfile, level) + outfile.write('rows = %s,\n' % (self.rows,)) + if self.cols is not None: + showIndent(outfile, level) + outfile.write('cols = %s,\n' % (self.cols,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('row=[\n') + level += 1 + for row in self.row: + showIndent(outfile, level) + outfile.write('model_.row(\n') + row.exportLiteral(outfile, level, name_='row') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.caption: + showIndent(outfile, level) + outfile.write('caption=model_.docCaptionType(\n') + self.caption.exportLiteral(outfile, level, name_='caption') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('rows'): + try: + self.rows = int(attrs.get('rows').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (rows): %s' % exp) + if attrs.get('cols'): + try: + self.cols = int(attrs.get('cols').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (cols): %s' % exp) + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'row': + obj_ = docRowType.factory() + obj_.build(child_) + self.row.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'caption': + obj_ = docCaptionType.factory() + obj_.build(child_) + self.set_caption(obj_) +# end class docTableType + + +class docRowType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, entry=None): + if entry is None: + self.entry = [] + else: + self.entry = entry + def factory(*args_, **kwargs_): + if docRowType.subclass: + return docRowType.subclass(*args_, **kwargs_) + else: + return docRowType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_entry(self): return self.entry + def set_entry(self, entry): self.entry = entry + def add_entry(self, value): self.entry.append(value) + def insert_entry(self, index, value): self.entry[index] = value + def export(self, outfile, level, namespace_='', name_='docRowType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docRowType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docRowType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docRowType'): + for entry_ in self.entry: + entry_.export(outfile, level, namespace_, name_='entry') + def hasContent_(self): + if ( + self.entry is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docRowType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('entry=[\n') + level += 1 + for entry in self.entry: + showIndent(outfile, level) + outfile.write('model_.entry(\n') + entry.exportLiteral(outfile, level, name_='entry') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'entry': + obj_ = docEntryType.factory() + obj_.build(child_) + self.entry.append(obj_) +# end class docRowType + + +class docEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, thead=None, para=None): + self.thead = thead + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docEntryType.subclass: + return docEntryType.subclass(*args_, **kwargs_) + else: + return docEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_thead(self): return self.thead + def set_thead(self, thead): self.thead = thead + def export(self, outfile, level, namespace_='', name_='docEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docEntryType'): + if self.thead is not None: + outfile.write(' thead=%s' % (quote_attrib(self.thead), )) + def exportChildren(self, outfile, level, namespace_='', name_='docEntryType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.thead is not None: + showIndent(outfile, level) + outfile.write('thead = "%s",\n' % (self.thead,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('thead'): + self.thead = attrs.get('thead').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docEntryType + + +class docCaptionType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docCaptionType.subclass: + return docCaptionType.subclass(*args_, **kwargs_) + else: + return docCaptionType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docCaptionType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCaptionType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docCaptionType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docCaptionType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCaptionType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docCaptionType + + +class docHeadingType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): + self.level = level + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docHeadingType.subclass: + return docHeadingType.subclass(*args_, **kwargs_) + else: + return docHeadingType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_level(self): return self.level + def set_level(self, level): self.level = level + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docHeadingType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docHeadingType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docHeadingType'): + if self.level is not None: + outfile.write(' level="%s"' % self.format_integer(self.level, input_name='level')) + def exportChildren(self, outfile, level, namespace_='', name_='docHeadingType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docHeadingType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.level is not None: + showIndent(outfile, level) + outfile.write('level = %s,\n' % (self.level,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('level'): + try: + self.level = int(attrs.get('level').value) + except ValueError, exp: + raise ValueError('Bad integer attribute (level): %s' % exp) + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docHeadingType + + +class docImageType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): + self.width = width + self.type_ = type_ + self.name = name + self.height = height + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docImageType.subclass: + return docImageType.subclass(*args_, **kwargs_) + else: + return docImageType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_width(self): return self.width + def set_width(self, width): self.width = width + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_height(self): return self.height + def set_height(self, height): self.height = height + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docImageType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docImageType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docImageType'): + if self.width is not None: + outfile.write(' width=%s' % (self.format_string(quote_attrib(self.width).encode(ExternalEncoding), input_name='width'), )) + if self.type_ is not None: + outfile.write(' type=%s' % (quote_attrib(self.type_), )) + if self.name is not None: + outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + if self.height is not None: + outfile.write(' height=%s' % (self.format_string(quote_attrib(self.height).encode(ExternalEncoding), input_name='height'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docImageType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docImageType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.width is not None: + showIndent(outfile, level) + outfile.write('width = %s,\n' % (self.width,)) + if self.type_ is not None: + showIndent(outfile, level) + outfile.write('type_ = "%s",\n' % (self.type_,)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('name = %s,\n' % (self.name,)) + if self.height is not None: + showIndent(outfile, level) + outfile.write('height = %s,\n' % (self.height,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('width'): + self.width = attrs.get('width').value + if attrs.get('type'): + self.type_ = attrs.get('type').value + if attrs.get('name'): + self.name = attrs.get('name').value + if attrs.get('height'): + self.height = attrs.get('height').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docImageType + + +class docDotFileType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): + self.name = name + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docDotFileType.subclass: + return docDotFileType.subclass(*args_, **kwargs_) + else: + return docDotFileType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docDotFileType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docDotFileType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docDotFileType'): + if self.name is not None: + outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docDotFileType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docDotFileType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.name is not None: + showIndent(outfile, level) + outfile.write('name = %s,\n' % (self.name,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('name'): + self.name = attrs.get('name').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docDotFileType + + +class docTocItemType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docTocItemType.subclass: + return docTocItemType.subclass(*args_, **kwargs_) + else: + return docTocItemType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docTocItemType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTocItemType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docTocItemType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docTocItemType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTocItemType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docTocItemType + + +class docTocListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, tocitem=None): + if tocitem is None: + self.tocitem = [] + else: + self.tocitem = tocitem + def factory(*args_, **kwargs_): + if docTocListType.subclass: + return docTocListType.subclass(*args_, **kwargs_) + else: + return docTocListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_tocitem(self): return self.tocitem + def set_tocitem(self, tocitem): self.tocitem = tocitem + def add_tocitem(self, value): self.tocitem.append(value) + def insert_tocitem(self, index, value): self.tocitem[index] = value + def export(self, outfile, level, namespace_='', name_='docTocListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTocListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docTocListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docTocListType'): + for tocitem_ in self.tocitem: + tocitem_.export(outfile, level, namespace_, name_='tocitem') + def hasContent_(self): + if ( + self.tocitem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTocListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('tocitem=[\n') + level += 1 + for tocitem in self.tocitem: + showIndent(outfile, level) + outfile.write('model_.tocitem(\n') + tocitem.exportLiteral(outfile, level, name_='tocitem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'tocitem': + obj_ = docTocItemType.factory() + obj_.build(child_) + self.tocitem.append(obj_) +# end class docTocListType + + +class docLanguageType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, langid=None, para=None): + self.langid = langid + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docLanguageType.subclass: + return docLanguageType.subclass(*args_, **kwargs_) + else: + return docLanguageType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_langid(self): return self.langid + def set_langid(self, langid): self.langid = langid + def export(self, outfile, level, namespace_='', name_='docLanguageType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docLanguageType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docLanguageType'): + if self.langid is not None: + outfile.write(' langid=%s' % (self.format_string(quote_attrib(self.langid).encode(ExternalEncoding), input_name='langid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docLanguageType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docLanguageType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.langid is not None: + showIndent(outfile, level) + outfile.write('langid = %s,\n' % (self.langid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('langid'): + self.langid = attrs.get('langid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docLanguageType + + +class docParamListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, parameteritem=None): + self.kind = kind + if parameteritem is None: + self.parameteritem = [] + else: + self.parameteritem = parameteritem + def factory(*args_, **kwargs_): + if docParamListType.subclass: + return docParamListType.subclass(*args_, **kwargs_) + else: + return docParamListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parameteritem(self): return self.parameteritem + def set_parameteritem(self, parameteritem): self.parameteritem = parameteritem + def add_parameteritem(self, value): self.parameteritem.append(value) + def insert_parameteritem(self, index, value): self.parameteritem[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='docParamListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamListType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='docParamListType'): + for parameteritem_ in self.parameteritem: + parameteritem_.export(outfile, level, namespace_, name_='parameteritem') + def hasContent_(self): + if ( + self.parameteritem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parameteritem=[\n') + level += 1 + for parameteritem in self.parameteritem: + showIndent(outfile, level) + outfile.write('model_.parameteritem(\n') + parameteritem.exportLiteral(outfile, level, name_='parameteritem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameteritem': + obj_ = docParamListItem.factory() + obj_.build(child_) + self.parameteritem.append(obj_) +# end class docParamListType + + +class docParamListItem(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, parameternamelist=None, parameterdescription=None): + if parameternamelist is None: + self.parameternamelist = [] + else: + self.parameternamelist = parameternamelist + self.parameterdescription = parameterdescription + def factory(*args_, **kwargs_): + if docParamListItem.subclass: + return docParamListItem.subclass(*args_, **kwargs_) + else: + return docParamListItem(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parameternamelist(self): return self.parameternamelist + def set_parameternamelist(self, parameternamelist): self.parameternamelist = parameternamelist + def add_parameternamelist(self, value): self.parameternamelist.append(value) + def insert_parameternamelist(self, index, value): self.parameternamelist[index] = value + def get_parameterdescription(self): return self.parameterdescription + def set_parameterdescription(self, parameterdescription): self.parameterdescription = parameterdescription + def export(self, outfile, level, namespace_='', name_='docParamListItem', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamListItem') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamListItem'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParamListItem'): + for parameternamelist_ in self.parameternamelist: + parameternamelist_.export(outfile, level, namespace_, name_='parameternamelist') + if self.parameterdescription: + self.parameterdescription.export(outfile, level, namespace_, name_='parameterdescription', ) + def hasContent_(self): + if ( + self.parameternamelist is not None or + self.parameterdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamListItem'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parameternamelist=[\n') + level += 1 + for parameternamelist in self.parameternamelist: + showIndent(outfile, level) + outfile.write('model_.parameternamelist(\n') + parameternamelist.exportLiteral(outfile, level, name_='parameternamelist') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.parameterdescription: + showIndent(outfile, level) + outfile.write('parameterdescription=model_.descriptionType(\n') + self.parameterdescription.exportLiteral(outfile, level, name_='parameterdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameternamelist': + obj_ = docParamNameList.factory() + obj_.build(child_) + self.parameternamelist.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameterdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_parameterdescription(obj_) +# end class docParamListItem + + +class docParamNameList(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, parametername=None): + if parametername is None: + self.parametername = [] + else: + self.parametername = parametername + def factory(*args_, **kwargs_): + if docParamNameList.subclass: + return docParamNameList.subclass(*args_, **kwargs_) + else: + return docParamNameList(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parametername(self): return self.parametername + def set_parametername(self, parametername): self.parametername = parametername + def add_parametername(self, value): self.parametername.append(value) + def insert_parametername(self, index, value): self.parametername[index] = value + def export(self, outfile, level, namespace_='', name_='docParamNameList', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamNameList') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamNameList'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParamNameList'): + for parametername_ in self.parametername: + parametername_.export(outfile, level, namespace_, name_='parametername') + def hasContent_(self): + if ( + self.parametername is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamNameList'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parametername=[\n') + level += 1 + for parametername in self.parametername: + showIndent(outfile, level) + outfile.write('model_.parametername(\n') + parametername.exportLiteral(outfile, level, name_='parametername') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parametername': + obj_ = docParamName.factory() + obj_.build(child_) + self.parametername.append(obj_) +# end class docParamNameList + + +class docParamName(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): + self.direction = direction + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docParamName.subclass: + return docParamName.subclass(*args_, **kwargs_) + else: + return docParamName(*args_, **kwargs_) + factory = staticmethod(factory) + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def get_direction(self): return self.direction + def set_direction(self, direction): self.direction = direction + def export(self, outfile, level, namespace_='', name_='docParamName', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamName') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docParamName'): + if self.direction is not None: + outfile.write(' direction=%s' % (quote_attrib(self.direction), )) + def exportChildren(self, outfile, level, namespace_='', name_='docParamName'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamName'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.direction is not None: + showIndent(outfile, level) + outfile.write('direction = "%s",\n' % (self.direction,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('direction'): + self.direction = attrs.get('direction').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docParamName + + +class docXRefSectType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, xreftitle=None, xrefdescription=None): + self.id = id + if xreftitle is None: + self.xreftitle = [] + else: + self.xreftitle = xreftitle + self.xrefdescription = xrefdescription + def factory(*args_, **kwargs_): + if docXRefSectType.subclass: + return docXRefSectType.subclass(*args_, **kwargs_) + else: + return docXRefSectType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_xreftitle(self): return self.xreftitle + def set_xreftitle(self, xreftitle): self.xreftitle = xreftitle + def add_xreftitle(self, value): self.xreftitle.append(value) + def insert_xreftitle(self, index, value): self.xreftitle[index] = value + def get_xrefdescription(self): return self.xrefdescription + def set_xrefdescription(self, xrefdescription): self.xrefdescription = xrefdescription + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docXRefSectType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docXRefSectType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docXRefSectType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docXRefSectType'): + for xreftitle_ in self.xreftitle: + showIndent(outfile, level) + outfile.write('<%sxreftitle>%s\n' % (namespace_, self.format_string(quote_xml(xreftitle_).encode(ExternalEncoding), input_name='xreftitle'), namespace_)) + if self.xrefdescription: + self.xrefdescription.export(outfile, level, namespace_, name_='xrefdescription', ) + def hasContent_(self): + if ( + self.xreftitle is not None or + self.xrefdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docXRefSectType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('xreftitle=[\n') + level += 1 + for xreftitle in self.xreftitle: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(xreftitle).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.xrefdescription: + showIndent(outfile, level) + outfile.write('xrefdescription=model_.descriptionType(\n') + self.xrefdescription.exportLiteral(outfile, level, name_='xrefdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'xreftitle': + xreftitle_ = '' + for text__content_ in child_.childNodes: + xreftitle_ += text__content_.nodeValue + self.xreftitle.append(xreftitle_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'xrefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_xrefdescription(obj_) +# end class docXRefSectType + + +class docCopyType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, link=None, para=None, sect1=None, internal=None): + self.link = link + if para is None: + self.para = [] + else: + self.para = para + if sect1 is None: + self.sect1 = [] + else: + self.sect1 = sect1 + self.internal = internal + def factory(*args_, **kwargs_): + if docCopyType.subclass: + return docCopyType.subclass(*args_, **kwargs_) + else: + return docCopyType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_link(self): return self.link + def set_link(self, link): self.link = link + def export(self, outfile, level, namespace_='', name_='docCopyType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCopyType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docCopyType'): + if self.link is not None: + outfile.write(' link=%s' % (self.format_string(quote_attrib(self.link).encode(ExternalEncoding), input_name='link'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docCopyType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + for sect1_ in self.sect1: + sect1_.export(outfile, level, namespace_, name_='sect1') + if self.internal: + self.internal.export(outfile, level, namespace_, name_='internal') + def hasContent_(self): + if ( + self.para is not None or + self.sect1 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCopyType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.link is not None: + showIndent(outfile, level) + outfile.write('link = %s,\n' % (self.link,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('sect1=[\n') + level += 1 + for sect1 in self.sect1: + showIndent(outfile, level) + outfile.write('model_.sect1(\n') + sect1.exportLiteral(outfile, level, name_='sect1') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.internal: + showIndent(outfile, level) + outfile.write('internal=model_.docInternalType(\n') + self.internal.exportLiteral(outfile, level, name_='internal') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('link'): + self.link = attrs.get('link').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + obj_ = docSect1Type.factory() + obj_.build(child_) + self.sect1.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + obj_ = docInternalType.factory() + obj_.build(child_) + self.set_internal(obj_) +# end class docCopyType + + +class docCharType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, char=None, valueOf_=''): + self.char = char + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docCharType.subclass: + return docCharType.subclass(*args_, **kwargs_) + else: + return docCharType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_char(self): return self.char + def set_char(self, char): self.char = char + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docCharType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCharType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docCharType'): + if self.char is not None: + outfile.write(' char=%s' % (quote_attrib(self.char), )) + def exportChildren(self, outfile, level, namespace_='', name_='docCharType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCharType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.char is not None: + showIndent(outfile, level) + outfile.write('char = "%s",\n' % (self.char,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('char'): + self.char = attrs.get('char').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docCharType + + +class docEmptyType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docEmptyType.subclass: + return docEmptyType.subclass(*args_, **kwargs_) + else: + return docEmptyType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docEmptyType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docEmptyType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docEmptyType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docEmptyType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docEmptyType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docEmptyType + + +USAGE_TEXT = """ +Usage: python .py [ -s ] +Options: + -s Use the SAX parser, not the minidom parser. +""" + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def parse(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygen", + namespacedef_='') + return rootObj + + +def parseString(inString): + doc = minidom.parseString(inString) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygen", + namespacedef_='') + return rootObj + + +def parseLiteral(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('from compound import *\n\n') + sys.stdout.write('rootObj = doxygen(\n') + rootObj.exportLiteral(sys.stdout, 0, name_="doxygen") + sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + +if __name__ == '__main__': + main() + #import pdb + #pdb.run('main()') + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py new file mode 100644 index 000000000..7a70e14a1 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python + +""" +Generated Mon Feb 9 19:08:05 2009 by generateDS.py. +""" + +from xml.dom import minidom + +import os +import sys +import compound + +import indexsuper as supermod + +class DoxygenTypeSub(supermod.DoxygenType): + def __init__(self, version=None, compound=None): + supermod.DoxygenType.__init__(self, version, compound) + + def find_compounds_and_members(self, details): + """ + Returns a list of all compounds and their members which match details + """ + + results = [] + for compound in self.compound: + members = compound.find_members(details) + if members: + results.append([compound, members]) + else: + if details.match(compound): + results.append([compound, []]) + + return results + +supermod.DoxygenType.subclass = DoxygenTypeSub +# end class DoxygenTypeSub + + +class CompoundTypeSub(supermod.CompoundType): + def __init__(self, kind=None, refid=None, name='', member=None): + supermod.CompoundType.__init__(self, kind, refid, name, member) + + def find_members(self, details): + """ + Returns a list of all members which match details + """ + + results = [] + + for member in self.member: + if details.match(member): + results.append(member) + + return results + +supermod.CompoundType.subclass = CompoundTypeSub +# end class CompoundTypeSub + + +class MemberTypeSub(supermod.MemberType): + + def __init__(self, kind=None, refid=None, name=''): + supermod.MemberType.__init__(self, kind, refid, name) + +supermod.MemberType.subclass = MemberTypeSub +# end class MemberTypeSub + + +def parse(inFilename): + + doc = minidom.parse(inFilename) + rootNode = doc.documentElement + rootObj = supermod.DoxygenType.factory() + rootObj.build(rootNode) + + return rootObj + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py new file mode 100644 index 000000000..a99153019 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py @@ -0,0 +1,523 @@ +#!/usr/bin/env python + +# +# Generated Thu Jun 11 18:43:54 2009 by generateDS.py. +# + +import sys +import getopt +from string import lower as str_lower +from xml.dom import minidom +from xml.dom import Node + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError, exp: + + class GeneratedsSuper: + def format_string(self, input_data, input_name=''): + return input_data + def format_integer(self, input_data, input_name=''): + return '%d' % input_data + def format_float(self, input_data, input_name=''): + return '%f' % input_data + def format_double(self, input_data, input_name=''): + return '%e' % input_data + def format_boolean(self, input_data, input_name=''): + return '%s' % input_data + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Support/utility functions. +# + +def showIndent(outfile, level): + for idx in range(level): + outfile.write(' ') + +def quote_xml(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + +def quote_attrib(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +class MixedContainer: + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace): + if self.category == MixedContainer.CategoryText: + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace,name) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g' % (self.name, self.value, self.name)) + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s",\n' % \ + (self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class _MemberSpec(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type(self): return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +# +# Data representation classes. +# + +class DoxygenType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, version=None, compound=None): + self.version = version + if compound is None: + self.compound = [] + else: + self.compound = compound + def factory(*args_, **kwargs_): + if DoxygenType.subclass: + return DoxygenType.subclass(*args_, **kwargs_) + else: + return DoxygenType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compound(self): return self.compound + def set_compound(self, compound): self.compound = compound + def add_compound(self, value): self.compound.append(value) + def insert_compound(self, index, value): self.compound[index] = value + def get_version(self): return self.version + def set_version(self, version): self.version = version + def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): + outfile.write(' version=%s' % (self.format_string(quote_attrib(self.version).encode(ExternalEncoding), input_name='version'), )) + def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): + for compound_ in self.compound: + compound_.export(outfile, level, namespace_, name_='compound') + def hasContent_(self): + if ( + self.compound is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='DoxygenType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.version is not None: + showIndent(outfile, level) + outfile.write('version = %s,\n' % (self.version,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('compound=[\n') + level += 1 + for compound in self.compound: + showIndent(outfile, level) + outfile.write('model_.compound(\n') + compound.exportLiteral(outfile, level, name_='compound') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('version'): + self.version = attrs.get('version').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compound': + obj_ = CompoundType.factory() + obj_.build(child_) + self.compound.append(obj_) +# end class DoxygenType + + +class CompoundType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, refid=None, name=None, member=None): + self.kind = kind + self.refid = refid + self.name = name + if member is None: + self.member = [] + else: + self.member = member + def factory(*args_, **kwargs_): + if CompoundType.subclass: + return CompoundType.subclass(*args_, **kwargs_) + else: + return CompoundType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_member(self): return self.member + def set_member(self, member): self.member = member + def add_member(self, value): self.member.append(value) + def insert_member(self, index, value): self.member[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='CompoundType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='CompoundType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='CompoundType'): + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='CompoundType'): + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + for member_ in self.member: + member_.export(outfile, level, namespace_, name_='member') + def hasContent_(self): + if ( + self.name is not None or + self.member is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='CompoundType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('member=[\n') + level += 1 + for member in self.member: + showIndent(outfile, level) + outfile.write('model_.member(\n') + member.exportLiteral(outfile, level, name_='member') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'member': + obj_ = MemberType.factory() + obj_.build(child_) + self.member.append(obj_) +# end class CompoundType + + +class MemberType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, refid=None, name=None): + self.kind = kind + self.refid = refid + self.name = name + def factory(*args_, **kwargs_): + if MemberType.subclass: + return MemberType.subclass(*args_, **kwargs_) + else: + return MemberType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='MemberType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='MemberType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='MemberType'): + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='MemberType'): + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + def hasContent_(self): + if ( + self.name is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='MemberType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ +# end class MemberType + + +USAGE_TEXT = """ +Usage: python .py [ -s ] +Options: + -s Use the SAX parser, not the minidom parser. +""" + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def parse(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygenindex", + namespacedef_='') + return rootObj + + +def parseString(inString): + doc = minidom.parseString(inString) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygenindex", + namespacedef_='') + return rootObj + + +def parseLiteral(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('from index import *\n\n') + sys.stdout.write('rootObj = doxygenindex(\n') + rootObj.exportLiteral(sys.stdout, 0, name_="doxygenindex") + sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + + + +if __name__ == '__main__': + main() + #import pdb + #pdb.run('main()') + diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py new file mode 100644 index 000000000..6705cd1da --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py @@ -0,0 +1,36 @@ +""" +Utilities for extracting text from generated classes. +""" + +def is_string(txt): + if isinstance(txt, str): + return True + try: + if isinstance(txt, unicode): + return True + except NameError: + pass + return False + +def description(obj): + if obj is None: + return None + return description_bit(obj).strip() + +def description_bit(obj): + if hasattr(obj, 'content'): + contents = [description_bit(item) for item in obj.content] + result = ''.join(contents) + elif hasattr(obj, 'content_'): + contents = [description_bit(item) for item in obj.content_] + result = ''.join(contents) + elif hasattr(obj, 'value'): + result = description_bit(obj.value) + elif is_string(obj): + return obj + else: + raise StandardError('Expecting a string or something with content, content_ or value attribute') + # If this bit is a paragraph then add one some line breaks. + if hasattr(obj, 'name') and obj.name == 'para': + result += "\n\n" + return result diff --git a/gnuradio-core/src/python/gnuradio/utils/run_tests.in b/gnuradio-core/src/python/gnuradio/utils/run_tests.in new file mode 100644 index 000000000..504f33728 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/run_tests.in @@ -0,0 +1,16 @@ +#!/bin/sh + +# 1st parameter is absolute path to component source directory +# 2nd parameter is absolute path to component build directory +# 3rd parameter is path to Python QA directory + +# Note: calling master run_tests.sh in gnuradio core is not strictly +# correct, as it will result in a partially bogus PYTHONPATH, but it +# does make the correct paths in the second half so all is well. + +@PYTHON@ @srcdir@/doxyxml/__init__.py + +# @top_builddir@/run_tests.sh \ +# @abs_top_srcdir@/gnuradio-core \ +# @abs_top_builddir@/gnuradio-core \ +# @srcdir@ -- cgit From a20c127a9469aeac9ec60bf432c4128c49349f34 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Wed, 3 Nov 2010 20:53:07 -0700 Subject: Generation of python docstrings from doxygen xml. swig_doc.i is a swig interface file containing all the docstrings. It is generated using swig_doc.py and included by gnuradio.i. Minor changes to the swig make files have been made so that the generation of swig_doc.i occurs. --- Makefile.swig | 15 + Makefile.swig.gen.t | 5 +- gnuradio-core/src/lib/swig/Makefile.swig.gen | 30 +- gnuradio-core/src/lib/swig/gnuradio.i | 4 +- gnuradio-core/src/lib/swig/swig_doc.i | 26292 +++++++++++++++++++++++++ gnuradio-core/src/lib/swig/swig_doc.py | 195 + gr-atsc/src/lib/Makefile.swig.gen | 5 +- gr-audio-alsa/src/Makefile.swig.gen | 5 +- gr-audio-oss/src/Makefile.swig.gen | 5 +- gr-cvsd-vocoder/src/lib/Makefile.swig.gen | 5 +- gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen | 5 +- gr-msdd6000/src/Makefile.swig.gen | 166 +- gr-noaa/swig/Makefile.swig.gen | 5 +- gr-pager/swig/Makefile.swig.gen | 5 +- gr-qtgui/src/lib/Makefile.swig.gen | 5 +- gr-radio-astronomy/src/lib/Makefile.swig.gen | 5 +- gr-trellis/src/lib/Makefile.swig.gen | 5 +- gr-usrp/src/Makefile.swig.gen | 5 +- gr-usrp2/src/Makefile.swig.gen | 5 +- gr-video-sdl/src/Makefile.swig.gen | 5 +- usrp/host/swig/Makefile.swig.gen | 5 +- 21 files changed, 26689 insertions(+), 88 deletions(-) create mode 100644 gnuradio-core/src/lib/swig/swig_doc.i create mode 100644 gnuradio-core/src/lib/swig/swig_doc.py diff --git a/Makefile.swig b/Makefile.swig index 9e14835e5..f4ef3de89 100644 --- a/Makefile.swig +++ b/Makefile.swig @@ -71,6 +71,21 @@ STD_SWIG_CXX_FLAGS = @swig_CXXFLAGS@ SUFFIXES = .i +## Create the swig interface file swig_doc.i containing docstring information. + +$(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i: $(top_srcdir)/docs/doxygen/html/index.html + $(PYTHON) $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.py $(top_srcdir)/docs/doxygen/xml/ $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i + +## Make sure the doxygen docs are generated + +$(top_srcdir)/docs/doxygen/html/index.html: + docs_prep + @DOXYGEN@ + +docs_prep: + $(MKDIR_P) html + $(MKDIR_P) xml + ## Create $(srcdir)/Makefile.swig.gen, containing all of the rules ## for running SWIG to generate or re-generate outputs. SWIG file ## names are to be defined in TOP_SWIG_IFILES, and must include the diff --git a/Makefile.swig.gen.t b/Makefile.swig.gen.t index c15a81721..82ebe6090 100644 --- a/Makefile.swig.gen.t +++ b/Makefile.swig.gen.t @@ -107,11 +107,12 @@ _@NAME@_la_CXXFLAGS = \ ## Entry rule for running SWIG -@NAME@.h @NAME@.py @NAME@.cc: @NAME@.i +@NAME@.h @NAME@.py @NAME@.cc: @NAME@.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gnuradio-core/src/lib/swig/Makefile.swig.gen b/gnuradio-core/src/lib/swig/Makefile.swig.gen index e24ba5a96..2f02b5164 100644 --- a/gnuradio-core/src/lib/swig/Makefile.swig.gen +++ b/gnuradio-core/src/lib/swig/Makefile.swig.gen @@ -107,11 +107,12 @@ gnuradio_swig_py_runtime_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_runtime.h gnuradio_swig_py_runtime.py gnuradio_swig_py_runtime.cc: gnuradio_swig_py_runtime.i +gnuradio_swig_py_runtime.h gnuradio_swig_py_runtime.py gnuradio_swig_py_runtime.cc: gnuradio_swig_py_runtime.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -366,11 +367,12 @@ gnuradio_swig_py_general_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_general.h gnuradio_swig_py_general.py gnuradio_swig_py_general.cc: gnuradio_swig_py_general.i +gnuradio_swig_py_general.h gnuradio_swig_py_general.py gnuradio_swig_py_general.cc: gnuradio_swig_py_general.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -625,11 +627,12 @@ gnuradio_swig_py_gengen_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_gengen.h gnuradio_swig_py_gengen.py gnuradio_swig_py_gengen.cc: gnuradio_swig_py_gengen.i +gnuradio_swig_py_gengen.h gnuradio_swig_py_gengen.py gnuradio_swig_py_gengen.cc: gnuradio_swig_py_gengen.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -884,11 +887,12 @@ gnuradio_swig_py_filter_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_filter.h gnuradio_swig_py_filter.py gnuradio_swig_py_filter.cc: gnuradio_swig_py_filter.i +gnuradio_swig_py_filter.h gnuradio_swig_py_filter.py gnuradio_swig_py_filter.cc: gnuradio_swig_py_filter.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -1143,11 +1147,12 @@ gnuradio_swig_py_io_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_io.h gnuradio_swig_py_io.py gnuradio_swig_py_io.cc: gnuradio_swig_py_io.i +gnuradio_swig_py_io.h gnuradio_swig_py_io.py gnuradio_swig_py_io.cc: gnuradio_swig_py_io.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -1402,11 +1407,12 @@ gnuradio_swig_py_hier_python_PYTHON = \ ## Entry rule for running SWIG -gnuradio_swig_py_hier.h gnuradio_swig_py_hier.py gnuradio_swig_py_hier.cc: gnuradio_swig_py_hier.i +gnuradio_swig_py_hier.h gnuradio_swig_py_hier.py gnuradio_swig_py_hier.cc: gnuradio_swig_py_hier.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gnuradio-core/src/lib/swig/gnuradio.i b/gnuradio-core/src/lib/swig/gnuradio.i index 7d0241f1c..275467c0e 100644 --- a/gnuradio-core/src/lib/swig/gnuradio.i +++ b/gnuradio-core/src/lib/swig/gnuradio.i @@ -34,7 +34,9 @@ #include // size_t %} -%feature("autodoc","1"); +%include + +// %feature("autodoc","1"); // local file %include diff --git a/gnuradio-core/src/lib/swig/swig_doc.i b/gnuradio-core/src/lib/swig/swig_doc.i new file mode 100644 index 000000000..e74f762f7 --- /dev/null +++ b/gnuradio-core/src/lib/swig/swig_doc.i @@ -0,0 +1,26292 @@ +%feature("docstring") gr_py_msg_queue__insert_tail "Insert message at tail of queue. + +Block if queue if full. + +Params: (msg)" + +%feature("docstring") gr_py_msg_queue__delete_head "Delete message from head of queue and return it. Block if no message is available. + +Params: (NONE)" + +%feature("docstring") atsc_bit_timing_loop "ATSC BitTimingLoop3 + +This class accepts a single real input and produces two outputs, the raw symbol (float) and the tag (atsc_syminfo)." + +%feature("docstring") atsc_bit_timing_loop::atsc_bit_timing_loop " + +Params: (NONE)" + +%feature("docstring") atsc_bit_timing_loop::work " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_bit_timing_loop::reset " + +Params: (NONE)" + +%feature("docstring") atsc_bit_timing_loop::~atsc_bit_timing_loop " + +Params: (NONE)" + +%feature("docstring") atsc_bit_timing_loop::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") atsc_bit_timing_loop::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") atsc_bit_timing_loop::set_mu " + +Params: (a_mu)" + +%feature("docstring") atsc_bit_timing_loop::set_no_update " + +Params: (a_no_update)" + +%feature("docstring") atsc_bit_timing_loop::set_loop_filter_tap " + +Params: (tap)" + +%feature("docstring") atsc_bit_timing_loop::set_timing_rate " + +Params: (rate)" + +%feature("docstring") atsc_make_bit_timing_loop "Creates a bit_timing_loop block. + +ATSC BitTimingLoop3 + +This class accepts a single real input and produces two outputs, the raw symbol (float) and the tag (atsc_syminfo). + +Params: (NONE)" + +%feature("docstring") atsc_deinterleaver "Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded) + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded." + +%feature("docstring") atsc_deinterleaver::atsc_deinterleaver " + +Params: (NONE)" + +%feature("docstring") atsc_deinterleaver::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_deinterleaver::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_deinterleaver "Creates a deinterleaver block. + +Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded) + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded. + +Params: (NONE)" + +%feature("docstring") atsc_depad "depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char + +input: atsc_mpeg_packet; output: unsigned char" + +%feature("docstring") atsc_depad::atsc_depad " + +Params: (NONE)" + +%feature("docstring") atsc_depad::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_depad::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_depad "Creates a depad block. + +depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char + +input: atsc_mpeg_packet; output: unsigned char + +Params: (NONE)" + +%feature("docstring") atsc_derandomizer "\"dewhiten\" incoming mpeg transport stream packets + +input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet;" + +%feature("docstring") atsc_derandomizer::atsc_derandomizer " + +Params: (NONE)" + +%feature("docstring") atsc_derandomizer::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_derandomizer::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_derandomizer "Creates a derandomizer block. + +\"dewhiten\" incoming mpeg transport stream packets + +input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet; + +Params: (NONE)" + +%feature("docstring") atsc_ds_to_softds "Debug glue routine (atsc_data_segment --> atsc_soft_data_segment) + +input: atsc_data_segment; output: atsc_soft_data_segment." + +%feature("docstring") atsc_ds_to_softds::atsc_ds_to_softds " + +Params: (NONE)" + +%feature("docstring") atsc_ds_to_softds::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_ds_to_softds::map_to_soft_symbols " + +Params: (out, in)" + +%feature("docstring") atsc_ds_to_softds::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_ds_to_softds "Creates a ds_to_softds block. + +Debug glue routine (atsc_data_segment --> atsc_soft_data_segment) + +input: atsc_data_segment; output: atsc_soft_data_segment. + +Params: (NONE)" + +%feature("docstring") atsc_equalizer "ATSC equalizer (float,syminfo --> float,syminfo) + +first inputs are data samples, second inputs are tags. first outputs are equalized data samples, second outputs are tags." + +%feature("docstring") atsc_equalizer::atsc_equalizer " + +Params: (NONE)" + +%feature("docstring") atsc_equalizer::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") atsc_equalizer::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_equalizer::reset " + +Params: (NONE)" + +%feature("docstring") atsc_equalizer::~atsc_equalizer " + +Params: (NONE)" + +%feature("docstring") atsc_make_equalizer "Creates a equalizer block. + +ATSC equalizer (float,syminfo --> float,syminfo) + +first inputs are data samples, second inputs are tags. first outputs are equalized data samples, second outputs are tags. + +Params: (NONE)" + +%feature("docstring") atsc_field_sync_demux "ATSC Field Sync Demux. + +This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets" + +%feature("docstring") atsc_field_sync_demux::atsc_field_sync_demux " + +Params: (NONE)" + +%feature("docstring") atsc_field_sync_demux::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") atsc_field_sync_demux::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") atsc_field_sync_demux::work " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_field_sync_demux::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_field_sync_demux "Creates a field_sync_demux block. + +ATSC Field Sync Demux. + +This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets + +Params: (NONE)" + +%feature("docstring") atsc_field_sync_mux "Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment) + +input: atsc_data_segment; output: atsc_data_segment." + +%feature("docstring") atsc_field_sync_mux::atsc_field_sync_mux " + +Params: (NONE)" + +%feature("docstring") atsc_field_sync_mux::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") atsc_field_sync_mux::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_field_sync_mux::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_field_sync_mux "Creates a field_sync_mux block. + +Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment) + +input: atsc_data_segment; output: atsc_data_segment. + +Params: (NONE)" + +%feature("docstring") atsc_fpll "ATSC FPLL (2nd Version) + +A/D --> GrFIRfilterFFF ----> GrAtscFPLL ----> + +We use GrFIRfilterFFF to bandpass filter the signal of interest. + +This class accepts a single real input and produces a single real output" + +%feature("docstring") atsc_fpll::atsc_fpll " + +Params: (NONE)" + +%feature("docstring") atsc_fpll::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_fpll::reset " + +Params: (NONE)" + +%feature("docstring") atsc_fpll::initialize " + +Params: (NONE)" + +%feature("docstring") atsc_make_fpll "Creates a fpll block. + +ATSC FPLL (2nd Version) + +A/D --> GrFIRfilterFFF ----> GrAtscFPLL ----> + +We use GrFIRfilterFFF to bandpass filter the signal of interest. + +This class accepts a single real input and produces a single real output + +Params: (NONE)" + +%feature("docstring") atsc_fs_checker "ATSC field sync checker (float,syminfo --> float,syminfo) + +first output is delayed version of input. second output is set of tags, one-for-one with first output." + +%feature("docstring") atsc_fs_checker::atsc_fs_checker " + +Params: (NONE)" + +%feature("docstring") atsc_fs_checker::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_fs_checker::reset " + +Params: (NONE)" + +%feature("docstring") atsc_fs_checker::~atsc_fs_checker " + +Params: (NONE)" + +%feature("docstring") atsc_make_fs_checker "Creates a fs_checker block. + +ATSC field sync checker (float,syminfo --> float,syminfo) + +first output is delayed version of input. second output is set of tags, one-for-one with first output. + +Params: (NONE)" + +%feature("docstring") atsc_interleaver "Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)* + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded." + +%feature("docstring") atsc_interleaver::atsc_interleaver " + +Params: (NONE)" + +%feature("docstring") atsc_interleaver::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_interleaver::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_interleaver "Creates a interleaver block. + +Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)* + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded. + +Params: (NONE)" + +%feature("docstring") atsc_pad "pad mpeg ts packets from 188 byte char to to 256 byte atsc_mpeg_packet + +input: unsigned char; output: atsc_mpeg_packet" + +%feature("docstring") atsc_pad::atsc_pad " + +Params: (NONE)" + +%feature("docstring") atsc_pad::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") atsc_pad::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_pad::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_pad "Creates a pad block. + +pad mpeg ts packets from 188 byte char to to 256 byte atsc_mpeg_packet + +input: unsigned char; output: atsc_mpeg_packet + +Params: (NONE)" + +%feature("docstring") atsc_randomizer "\"Whiten\" incoming mpeg transport stream packets + +input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync" + +%feature("docstring") atsc_randomizer::atsc_randomizer " + +Params: (NONE)" + +%feature("docstring") atsc_randomizer::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_randomizer::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_randomizer "Creates a randomizer block. + +\"Whiten\" incoming mpeg transport stream packets + +input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync + +Params: (NONE)" + +%feature("docstring") atsc_rs_decoder "Reed-Solomon decoder for ATSC + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync." + +%feature("docstring") atsc_rs_decoder::atsc_rs_decoder " + +Params: (NONE)" + +%feature("docstring") atsc_rs_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_rs_decoder::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_rs_decoder "Creates a rs_decoder block. + +Reed-Solomon decoder for ATSC + +input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync. + +Params: (NONE)" + +%feature("docstring") atsc_rs_encoder "Reed-Solomon encoder for ATSC + +input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded." + +%feature("docstring") atsc_rs_encoder::atsc_rs_encoder " + +Params: (NONE)" + +%feature("docstring") atsc_rs_encoder::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_rs_encoder::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_rs_encoder "Creates a rs_encoder block. + +Reed-Solomon encoder for ATSC + +input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded. + +Params: (NONE)" + +%feature("docstring") atsc_trellis_encoder "ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment) + +input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment." + +%feature("docstring") atsc_trellis_encoder::atsc_trellis_encoder " + +Params: (NONE)" + +%feature("docstring") atsc_trellis_encoder::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_trellis_encoder::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_trellis_encoder "Creates a trellis_encoder block. + +ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment) + +input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment. + +Params: (NONE)" + +%feature("docstring") atsc_viterbi_decoder "ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded) + +input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded." + +%feature("docstring") atsc_viterbi_decoder::atsc_viterbi_decoder " + +Params: (NONE)" + +%feature("docstring") atsc_viterbi_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") atsc_viterbi_decoder::reset " + +Params: (NONE)" + +%feature("docstring") atsc_make_viterbi_decoder "Creates a viterbi_decoder block. + +ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded) + +input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded. + +Params: (NONE)" + +%feature("docstring") comedi_sink_s "sink using COMEDI + +The sink has one input stream of signed short integers. + +Input samples must be in the range [-32768,32767]." + +%feature("docstring") comedi_sink_s::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") comedi_sink_s::bail " + +Params: (msg, err)" + +%feature("docstring") comedi_sink_s::comedi_sink_s " + +Params: (sampling_freq, device_name)" + +%feature("docstring") comedi_sink_s::~comedi_sink_s " + +Params: (NONE)" + +%feature("docstring") comedi_sink_s::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") comedi_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") comedi_make_sink_s "Creates a sink_s block. + +sink using COMEDI + +The sink has one input stream of signed short integers. + +Input samples must be in the range [-32768,32767]. + +Params: (sampling_freq, device_name)" + +%feature("docstring") comedi_source_s "source using COMEDI + +The source has one to many input stream of signed short integers. + +Output samples will be in the range [-32768,32767]." + +%feature("docstring") comedi_source_s::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") comedi_source_s::bail " + +Params: (msg, err)" + +%feature("docstring") comedi_source_s::comedi_source_s " + +Params: (sampling_freq, device_name)" + +%feature("docstring") comedi_source_s::~comedi_source_s " + +Params: (NONE)" + +%feature("docstring") comedi_source_s::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") comedi_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") comedi_make_source_s "Creates a source_s block. + +source using COMEDI + +The source has one to many input stream of signed short integers. + +Output samples will be in the range [-32768,32767]. + +Params: (sampling_freq, device_name)" + +%feature("docstring") gcell_fft_vcc "Compute forward or reverse FFT. complex vector in / complex vector out. + +Concrete class that uses gcell to offload FFT to SPEs." + +%feature("docstring") gcell_fft_vcc::gcell_fft_vcc " + +Params: (fft_size, forward, window, shift)" + +%feature("docstring") gcell_fft_vcc::~gcell_fft_vcc " + +Params: (NONE)" + +%feature("docstring") gcell_fft_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gcell_make_fft_vcc "Creates a fft_vcc block. + +Compute forward or reverse FFT. complex vector in / complex vector out. + +Concrete class that uses gcell to offload FFT to SPEs. + +Params: (fft_size, forward, window, shift)" + +%feature("docstring") gr_add_cc "output = sum (input_0, input_1, ...) + +Add across all input streams." + +%feature("docstring") gr_add_cc::gr_add_cc " + +Params: (vlen)" + +%feature("docstring") gr_add_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_cc "Creates a add_cc block. + +output = sum (input_0, input_1, ...) + +Add across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_add_const_cc "output = input + constant" + +%feature("docstring") gr_add_const_cc::gr_add_const_cc " + +Params: (k)" + +%feature("docstring") gr_add_const_cc::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_cc::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_cc "Creates a add_const_cc block. + +output = input + constant + +Params: (k)" + +%feature("docstring") gr_add_const_ff "output = input + constant" + +%feature("docstring") gr_add_const_ff::gr_add_const_ff " + +Params: (k)" + +%feature("docstring") gr_add_const_ff::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_ff::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_ff "Creates a add_const_ff block. + +output = input + constant + +Params: (k)" + +%feature("docstring") gr_add_const_ii "output = input + constant" + +%feature("docstring") gr_add_const_ii::gr_add_const_ii " + +Params: (k)" + +%feature("docstring") gr_add_const_ii::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_ii::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_ii "Creates a add_const_ii block. + +output = input + constant + +Params: (k)" + +%feature("docstring") gr_add_const_sf "output = input + constant" + +%feature("docstring") gr_add_const_sf::gr_add_const_sf " + +Params: (k)" + +%feature("docstring") gr_add_const_sf::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_sf::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_sf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_sf "Creates a add_const_sf block. + +output = input + constant + +Params: (k)" + +%feature("docstring") gr_add_const_ss "output = input + constant" + +%feature("docstring") gr_add_const_ss::gr_add_const_ss " + +Params: (k)" + +%feature("docstring") gr_add_const_ss::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_ss::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_ss "Creates a add_const_ss block. + +output = input + constant + +Params: (k)" + +%feature("docstring") gr_add_const_vcc "output vector = input vector + constant vector" + +%feature("docstring") gr_add_const_vcc::gr_add_const_vcc " + +Params: (k)" + +%feature("docstring") gr_add_const_vcc::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_vcc::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_vcc "Creates a add_const_vcc block. + +output vector = input vector + constant vector + +Params: (k)" + +%feature("docstring") gr_add_const_vff "output vector = input vector + constant vector" + +%feature("docstring") gr_add_const_vff::gr_add_const_vff " + +Params: (k)" + +%feature("docstring") gr_add_const_vff::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_vff::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_vff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_vff "Creates a add_const_vff block. + +output vector = input vector + constant vector + +Params: (k)" + +%feature("docstring") gr_add_const_vii "output vector = input vector + constant vector" + +%feature("docstring") gr_add_const_vii::gr_add_const_vii " + +Params: (k)" + +%feature("docstring") gr_add_const_vii::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_vii::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_vii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_vii "Creates a add_const_vii block. + +output vector = input vector + constant vector + +Params: (k)" + +%feature("docstring") gr_add_const_vss "output vector = input vector + constant vector" + +%feature("docstring") gr_add_const_vss::gr_add_const_vss " + +Params: (k)" + +%feature("docstring") gr_add_const_vss::k " + +Params: (NONE)" + +%feature("docstring") gr_add_const_vss::set_k " + +Params: (k)" + +%feature("docstring") gr_add_const_vss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_const_vss "Creates a add_const_vss block. + +output vector = input vector + constant vector + +Params: (k)" + +%feature("docstring") gr_add_ff "output = sum (input_0, input_1, ...) + +Add across all input streams." + +%feature("docstring") gr_add_ff::gr_add_ff " + +Params: (vlen)" + +%feature("docstring") gr_add_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_ff "Creates a add_ff block. + +output = sum (input_0, input_1, ...) + +Add across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_add_ii "output = sum (input_0, input_1, ...) + +Add across all input streams." + +%feature("docstring") gr_add_ii::gr_add_ii " + +Params: (vlen)" + +%feature("docstring") gr_add_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_ii "Creates a add_ii block. + +output = sum (input_0, input_1, ...) + +Add across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_add_ss "output = sum (input_0, input_1, ...) + +Add across all input streams." + +%feature("docstring") gr_add_ss::gr_add_ss " + +Params: (vlen)" + +%feature("docstring") gr_add_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_add_ss "Creates a add_ss block. + +output = sum (input_0, input_1, ...) + +Add across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_additive_scrambler_bb "Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. + + +The scrambler works by XORing the incoming bit stream by the output of the LFSR. Optionally, after 'count' bits have been processed, the shift register is reset to the seed value. This allows processing fixed length vectors of samples." + +%feature("docstring") gr_additive_scrambler_bb::gr_additive_scrambler_bb " + +Params: (mask, seed, len, count)" + +%feature("docstring") gr_additive_scrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_additive_scrambler_bb "Creates a additive_scrambler_bb block. + +Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. + + +The scrambler works by XORing the incoming bit stream by the output of the LFSR. Optionally, after 'count' bits have been processed, the shift register is reset to the seed value. This allows processing fixed length vectors of samples. + +Params: (mask, seed, len, count)" + +%feature("docstring") gr_agc2_cc "high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used." + +%feature("docstring") gr_agc2_cc::gr_agc2_cc " + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc2_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_agc2_cc "Creates a agc2_cc block. + +high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used. + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc2_ff "high performance Automatic Gain Control class + +Power is approximated by absolute value" + +%feature("docstring") gr_agc2_ff::gr_agc2_ff " + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc2_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_agc2_ff "Creates a agc2_ff block. + +high performance Automatic Gain Control class + +Power is approximated by absolute value + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc_cc "high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used." + +%feature("docstring") gr_agc_cc::gr_agc_cc " + +Params: (rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_agc_cc "Creates a agc_cc block. + +high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used. + +Params: (rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc_ff "high performance Automatic Gain Control class + +Power is approximated by absolute value" + +%feature("docstring") gr_agc_ff::gr_agc_ff " + +Params: (rate, reference, gain, max_gain)" + +%feature("docstring") gr_agc_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_agc_ff "Creates a agc_ff block. + +high performance Automatic Gain Control class + +Power is approximated by absolute value + +Params: (rate, reference, gain, max_gain)" + + + +%feature("docstring") gr_align_on_samplenumbers_ss::gr_align_on_samplenumbers_ss " + +Params: (nchan, align_interval)" + +%feature("docstring") gr_align_on_samplenumbers_ss::~gr_align_on_samplenumbers_ss " + +Params: (NONE)" + +%feature("docstring") gr_align_on_samplenumbers_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_align_on_samplenumbers_ss::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_align_on_samplenumbers_ss::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_align_on_samplenumbers_ss "Creates a align_on_samplenumbers_ss block. + + + +Params: (nchan, align_interval)" + +%feature("docstring") gr_and_bb "output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams." + +%feature("docstring") gr_and_bb::gr_and_bb " + +Params: (NONE)" + +%feature("docstring") gr_and_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_bb "Creates a and_bb block. + +output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_and_const_bb "output_N = input_N & value + +bitwise boolean and of const to the data stream." + +%feature("docstring") gr_and_const_bb::gr_and_const_bb " + +Params: (k)" + +%feature("docstring") gr_and_const_bb::k " + +Params: (NONE)" + +%feature("docstring") gr_and_const_bb::set_k " + +Params: (k)" + +%feature("docstring") gr_and_const_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_const_bb "Creates a and_const_bb block. + +output_N = input_N & value + +bitwise boolean and of const to the data stream. + +Params: (k)" + +%feature("docstring") gr_and_const_ii "output_N = input_N & value + +bitwise boolean and of const to the data stream." + +%feature("docstring") gr_and_const_ii::gr_and_const_ii " + +Params: (k)" + +%feature("docstring") gr_and_const_ii::k " + +Params: (NONE)" + +%feature("docstring") gr_and_const_ii::set_k " + +Params: (k)" + +%feature("docstring") gr_and_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_const_ii "Creates a and_const_ii block. + +output_N = input_N & value + +bitwise boolean and of const to the data stream. + +Params: (k)" + +%feature("docstring") gr_and_const_ss "output_N = input_N & value + +bitwise boolean and of const to the data stream." + +%feature("docstring") gr_and_const_ss::gr_and_const_ss " + +Params: (k)" + +%feature("docstring") gr_and_const_ss::k " + +Params: (NONE)" + +%feature("docstring") gr_and_const_ss::set_k " + +Params: (k)" + +%feature("docstring") gr_and_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_const_ss "Creates a and_const_ss block. + +output_N = input_N & value + +bitwise boolean and of const to the data stream. + +Params: (k)" + +%feature("docstring") gr_and_ii "output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams." + +%feature("docstring") gr_and_ii::gr_and_ii " + +Params: (NONE)" + +%feature("docstring") gr_and_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_ii "Creates a and_ii block. + +output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_and_ss "output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams." + +%feature("docstring") gr_and_ss::gr_and_ss " + +Params: (NONE)" + +%feature("docstring") gr_and_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_and_ss "Creates a and_ss block. + +output = input_0 & input_1 & , ... & input_N) + +bitwise boolean and across all input streams. + +Params: (NONE)" + + + +%feature("docstring") gr_argmax_fs::gr_argmax_fs " + +Params: (vlen)" + +%feature("docstring") gr_argmax_fs::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_argmax_fs "Creates a argmax_fs block. + + + +Params: (vlen)" + + + +%feature("docstring") gr_argmax_is::gr_argmax_is " + +Params: (vlen)" + +%feature("docstring") gr_argmax_is::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_argmax_is "Creates a argmax_is block. + + + +Params: (vlen)" + + + +%feature("docstring") gr_argmax_ss::gr_argmax_ss " + +Params: (vlen)" + +%feature("docstring") gr_argmax_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_argmax_ss "Creates a argmax_ss block. + + + +Params: (vlen)" + +%feature("docstring") gr_bin_statistics_f "control scanning and record frequency domain statistics" + +%feature("docstring") gr_bin_statistics_f::gr_bin_statistics_f " + +Params: (vlen, msgq, tune, tune_delay, dwell_delay)" + +%feature("docstring") gr_bin_statistics_f::enter_init " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::enter_tune_delay " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::enter_dwell_delay " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::leave_dwell_delay " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::vlen " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::center_freq " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::msgq " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::reset_stats " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::accrue_stats " + +Params: (input)" + +%feature("docstring") gr_bin_statistics_f::send_stats " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::~gr_bin_statistics_f " + +Params: (NONE)" + +%feature("docstring") gr_bin_statistics_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_bin_statistics_f "Creates a bin_statistics_f block. + +control scanning and record frequency domain statistics + +Params: (vlen, msgq, tune, tune_delay, dwell_delay)" + +%feature("docstring") gr_binary_slicer_fb "slice float binary symbol outputting 1 bit output + +x < 0 --> 0 x >= 0 --> 1" + +%feature("docstring") gr_binary_slicer_fb::gr_binary_slicer_fb " + +Params: (NONE)" + +%feature("docstring") gr_binary_slicer_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_binary_slicer_fb "Creates a binary_slicer_fb block. + +slice float binary symbol outputting 1 bit output + +x < 0 --> 0 x >= 0 --> 1 + +Params: (NONE)" + +%feature("docstring") gr_block_detail "Implementation details to support the signal processing abstraction + +This class contains implementation detail that should be \"out of sight\" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything." + +%feature("docstring") gr_block_detail::~gr_block_detail " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::ninputs " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::noutputs " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::sink_p " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::source_p " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::set_done " + +Params: (done)" + +%feature("docstring") gr_block_detail::done " + +Params: (NONE)" + +%feature("docstring") gr_block_detail::set_input " + +Params: (which, reader)" + +%feature("docstring") gr_block_detail::input " + +Params: (which)" + +%feature("docstring") gr_block_detail::set_output " + +Params: (which, buffer)" + +%feature("docstring") gr_block_detail::output " + +Params: (which)" + +%feature("docstring") gr_block_detail::consume "Tell the scheduler of input stream were consumed. + +Params: (which_input, how_many_items)" + +%feature("docstring") gr_block_detail::consume_each "Tell the scheduler were consumed on each input stream. + +Params: (how_many_items)" + +%feature("docstring") gr_block_detail::produce "Tell the scheduler were produced on output stream . + +Params: (which_output, how_many_items)" + +%feature("docstring") gr_block_detail::produce_each "Tell the scheduler were produced on each output stream. + +Params: (how_many_items)" + +%feature("docstring") gr_block_detail::_post "Accept msg, place in queue, arrange for thread to be awakened if it's not already. + +Params: (msg)" + +%feature("docstring") gr_block_detail::gr_block_detail " + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_block_detail "Creates a block_detail block. + +Implementation details to support the signal processing abstraction + +This class contains implementation detail that should be \"out of sight\" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_buffer "Single writer, multiple reader fifo." + +%feature("docstring") gr_buffer::~gr_buffer " + +Params: (NONE)" + +%feature("docstring") gr_buffer::space_available "return number of items worth of space available for writing + +Params: (NONE)" + +%feature("docstring") gr_buffer::bufsize "return size of this buffer in items + +Params: (NONE)" + +%feature("docstring") gr_buffer::write_pointer "return pointer to write buffer. + +The return value points at space that can hold at least space_available() items. + +Params: (NONE)" + +%feature("docstring") gr_buffer::update_write_pointer "tell buffer that we wrote into it + +Params: (nitems)" + +%feature("docstring") gr_buffer::set_done " + +Params: (done)" + +%feature("docstring") gr_buffer::done " + +Params: (NONE)" + +%feature("docstring") gr_buffer::link "Return the block that writes to this buffer. + +Params: (NONE)" + +%feature("docstring") gr_buffer::nreaders " + +Params: (NONE)" + +%feature("docstring") gr_buffer::reader " + +Params: (index)" + +%feature("docstring") gr_buffer::mutex " + +Params: (NONE)" + +%feature("docstring") gr_buffer::index_add " + +Params: (a, b)" + +%feature("docstring") gr_buffer::index_sub " + +Params: (a, b)" + +%feature("docstring") gr_buffer::allocate_buffer " + +Params: (nitems, sizeof_item)" + +%feature("docstring") gr_buffer::gr_buffer "constructor is private. Use gr_make_buffer to create instances. + +Allocate a buffer that holds at least of size . + + +The total size of the buffer will be rounded up to a system dependent boundary. This is typically the system page size, but under MS windows is 64KB. + +Params: (nitems, sizeof_item, link)" + +%feature("docstring") gr_buffer::drop_reader "disassociate from this buffer + +Params: (reader)" + +%feature("docstring") gr_make_buffer "Creates a buffer block. + +Single writer, multiple reader fifo. + +Params: (nitems, sizeof_item, link)" + +%feature("docstring") gr_bytes_to_syms "Convert stream of bytes to stream of +/- 1 symbols + +input: stream of bytes; output: stream of float. + +This block is deprecated. + +The combination of gr_packed_to_unpacked_bb followed by gr_chunks_to_symbols_bf or gr_chunks_to_symbols_bc handles the general case of mapping from a stream of bytes into arbitrary float or complex symbols." + +%feature("docstring") gr_bytes_to_syms::gr_bytes_to_syms " + +Params: (NONE)" + +%feature("docstring") gr_bytes_to_syms::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_bytes_to_syms "Creates a bytes_to_syms block. + +Convert stream of bytes to stream of +/- 1 symbols + +input: stream of bytes; output: stream of float. + +This block is deprecated. + +The combination of gr_packed_to_unpacked_bb followed by gr_chunks_to_symbols_bf or gr_chunks_to_symbols_bc handles the general case of mapping from a stream of bytes into arbitrary float or complex symbols. + +Params: (NONE)" + +%feature("docstring") gr_channel_model "channel simulator" + +%feature("docstring") gr_channel_model::gr_channel_model " + +Params: (noise_voltage, frequency_offset, epsilon, taps, noise_seed)" + +%feature("docstring") gr_channel_model::set_noise_voltage " + +Params: (noise_voltage)" + +%feature("docstring") gr_channel_model::set_frequency_offset " + +Params: (frequency_offset)" + +%feature("docstring") gr_channel_model::set_taps " + +Params: (taps)" + +%feature("docstring") gr_channel_model::set_timing_offset " + +Params: (epsilon)" + +%feature("docstring") gr_make_channel_model "Creates a channel_model block. + +channel simulator + +Params: (noise_voltage, frequency_offset, epsilon, taps, noise_seed)" + +%feature("docstring") gr_char_to_float "Convert stream of chars to a stream of float." + +%feature("docstring") gr_char_to_float::gr_char_to_float " + +Params: (NONE)" + +%feature("docstring") gr_char_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_char_to_float "Creates a char_to_float block. + +Convert stream of chars to a stream of float. + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s "sink that checks if its input stream consists of a counting sequence. + +This sink is typically used to test the USRP \"Counting Mode\" or \"Counting mode 32 bit\"." + +%feature("docstring") gr_check_counting_s::gr_check_counting_s " + +Params: (do_32bit)" + +%feature("docstring") gr_check_counting_s::enter_SEARCHING " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::enter_LOCKED " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::right " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::wrong " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::right_three_times " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::wrong_three_times " + +Params: (NONE)" + +%feature("docstring") gr_check_counting_s::log_error " + +Params: (expected, actual)" + +%feature("docstring") gr_check_counting_s::log_error_32bit " + +Params: (expected, actual)" + +%feature("docstring") gr_check_counting_s::check_32bit " + +Params: (noutput_items, in)" + +%feature("docstring") gr_check_counting_s::check_16bit " + +Params: (noutput_items, in)" + +%feature("docstring") gr_check_counting_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_check_counting_s "Creates a check_counting_s block. + +sink that checks if its input stream consists of a counting sequence. + +This sink is typically used to test the USRP \"Counting Mode\" or \"Counting mode 32 bit\". + +Params: (do_32bit)" + +%feature("docstring") gr_check_lfsr_32k_s "sink that checks if its input stream consists of a lfsr_32k sequence. + +This sink is typically used along with gr_lfsr_32k_source_s to test the USRP using its digital loopback mode." + +%feature("docstring") gr_check_lfsr_32k_s::gr_check_lfsr_32k_s " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::enter_SEARCHING " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH0 " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH1 " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH2 " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::enter_LOCKED " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::right " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::wrong " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::right_three_times " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::wrong_three_times " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::log_error " + +Params: (expected, actual)" + +%feature("docstring") gr_check_lfsr_32k_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_check_lfsr_32k_s::ntotal " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::nright " + +Params: (NONE)" + +%feature("docstring") gr_check_lfsr_32k_s::runlength " + +Params: (NONE)" + +%feature("docstring") gr_make_check_lfsr_32k_s "Creates a check_lfsr_32k_s block. + +sink that checks if its input stream consists of a lfsr_32k sequence. + +This sink is typically used along with gr_lfsr_32k_source_s to test the USRP using its digital loopback mode. + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_bc "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of unsigned char; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_bc::gr_chunks_to_symbols_bc " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_bc::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_bc::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_bc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_bc::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_bc "Creates a chunks_to_symbols_bc block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of unsigned char; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_bf "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of unsigned char; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_bf::gr_chunks_to_symbols_bf " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_bf::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_bf::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_bf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_bf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_bf "Creates a chunks_to_symbols_bf block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of unsigned char; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_ic "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of int; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_ic::gr_chunks_to_symbols_ic " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_ic::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_ic::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_ic::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_ic::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_ic "Creates a chunks_to_symbols_ic block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of int; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_if "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of int; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_if::gr_chunks_to_symbols_if " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_if::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_if::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_if::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_if::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_if "Creates a chunks_to_symbols_if block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of int; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_sc "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of short; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_sc::gr_chunks_to_symbols_sc " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_sc::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_sc::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_sc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_sc::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_sc "Creates a chunks_to_symbols_sc block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of short; output: stream of gr_complex. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_sf "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of short; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_chunks_to_symbols_sf::gr_chunks_to_symbols_sf " + +Params: (symbol_table, D)" + +%feature("docstring") gr_chunks_to_symbols_sf::D " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_sf::symbol_table " + +Params: (NONE)" + +%feature("docstring") gr_chunks_to_symbols_sf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_chunks_to_symbols_sf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_chunks_to_symbols_sf "Creates a chunks_to_symbols_sf block. + +Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) + +input: stream of short; output: stream of float. + +out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (symbol_table, D)" + +%feature("docstring") gr_clock_recovery_mm_cc "Mueller and M?ller (M&M) based clock recovery block with complex input, complex output. + +This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. The complex version here is based on: Modified Mueller and Muller clock recovery circuit Based: G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033." + +%feature("docstring") gr_clock_recovery_mm_cc::~gr_clock_recovery_mm_cc " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_cc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_clock_recovery_mm_cc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_clock_recovery_mm_cc::mu " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_cc::omega " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_cc::gain_mu " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_cc::gain_omega " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_cc::set_verbose " + +Params: (verbose)" + +%feature("docstring") gr_clock_recovery_mm_cc::set_gain_mu " + +Params: (gain_mu)" + +%feature("docstring") gr_clock_recovery_mm_cc::set_gain_omega " + +Params: (gain_omega)" + +%feature("docstring") gr_clock_recovery_mm_cc::set_mu " + +Params: (mu)" + +%feature("docstring") gr_clock_recovery_mm_cc::set_omega " + +Params: (omega)" + +%feature("docstring") gr_clock_recovery_mm_cc::gr_clock_recovery_mm_cc " + +Params: (omega, gain_omega, mu, gain_mu, omega_relative_limi)" + +%feature("docstring") gr_clock_recovery_mm_cc::slicer_0deg " + +Params: (sample)" + +%feature("docstring") gr_clock_recovery_mm_cc::slicer_45deg " + +Params: (sample)" + +%feature("docstring") gr_make_clock_recovery_mm_cc "Creates a clock_recovery_mm_cc block. + +Mueller and M?ller (M&M) based clock recovery block with complex input, complex output. + +This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. The complex version here is based on: Modified Mueller and Muller clock recovery circuit Based: G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + +Params: (omega, gain_omega, mu, gain_mu, omega_relative_limi)" + +%feature("docstring") gr_clock_recovery_mm_ff "Mueller and M?ller (M&M) based clock recovery block with float input, float output. + +This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. + +See \"Digital Communication Receivers: Synchronization, Channel + Estimation and Signal Processing\" by Heinrich Meyr, Marc Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8." + +%feature("docstring") gr_clock_recovery_mm_ff::~gr_clock_recovery_mm_ff " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_ff::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_clock_recovery_mm_ff::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_clock_recovery_mm_ff::mu " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_ff::omega " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_ff::gain_mu " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_ff::gain_omega " + +Params: (NONE)" + +%feature("docstring") gr_clock_recovery_mm_ff::set_gain_mu " + +Params: (gain_mu)" + +%feature("docstring") gr_clock_recovery_mm_ff::set_gain_omega " + +Params: (gain_omega)" + +%feature("docstring") gr_clock_recovery_mm_ff::set_mu " + +Params: (mu)" + +%feature("docstring") gr_clock_recovery_mm_ff::set_omega " + +Params: (omega)" + +%feature("docstring") gr_clock_recovery_mm_ff::gr_clock_recovery_mm_ff " + +Params: (omega, gain_omega, mu, gain_mu, omega_relative_limit)" + +%feature("docstring") gr_make_clock_recovery_mm_ff "Creates a clock_recovery_mm_ff block. + +Mueller and M?ller (M&M) based clock recovery block with float input, float output. + +This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. + +See \"Digital Communication Receivers: Synchronization, Channel + Estimation and Signal Processing\" by Heinrich Meyr, Marc Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8. + +Params: (omega, gain_omega, mu, gain_mu, omega_relative_limit)" + +%feature("docstring") gr_cma_equalizer_cc "Implements constant modulus adaptive filter on complex stream." + +%feature("docstring") gr_cma_equalizer_cc::gr_cma_equalizer_cc " + +Params: (num_taps, modulus, mu)" + +%feature("docstring") gr_cma_equalizer_cc::error " + +Params: (out)" + +%feature("docstring") gr_cma_equalizer_cc::update_tap " + +Params: (tap, in)" + +%feature("docstring") gr_make_cma_equalizer_cc "Creates a cma_equalizer_cc block. + +Implements constant modulus adaptive filter on complex stream. + +Params: (num_taps, modulus, mu)" + +%feature("docstring") gr_complex_to_arg "complex in, angle out (float)" + +%feature("docstring") gr_complex_to_arg::gr_complex_to_arg " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_arg::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_arg "Creates a complex_to_arg block. + +complex in, angle out (float) + +Params: (vlen)" + +%feature("docstring") gr_complex_to_float "convert a stream of gr_complex to 1 or 2 streams of float" + +%feature("docstring") gr_complex_to_float::gr_complex_to_float " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_float "Creates a complex_to_float block. + +convert a stream of gr_complex to 1 or 2 streams of float + +Params: (vlen)" + +%feature("docstring") gr_complex_to_imag "complex in, imaginary out (float)" + +%feature("docstring") gr_complex_to_imag::gr_complex_to_imag " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_imag::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_imag "Creates a complex_to_imag block. + +complex in, imaginary out (float) + +Params: (vlen)" + +%feature("docstring") gr_complex_to_interleaved_short "Convert stream of complex to a stream of interleaved shorts." + +%feature("docstring") gr_complex_to_interleaved_short::gr_complex_to_interleaved_short " + +Params: (NONE)" + +%feature("docstring") gr_complex_to_interleaved_short::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_interleaved_short "Creates a complex_to_interleaved_short block. + +Convert stream of complex to a stream of interleaved shorts. + +Params: (NONE)" + +%feature("docstring") gr_complex_to_mag "complex in, magnitude out (float)" + +%feature("docstring") gr_complex_to_mag::gr_complex_to_mag " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_mag::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_mag "Creates a complex_to_mag block. + +complex in, magnitude out (float) + +Params: (vlen)" + +%feature("docstring") gr_complex_to_mag_squared "complex in, magnitude squared out (float)" + +%feature("docstring") gr_complex_to_mag_squared::gr_complex_to_mag_squared " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_mag_squared::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_mag_squared "Creates a complex_to_mag_squared block. + +complex in, magnitude squared out (float) + +Params: (vlen)" + +%feature("docstring") gr_complex_to_real "complex in, real out (float)" + +%feature("docstring") gr_complex_to_real::gr_complex_to_real " + +Params: (vlen)" + +%feature("docstring") gr_complex_to_real::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_complex_to_real "Creates a complex_to_real block. + +complex in, real out (float) + +Params: (vlen)" + +%feature("docstring") gr_conjugate_cc "output = complex conjugate of input" + +%feature("docstring") gr_conjugate_cc::gr_conjugate_cc " + +Params: (NONE)" + +%feature("docstring") gr_conjugate_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_conjugate_cc "Creates a conjugate_cc block. + +output = complex conjugate of input + +Params: (NONE)" + +%feature("docstring") gr_constellation_decoder_cb "Constellation Decoder." + +%feature("docstring") gr_constellation_decoder_cb::gr_constellation_decoder_cb " + +Params: (sym_position, sym_value_out)" + +%feature("docstring") gr_constellation_decoder_cb::set_constellation " + +Params: (sym_position, sym_value_out)" + +%feature("docstring") gr_constellation_decoder_cb::~gr_constellation_decoder_cb " + +Params: (NONE)" + +%feature("docstring") gr_constellation_decoder_cb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_constellation_decoder_cb "Creates a constellation_decoder_cb block. + +Constellation Decoder. + +Params: (sym_position, sym_value_out)" + +%feature("docstring") gr_copy "output[i] = input[i] + +When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor." + +%feature("docstring") gr_copy::gr_copy " + +Params: (itemsize)" + +%feature("docstring") gr_copy::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_copy::set_enabled " + +Params: (enable)" + +%feature("docstring") gr_copy::enabled " + +Params: (NONE)" + +%feature("docstring") gr_copy::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_copy "Creates a copy block. + +output[i] = input[i] + +When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor. + +Params: (itemsize)" + +%feature("docstring") gr_correlate_access_code_bb "Examine input for specified access code, one bit at a time. + +input: stream of bits, 1 bit per input byte (data in LSB) output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit). + +Each output byte contains two valid bits, the data bit, and the flag bit. The LSB (bit 0) is the data bit, and is the original input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if the corresponding data bit is the first data bit following the access code. Otherwise the flag bit is 0." + +%feature("docstring") gr_correlate_access_code_bb::gr_correlate_access_code_bb " + +Params: (access_code, threshold)" + +%feature("docstring") gr_correlate_access_code_bb::~gr_correlate_access_code_bb " + +Params: (NONE)" + +%feature("docstring") gr_correlate_access_code_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_correlate_access_code_bb::set_access_code " + +Params: (access_code)" + +%feature("docstring") gr_make_correlate_access_code_bb "Creates a correlate_access_code_bb block. + +Examine input for specified access code, one bit at a time. + +input: stream of bits, 1 bit per input byte (data in LSB) output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit). + +Each output byte contains two valid bits, the data bit, and the flag bit. The LSB (bit 0) is the data bit, and is the original input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if the corresponding data bit is the first data bit following the access code. Otherwise the flag bit is 0. + +Params: (access_code, threshold)" + +%feature("docstring") gr_costas_loop_cc "Carrier tracking PLL for QPSK + +input: complex; output: complex +The Costas loop can have two output streams: stream 1 is the baseband I and Q; stream 2 is the normalized frequency of the loop. + +must be 2 or 4." + +%feature("docstring") gr_costas_loop_cc::gr_costas_loop_cc " + +Params: (alpha, beta, max_freq, min_freq, order)" + +%feature("docstring") gr_costas_loop_cc::phase_detector_4 "the phase detector circuit for fourth-order loops + +Params: (sample)" + +%feature("docstring") gr_costas_loop_cc::phase_detector_2 "the phase detector circuit for second-order loops + +Params: (sample)" + +%feature("docstring") gr_costas_loop_cc::set_alpha "set the first order gain + +Params: (alpha)" + +%feature("docstring") gr_costas_loop_cc::alpha "get the first order gain + +Params: (NONE)" + +%feature("docstring") gr_costas_loop_cc::set_beta "set the second order gain + +Params: (beta)" + +%feature("docstring") gr_costas_loop_cc::beta "get the second order gain + +Params: (NONE)" + +%feature("docstring") gr_costas_loop_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_costas_loop_cc::freq "returns the current NCO frequency in radians/sample + +Params: (NONE)" + +%feature("docstring") gr_make_costas_loop_cc "Creates a costas_loop_cc block. + +Carrier tracking PLL for QPSK + +input: complex; output: complex +The Costas loop can have two output streams: stream 1 is the baseband I and Q; stream 2 is the normalized frequency of the loop. + +must be 2 or 4. + +Params: (alpha, beta, max_freq, min_freq, order)" + +%feature("docstring") gr_cpfsk_bc "Perform continuous phase 2-level frequency shift keying modulation on an input stream of unpacked bits." + +%feature("docstring") gr_cpfsk_bc::gr_cpfsk_bc " + +Params: (k, ampl, samples_per_sym)" + +%feature("docstring") gr_cpfsk_bc::~gr_cpfsk_bc " + +Params: (NONE)" + +%feature("docstring") gr_cpfsk_bc::set_amplitude " + +Params: (amplitude)" + +%feature("docstring") gr_cpfsk_bc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_cpfsk_bc "Creates a cpfsk_bc block. + +Perform continuous phase 2-level frequency shift keying modulation on an input stream of unpacked bits. + +Params: (k, ampl, samples_per_sym)" + +%feature("docstring") gr_ctcss_squelch_ff "gate or zero output if ctcss tone not present" + +%feature("docstring") gr_ctcss_squelch_ff::gr_ctcss_squelch_ff " + +Params: (rate, freq, level, len, ramp, gate)" + +%feature("docstring") gr_ctcss_squelch_ff::find_tone " + +Params: (freq)" + +%feature("docstring") gr_ctcss_squelch_ff::update_state " + +Params: (in)" + +%feature("docstring") gr_ctcss_squelch_ff::mute " + +Params: (NONE)" + +%feature("docstring") gr_ctcss_squelch_ff::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_ctcss_squelch_ff::level " + +Params: (NONE)" + +%feature("docstring") gr_ctcss_squelch_ff::set_level " + +Params: (level)" + +%feature("docstring") gr_ctcss_squelch_ff::len " + +Params: (NONE)" + +%feature("docstring") gr_make_ctcss_squelch_ff "Creates a ctcss_squelch_ff block. + +gate or zero output if ctcss tone not present + +Params: (rate, freq, level, len, ramp, gate)" + +%feature("docstring") gr_decode_ccsds_27_fb "A rate 1/2, k=7 convolutional decoder for the CCSDS standard + +This block performs soft-decision convolutional decoding using the Viterbi algorithm. + +The input is a stream of (possibly noise corrupted) floating point values nominally spanning [-1.0, 1.0], representing the encoded channel symbols 0 (-1.0) and 1 (1.0), with erased symbols at 0.0. + +The output is MSB first packed bytes of decoded values. + +As a rate 1/2 code, there will be one output byte for every 16 input symbols. + +This block is designed for continuous data streaming, not packetized data. The first 32 bits out will be zeroes, with the output delayed four bytes from the corresponding inputs." + +%feature("docstring") gr_decode_ccsds_27_fb::gr_decode_ccsds_27_fb " + +Params: (NONE)" + +%feature("docstring") gr_decode_ccsds_27_fb::~gr_decode_ccsds_27_fb " + +Params: (NONE)" + +%feature("docstring") gr_decode_ccsds_27_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_decode_ccsds_27_fb "Creates a decode_ccsds_27_fb block. + +A rate 1/2, k=7 convolutional decoder for the CCSDS standard + +This block performs soft-decision convolutional decoding using the Viterbi algorithm. + +The input is a stream of (possibly noise corrupted) floating point values nominally spanning [-1.0, 1.0], representing the encoded channel symbols 0 (-1.0) and 1 (1.0), with erased symbols at 0.0. + +The output is MSB first packed bytes of decoded values. + +As a rate 1/2 code, there will be one output byte for every 16 input symbols. + +This block is designed for continuous data streaming, not packetized data. The first 32 bits out will be zeroes, with the output delayed four bytes from the corresponding inputs. + +Params: (NONE)" + +%feature("docstring") gr_deinterleave "deinterleave a single input into N outputs" + +%feature("docstring") gr_deinterleave::gr_deinterleave " + +Params: (itemsize)" + +%feature("docstring") gr_deinterleave::~gr_deinterleave " + +Params: (NONE)" + +%feature("docstring") gr_deinterleave::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_deinterleave::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_deinterleave "Creates a deinterleave block. + +deinterleave a single input into N outputs + +Params: (itemsize)" + +%feature("docstring") gr_delay "delay the input by a certain number of samples" + +%feature("docstring") gr_delay::gr_delay " + +Params: (itemsize, delay)" + +%feature("docstring") gr_delay::delay " + +Params: (NONE)" + +%feature("docstring") gr_delay::set_delay " + +Params: (delay)" + +%feature("docstring") gr_delay::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_delay "Creates a delay block. + +delay the input by a certain number of samples + +Params: (itemsize, delay)" + +%feature("docstring") gr_descrambler_bb "Descramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output." + +%feature("docstring") gr_descrambler_bb::gr_descrambler_bb " + +Params: (mask, seed, len)" + +%feature("docstring") gr_descrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_descrambler_bb "Creates a descrambler_bb block. + +Descramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. + +Params: (mask, seed, len)" + +%feature("docstring") gr_diff_decoder_bb "y[0] = (x[0] - x[-1]) % M + +Differential decoder" + +%feature("docstring") gr_diff_decoder_bb::gr_diff_decoder_bb " + +Params: (modulus)" + +%feature("docstring") gr_diff_decoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_diff_decoder_bb "Creates a diff_decoder_bb block. + +y[0] = (x[0] - x[-1]) % M + +Differential decoder + +Params: (modulus)" + +%feature("docstring") gr_diff_encoder_bb "y[0] = (x[0] + y[-1]) % M + +Differential encoder" + +%feature("docstring") gr_diff_encoder_bb::gr_diff_encoder_bb " + +Params: (modulus)" + +%feature("docstring") gr_diff_encoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_diff_encoder_bb "Creates a diff_encoder_bb block. + +y[0] = (x[0] + y[-1]) % M + +Differential encoder + +Params: (modulus)" + + + +%feature("docstring") gr_diff_phasor_cc::gr_diff_phasor_cc " + +Params: (NONE)" + +%feature("docstring") gr_diff_phasor_cc::~gr_diff_phasor_cc " + +Params: (NONE)" + +%feature("docstring") gr_diff_phasor_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_diff_phasor_cc "Creates a diff_phasor_cc block. + + + +Params: (NONE)" + +%feature("docstring") gr_dispatcher "invoke callbacks based on select." + +%feature("docstring") gr_dispatcher::gr_dispatcher " + +Params: (NONE)" + +%feature("docstring") gr_dispatcher::~gr_dispatcher " + +Params: (NONE)" + +%feature("docstring") gr_dispatcher::add_handler " + +Params: (handler)" + +%feature("docstring") gr_dispatcher::del_handler " + +Params: (handler)" + +%feature("docstring") gr_dispatcher::loop "Event dispatching loop. + +Enter a polling loop that only terminates after all gr_select_handlers have been removed. sets the timeout parameter to the select() call, measured in seconds. + +Params: (timeout)" + +%feature("docstring") gr_make_dispatcher "Creates a dispatcher block. + +invoke callbacks based on select. + +Params: (NONE)" + +%feature("docstring") gr_divide_cc "output = input_0 / input_1 / input_x ...) + +Divide across all input streams." + +%feature("docstring") gr_divide_cc::gr_divide_cc " + +Params: (vlen)" + +%feature("docstring") gr_divide_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_divide_cc "Creates a divide_cc block. + +output = input_0 / input_1 / input_x ...) + +Divide across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_divide_ff "output = input_0 / input_1 / input_x ...) + +Divide across all input streams." + +%feature("docstring") gr_divide_ff::gr_divide_ff " + +Params: (vlen)" + +%feature("docstring") gr_divide_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_divide_ff "Creates a divide_ff block. + +output = input_0 / input_1 / input_x ...) + +Divide across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_divide_ii "output = input_0 / input_1 / input_x ...) + +Divide across all input streams." + +%feature("docstring") gr_divide_ii::gr_divide_ii " + +Params: (vlen)" + +%feature("docstring") gr_divide_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_divide_ii "Creates a divide_ii block. + +output = input_0 / input_1 / input_x ...) + +Divide across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_divide_ss "output = input_0 / input_1 / input_x ...) + +Divide across all input streams." + +%feature("docstring") gr_divide_ss::gr_divide_ss " + +Params: (vlen)" + +%feature("docstring") gr_divide_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_divide_ss "Creates a divide_ss block. + +output = input_0 / input_1 / input_x ...) + +Divide across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_dpll_bb "Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's." + +%feature("docstring") gr_dpll_bb::gr_dpll_bb " + +Params: (period, gain)" + +%feature("docstring") gr_dpll_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_dpll_bb "Creates a dpll_bb block. + +Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. + +Params: (period, gain)" + +%feature("docstring") gr_encode_ccsds_27_bb "A rate 1/2, k=7 convolutional encoder for the CCSDS standard + +This block performs convolutional encoding using the CCSDS standard polynomial (\"Voyager\"). + +The input is an MSB first packed stream of bits. + +The output is a stream of symbols 0 or 1 representing the encoded data. + +As a rate 1/2 code, there will be 16 output symbols for every input byte. + +This block is designed for continuous data streaming, not packetized data. There is no provision to \"flush\" the encoder." + +%feature("docstring") gr_encode_ccsds_27_bb::gr_encode_ccsds_27_bb " + +Params: (NONE)" + +%feature("docstring") gr_encode_ccsds_27_bb::~gr_encode_ccsds_27_bb " + +Params: (NONE)" + +%feature("docstring") gr_encode_ccsds_27_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_encode_ccsds_27_bb "Creates a encode_ccsds_27_bb block. + +A rate 1/2, k=7 convolutional encoder for the CCSDS standard + +This block performs convolutional encoding using the CCSDS standard polynomial (\"Voyager\"). + +The input is an MSB first packed stream of bits. + +The output is a stream of symbols 0 or 1 representing the encoded data. + +As a rate 1/2 code, there will be 16 output symbols for every input byte. + +This block is designed for continuous data streaming, not packetized data. There is no provision to \"flush\" the encoder. + +Params: (NONE)" + +%feature("docstring") gr_fake_channel_decoder_pp "remove fake padding from packet + +input: stream of byte vectors; output: stream of byte vectors" + +%feature("docstring") gr_fake_channel_decoder_pp::gr_fake_channel_decoder_pp " + +Params: (input_vlen, output_vlen)" + +%feature("docstring") gr_fake_channel_decoder_pp::~gr_fake_channel_decoder_pp " + +Params: (NONE)" + +%feature("docstring") gr_fake_channel_decoder_pp::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fake_channel_decoder_pp "Creates a fake_channel_decoder_pp block. + +remove fake padding from packet + +input: stream of byte vectors; output: stream of byte vectors + +Params: (input_vlen, output_vlen)" + +%feature("docstring") gr_fake_channel_encoder_pp "pad packet with alternating 1,0 pattern. + +input: stream of byte vectors; output: stream of byte vectors" + +%feature("docstring") gr_fake_channel_encoder_pp::gr_fake_channel_encoder_pp " + +Params: (input_vlen, output_vlen)" + +%feature("docstring") gr_fake_channel_encoder_pp::~gr_fake_channel_encoder_pp " + +Params: (NONE)" + +%feature("docstring") gr_fake_channel_encoder_pp::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fake_channel_encoder_pp "Creates a fake_channel_encoder_pp block. + +pad packet with alternating 1,0 pattern. + +input: stream of byte vectors; output: stream of byte vectors + +Params: (input_vlen, output_vlen)" + +%feature("docstring") gr_feedforward_agc_cc "Non-causal AGC which computes required gain based on max absolute value over nsamples." + +%feature("docstring") gr_feedforward_agc_cc::gr_feedforward_agc_cc " + +Params: (nsamples, reference)" + +%feature("docstring") gr_feedforward_agc_cc::~gr_feedforward_agc_cc " + +Params: (NONE)" + +%feature("docstring") gr_feedforward_agc_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_feedforward_agc_cc "Creates a feedforward_agc_cc block. + +Non-causal AGC which computes required gain based on max absolute value over nsamples. + +Params: (nsamples, reference)" + +%feature("docstring") gr_fft_filter_ccc "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_fft_filter_ccc::gr_fft_filter_ccc "Construct a FFT filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fft_filter_ccc::~gr_fft_filter_ccc " + +Params: (NONE)" + +%feature("docstring") gr_fft_filter_ccc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fft_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fft_filter_ccc "Creates a fft_filter_ccc block. + +Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fft_filter_fff "Fast FFT filter with float input, float output and float taps." + +%feature("docstring") gr_fft_filter_fff::gr_fft_filter_fff "Construct a FFT filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fft_filter_fff::~gr_fft_filter_fff " + +Params: (NONE)" + +%feature("docstring") gr_fft_filter_fff::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fft_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fft_filter_fff "Creates a fft_filter_fff block. + +Fast FFT filter with float input, float output and float taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fft_vcc "Compute forward or reverse FFT. complex vector in / complex vector out. + +Abstract base class." + +%feature("docstring") gr_fft_vcc::gr_fft_vcc " + +Params: (name, fft_size, forward, window, shift)" + +%feature("docstring") gr_fft_vcc::~gr_fft_vcc " + +Params: (NONE)" + +%feature("docstring") gr_fft_vcc::set_window " + +Params: (window)" + +%feature("docstring") gr_make_fft_vcc "Creates a fft_vcc block. + +Compute forward or reverse FFT. complex vector in / complex vector out. + +Abstract base class. + +Params: (name, fft_size, forward, window, shift)" + +%feature("docstring") gr_fft_vcc_fftw "Compute forward or reverse FFT. complex vector in / complex vector out. + +Concrete class that uses FFTW." + +%feature("docstring") gr_fft_vcc_fftw::gr_fft_vcc_fftw " + +Params: (fft_size, forward, window, shift)" + +%feature("docstring") gr_fft_vcc_fftw::~gr_fft_vcc_fftw " + +Params: (NONE)" + +%feature("docstring") gr_fft_vcc_fftw::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fft_vcc_fftw "Creates a fft_vcc_fftw block. + +Compute forward or reverse FFT. complex vector in / complex vector out. + +Concrete class that uses FFTW. + +Params: (fft_size, forward, window, shift)" + +%feature("docstring") gr_fft_vfc "Compute forward FFT. float vector in / complex vector out." + +%feature("docstring") gr_fft_vfc::gr_fft_vfc " + +Params: (fft_size, forward, window)" + +%feature("docstring") gr_fft_vfc::~gr_fft_vfc " + +Params: (NONE)" + +%feature("docstring") gr_fft_vfc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_fft_vfc::set_window " + +Params: (window)" + +%feature("docstring") gr_make_fft_vfc "Creates a fft_vfc block. + +Compute forward FFT. float vector in / complex vector out. + +Params: (fft_size, forward, window)" + +%feature("docstring") gr_file_descriptor_sink "Write stream to file descriptor." + +%feature("docstring") gr_file_descriptor_sink::gr_file_descriptor_sink " + +Params: (itemsize, fd)" + +%feature("docstring") gr_file_descriptor_sink::~gr_file_descriptor_sink " + +Params: (NONE)" + +%feature("docstring") gr_file_descriptor_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_file_descriptor_sink "Creates a file_descriptor_sink block. + +Write stream to file descriptor. + +Params: (itemsize, fd)" + +%feature("docstring") gr_file_descriptor_source "Read stream from file descriptor." + +%feature("docstring") gr_file_descriptor_source::gr_file_descriptor_source " + +Params: (itemsize, fd, repeat)" + +%feature("docstring") gr_file_descriptor_source::read_items " + +Params: (buf, nitems)" + +%feature("docstring") gr_file_descriptor_source::handle_residue " + +Params: (buf, nbytes_read)" + +%feature("docstring") gr_file_descriptor_source::flush_residue " + +Params: (NONE)" + +%feature("docstring") gr_file_descriptor_source::~gr_file_descriptor_source " + +Params: (NONE)" + +%feature("docstring") gr_file_descriptor_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_file_descriptor_source "Creates a file_descriptor_source block. + +Read stream from file descriptor. + +Params: (itemsize, fd, repeat)" + +%feature("docstring") gr_file_sink "Write stream to file." + +%feature("docstring") gr_file_sink::gr_file_sink " + +Params: (itemsize, filename)" + +%feature("docstring") gr_file_sink::~gr_file_sink " + +Params: (NONE)" + +%feature("docstring") gr_file_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_file_sink "Creates a file_sink block. + +Write stream to file. + +Params: (itemsize, filename)" + +%feature("docstring") gr_file_source "Read stream from file." + +%feature("docstring") gr_file_source::gr_file_source " + +Params: (itemsize, filename, repeat)" + +%feature("docstring") gr_file_source::~gr_file_source " + +Params: (NONE)" + +%feature("docstring") gr_file_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_file_source::seek "seek file to relative to + +Params: (seek_point, whence)" + +%feature("docstring") gr_make_file_source "Creates a file_source block. + +Read stream from file. + +Params: (itemsize, filename, repeat)" + +%feature("docstring") gr_filter_delay_fc "Filter-Delay Combination Block. + +The block takes one or two float stream and outputs a complex stream. If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output. If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output. The delay in the real path accounts for the group delay introduced by the filter in the imaginary path. The filter taps needs to be calculated before initializing this block." + +%feature("docstring") gr_filter_delay_fc::~gr_filter_delay_fc " + +Params: (NONE)" + +%feature("docstring") gr_filter_delay_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_filter_delay_fc::gr_filter_delay_fc " + +Params: (taps)" + +%feature("docstring") gr_make_filter_delay_fc "Creates a filter_delay_fc block. + +Filter-Delay Combination Block. + +The block takes one or two float stream and outputs a complex stream. If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output. If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output. The delay in the real path accounts for the group delay introduced by the filter in the imaginary path. The filter taps needs to be calculated before initializing this block. + +Params: (taps)" + +%feature("docstring") gr_fir_filter_ccc "FIR filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_fir_filter_ccc::gr_fir_filter_ccc "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_ccc::~gr_fir_filter_ccc " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_ccc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_ccc "Creates a fir_filter_ccc block. + +FIR filter with gr_complex input, gr_complex output and gr_complex taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_ccf "FIR filter with gr_complex input, gr_complex output and float taps." + +%feature("docstring") gr_fir_filter_ccf::gr_fir_filter_ccf "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_ccf::~gr_fir_filter_ccf " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_ccf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_ccf "Creates a fir_filter_ccf block. + +FIR filter with gr_complex input, gr_complex output and float taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fcc "FIR filter with float input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_fir_filter_fcc::gr_fir_filter_fcc "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fcc::~gr_fir_filter_fcc " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_fcc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_fcc "Creates a fir_filter_fcc block. + +FIR filter with float input, gr_complex output and gr_complex taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fff "FIR filter with float input, float output and float taps." + +%feature("docstring") gr_fir_filter_fff::gr_fir_filter_fff "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fff::~gr_fir_filter_fff " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_fff::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_fff "Creates a fir_filter_fff block. + +FIR filter with float input, float output and float taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fsf "FIR filter with float input, short output and float taps." + +%feature("docstring") gr_fir_filter_fsf::gr_fir_filter_fsf "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_fsf::~gr_fir_filter_fsf " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_fsf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_fsf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_fsf "Creates a fir_filter_fsf block. + +FIR filter with float input, short output and float taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_scc "FIR filter with short input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_fir_filter_scc::gr_fir_filter_scc "Construct a FIR filter with the given taps + +Params: (decimation, taps)" + +%feature("docstring") gr_fir_filter_scc::~gr_fir_filter_scc " + +Params: (NONE)" + +%feature("docstring") gr_fir_filter_scc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fir_filter_scc "Creates a fir_filter_scc block. + +FIR filter with short input, gr_complex output and gr_complex taps. + +Params: (decimation, taps)" + +%feature("docstring") gr_flat_flowgraph "Class specializing gr_flat_flowgraph that has all nodes as gr_blocks, with no hierarchy." + +%feature("docstring") gr_flat_flowgraph::~gr_flat_flowgraph " + +Params: (NONE)" + +%feature("docstring") gr_flat_flowgraph::setup_connections " + +Params: (NONE)" + +%feature("docstring") gr_flat_flowgraph::merge_connections " + +Params: (sfg)" + +%feature("docstring") gr_flat_flowgraph::dump " + +Params: (NONE)" + +%feature("docstring") gr_flat_flowgraph::make_block_vector "Make a vector of gr_block from a vector of gr_basic_block + +Params: (blocks)" + +%feature("docstring") gr_flat_flowgraph::gr_flat_flowgraph " + +Params: (NONE)" + +%feature("docstring") gr_flat_flowgraph::allocate_block_detail " + +Params: (block)" + +%feature("docstring") gr_flat_flowgraph::allocate_buffer " + +Params: (block, port)" + +%feature("docstring") gr_flat_flowgraph::connect_block_inputs " + +Params: (block)" + +%feature("docstring") gr_make_flat_flowgraph "Creates a flat_flowgraph block. + +Class specializing gr_flat_flowgraph that has all nodes as gr_blocks, with no hierarchy. + +Params: (NONE)" + +%feature("docstring") gr_fll_band_edge_cc "Frequency Lock Loop using band-edge filters. + +The frequency lock loop derives a band-edge filter that covers the upper and lower bandwidths of a digitally-modulated signal. The bandwidth range is determined by the excess bandwidth (e.g., rolloff factor) of the modulated signal. The placement in frequency of the band-edges is determined by the oversampling ratio (number of samples per symbol) and the excess bandwidth. The size of the filters should be fairly large so as to average over a number of symbols. + +The FLL works by filtering the upper and lower band edges into x_u(t) and x_l(t), respectively. These are combined to form cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining these to form the signal e(t) = Re{cc(t) \times ss(t)^*} (where ^* is the complex conjugate) provides an error signal at the DC term that is directly proportional to the carrier frequency. We then make a second-order loop using the error signal that is the running average of e(t). + +In theory, the band-edge filter is the derivative of the matched filter in frequency, (H_be(f) = \frac{H(f)}{df}. In practice, this comes down to a quarter sine wave at the point of the matched filter's rolloff (if it's a raised-cosine, the derivative of a cosine is a sine). Extend this sine by another quarter wave to make a half wave around the band-edges is equivalent in time to the sum of two sinc functions. The baseband filter fot the band edges is therefore derived from this sum of sincs. The band edge filters are then just the baseband signal modulated to the correct place in frequency. All of these calculations are done in the 'design_filter' function. + +Note: We use FIR filters here because the filters have to have a flat phase response over the entire frequency range to allow their comparisons to be valid." + +%feature("docstring") gr_fll_band_edge_cc::gr_fll_band_edge_cc "Build the FLL + +Params: (samps_per_sym, rolloff, filter_size, alpha, beta)" + +%feature("docstring") gr_fll_band_edge_cc::~gr_fll_band_edge_cc " + +Params: (NONE)" + +%feature("docstring") gr_fll_band_edge_cc::design_filter "Design the band-edge filter based on the number of samples per symbol, filter rolloff factor, and the filter size + +Params: (samps_per_sym, rolloff, filter_size)" + +%feature("docstring") gr_fll_band_edge_cc::set_alpha "Set the alpha gainvalue + +Params: (alpha)" + +%feature("docstring") gr_fll_band_edge_cc::set_beta "Set the beta gain value + +Params: (beta)" + +%feature("docstring") gr_fll_band_edge_cc::print_taps "Print the taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_fll_band_edge_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fll_band_edge_cc "Creates a fll_band_edge_cc block. + +Frequency Lock Loop using band-edge filters. + +The frequency lock loop derives a band-edge filter that covers the upper and lower bandwidths of a digitally-modulated signal. The bandwidth range is determined by the excess bandwidth (e.g., rolloff factor) of the modulated signal. The placement in frequency of the band-edges is determined by the oversampling ratio (number of samples per symbol) and the excess bandwidth. The size of the filters should be fairly large so as to average over a number of symbols. + +The FLL works by filtering the upper and lower band edges into x_u(t) and x_l(t), respectively. These are combined to form cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining these to form the signal e(t) = Re{cc(t) \times ss(t)^*} (where ^* is the complex conjugate) provides an error signal at the DC term that is directly proportional to the carrier frequency. We then make a second-order loop using the error signal that is the running average of e(t). + +In theory, the band-edge filter is the derivative of the matched filter in frequency, (H_be(f) = \frac{H(f)}{df}. In practice, this comes down to a quarter sine wave at the point of the matched filter's rolloff (if it's a raised-cosine, the derivative of a cosine is a sine). Extend this sine by another quarter wave to make a half wave around the band-edges is equivalent in time to the sum of two sinc functions. The baseband filter fot the band edges is therefore derived from this sum of sincs. The band edge filters are then just the baseband signal modulated to the correct place in frequency. All of these calculations are done in the 'design_filter' function. + +Note: We use FIR filters here because the filters have to have a flat phase response over the entire frequency range to allow their comparisons to be valid. + +Params: (samps_per_sym, rolloff, filter_size, alpha, beta)" + +%feature("docstring") gr_float_to_char "Convert stream of float to a stream of char." + +%feature("docstring") gr_float_to_char::gr_float_to_char " + +Params: (NONE)" + +%feature("docstring") gr_float_to_char::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_float_to_char "Creates a float_to_char block. + +Convert stream of float to a stream of char. + +Params: (NONE)" + +%feature("docstring") gr_float_to_complex "Convert 1 or 2 streams of float to a stream of gr_complex." + +%feature("docstring") gr_float_to_complex::gr_float_to_complex " + +Params: (vlen)" + +%feature("docstring") gr_float_to_complex::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_float_to_complex "Creates a float_to_complex block. + +Convert 1 or 2 streams of float to a stream of gr_complex. + +Params: (vlen)" + +%feature("docstring") gr_float_to_short "Convert stream of float to a stream of short." + +%feature("docstring") gr_float_to_short::gr_float_to_short " + +Params: (NONE)" + +%feature("docstring") gr_float_to_short::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_float_to_short "Creates a float_to_short block. + +Convert stream of float to a stream of short. + +Params: (NONE)" + +%feature("docstring") gr_float_to_uchar "Convert stream of float to a stream of unsigned char." + +%feature("docstring") gr_float_to_uchar::gr_float_to_uchar " + +Params: (NONE)" + +%feature("docstring") gr_float_to_uchar::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_float_to_uchar "Creates a float_to_uchar block. + +Convert stream of float to a stream of unsigned char. + +Params: (NONE)" + +%feature("docstring") gr_flowgraph "Class representing a directed, acyclic graph of basic blocks." + +%feature("docstring") gr_flowgraph::~gr_flowgraph " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::connect " + +Params: (src, dst)" + +%feature("docstring") gr_flowgraph::disconnect " + +Params: (src, dst)" + +%feature("docstring") gr_flowgraph::validate " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::clear " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::edges " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::calc_used_blocks " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::topological_sort " + +Params: (blocks)" + +%feature("docstring") gr_flowgraph::partition " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::gr_flowgraph " + +Params: (NONE)" + +%feature("docstring") gr_flowgraph::calc_used_ports " + +Params: (block, check_inputs)" + +%feature("docstring") gr_flowgraph::calc_downstream_blocks " + +Params: (block, port)" + +%feature("docstring") gr_flowgraph::calc_upstream_edges " + +Params: (block)" + +%feature("docstring") gr_flowgraph::has_block_p " + +Params: (block)" + +%feature("docstring") gr_flowgraph::calc_upstream_edge " + +Params: (block, port)" + +%feature("docstring") gr_flowgraph::check_valid_port " + +Params: (sig, port)" + +%feature("docstring") gr_flowgraph::check_dst_not_used " + +Params: (dst)" + +%feature("docstring") gr_flowgraph::check_type_match " + +Params: (src, dst)" + +%feature("docstring") gr_flowgraph::calc_connections " + +Params: (block, check_inputs)" + +%feature("docstring") gr_flowgraph::check_contiguity " + +Params: (block, used_ports, check_inputs)" + +%feature("docstring") gr_flowgraph::calc_reachable_blocks " + +Params: (block, blocks)" + +%feature("docstring") gr_flowgraph::reachable_dfs_visit " + +Params: (block, blocks)" + +%feature("docstring") gr_flowgraph::calc_adjacent_blocks " + +Params: (block, blocks)" + +%feature("docstring") gr_flowgraph::sort_sources_first " + +Params: (blocks)" + +%feature("docstring") gr_flowgraph::source_p " + +Params: (block)" + +%feature("docstring") gr_flowgraph::topological_dfs_visit " + +Params: (block, output)" + +%feature("docstring") gr_make_flowgraph "Creates a flowgraph block. + +Class representing a directed, acyclic graph of basic blocks. + +Params: (NONE)" + +%feature("docstring") gr_fmdet_cf "Implements an IQ slope detector. + +input: stream of complex; output: stream of floats + +This implements a limiting slope detector. The limiter is in the normalization by the magnitude of the sample" + +%feature("docstring") gr_fmdet_cf::gr_fmdet_cf " + +Params: (samplerate, freq_low, freq_high, scl)" + +%feature("docstring") gr_fmdet_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_fmdet_cf "Creates a fmdet_cf block. + +Implements an IQ slope detector. + +input: stream of complex; output: stream of floats + +This implements a limiting slope detector. The limiter is in the normalization by the magnitude of the sample + +Params: (samplerate, freq_low, freq_high, scl)" + +%feature("docstring") gr_fractional_interpolator_cc "Interpolating mmse filter with gr_complex input, gr_complex output." + +%feature("docstring") gr_fractional_interpolator_cc::~gr_fractional_interpolator_cc " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_cc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_fractional_interpolator_cc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_fractional_interpolator_cc::mu " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_cc::interp_ratio " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_cc::set_mu " + +Params: (mu)" + +%feature("docstring") gr_fractional_interpolator_cc::set_interp_ratio " + +Params: (interp_ratio)" + +%feature("docstring") gr_fractional_interpolator_cc::gr_fractional_interpolator_cc " + +Params: (phase_shift, interp_ratio)" + +%feature("docstring") gr_make_fractional_interpolator_cc "Creates a fractional_interpolator_cc block. + +Interpolating mmse filter with gr_complex input, gr_complex output. + +Params: (phase_shift, interp_ratio)" + +%feature("docstring") gr_fractional_interpolator_ff "Interpolating mmse filter with float input, float output." + +%feature("docstring") gr_fractional_interpolator_ff::~gr_fractional_interpolator_ff " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_ff::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_fractional_interpolator_ff::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_fractional_interpolator_ff::mu " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_ff::interp_ratio " + +Params: (NONE)" + +%feature("docstring") gr_fractional_interpolator_ff::set_mu " + +Params: (mu)" + +%feature("docstring") gr_fractional_interpolator_ff::set_interp_ratio " + +Params: (interp_ratio)" + +%feature("docstring") gr_fractional_interpolator_ff::gr_fractional_interpolator_ff " + +Params: (phase_shift, interp_ratio)" + +%feature("docstring") gr_make_fractional_interpolator_ff "Creates a fractional_interpolator_ff block. + +Interpolating mmse filter with float input, float output. + +Params: (phase_shift, interp_ratio)" + +%feature("docstring") gr_framer_sink_1 "Given a stream of bits and access_code flags, assemble packets. + +input: stream of bytes from gr_correlate_access_code_bb output: none. Pushes assembled packet into target queue. + +The framer expects a fixed length header of 2 16-bit shorts containing the payload length, followed by the payload. If the 2 16-bit shorts are not identical, this packet is ignored. Better algs are welcome. + +The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code." + +%feature("docstring") gr_framer_sink_1::gr_framer_sink_1 " + +Params: (target_queue)" + +%feature("docstring") gr_framer_sink_1::enter_search " + +Params: (NONE)" + +%feature("docstring") gr_framer_sink_1::enter_have_sync " + +Params: (NONE)" + +%feature("docstring") gr_framer_sink_1::enter_have_header " + +Params: (payload_len, whitener_offset)" + +%feature("docstring") gr_framer_sink_1::header_ok " + +Params: (NONE)" + +%feature("docstring") gr_framer_sink_1::header_payload " + +Params: (len, offset)" + +%feature("docstring") gr_framer_sink_1::~gr_framer_sink_1 " + +Params: (NONE)" + +%feature("docstring") gr_framer_sink_1::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_framer_sink_1 "Creates a framer_sink_1 block. + +Given a stream of bits and access_code flags, assemble packets. + +input: stream of bytes from gr_correlate_access_code_bb output: none. Pushes assembled packet into target queue. + +The framer expects a fixed length header of 2 16-bit shorts containing the payload length, followed by the payload. If the 2 16-bit shorts are not identical, this packet is ignored. Better algs are welcome. + +The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code. + +Params: (target_queue)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc "FIR filter combined with frequency translation with gr_complex input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::~gr_freq_xlating_fir_filter_ccc " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccc::gr_freq_xlating_fir_filter_ccc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_ccc "Creates a freq_xlating_fir_filter_ccc block. + +FIR filter combined with frequency translation with gr_complex input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf "FIR filter combined with frequency translation with gr_complex input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::~gr_freq_xlating_fir_filter_ccf " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_ccf::gr_freq_xlating_fir_filter_ccf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_ccf "Creates a freq_xlating_fir_filter_ccf block. + +FIR filter combined with frequency translation with gr_complex input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc "FIR filter combined with frequency translation with float input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::~gr_freq_xlating_fir_filter_fcc " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcc::gr_freq_xlating_fir_filter_fcc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_fcc "Creates a freq_xlating_fir_filter_fcc block. + +FIR filter combined with frequency translation with float input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf "FIR filter combined with frequency translation with float input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::~gr_freq_xlating_fir_filter_fcf " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_fcf::gr_freq_xlating_fir_filter_fcf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_fcf "Creates a freq_xlating_fir_filter_fcf block. + +FIR filter combined with frequency translation with float input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc "FIR filter combined with frequency translation with short input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_scc::~gr_freq_xlating_fir_filter_scc " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_scc::gr_freq_xlating_fir_filter_scc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_scc "Creates a freq_xlating_fir_filter_scc block. + +FIR filter combined with frequency translation with short input, gr_complex output and gr_complex taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf "FIR filter combined with frequency translation with short input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." + +%feature("docstring") gr_freq_xlating_fir_filter_scf::~gr_freq_xlating_fir_filter_scf " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf::set_center_freq " + +Params: (center_freq)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf::build_composite_fir " + +Params: (NONE)" + +%feature("docstring") gr_freq_xlating_fir_filter_scf::gr_freq_xlating_fir_filter_scf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_make_freq_xlating_fir_filter_scf "Creates a freq_xlating_fir_filter_scf block. + +FIR filter combined with frequency translation with short input, gr_complex output and float taps + +This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. + +Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. + +Params: (decimation, taps, center_freq, sampling_freq)" + +%feature("docstring") gr_frequency_modulator_fc "Frequency modulator block + +float input; complex baseband output." + +%feature("docstring") gr_frequency_modulator_fc::gr_frequency_modulator_fc " + +Params: (sensitivity)" + +%feature("docstring") gr_frequency_modulator_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_frequency_modulator_fc "Creates a frequency_modulator_fc block. + +Frequency modulator block + +float input; complex baseband output. + +Params: (sensitivity)" + +%feature("docstring") gr_glfsr_source_b "Galois LFSR pseudo-random source." + +%feature("docstring") gr_glfsr_source_b::gr_glfsr_source_b " + +Params: (degree, repeat, mask, seed)" + +%feature("docstring") gr_glfsr_source_b::~gr_glfsr_source_b " + +Params: (NONE)" + +%feature("docstring") gr_glfsr_source_b::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_glfsr_source_b::period " + +Params: (NONE)" + +%feature("docstring") gr_glfsr_source_b::mask " + +Params: (NONE)" + +%feature("docstring") gr_make_glfsr_source_b "Creates a glfsr_source_b block. + +Galois LFSR pseudo-random source. + +Params: (degree, repeat, mask, seed)" + +%feature("docstring") gr_glfsr_source_f "Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0." + +%feature("docstring") gr_glfsr_source_f::gr_glfsr_source_f " + +Params: (degree, repeat, mask, seed)" + +%feature("docstring") gr_glfsr_source_f::~gr_glfsr_source_f " + +Params: (NONE)" + +%feature("docstring") gr_glfsr_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_glfsr_source_f::period " + +Params: (NONE)" + +%feature("docstring") gr_glfsr_source_f::mask " + +Params: (NONE)" + +%feature("docstring") gr_make_glfsr_source_f "Creates a glfsr_source_f block. + +Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0. + +Params: (degree, repeat, mask, seed)" + +%feature("docstring") gr_goertzel_fc "Goertzel single-bin DFT calculation." + +%feature("docstring") gr_goertzel_fc::gr_goertzel_fc " + +Params: (rate, len, freq)" + +%feature("docstring") gr_goertzel_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_goertzel_fc "Creates a goertzel_fc block. + +Goertzel single-bin DFT calculation. + +Params: (rate, len, freq)" + +%feature("docstring") gr_head "copies the first N items to the output then signals done + +Useful for building test cases" + +%feature("docstring") gr_head::gr_head " + +Params: (sizeof_stream_item, nitems)" + +%feature("docstring") gr_head::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_head::reset " + +Params: (NONE)" + +%feature("docstring") gr_make_head "Creates a head block. + +copies the first N items to the output then signals done + +Useful for building test cases + +Params: (sizeof_stream_item, nitems)" + +%feature("docstring") gr_hier_block2 "Hierarchical container class for gr_block's and gr_hier_block2's." + +%feature("docstring") gr_hier_block2::gr_hier_block2 " + +Params: (name, input_signature, output_signature)" + +%feature("docstring") gr_hier_block2::~gr_hier_block2 " + +Params: (NONE)" + +%feature("docstring") gr_hier_block2::self "Return an object, representing the current block, which can be passed to connect. + +The returned object may only be used as an argument to connect or disconnect. Any other use of self() results in unspecified (erroneous) behavior. + +Params: (NONE)" + +%feature("docstring") gr_hier_block2::connect "Add a stand-alone (possibly hierarchical) block to internal graph. + +This adds a gr-block or hierarchical block to the internal graph without wiring it to anything else. + +Params: (block)" + +%feature("docstring") gr_hier_block2::disconnect "Remove a gr-block or hierarchical block from the internal flowgraph. + +This removes a gr-block or hierarchical block from the internal flowgraph, disconnecting it from other blocks as needed. + +Params: (block)" + +%feature("docstring") gr_hier_block2::disconnect_all "Disconnect all connections in the internal flowgraph. + +This call removes all output port to input port connections in the internal flowgraph. + +Params: (NONE)" + +%feature("docstring") gr_hier_block2::lock "Lock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. + +N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. + +Params: (NONE)" + +%feature("docstring") gr_hier_block2::unlock "Unlock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. + +N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. + +Params: (NONE)" + +%feature("docstring") gr_hier_block2::flatten " + +Params: (NONE)" + +%feature("docstring") gr_make_hier_block2 "Creates a hier_block2 block. + +Hierarchical container class for gr_block's and gr_hier_block2's. + +Params: (name, input_signature, output_signature)" + +%feature("docstring") gr_hilbert_fc "Hilbert transformer. + +real output is input appropriately delayed. imaginary output is hilbert filtered (90 degree phase shift) version of input." + +%feature("docstring") gr_hilbert_fc::~gr_hilbert_fc " + +Params: (NONE)" + +%feature("docstring") gr_hilbert_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_hilbert_fc::gr_hilbert_fc " + +Params: (ntaps)" + +%feature("docstring") gr_make_hilbert_fc "Creates a hilbert_fc block. + +Hilbert transformer. + +real output is input appropriately delayed. imaginary output is hilbert filtered (90 degree phase shift) version of input. + +Params: (ntaps)" + +%feature("docstring") gr_histo_sink_f "Histogram module." + +%feature("docstring") gr_histo_sink_f::gr_histo_sink_f " + +Params: (msgq)" + +%feature("docstring") gr_histo_sink_f::send_frame " + +Params: ()" + +%feature("docstring") gr_histo_sink_f::clear " + +Params: ()" + +%feature("docstring") gr_histo_sink_f::~gr_histo_sink_f " + +Params: ()" + +%feature("docstring") gr_histo_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_histo_sink_f::get_frame_size " + +Params: ()" + +%feature("docstring") gr_histo_sink_f::get_num_bins " + +Params: ()" + +%feature("docstring") gr_histo_sink_f::set_frame_size " + +Params: (frame_size)" + +%feature("docstring") gr_histo_sink_f::set_num_bins " + +Params: (num_bins)" + +%feature("docstring") gr_make_histo_sink_f "Creates a histo_sink_f block. + +Histogram module. + +Params: (msgq)" + +%feature("docstring") gr_iir_filter_ffd "IIR filter with float input, float output and double taps + +This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. + +The input and output satisfy a difference equation of the form + + + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps." + +%feature("docstring") gr_iir_filter_ffd::gr_iir_filter_ffd "Construct an IIR filter with the given taps + +Params: (fftaps, fbtaps)" + +%feature("docstring") gr_iir_filter_ffd::~gr_iir_filter_ffd " + +Params: (NONE)" + +%feature("docstring") gr_iir_filter_ffd::set_taps " + +Params: (fftaps, fbtaps)" + +%feature("docstring") gr_iir_filter_ffd::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_iir_filter_ffd "Creates a iir_filter_ffd block. + +IIR filter with float input, float output and double taps + +This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. + +The input and output satisfy a difference equation of the form + + + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps. + +Params: (fftaps, fbtaps)" + +%feature("docstring") gr_integrate_cc "output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate" + +%feature("docstring") gr_integrate_cc::gr_integrate_cc " + +Params: (decim)" + +%feature("docstring") gr_integrate_cc::~gr_integrate_cc " + +Params: (NONE)" + +%feature("docstring") gr_integrate_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_integrate_cc "Creates a integrate_cc block. + +output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate + +Params: (decim)" + +%feature("docstring") gr_integrate_ff "output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate" + +%feature("docstring") gr_integrate_ff::gr_integrate_ff " + +Params: (decim)" + +%feature("docstring") gr_integrate_ff::~gr_integrate_ff " + +Params: (NONE)" + +%feature("docstring") gr_integrate_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_integrate_ff "Creates a integrate_ff block. + +output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate + +Params: (decim)" + +%feature("docstring") gr_integrate_ii "output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate" + +%feature("docstring") gr_integrate_ii::gr_integrate_ii " + +Params: (decim)" + +%feature("docstring") gr_integrate_ii::~gr_integrate_ii " + +Params: (NONE)" + +%feature("docstring") gr_integrate_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_integrate_ii "Creates a integrate_ii block. + +output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate + +Params: (decim)" + +%feature("docstring") gr_integrate_ss "output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate" + +%feature("docstring") gr_integrate_ss::gr_integrate_ss " + +Params: (decim)" + +%feature("docstring") gr_integrate_ss::~gr_integrate_ss " + +Params: (NONE)" + +%feature("docstring") gr_integrate_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_integrate_ss "Creates a integrate_ss block. + +output = sum(input[0]...input[n]) + +Integrate successive samples in input stream and decimate + +Params: (decim)" + +%feature("docstring") gr_interleave "interleave N inputs to a single output" + +%feature("docstring") gr_interleave::gr_interleave " + +Params: (itemsize)" + +%feature("docstring") gr_interleave::~gr_interleave " + +Params: (NONE)" + +%feature("docstring") gr_interleave::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_interleave::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_interleave "Creates a interleave block. + +interleave N inputs to a single output + +Params: (itemsize)" + +%feature("docstring") gr_interleaved_short_to_complex "Convert stream of interleaved shorts to a stream of complex." + +%feature("docstring") gr_interleaved_short_to_complex::gr_interleaved_short_to_complex " + +Params: (NONE)" + +%feature("docstring") gr_interleaved_short_to_complex::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interleaved_short_to_complex "Creates a interleaved_short_to_complex block. + +Convert stream of interleaved shorts to a stream of complex. + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_ccc "Interpolating FIR filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_interp_fir_filter_ccc::gr_interp_fir_filter_ccc "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_ccc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_ccc::~gr_interp_fir_filter_ccc " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_ccc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_ccc "Creates a interp_fir_filter_ccc block. + +Interpolating FIR filter with gr_complex input, gr_complex output and gr_complex taps. + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_ccf "Interpolating FIR filter with gr_complex input, gr_complex output and float taps." + +%feature("docstring") gr_interp_fir_filter_ccf::gr_interp_fir_filter_ccf "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_ccf::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_ccf::~gr_interp_fir_filter_ccf " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_ccf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_ccf "Creates a interp_fir_filter_ccf block. + +Interpolating FIR filter with gr_complex input, gr_complex output and float taps. + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fcc "Interpolating FIR filter with float input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_interp_fir_filter_fcc::gr_interp_fir_filter_fcc "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fcc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fcc::~gr_interp_fir_filter_fcc " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_fcc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_fcc "Creates a interp_fir_filter_fcc block. + +Interpolating FIR filter with float input, gr_complex output and gr_complex taps. + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fff "Interpolating FIR filter with float input, float output and float taps." + +%feature("docstring") gr_interp_fir_filter_fff::gr_interp_fir_filter_fff "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fff::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fff::~gr_interp_fir_filter_fff " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_fff::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_fff "Creates a interp_fir_filter_fff block. + +Interpolating FIR filter with float input, float output and float taps. + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fsf "Interpolating FIR filter with float input, short output and float taps." + +%feature("docstring") gr_interp_fir_filter_fsf::gr_interp_fir_filter_fsf "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_fsf::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fsf::~gr_interp_fir_filter_fsf " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_fsf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_fsf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_fsf "Creates a interp_fir_filter_fsf block. + +Interpolating FIR filter with float input, short output and float taps. + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_scc "Interpolating FIR filter with short input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_interp_fir_filter_scc::gr_interp_fir_filter_scc "Construct a FIR filter with the given taps + +Params: (interpolation, taps)" + +%feature("docstring") gr_interp_fir_filter_scc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_scc::~gr_interp_fir_filter_scc " + +Params: (NONE)" + +%feature("docstring") gr_interp_fir_filter_scc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_interp_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_interp_fir_filter_scc "Creates a interp_fir_filter_scc block. + +Interpolating FIR filter with short input, gr_complex output and gr_complex taps. + +Params: (interpolation, taps)" + + + +%feature("docstring") gr_iqcomp_cc::gr_iqcomp_cc " + +Params: (mu)" + +%feature("docstring") gr_iqcomp_cc::mu " + +Params: (NONE)" + +%feature("docstring") gr_iqcomp_cc::set_mu " + +Params: (mu)" + +%feature("docstring") gr_iqcomp_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_iqcomp_cc "Creates a iqcomp_cc block. + + + +Params: (mu)" + +%feature("docstring") gr_keep_one_in_n "decimate a stream, keeping one item out of every n." + +%feature("docstring") gr_keep_one_in_n::gr_keep_one_in_n " + +Params: (item_size, n)" + +%feature("docstring") gr_keep_one_in_n::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_keep_one_in_n::set_n " + +Params: (n)" + +%feature("docstring") gr_make_keep_one_in_n "Creates a keep_one_in_n block. + +decimate a stream, keeping one item out of every n. + +Params: (item_size, n)" + +%feature("docstring") gr_kludge_copy "output[i] = input[i] + +This is a short term kludge to work around a problem with the hierarchical block impl." + +%feature("docstring") gr_kludge_copy::gr_kludge_copy " + +Params: (itemsize)" + +%feature("docstring") gr_kludge_copy::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_kludge_copy::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_kludge_copy "Creates a kludge_copy block. + +output[i] = input[i] + +This is a short term kludge to work around a problem with the hierarchical block impl. + +Params: (itemsize)" + +%feature("docstring") gr_lfsr_32k_source_s "LFSR pseudo-random source with period of 2^15 bits (2^11 shorts) + +This source is typically used along with gr_check_lfsr_32k_s to test the USRP using its digital loopback mode." + +%feature("docstring") gr_lfsr_32k_source_s::gr_lfsr_32k_source_s " + +Params: (NONE)" + +%feature("docstring") gr_lfsr_32k_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_lfsr_32k_source_s "Creates a lfsr_32k_source_s block. + +LFSR pseudo-random source with period of 2^15 bits (2^11 shorts) + +This source is typically used along with gr_check_lfsr_32k_s to test the USRP using its digital loopback mode. + +Params: (NONE)" + +%feature("docstring") gr_lms_dfe_cc "Least-Mean-Square Decision Feedback Equalizer (complex in/out)." + +%feature("docstring") gr_lms_dfe_cc::gr_lms_dfe_cc " + +Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" + +%feature("docstring") gr_lms_dfe_cc::slicer_0deg " + +Params: (baud)" + +%feature("docstring") gr_lms_dfe_cc::slicer_45deg " + +Params: (baud)" + +%feature("docstring") gr_lms_dfe_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_lms_dfe_cc "Creates a lms_dfe_cc block. + +Least-Mean-Square Decision Feedback Equalizer (complex in/out). + +Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" + +%feature("docstring") gr_lms_dfe_ff "Least-Mean-Square Decision Feedback Equalizer (float in/out)." + +%feature("docstring") gr_lms_dfe_ff::gr_lms_dfe_ff " + +Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" + +%feature("docstring") gr_lms_dfe_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_lms_dfe_ff "Creates a lms_dfe_ff block. + +Least-Mean-Square Decision Feedback Equalizer (float in/out). + +Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" + +%feature("docstring") gr_map_bb "output[i] = map[input[i]]" + +%feature("docstring") gr_map_bb::gr_map_bb " + +Params: (map)" + +%feature("docstring") gr_map_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_map_bb "Creates a map_bb block. + +output[i] = map[input[i]] + +Params: (map)" + + + +%feature("docstring") gr_max_ff::gr_max_ff " + +Params: (vlen)" + +%feature("docstring") gr_max_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_max_ff "Creates a max_ff block. + + + +Params: (vlen)" + + + +%feature("docstring") gr_max_ii::gr_max_ii " + +Params: (vlen)" + +%feature("docstring") gr_max_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_max_ii "Creates a max_ii block. + + + +Params: (vlen)" + + + +%feature("docstring") gr_max_ss::gr_max_ss " + +Params: (vlen)" + +%feature("docstring") gr_max_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_max_ss "Creates a max_ss block. + + + +Params: (vlen)" + +%feature("docstring") gr_message "Message class. + +The ideas and method names for adjustable message length were lifted from the click modular router \"Packet\" class." + +%feature("docstring") gr_message::gr_message " + +Params: (type, arg1, arg2, length)" + +%feature("docstring") gr_message::buf_data " + +Params: (NONE)" + +%feature("docstring") gr_message::buf_len " + +Params: (NONE)" + +%feature("docstring") gr_message::~gr_message " + +Params: (NONE)" + +%feature("docstring") gr_message::type " + +Params: (NONE)" + +%feature("docstring") gr_message::arg1 " + +Params: (NONE)" + +%feature("docstring") gr_message::arg2 " + +Params: (NONE)" + +%feature("docstring") gr_message::set_type " + +Params: (type)" + +%feature("docstring") gr_message::set_arg1 " + +Params: (arg1)" + +%feature("docstring") gr_message::set_arg2 " + +Params: (arg2)" + +%feature("docstring") gr_message::msg " + +Params: (NONE)" + +%feature("docstring") gr_message::length " + +Params: (NONE)" + +%feature("docstring") gr_message::to_string " + +Params: (NONE)" + +%feature("docstring") gr_make_message "Creates a message block. + +Message class. + +The ideas and method names for adjustable message length were lifted from the click modular router \"Packet\" class. + +Params: (type, arg1, arg2, length)" + +%feature("docstring") gr_message_sink "Gather received items into messages and insert into msgq." + +%feature("docstring") gr_message_sink::gr_message_sink " + +Params: (itemsize, msgq, dont_block)" + +%feature("docstring") gr_message_sink::~gr_message_sink " + +Params: (NONE)" + +%feature("docstring") gr_message_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_message_sink "Creates a message_sink block. + +Gather received items into messages and insert into msgq. + +Params: (itemsize, msgq, dont_block)" + +%feature("docstring") gr_message_source "Turn received messages into a stream." + +%feature("docstring") gr_message_source::gr_message_source " + +Params: (itemsize, msgq_limit)" + +%feature("docstring") gr_message_source::~gr_message_source " + +Params: (NONE)" + +%feature("docstring") gr_message_source::msgq " + +Params: (NONE)" + +%feature("docstring") gr_message_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_message_source "Creates a message_source block. + +Turn received messages into a stream. + +Params: (itemsize, msgq_limit)" + +%feature("docstring") gr_moving_average_cc "output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." + +%feature("docstring") gr_moving_average_cc::gr_moving_average_cc " + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_cc::~gr_moving_average_cc " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_moving_average_cc::length " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_cc::scale " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_cc::set_length_and_scale " + +Params: (length, scale)" + +%feature("docstring") gr_make_moving_average_cc "Creates a moving_average_cc block. + +output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ff "output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." + +%feature("docstring") gr_moving_average_ff::gr_moving_average_ff " + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ff::~gr_moving_average_ff " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_moving_average_ff::length " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ff::scale " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ff::set_length_and_scale " + +Params: (length, scale)" + +%feature("docstring") gr_make_moving_average_ff "Creates a moving_average_ff block. + +output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ii "output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." + +%feature("docstring") gr_moving_average_ii::gr_moving_average_ii " + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ii::~gr_moving_average_ii " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_moving_average_ii::length " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ii::scale " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ii::set_length_and_scale " + +Params: (length, scale)" + +%feature("docstring") gr_make_moving_average_ii "Creates a moving_average_ii block. + +output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ss "output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." + +%feature("docstring") gr_moving_average_ss::gr_moving_average_ss " + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_moving_average_ss::~gr_moving_average_ss " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_moving_average_ss::length " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ss::scale " + +Params: (NONE)" + +%feature("docstring") gr_moving_average_ss::set_length_and_scale " + +Params: (length, scale)" + +%feature("docstring") gr_make_moving_average_ss "Creates a moving_average_ss block. + +output is the moving sum of the last N samples, scaled by the scale factor + +max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. + +Params: (length, scale, max_iter)" + +%feature("docstring") gr_mpsk_receiver_cc "This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. + +This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. It works with (D)BPSK, (D)QPSK, and (D)8PSK as tested currently. It should also work for OQPSK and PI/4 DQPSK. + +The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. There are optimized phase error detectors for BPSK and QPSK, but 8PSK is done using a brute-force computation of the constellation points to find the minimum. + +The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: + +G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + +This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise." + +%feature("docstring") gr_mpsk_receiver_cc::~gr_mpsk_receiver_cc " + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_mpsk_receiver_cc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_mpsk_receiver_cc::mu "(M&M) Returns current value of mu + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::omega "(M&M) Returns current value of omega + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::gain_mu "(M&M) Returns mu gain factor + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::gain_omega "(M&M) Returns omega gain factor + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::set_mu "(M&M) Sets value of mu + +Params: (mu)" + +%feature("docstring") gr_mpsk_receiver_cc::set_omega "(M&M) Sets value of omega and its min and max values + +Params: (omega)" + +%feature("docstring") gr_mpsk_receiver_cc::set_gain_mu "(M&M) Sets value for mu gain factor + +Params: (gain_mu)" + +%feature("docstring") gr_mpsk_receiver_cc::set_gain_omega "(M&M) Sets value for omega gain factor + +Params: (gain_omega)" + +%feature("docstring") gr_mpsk_receiver_cc::alpha "(CL) Returns the value for alpha (the phase gain term) + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::beta "(CL) Returns the value of beta (the frequency gain term) + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::freq "(CL) Returns the current value of the frequency of the NCO in the Costas loop + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::phase "(CL) Returns the current value of the phase of the NCO in the Costal loop + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::set_alpha "(CL) Sets the value for alpha (the phase gain term) + +Params: (alpha)" + +%feature("docstring") gr_mpsk_receiver_cc::set_beta "(CL) Setss the value of beta (the frequency gain term) + +Params: (beta)" + +%feature("docstring") gr_mpsk_receiver_cc::set_freq "(CL) Sets the current value of the frequency of the NCO in the Costas loop + +Params: (freq)" + +%feature("docstring") gr_mpsk_receiver_cc::set_phase "(CL) Setss the current value of the phase of the NCO in the Costal loop + +Params: (phase)" + +%feature("docstring") gr_mpsk_receiver_cc::gr_mpsk_receiver_cc "Constructor to synchronize incoming M-PSK symbols. + +The constructor also chooses which phase detector and decision maker to use in the work loop based on the value of M. + +Params: (M, theta, alpha, beta, fmin, fmax, mu, gain_mu, omega, gain_omega, omega_rel)" + +%feature("docstring") gr_mpsk_receiver_cc::make_constellation " + +Params: (NONE)" + +%feature("docstring") gr_mpsk_receiver_cc::mm_sampler " + +Params: (symbol)" + +%feature("docstring") gr_mpsk_receiver_cc::mm_error_tracking " + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::phase_error_tracking " + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_generic "Phase error detector for MPSK modulations. + +This function determines the phase error for any MPSK signal by creating a set of PSK constellation points and doing a brute-force search to see which point minimizes the Euclidean distance. This point is then used to derotate the sample to the real-axis and a atan (using the fast approximation function) to determine the phase difference between the incoming sample and the real constellation point + +This should be cleaned up and made more efficient. + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_bpsk "Phase error detector for BPSK modulation. + +This function determines the phase error using a simple BPSK phase error detector by multiplying the real and imaginary (the error signal) components together. As the imaginary part goes to 0, so does this error. + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_qpsk "Phase error detector for QPSK modulation. + +This function determines the phase error using the limiter approach in a standard 4th order Costas loop + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::decision_generic "Decision maker for a generic MPSK constellation. + +This decision maker is a generic implementation that does a brute-force search for the constellation point that minimizes the error between it and the incoming signal. + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::decision_bpsk "Decision maker for BPSK constellation. + +This decision maker is a simple slicer function that makes a decision on the symbol based on its placement on the real axis of greater than 0 or less than 0; the quadrature component is always 0. + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::decision_qpsk "Decision maker for QPSK constellation. + +This decision maker is a simple slicer function that makes a decision on the symbol based on its placement versus both axes and returns which quadrant the symbol is in. + +Params: (sample)" + +%feature("docstring") gr_mpsk_receiver_cc::__attribute__ "delay line plus some length for overflow protection + +Params: ()" + +%feature("docstring") gr_make_mpsk_receiver_cc "Creates a mpsk_receiver_cc block. + +This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. + +This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. It works with (D)BPSK, (D)QPSK, and (D)8PSK as tested currently. It should also work for OQPSK and PI/4 DQPSK. + +The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. There are optimized phase error detectors for BPSK and QPSK, but 8PSK is done using a brute-force computation of the constellation points to find the minimum. + +The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: + +G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + +This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise. + +Params: (M, theta, alpha, beta, fmin, fmax, mu, gain_mu, omega, gain_omega, omega_rel)" + +%feature("docstring") gr_multiply_cc "output = prod (input_0, input_1, ...) + +Multiply across all input streams." + +%feature("docstring") gr_multiply_cc::gr_multiply_cc " + +Params: (vlen)" + +%feature("docstring") gr_multiply_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_cc "Creates a multiply_cc block. + +output = prod (input_0, input_1, ...) + +Multiply across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_multiply_const_cc "output = input * constant" + +%feature("docstring") gr_multiply_const_cc::gr_multiply_const_cc " + +Params: (k)" + +%feature("docstring") gr_multiply_const_cc::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_cc::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_cc "Creates a multiply_const_cc block. + +output = input * constant + +Params: (k)" + +%feature("docstring") gr_multiply_const_ff "output = input * constant" + +%feature("docstring") gr_multiply_const_ff::gr_multiply_const_ff " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ff::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_ff::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_ff "Creates a multiply_const_ff block. + +output = input * constant + +Params: (k)" + +%feature("docstring") gr_multiply_const_ii "output = input * constant" + +%feature("docstring") gr_multiply_const_ii::gr_multiply_const_ii " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ii::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_ii::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_ii "Creates a multiply_const_ii block. + +output = input * constant + +Params: (k)" + +%feature("docstring") gr_multiply_const_ss "output = input * constant" + +%feature("docstring") gr_multiply_const_ss::gr_multiply_const_ss " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ss::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_ss::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_ss "Creates a multiply_const_ss block. + +output = input * constant + +Params: (k)" + +%feature("docstring") gr_multiply_const_vcc "output vector = input vector * constant vector (element-wise)" + +%feature("docstring") gr_multiply_const_vcc::gr_multiply_const_vcc " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vcc::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_vcc::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_vcc "Creates a multiply_const_vcc block. + +output vector = input vector * constant vector (element-wise) + +Params: (k)" + +%feature("docstring") gr_multiply_const_vff "output vector = input vector * constant vector (element-wise)" + +%feature("docstring") gr_multiply_const_vff::gr_multiply_const_vff " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vff::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_vff::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_vff "Creates a multiply_const_vff block. + +output vector = input vector * constant vector (element-wise) + +Params: (k)" + +%feature("docstring") gr_multiply_const_vii "output vector = input vector * constant vector (element-wise)" + +%feature("docstring") gr_multiply_const_vii::gr_multiply_const_vii " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vii::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_vii::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_vii "Creates a multiply_const_vii block. + +output vector = input vector * constant vector (element-wise) + +Params: (k)" + +%feature("docstring") gr_multiply_const_vss "output vector = input vector * constant vector (element-wise)" + +%feature("docstring") gr_multiply_const_vss::gr_multiply_const_vss " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vss::k " + +Params: (NONE)" + +%feature("docstring") gr_multiply_const_vss::set_k " + +Params: (k)" + +%feature("docstring") gr_multiply_const_vss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_const_vss "Creates a multiply_const_vss block. + +output vector = input vector * constant vector (element-wise) + +Params: (k)" + +%feature("docstring") gr_multiply_ff "output = prod (input_0, input_1, ...) + +Multiply across all input streams." + +%feature("docstring") gr_multiply_ff::gr_multiply_ff " + +Params: (vlen)" + +%feature("docstring") gr_multiply_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_ff "Creates a multiply_ff block. + +output = prod (input_0, input_1, ...) + +Multiply across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_multiply_ii "output = prod (input_0, input_1, ...) + +Multiply across all input streams." + +%feature("docstring") gr_multiply_ii::gr_multiply_ii " + +Params: (vlen)" + +%feature("docstring") gr_multiply_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_ii "Creates a multiply_ii block. + +output = prod (input_0, input_1, ...) + +Multiply across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_multiply_ss "output = prod (input_0, input_1, ...) + +Multiply across all input streams." + +%feature("docstring") gr_multiply_ss::gr_multiply_ss " + +Params: (vlen)" + +%feature("docstring") gr_multiply_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_multiply_ss "Creates a multiply_ss block. + +output = prod (input_0, input_1, ...) + +Multiply across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_mute_cc "output = input or zero if muted." + +%feature("docstring") gr_mute_cc::gr_mute_cc " + +Params: (mute)" + +%feature("docstring") gr_mute_cc::mute " + +Params: (NONE)" + +%feature("docstring") gr_mute_cc::set_mute " + +Params: (mute)" + +%feature("docstring") gr_mute_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_mute_cc "Creates a mute_cc block. + +output = input or zero if muted. + +Params: (mute)" + +%feature("docstring") gr_mute_ff "output = input or zero if muted." + +%feature("docstring") gr_mute_ff::gr_mute_ff " + +Params: (mute)" + +%feature("docstring") gr_mute_ff::mute " + +Params: (NONE)" + +%feature("docstring") gr_mute_ff::set_mute " + +Params: (mute)" + +%feature("docstring") gr_mute_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_mute_ff "Creates a mute_ff block. + +output = input or zero if muted. + +Params: (mute)" + +%feature("docstring") gr_mute_ii "output = input or zero if muted." + +%feature("docstring") gr_mute_ii::gr_mute_ii " + +Params: (mute)" + +%feature("docstring") gr_mute_ii::mute " + +Params: (NONE)" + +%feature("docstring") gr_mute_ii::set_mute " + +Params: (mute)" + +%feature("docstring") gr_mute_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_mute_ii "Creates a mute_ii block. + +output = input or zero if muted. + +Params: (mute)" + +%feature("docstring") gr_mute_ss "output = input or zero if muted." + +%feature("docstring") gr_mute_ss::gr_mute_ss " + +Params: (mute)" + +%feature("docstring") gr_mute_ss::mute " + +Params: (NONE)" + +%feature("docstring") gr_mute_ss::set_mute " + +Params: (mute)" + +%feature("docstring") gr_mute_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_mute_ss "Creates a mute_ss block. + +output = input or zero if muted. + +Params: (mute)" + +%feature("docstring") gr_nlog10_ff "output = n*log10(input) + k" + +%feature("docstring") gr_nlog10_ff::gr_nlog10_ff " + +Params: (n, vlen, k)" + +%feature("docstring") gr_nlog10_ff::~gr_nlog10_ff " + +Params: (NONE)" + +%feature("docstring") gr_nlog10_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_nlog10_ff "Creates a nlog10_ff block. + +output = n*log10(input) + k + +Params: (n, vlen, k)" + +%feature("docstring") gr_noise_source_c "random number source" + +%feature("docstring") gr_noise_source_c::gr_noise_source_c " + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_c::set_type " + +Params: (type)" + +%feature("docstring") gr_noise_source_c::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_noise_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_noise_source_c "Creates a noise_source_c block. + +random number source + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_f "random number source" + +%feature("docstring") gr_noise_source_f::gr_noise_source_f " + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_f::set_type " + +Params: (type)" + +%feature("docstring") gr_noise_source_f::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_noise_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_noise_source_f "Creates a noise_source_f block. + +random number source + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_i "random number source" + +%feature("docstring") gr_noise_source_i::gr_noise_source_i " + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_i::set_type " + +Params: (type)" + +%feature("docstring") gr_noise_source_i::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_noise_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_noise_source_i "Creates a noise_source_i block. + +random number source + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_s "random number source" + +%feature("docstring") gr_noise_source_s::gr_noise_source_s " + +Params: (type, ampl, seed)" + +%feature("docstring") gr_noise_source_s::set_type " + +Params: (type)" + +%feature("docstring") gr_noise_source_s::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_noise_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_noise_source_s "Creates a noise_source_s block. + +random number source + +Params: (type, ampl, seed)" + +%feature("docstring") gr_nop "Does nothing. Used for testing only." + +%feature("docstring") gr_nop::gr_nop " + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_nop::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_nop "Creates a nop block. + +Does nothing. Used for testing only. + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_not_bb "output = ~input_0 + +bitwise boolean not across input stream." + +%feature("docstring") gr_not_bb::gr_not_bb " + +Params: (NONE)" + +%feature("docstring") gr_not_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_not_bb "Creates a not_bb block. + +output = ~input_0 + +bitwise boolean not across input stream. + +Params: (NONE)" + +%feature("docstring") gr_not_ii "output = ~input_0 + +bitwise boolean not across input stream." + +%feature("docstring") gr_not_ii::gr_not_ii " + +Params: (NONE)" + +%feature("docstring") gr_not_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_not_ii "Creates a not_ii block. + +output = ~input_0 + +bitwise boolean not across input stream. + +Params: (NONE)" + +%feature("docstring") gr_not_ss "output = ~input_0 + +bitwise boolean not across input stream." + +%feature("docstring") gr_not_ss::gr_not_ss " + +Params: (NONE)" + +%feature("docstring") gr_not_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_not_ss "Creates a not_ss block. + +output = ~input_0 + +bitwise boolean not across input stream. + +Params: (NONE)" + +%feature("docstring") gr_null_sink "Bit bucket." + +%feature("docstring") gr_null_sink::gr_null_sink " + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_null_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_null_sink "Creates a null_sink block. + +Bit bucket. + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_null_source "A source of zeros." + +%feature("docstring") gr_null_source::gr_null_source " + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_null_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_null_source "Creates a null_source block. + +A source of zeros. + +Params: (sizeof_stream_item)" + +%feature("docstring") gr_ofdm_bpsk_demapper "take a vector of complex constellation points in from an FFT and demodulate to a stream of bits. Simple BPSK version." + +%feature("docstring") gr_ofdm_bpsk_demapper::gr_ofdm_bpsk_demapper " + +Params: (occupied_carriers)" + +%feature("docstring") gr_ofdm_bpsk_demapper::slicer " + +Params: (x)" + +%feature("docstring") gr_ofdm_bpsk_demapper::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_ofdm_bpsk_demapper::~gr_ofdm_bpsk_demapper " + +Params: ()" + +%feature("docstring") gr_ofdm_bpsk_demapper::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_bpsk_demapper "Creates a ofdm_bpsk_demapper block. + +take a vector of complex constellation points in from an FFT and demodulate to a stream of bits. Simple BPSK version. + +Params: (occupied_carriers)" + +%feature("docstring") gr_ofdm_cyclic_prefixer "adds a cyclic prefix vector to an input size long ofdm symbol(vector) and converts vector to a stream output_size long." + +%feature("docstring") gr_ofdm_cyclic_prefixer::gr_ofdm_cyclic_prefixer " + +Params: (input_size, output_size)" + +%feature("docstring") gr_ofdm_cyclic_prefixer::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_cyclic_prefixer "Creates a ofdm_cyclic_prefixer block. + +adds a cyclic prefix vector to an input size long ofdm symbol(vector) and converts vector to a stream output_size long. + +Params: (input_size, output_size)" + +%feature("docstring") gr_ofdm_demapper_vcb "take a stream of vectors in from an FFT and demodulate to a stream of bits. Abstract class must be subclassed with specific mapping." + +%feature("docstring") gr_ofdm_demapper_vcb::gr_ofdm_demapper_vcb " + +Params: (bits_per_symbol, vlen)" + +%feature("docstring") gr_ofdm_demapper_vcb::~gr_ofdm_demapper_vcb " + +Params: ()" + +%feature("docstring") gr_make_ofdm_demapper_vcb "Creates a ofdm_demapper_vcb block. + +take a stream of vectors in from an FFT and demodulate to a stream of bits. Abstract class must be subclassed with specific mapping. + +Params: (bits_per_symbol, vlen)" + +%feature("docstring") gr_ofdm_frame_acquisition "take a vector of complex constellation points in from an FFT and performs a correlation and equalization. + +This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin. + +It then uses one of those known symbols to estimate the channel response over all subcarriers and does a simple 1-tap equalization on all subcarriers. This corrects for the phase and amplitude distortion caused by the channel." + +%feature("docstring") gr_ofdm_frame_acquisition::gr_ofdm_frame_acquisition " + +Params: (occupied_carriers, fft_length, cplen, known_symbol, max_fft_shift_len)" + +%feature("docstring") gr_ofdm_frame_acquisition::slicer " + +Params: (x)" + +%feature("docstring") gr_ofdm_frame_acquisition::correlate " + +Params: (symbol, zeros_on_left)" + +%feature("docstring") gr_ofdm_frame_acquisition::calculate_equalizer " + +Params: (symbol, zeros_on_left)" + +%feature("docstring") gr_ofdm_frame_acquisition::coarse_freq_comp " + +Params: (freq_delta, count)" + +%feature("docstring") gr_ofdm_frame_acquisition::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_ofdm_frame_acquisition::snr "Return an estimate of the SNR of the channel. + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_acquisition::~gr_ofdm_frame_acquisition " + +Params: ()" + +%feature("docstring") gr_ofdm_frame_acquisition::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_frame_acquisition "Creates a ofdm_frame_acquisition block. + +take a vector of complex constellation points in from an FFT and performs a correlation and equalization. + +This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin. + +It then uses one of those known symbols to estimate the channel response over all subcarriers and does a simple 1-tap equalization on all subcarriers. This corrects for the phase and amplitude distortion caused by the channel. + +Params: (occupied_carriers, fft_length, cplen, known_symbol, max_fft_shift_len)" + +%feature("docstring") gr_ofdm_frame_sink "Takes an OFDM symbol in, demaps it into bits of 0's and 1's, packs them into packets, and sends to to a message queue sink. + +NOTE: The mod input parameter simply chooses a pre-defined demapper/slicer. Eventually, we want to be able to pass in a reference to an object to do the demapping and slicing for a given modulation type." + +%feature("docstring") gr_ofdm_frame_sink::gr_ofdm_frame_sink " + +Params: (sym_position, sym_value_out, target_queue, occupied_tones, phase_gain, freq_gain)" + +%feature("docstring") gr_ofdm_frame_sink::enter_search " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_sink::enter_have_sync " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_sink::enter_have_header " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_sink::header_ok " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_sink::slicer " + +Params: (x)" + +%feature("docstring") gr_ofdm_frame_sink::demapper " + +Params: (in, out)" + +%feature("docstring") gr_ofdm_frame_sink::set_sym_value_out " + +Params: (sym_position, sym_value_out)" + +%feature("docstring") gr_ofdm_frame_sink::~gr_ofdm_frame_sink " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_frame_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_frame_sink "Creates a ofdm_frame_sink block. + +Takes an OFDM symbol in, demaps it into bits of 0's and 1's, packs them into packets, and sends to to a message queue sink. + +NOTE: The mod input parameter simply chooses a pre-defined demapper/slicer. Eventually, we want to be able to pass in a reference to an object to do the demapping and slicing for a given modulation type. + +Params: (sym_position, sym_value_out, target_queue, occupied_tones, phase_gain, freq_gain)" + +%feature("docstring") gr_ofdm_insert_preamble "insert \"pre-modulated\" preamble symbols before each payload." + +%feature("docstring") gr_ofdm_insert_preamble::gr_ofdm_insert_preamble " + +Params: (fft_length, preamble)" + +%feature("docstring") gr_ofdm_insert_preamble::enter_idle " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_insert_preamble::enter_preamble " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_insert_preamble::enter_first_payload " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_insert_preamble::enter_payload " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_insert_preamble::~gr_ofdm_insert_preamble " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_insert_preamble::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_insert_preamble "Creates a ofdm_insert_preamble block. + +insert \"pre-modulated\" preamble symbols before each payload. + +Params: (fft_length, preamble)" + +%feature("docstring") gr_ofdm_mapper_bcv "take a stream of bytes in and map to a vector of complex constellation points suitable for IFFT input to be used in an ofdm modulator. Abstract class must be subclassed with specific mapping." + +%feature("docstring") gr_ofdm_mapper_bcv::gr_ofdm_mapper_bcv " + +Params: (constellation, msgq_limit, occupied_carriers, fft_length)" + +%feature("docstring") gr_ofdm_mapper_bcv::randsym " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_mapper_bcv::~gr_ofdm_mapper_bcv " + +Params: ()" + +%feature("docstring") gr_ofdm_mapper_bcv::msgq " + +Params: (NONE)" + +%feature("docstring") gr_ofdm_mapper_bcv::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_mapper_bcv "Creates a ofdm_mapper_bcv block. + +take a stream of bytes in and map to a vector of complex constellation points suitable for IFFT input to be used in an ofdm modulator. Abstract class must be subclassed with specific mapping. + +Params: (constellation, msgq_limit, occupied_carriers, fft_length)" + +%feature("docstring") gr_ofdm_sampler "does the rest of the OFDM stuff" + +%feature("docstring") gr_ofdm_sampler::gr_ofdm_sampler " + +Params: (fft_length, symbol_length, timeout)" + +%feature("docstring") gr_ofdm_sampler::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_ofdm_sampler::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_ofdm_sampler "Creates a ofdm_sampler block. + +does the rest of the OFDM stuff + +Params: (fft_length, symbol_length, timeout)" + +%feature("docstring") gr_or_bb "output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams." + +%feature("docstring") gr_or_bb::gr_or_bb " + +Params: (NONE)" + +%feature("docstring") gr_or_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_or_bb "Creates a or_bb block. + +output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_or_ii "output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams." + +%feature("docstring") gr_or_ii::gr_or_ii " + +Params: (NONE)" + +%feature("docstring") gr_or_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_or_ii "Creates a or_ii block. + +output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_or_ss "output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams." + +%feature("docstring") gr_or_ss::gr_or_ss " + +Params: (NONE)" + +%feature("docstring") gr_or_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_or_ss "Creates a or_ss block. + +output = input_0 | input_1 | , ... | input_N) + +bitwise boolean or across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_f "Building block for python oscilloscope module. + +Accepts multiple float streams." + +%feature("docstring") gr_oscope_sink_f::gr_oscope_sink_f " + +Params: (sampling_rate, msgq)" + +%feature("docstring") gr_oscope_sink_f::~gr_oscope_sink_f " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_oscope_sink_f::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_oscope_sink_f "Creates a oscope_sink_f block. + +Building block for python oscilloscope module. + +Accepts multiple float streams. + +Params: (sampling_rate, msgq)" + +%feature("docstring") gr_pa_2x2_phase_combiner "pa_2x2 phase combiner + +Anntenas are arranged like this: + +2 3 0 1 + +dx and dy are lambda/2." + +%feature("docstring") gr_pa_2x2_phase_combiner::gr_pa_2x2_phase_combiner " + +Params: (NONE)" + +%feature("docstring") gr_pa_2x2_phase_combiner::theta " + +Params: (NONE)" + +%feature("docstring") gr_pa_2x2_phase_combiner::set_theta " + +Params: (theta)" + +%feature("docstring") gr_pa_2x2_phase_combiner::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_pa_2x2_phase_combiner "Creates a pa_2x2_phase_combiner block. + +pa_2x2 phase combiner + +Anntenas are arranged like this: + +2 3 0 1 + +dx and dy are lambda/2. + +Params: (NONE)" + +%feature("docstring") gr_packed_to_unpacked_bb "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of unsigned char; output: stream of unsigned char. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_packed_to_unpacked_bb::gr_packed_to_unpacked_bb " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packed_to_unpacked_bb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_packed_to_unpacked_bb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_packed_to_unpacked_bb::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_packed_to_unpacked_bb "Creates a packed_to_unpacked_bb block. + +Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of unsigned char; output: stream of unsigned char. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packed_to_unpacked_ii "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of int; output: stream of int. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_packed_to_unpacked_ii::gr_packed_to_unpacked_ii " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packed_to_unpacked_ii::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_packed_to_unpacked_ii::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_packed_to_unpacked_ii::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_packed_to_unpacked_ii "Creates a packed_to_unpacked_ii block. + +Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of int; output: stream of int. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packed_to_unpacked_ss "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of short; output: stream of short. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_packed_to_unpacked_ss::gr_packed_to_unpacked_ss " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packed_to_unpacked_ss::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_packed_to_unpacked_ss::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_packed_to_unpacked_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_packed_to_unpacked_ss "Creates a packed_to_unpacked_ss block. + +Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. + +input: stream of short; output: stream of short. + +This is the inverse of gr_unpacked_to_packed_XX. + +The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_packet_sink "process received bits looking for packet sync, header, and process bits into packet" + +%feature("docstring") gr_packet_sink::gr_packet_sink " + +Params: (sync_vector, target_queue, threshold)" + +%feature("docstring") gr_packet_sink::enter_search " + +Params: (NONE)" + +%feature("docstring") gr_packet_sink::enter_have_sync " + +Params: (NONE)" + +%feature("docstring") gr_packet_sink::enter_have_header " + +Params: (payload_len)" + +%feature("docstring") gr_packet_sink::slice " + +Params: (x)" + +%feature("docstring") gr_packet_sink::header_ok " + +Params: (NONE)" + +%feature("docstring") gr_packet_sink::header_payload_len " + +Params: (NONE)" + +%feature("docstring") gr_packet_sink::~gr_packet_sink " + +Params: (NONE)" + +%feature("docstring") gr_packet_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_packet_sink::carrier_sensed "return true if we detect carrier + +Params: (NONE)" + +%feature("docstring") gr_make_packet_sink "Creates a packet_sink block. + +process received bits looking for packet sync, header, and process bits into packet + +Params: (sync_vector, target_queue, threshold)" + +%feature("docstring") gr_peak_detector2_fb "Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. A separate debug output may be connected, to view the internal EWMA described below." + +%feature("docstring") gr_peak_detector2_fb::gr_peak_detector2_fb " + +Params: (threshold_factor_rise, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector2_fb::set_threshold_factor_rise "Set the threshold factor value for the rise time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector2_fb::set_look_ahead "Set the look-ahead factor. + +Params: (look)" + +%feature("docstring") gr_peak_detector2_fb::set_alpha "Set the running average alpha. + +Params: (alpha)" + +%feature("docstring") gr_peak_detector2_fb::threshold_factor_rise "Get the threshold factor value for the rise time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector2_fb::look_ahead "Get the look-ahead factor value. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector2_fb::alpha "Get the alpha value of the running average. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector2_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_peak_detector2_fb "Creates a peak_detector2_fb block. + +Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. A separate debug output may be connected, to view the internal EWMA described below. + +Params: (threshold_factor_rise, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_fb "Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's." + +%feature("docstring") gr_peak_detector_fb::gr_peak_detector_fb " + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_fb::set_threshold_factor_rise "Set the threshold factor value for the rise time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_fb::set_threshold_factor_fall "Set the threshold factor value for the fall time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_fb::set_look_ahead "Set the look-ahead factor. + +Params: (look)" + +%feature("docstring") gr_peak_detector_fb::set_alpha "Set the running average alpha. + +Params: (alpha)" + +%feature("docstring") gr_peak_detector_fb::threshold_factor_rise "Get the threshold factor value for the rise time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_fb::threshold_factor_fall "Get the threshold factor value for the fall time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_fb::look_ahead "Get the look-ahead factor value. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_fb::alpha "Get the alpha value of the running average. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_peak_detector_fb "Creates a peak_detector_fb block. + +Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_ib "Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's." + +%feature("docstring") gr_peak_detector_ib::gr_peak_detector_ib " + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_ib::set_threshold_factor_rise "Set the threshold factor value for the rise time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_ib::set_threshold_factor_fall "Set the threshold factor value for the fall time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_ib::set_look_ahead "Set the look-ahead factor. + +Params: (look)" + +%feature("docstring") gr_peak_detector_ib::set_alpha "Set the running average alpha. + +Params: (alpha)" + +%feature("docstring") gr_peak_detector_ib::threshold_factor_rise "Get the threshold factor value for the rise time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_ib::threshold_factor_fall "Get the threshold factor value for the fall time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_ib::look_ahead "Get the look-ahead factor value. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_ib::alpha "Get the alpha value of the running average. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_ib::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_peak_detector_ib "Creates a peak_detector_ib block. + +Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_sb "Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's." + +%feature("docstring") gr_peak_detector_sb::gr_peak_detector_sb " + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_peak_detector_sb::set_threshold_factor_rise "Set the threshold factor value for the rise time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_sb::set_threshold_factor_fall "Set the threshold factor value for the fall time. + +Params: (thr)" + +%feature("docstring") gr_peak_detector_sb::set_look_ahead "Set the look-ahead factor. + +Params: (look)" + +%feature("docstring") gr_peak_detector_sb::set_alpha "Set the running average alpha. + +Params: (alpha)" + +%feature("docstring") gr_peak_detector_sb::threshold_factor_rise "Get the threshold factor value for the rise time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_sb::threshold_factor_fall "Get the threshold factor value for the fall time. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_sb::look_ahead "Get the look-ahead factor value. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_sb::alpha "Get the alpha value of the running average. + +Params: (NONE)" + +%feature("docstring") gr_peak_detector_sb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_peak_detector_sb "Creates a peak_detector_sb block. + +Detect the peak of a signal + +If a peak is detected, this block outputs a 1, or it outputs 0's. + +Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" + +%feature("docstring") gr_pfb_arb_resampler_ccf "Polyphase filterbank arbitrary resampler with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs arbitrary resampling. The resampling rate can be any real number . The resampling is done by constructing filters where is the interpolation rate. We then calculate where . + +Using and , we can perform rational resampling where is a rational number close to the input rate where we have filters and we cycle through them as a polyphase filterbank with a stride of so that . + +To get the arbitrary rate, we want to interpolate between two points. For each value out, we take an output from the current filter, , and the next filter and then linearly interpolate between the two based on the real resampling rate we want. + +The linear interpolation only provides us with an approximation to the real sampling rate specified. The error is a quantization error between the two filters we used as our interpolation points. To this end, the number of filters, , used determines the quantization error; the larger , the smaller the noise. You can design for a specified noise floor by setting the filter size (parameters ). The size defaults to 32 filters, which is about as good as most implementations need. + +The trick with designing this filter is in how to specify the taps of the prototype filter. Like the PFB interpolator, the taps are specified using the interpolated filter rate. In this case, that rate is the input sample rate multiplied by the number of filters in the filterbank, which is also the interpolation rate. All other values should be relative to this rate. + +For example, for a 32-filter arbitrary resampler and using the GNU Radio's firdes utility to build the filter, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as the interpolation rate (). + + + +The theory behind this block can be found in Chapter 7.5 of the following book." + +%feature("docstring") gr_pfb_arb_resampler_ccf::gr_pfb_arb_resampler_ccf "Build the polyphase filterbank arbitray resampler. + +Params: (rate, taps, filter_size)" + +%feature("docstring") gr_pfb_arb_resampler_ccf::create_diff_taps " + +Params: (newtaps, difftaps)" + +%feature("docstring") gr_pfb_arb_resampler_ccf::create_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (newtaps, ourtaps, ourfilter)" + +%feature("docstring") gr_pfb_arb_resampler_ccf::~gr_pfb_arb_resampler_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_arb_resampler_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_arb_resampler_ccf::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_arb_resampler_ccf "Creates a pfb_arb_resampler_ccf block. + +Polyphase filterbank arbitrary resampler with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs arbitrary resampling. The resampling rate can be any real number . The resampling is done by constructing filters where is the interpolation rate. We then calculate where . + +Using and , we can perform rational resampling where is a rational number close to the input rate where we have filters and we cycle through them as a polyphase filterbank with a stride of so that . + +To get the arbitrary rate, we want to interpolate between two points. For each value out, we take an output from the current filter, , and the next filter and then linearly interpolate between the two based on the real resampling rate we want. + +The linear interpolation only provides us with an approximation to the real sampling rate specified. The error is a quantization error between the two filters we used as our interpolation points. To this end, the number of filters, , used determines the quantization error; the larger , the smaller the noise. You can design for a specified noise floor by setting the filter size (parameters ). The size defaults to 32 filters, which is about as good as most implementations need. + +The trick with designing this filter is in how to specify the taps of the prototype filter. Like the PFB interpolator, the taps are specified using the interpolated filter rate. In this case, that rate is the input sample rate multiplied by the number of filters in the filterbank, which is also the interpolation rate. All other values should be relative to this rate. + +For example, for a 32-filter arbitrary resampler and using the GNU Radio's firdes utility to build the filter, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as the interpolation rate (). + + + +The theory behind this block can be found in Chapter 7.5 of the following book. + +Params: (rate, taps, filter_size)" + +%feature("docstring") gr_pfb_channelizer_ccf "Polyphase filterbank channelizer with gr_complex input, gr_complex output and float taps. + +This block takes in complex inputs and channelizes it to channels of equal bandwidth. Each of the resulting channels is decimated to the new rate that is the input sampling rate divided by the number of channels, . + +The PFB channelizer code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +Each filter operates using the gr_fir filter classs of GNU Radio, which takes the input stream at and performs the inner product calculation to where is the number of filter taps. To efficiently handle this in the GNU Radio structure, each filter input must come from its own input stream. So the channelizer must be provided with streams where the input stream has been deinterleaved. This is most easily done using the gr_stream_to_streams block. + +The output is then produced as a vector, where index in the vector is the next sample from the th channel. This is most easily handled by sending the output to a gr_vector_to_streams block to handle the conversion and passing streams out. + +The input and output formatting is done using a hier_block2 called pfb_channelizer_ccf. This can take in a single stream and outputs streams based on the behavior described above. + +The filter's taps should be based on the input sampling rate. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. + + + +The filter output can also be overs ampled. The over sampling rate is the ratio of the the actual output sampling rate to the normal output sampling rate. It must be rationally related to the number of channels as N/i for i in [1,N], which gives an outputsample rate of [fs/N, fs] where fs is the input sample rate and N is the number of channels. + +For example, for 6 channels with fs = 6000 Hz, the normal rate is 6000/6 = 1000 Hz. Allowable oversampling rates are 6/6, 6/5, 6/4, 6/3, 6/2, and 6/1 where the output sample rate of a 6/1 oversample ratio is 6000 Hz, or 6 times the normal 1000 Hz. A rate of 6/5 = 1.2, so the output rate would be 1200 Hz. + +The theory behind this block can be found in Chapter 6 of the following book." + +%feature("docstring") gr_pfb_channelizer_ccf::gr_pfb_channelizer_ccf "Build the polyphase filterbank decimator. + +Params: (numchans, taps, oversample_rate)" + +%feature("docstring") gr_pfb_channelizer_ccf::~gr_pfb_channelizer_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_channelizer_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps)" + +%feature("docstring") gr_pfb_channelizer_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_channelizer_ccf::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_channelizer_ccf "Creates a pfb_channelizer_ccf block. + +Polyphase filterbank channelizer with gr_complex input, gr_complex output and float taps. + +This block takes in complex inputs and channelizes it to channels of equal bandwidth. Each of the resulting channels is decimated to the new rate that is the input sampling rate divided by the number of channels, . + +The PFB channelizer code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +Each filter operates using the gr_fir filter classs of GNU Radio, which takes the input stream at and performs the inner product calculation to where is the number of filter taps. To efficiently handle this in the GNU Radio structure, each filter input must come from its own input stream. So the channelizer must be provided with streams where the input stream has been deinterleaved. This is most easily done using the gr_stream_to_streams block. + +The output is then produced as a vector, where index in the vector is the next sample from the th channel. This is most easily handled by sending the output to a gr_vector_to_streams block to handle the conversion and passing streams out. + +The input and output formatting is done using a hier_block2 called pfb_channelizer_ccf. This can take in a single stream and outputs streams based on the behavior described above. + +The filter's taps should be based on the input sampling rate. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. + + + +The filter output can also be overs ampled. The over sampling rate is the ratio of the the actual output sampling rate to the normal output sampling rate. It must be rationally related to the number of channels as N/i for i in [1,N], which gives an outputsample rate of [fs/N, fs] where fs is the input sample rate and N is the number of channels. + +For example, for 6 channels with fs = 6000 Hz, the normal rate is 6000/6 = 1000 Hz. Allowable oversampling rates are 6/6, 6/5, 6/4, 6/3, 6/2, and 6/1 where the output sample rate of a 6/1 oversample ratio is 6000 Hz, or 6 times the normal 1000 Hz. A rate of 6/5 = 1.2, so the output rate would be 1200 Hz. + +The theory behind this block can be found in Chapter 6 of the following book. + +Params: (numchans, taps, oversample_rate)" + +%feature("docstring") gr_pfb_clock_sync_ccf "Timing synchronizer using polyphase filterbanks. + +This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. + +This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. + +If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. + +The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. + +The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. + +The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. + +The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. + +The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal." + +%feature("docstring") gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf "Build the polyphase filterbank timing synchronizer. + +Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" + +%feature("docstring") gr_pfb_clock_sync_ccf::create_diff_taps " + +Params: (newtaps, difftaps)" + +%feature("docstring") gr_pfb_clock_sync_ccf::~gr_pfb_clock_sync_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps, ourtaps, ourfilter)" + +%feature("docstring") gr_pfb_clock_sync_ccf::channel_taps "Returns the taps of the matched filter + +Params: (channel)" + +%feature("docstring") gr_pfb_clock_sync_ccf::diff_channel_taps "Returns the taps in the derivative filter + +Params: (channel)" + +%feature("docstring") gr_pfb_clock_sync_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_ccf::print_diff_taps "Print all of the filterbank taps of the derivative filter to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_ccf::set_alpha "Set the gain value alpha for the control loop + +Params: (alpha)" + +%feature("docstring") gr_pfb_clock_sync_ccf::set_beta "Set the gain value beta for the control loop + +Params: (beta)" + +%feature("docstring") gr_pfb_clock_sync_ccf::set_max_rate_deviation "Set the maximum deviation from 0 d_rate can have + +Params: (m)" + +%feature("docstring") gr_pfb_clock_sync_ccf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_pfb_clock_sync_ccf::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_clock_sync_ccf "Creates a pfb_clock_sync_ccf block. + +Timing synchronizer using polyphase filterbanks. + +This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. + +This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. + +If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. + +The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. + +The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. + +The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. + +The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. + +The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal. + +Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" + +%feature("docstring") gr_pfb_clock_sync_fff "Timing synchronizer using polyphase filterbanks. + +This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. + +This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. + +If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. + +The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. + +The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. + +The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. + +The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. + +The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal." + +%feature("docstring") gr_pfb_clock_sync_fff::gr_pfb_clock_sync_fff "Build the polyphase filterbank timing synchronizer. + +Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" + +%feature("docstring") gr_pfb_clock_sync_fff::create_diff_taps " + +Params: (newtaps, difftaps)" + +%feature("docstring") gr_pfb_clock_sync_fff::~gr_pfb_clock_sync_fff " + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_fff::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps, ourtaps, ourfilter)" + +%feature("docstring") gr_pfb_clock_sync_fff::channel_taps "Returns the taps of the matched filter + +Params: (channel)" + +%feature("docstring") gr_pfb_clock_sync_fff::diff_channel_taps "Returns the taps in the derivative filter + +Params: (channel)" + +%feature("docstring") gr_pfb_clock_sync_fff::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_fff::print_diff_taps "Print all of the filterbank taps of the derivative filter to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_clock_sync_fff::set_alpha "Set the gain value alpha for the control loop + +Params: (alpha)" + +%feature("docstring") gr_pfb_clock_sync_fff::set_beta "Set the gain value beta for the control loop + +Params: (beta)" + +%feature("docstring") gr_pfb_clock_sync_fff::set_max_rate_deviation "Set the maximum deviation from 0 d_rate can have + +Params: (m)" + +%feature("docstring") gr_pfb_clock_sync_fff::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_pfb_clock_sync_fff::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_clock_sync_fff "Creates a pfb_clock_sync_fff block. + +Timing synchronizer using polyphase filterbanks. + +This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. + +This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. + +If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. + +The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. + +The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. + +The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. + +The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. + +The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal. + +Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" + +%feature("docstring") gr_pfb_decimator_ccf "Polyphase filterbank bandpass decimator with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs interger down- sampling (decimation) with a polyphase filterbank. The first input is the integer specifying how much to decimate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The third input specifies the channel to extract. By default, the zeroth channel is used, which is the baseband channel (first Nyquist zone). + +The parameter specifies which channel to use since this class is capable of bandpass decimation. Given a complex input stream at a sampling rate of and a decimation rate of , the input frequency domain is split into channels that represent the Nyquist zones. Using the polyphase filterbank, we can select any one of these channels to decimate. + +The output signal will be the basebanded and decimated signal from that channel. This concept is very similar to the PFB channelizer (see gr_pfb_channelizer_ccf) where only a single channel is extracted at a time. + +The filter's taps should be based on the sampling rate before decimation. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. + + + +The PFB decimator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +The theory behind this block can be found in Chapter 6 of the following book." + +%feature("docstring") gr_pfb_decimator_ccf::gr_pfb_decimator_ccf "Build the polyphase filterbank decimator. + +Params: (decim, taps, channel)" + +%feature("docstring") gr_pfb_decimator_ccf::~gr_pfb_decimator_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_decimator_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps)" + +%feature("docstring") gr_pfb_decimator_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_decimator_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_decimator_ccf "Creates a pfb_decimator_ccf block. + +Polyphase filterbank bandpass decimator with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs interger down- sampling (decimation) with a polyphase filterbank. The first input is the integer specifying how much to decimate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The third input specifies the channel to extract. By default, the zeroth channel is used, which is the baseband channel (first Nyquist zone). + +The parameter specifies which channel to use since this class is capable of bandpass decimation. Given a complex input stream at a sampling rate of and a decimation rate of , the input frequency domain is split into channels that represent the Nyquist zones. Using the polyphase filterbank, we can select any one of these channels to decimate. + +The output signal will be the basebanded and decimated signal from that channel. This concept is very similar to the PFB channelizer (see gr_pfb_channelizer_ccf) where only a single channel is extracted at a time. + +The filter's taps should be based on the sampling rate before decimation. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. + + + +The PFB decimator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +The theory behind this block can be found in Chapter 6 of the following book. + +Params: (decim, taps, channel)" + +%feature("docstring") gr_pfb_interpolator_ccf "Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs interger up- sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. + +The filter's taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power). + + + +The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +The theory behind this block can be found in Chapter 7.1 of the following book." + +%feature("docstring") gr_pfb_interpolator_ccf::gr_pfb_interpolator_ccf "Construct a Polyphase filterbank interpolator + +Params: (interp, taps)" + +%feature("docstring") gr_pfb_interpolator_ccf::~gr_pfb_interpolator_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_interpolator_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps)" + +%feature("docstring") gr_pfb_interpolator_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_interpolator_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_interpolator_ccf "Creates a pfb_interpolator_ccf block. + +Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps. + +This block takes in a signal stream and performs interger up- sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. + +The filter's taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation. + +For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power). + + + +The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. + +The theory behind this block can be found in Chapter 7.1 of the following book. + +Params: (interp, taps)" + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf "Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps." + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf::gr_pfb_synthesis_filterbank_ccf "Build the polyphase synthesis filterbank. + +Params: (numchans, taps)" + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf::~gr_pfb_synthesis_filterbank_ccf " + +Params: (NONE)" + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter + +Params: (taps)" + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf::print_taps "Print all of the filterbank taps to screen. + +Params: (NONE)" + +%feature("docstring") gr_pfb_synthesis_filterbank_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_pfb_synthesis_filterbank_ccf "Creates a pfb_synthesis_filterbank_ccf block. + +Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps. + +Params: (numchans, taps)" + +%feature("docstring") gr_phase_modulator_fc "Phase modulator block + +output=complex(cos(in*sensitivity),sin(in*sensitivity))." + +%feature("docstring") gr_phase_modulator_fc::gr_phase_modulator_fc " + +Params: (sensitivity)" + +%feature("docstring") gr_phase_modulator_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_phase_modulator_fc "Creates a phase_modulator_fc block. + +Phase modulator block + +output=complex(cos(in*sensitivity),sin(in*sensitivity)). + +Params: (sensitivity)" + +%feature("docstring") gr_pll_carriertracking_cc "Implements a PLL which locks to the input frequency and outputs the input signal mixed with that carrier. + +input: stream of complex; output: stream of complex. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs that signal, downconverted to DC + +All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" + +%feature("docstring") gr_pll_carriertracking_cc::gr_pll_carriertracking_cc " + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pll_carriertracking_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_pll_carriertracking_cc::mod_2pi " + +Params: (in)" + +%feature("docstring") gr_pll_carriertracking_cc::phase_detector " + +Params: (sample, ref_phase)" + +%feature("docstring") gr_pll_carriertracking_cc::lock_detector " + +Params: ()" + +%feature("docstring") gr_pll_carriertracking_cc::squelch_enable " + +Params: ()" + +%feature("docstring") gr_pll_carriertracking_cc::set_lock_threshold " + +Params: ()" + +%feature("docstring") gr_make_pll_carriertracking_cc "Creates a pll_carriertracking_cc block. + +Implements a PLL which locks to the input frequency and outputs the input signal mixed with that carrier. + +input: stream of complex; output: stream of complex. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs that signal, downconverted to DC + +All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pll_freqdet_cf "Implements a PLL which locks to the input frequency and outputs an estimate of that frequency. Useful for FM Demod. + +input: stream of complex; output: stream of floats. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs an estimate of that frequency in radians per sample. All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" + +%feature("docstring") gr_pll_freqdet_cf::gr_pll_freqdet_cf " + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pll_freqdet_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_pll_freqdet_cf::mod_2pi " + +Params: (in)" + +%feature("docstring") gr_pll_freqdet_cf::phase_detector " + +Params: (sample, ref_phase)" + +%feature("docstring") gr_make_pll_freqdet_cf "Creates a pll_freqdet_cf block. + +Implements a PLL which locks to the input frequency and outputs an estimate of that frequency. Useful for FM Demod. + +input: stream of complex; output: stream of floats. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs an estimate of that frequency in radians per sample. All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pll_refout_cc "Implements a PLL which locks to the input frequency and outputs a carrier + +input: stream of complex; output: stream of complex. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs a clean version which is phase and frequency aligned to it. + +All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" + +%feature("docstring") gr_pll_refout_cc::gr_pll_refout_cc " + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pll_refout_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_pll_refout_cc::mod_2pi " + +Params: (in)" + +%feature("docstring") gr_pll_refout_cc::phase_detector " + +Params: (sample, ref_phase)" + +%feature("docstring") gr_make_pll_refout_cc "Creates a pll_refout_cc block. + +Implements a PLL which locks to the input frequency and outputs a carrier + +input: stream of complex; output: stream of complex. + +This PLL locks onto a [possibly noisy] reference carrier on the input and outputs a clean version which is phase and frequency aligned to it. + +All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) + +Params: (alpha, beta, max_freq, min_freq)" + +%feature("docstring") gr_pn_correlator_cc "PN code sequential search correlator. + +Receives complex baseband signal, outputs complex correlation against reference PN code, one sample per PN code period" + +%feature("docstring") gr_pn_correlator_cc::gr_pn_correlator_cc " + +Params: (degree, mask, seed)" + +%feature("docstring") gr_pn_correlator_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_pn_correlator_cc::~gr_pn_correlator_cc " + +Params: (NONE)" + +%feature("docstring") gr_make_pn_correlator_cc "Creates a pn_correlator_cc block. + +PN code sequential search correlator. + +Receives complex baseband signal, outputs complex correlation against reference PN code, one sample per PN code period + +Params: (degree, mask, seed)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c "compute avg magnitude squared. + +input: gr_complex + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." + +%feature("docstring") gr_probe_avg_mag_sqrd_c::gr_probe_avg_mag_sqrd_c " + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::~gr_probe_avg_mag_sqrd_c " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::level " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::threshold " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_c::set_threshold " + +Params: (decibels)" + +%feature("docstring") gr_make_probe_avg_mag_sqrd_c "Creates a probe_avg_mag_sqrd_c block. + +compute avg magnitude squared. + +input: gr_complex + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf "compute avg magnitude squared. + +input: gr_complex output: gr_float + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::gr_probe_avg_mag_sqrd_cf " + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::~gr_probe_avg_mag_sqrd_cf " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::level " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::threshold " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_cf::set_threshold " + +Params: (decibels)" + +%feature("docstring") gr_make_probe_avg_mag_sqrd_cf "Creates a probe_avg_mag_sqrd_cf block. + +compute avg magnitude squared. + +input: gr_complex output: gr_float + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f "compute avg magnitude squared. + +input: float + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." + +%feature("docstring") gr_probe_avg_mag_sqrd_f::gr_probe_avg_mag_sqrd_f " + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::~gr_probe_avg_mag_sqrd_f " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::level " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::threshold " + +Params: (NONE)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_probe_avg_mag_sqrd_f::set_threshold " + +Params: (decibels)" + +%feature("docstring") gr_make_probe_avg_mag_sqrd_f "Creates a probe_avg_mag_sqrd_f block. + +compute avg magnitude squared. + +input: float + +Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_probe_density_b "This block maintains a running average of the input stream and makes it available as an accessor function. The input stream is type unsigned char. + +If you send this block a stream of unpacked bytes, it will tell you what the bit density is." + +%feature("docstring") gr_probe_density_b::gr_probe_density_b " + +Params: (alpha)" + +%feature("docstring") gr_probe_density_b::~gr_probe_density_b " + +Params: (NONE)" + +%feature("docstring") gr_probe_density_b::density "Returns the current density value. + +Params: (NONE)" + +%feature("docstring") gr_probe_density_b::set_alpha "Set the average filter constant. + +Params: (alpha)" + +%feature("docstring") gr_probe_density_b::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_probe_density_b "Creates a probe_density_b block. + +This block maintains a running average of the input stream and makes it available as an accessor function. The input stream is type unsigned char. + +If you send this block a stream of unpacked bytes, it will tell you what the bit density is. + +Params: (alpha)" + +%feature("docstring") gr_probe_mpsk_snr_c "Compute the estimate SNR of an MPSK signal using the Squared Signal to Noise Variance (SNV) technique. + +This technique assumes an AWGN channel. + + +Compute the running average of the signal mean and noise variance. The estimated signal mean, noise variance, and SNR are available via accessors. + +This SNR estimator is inaccurate below about 7dB SNR." + +%feature("docstring") gr_probe_mpsk_snr_c::gr_probe_mpsk_snr_c " + +Params: (alpha)" + +%feature("docstring") gr_probe_mpsk_snr_c::~gr_probe_mpsk_snr_c " + +Params: (NONE)" + +%feature("docstring") gr_probe_mpsk_snr_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_probe_mpsk_snr_c::signal_mean " + +Params: (NONE)" + +%feature("docstring") gr_probe_mpsk_snr_c::noise_variance " + +Params: (NONE)" + +%feature("docstring") gr_probe_mpsk_snr_c::snr " + +Params: (NONE)" + +%feature("docstring") gr_probe_mpsk_snr_c::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_make_probe_mpsk_snr_c "Creates a probe_mpsk_snr_c block. + +Compute the estimate SNR of an MPSK signal using the Squared Signal to Noise Variance (SNV) technique. + +This technique assumes an AWGN channel. + + +Compute the running average of the signal mean and noise variance. The estimated signal mean, noise variance, and SNR are available via accessors. + +This SNR estimator is inaccurate below about 7dB SNR. + +Params: (alpha)" + +%feature("docstring") gr_probe_signal_f "Sink that allows a sample to be grabbed from Python." + +%feature("docstring") gr_probe_signal_f::gr_probe_signal_f " + +Params: (NONE)" + +%feature("docstring") gr_probe_signal_f::~gr_probe_signal_f " + +Params: (NONE)" + +%feature("docstring") gr_probe_signal_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_probe_signal_f::level " + +Params: (NONE)" + +%feature("docstring") gr_make_probe_signal_f "Creates a probe_signal_f block. + +Sink that allows a sample to be grabbed from Python. + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_cc "gate or zero output when input power below threshold" + +%feature("docstring") gr_pwr_squelch_cc::gr_pwr_squelch_cc " + +Params: (db, alpha, ramp, gate)" + +%feature("docstring") gr_pwr_squelch_cc::update_state " + +Params: (in)" + +%feature("docstring") gr_pwr_squelch_cc::mute " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_cc::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_cc::threshold " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_cc::set_threshold " + +Params: (db)" + +%feature("docstring") gr_pwr_squelch_cc::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_make_pwr_squelch_cc "Creates a pwr_squelch_cc block. + +gate or zero output when input power below threshold + +Params: (db, alpha, ramp, gate)" + +%feature("docstring") gr_pwr_squelch_ff "gate or zero output when input power below threshold" + +%feature("docstring") gr_pwr_squelch_ff::gr_pwr_squelch_ff " + +Params: (db, alpha, ramp, gate)" + +%feature("docstring") gr_pwr_squelch_ff::update_state " + +Params: (in)" + +%feature("docstring") gr_pwr_squelch_ff::mute " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_ff::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_ff::threshold " + +Params: (NONE)" + +%feature("docstring") gr_pwr_squelch_ff::set_threshold " + +Params: (db)" + +%feature("docstring") gr_pwr_squelch_ff::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_make_pwr_squelch_ff "Creates a pwr_squelch_ff block. + +gate or zero output when input power below threshold + +Params: (db, alpha, ramp, gate)" + +%feature("docstring") gr_quadrature_demod_cf "quadrature demodulator: complex in, float out + +This can be used to demod FM, FSK, GMSK, etc. The input is complex baseband." + +%feature("docstring") gr_quadrature_demod_cf::gr_quadrature_demod_cf " + +Params: (gain)" + +%feature("docstring") gr_quadrature_demod_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_quadrature_demod_cf "Creates a quadrature_demod_cf block. + +quadrature demodulator: complex in, float out + +This can be used to demod FM, FSK, GMSK, etc. The input is complex baseband. + +Params: (gain)" + + + +%feature("docstring") gr_rail_ff::gr_rail_ff " + +Params: (lo, hi)" + +%feature("docstring") gr_rail_ff::lo " + +Params: (NONE)" + +%feature("docstring") gr_rail_ff::set_lo " + +Params: (lo)" + +%feature("docstring") gr_rail_ff::hi " + +Params: (NONE)" + +%feature("docstring") gr_rail_ff::set_hi " + +Params: (hi)" + +%feature("docstring") gr_rail_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_rail_ff "Creates a rail_ff block. + + + +Params: (lo, hi)" + +%feature("docstring") gr_rational_resampler_base_ccc "Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_rational_resampler_base_ccc::gr_rational_resampler_base_ccc "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_ccc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_ccc::~gr_rational_resampler_base_ccc " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccc::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_ccc::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccc::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_ccc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_ccc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_ccc "Creates a rational_resampler_base_ccc block. + +Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and gr_complex taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_ccf "Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and float taps." + +%feature("docstring") gr_rational_resampler_base_ccf::gr_rational_resampler_base_ccf "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_ccf::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_ccf::~gr_rational_resampler_base_ccf " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccf::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccf::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_ccf::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccf::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_ccf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_ccf::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_ccf::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_ccf "Creates a rational_resampler_base_ccf block. + +Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and float taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fcc "Rational Resampling Polyphase FIR filter with float input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_rational_resampler_base_fcc::gr_rational_resampler_base_fcc "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fcc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fcc::~gr_rational_resampler_base_fcc " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fcc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fcc::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_fcc::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fcc::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fcc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fcc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_fcc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_fcc "Creates a rational_resampler_base_fcc block. + +Rational Resampling Polyphase FIR filter with float input, gr_complex output and gr_complex taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fff "Rational Resampling Polyphase FIR filter with float input, float output and float taps." + +%feature("docstring") gr_rational_resampler_base_fff::gr_rational_resampler_base_fff "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fff::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fff::~gr_rational_resampler_base_fff " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fff::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fff::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_fff::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fff::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fff::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fff::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_fff::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_fff "Creates a rational_resampler_base_fff block. + +Rational Resampling Polyphase FIR filter with float input, float output and float taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fsf "Rational Resampling Polyphase FIR filter with float input, short output and float taps." + +%feature("docstring") gr_rational_resampler_base_fsf::gr_rational_resampler_base_fsf "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_fsf::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fsf::~gr_rational_resampler_base_fsf " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fsf::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fsf::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_fsf::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fsf::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_fsf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_fsf::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_fsf::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_fsf "Creates a rational_resampler_base_fsf block. + +Rational Resampling Polyphase FIR filter with float input, short output and float taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_scc "Rational Resampling Polyphase FIR filter with short input, gr_complex output and gr_complex taps." + +%feature("docstring") gr_rational_resampler_base_scc::gr_rational_resampler_base_scc "Construct a FIR filter with the given taps + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_rational_resampler_base_scc::install_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_scc::~gr_rational_resampler_base_scc " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_scc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_scc::set_history " + +Params: (history)" + +%feature("docstring") gr_rational_resampler_base_scc::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_scc::decimation " + +Params: (NONE)" + +%feature("docstring") gr_rational_resampler_base_scc::set_taps " + +Params: (taps)" + +%feature("docstring") gr_rational_resampler_base_scc::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_rational_resampler_base_scc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_rational_resampler_base_scc "Creates a rational_resampler_base_scc block. + +Rational Resampling Polyphase FIR filter with short input, gr_complex output and gr_complex taps. + +Params: (interpolation, decimation, taps)" + +%feature("docstring") gr_regenerate_bb "Detect the peak of a signal and repeat every period samples + +If a peak is detected, this block outputs a 1 repeated every period samples until reset by detection of another 1 on the input or stopped after max_regen regenerations have occurred. + +Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever." + +%feature("docstring") gr_regenerate_bb::gr_regenerate_bb " + +Params: (period, max_regen)" + +%feature("docstring") gr_regenerate_bb::set_max_regen "Reset the maximum regeneration count; this will reset the current regen. + +Params: (regen)" + +%feature("docstring") gr_regenerate_bb::set_period "Reset the period of regenerations; this will reset the current regen. + +Params: (period)" + +%feature("docstring") gr_regenerate_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_regenerate_bb "Creates a regenerate_bb block. + +Detect the peak of a signal and repeat every period samples + +If a peak is detected, this block outputs a 1 repeated every period samples until reset by detection of another 1 on the input or stopped after max_regen regenerations have occurred. + +Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever. + +Params: (period, max_regen)" + +%feature("docstring") gr_repeat "Repeat a sample 'interp' times in output stream." + +%feature("docstring") gr_repeat::gr_repeat " + +Params: (itemsize, interp)" + +%feature("docstring") gr_repeat::~gr_repeat " + +Params: (NONE)" + +%feature("docstring") gr_repeat::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_repeat "Creates a repeat block. + +Repeat a sample 'interp' times in output stream. + +Params: (itemsize, interp)" + +%feature("docstring") gr_rms_cf "RMS average power." + +%feature("docstring") gr_rms_cf::gr_rms_cf " + +Params: (alpha)" + +%feature("docstring") gr_rms_cf::~gr_rms_cf " + +Params: (NONE)" + +%feature("docstring") gr_rms_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_rms_cf::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_rms_cf::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_make_rms_cf "Creates a rms_cf block. + +RMS average power. + +Params: (alpha)" + +%feature("docstring") gr_rms_ff "RMS average power." + +%feature("docstring") gr_rms_ff::gr_rms_ff " + +Params: (alpha)" + +%feature("docstring") gr_rms_ff::~gr_rms_ff " + +Params: (NONE)" + +%feature("docstring") gr_rms_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_rms_ff::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_rms_ff::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_make_rms_ff "Creates a rms_ff block. + +RMS average power. + +Params: (alpha)" + +%feature("docstring") gr_sample_and_hold_bb "sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." + +%feature("docstring") gr_sample_and_hold_bb::gr_sample_and_hold_bb " + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sample_and_hold_bb "Creates a sample_and_hold_bb block. + +sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ff "sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." + +%feature("docstring") gr_sample_and_hold_ff::gr_sample_and_hold_ff " + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sample_and_hold_ff "Creates a sample_and_hold_ff block. + +sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ii "sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." + +%feature("docstring") gr_sample_and_hold_ii::gr_sample_and_hold_ii " + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sample_and_hold_ii "Creates a sample_and_hold_ii block. + +sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ss "sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." + +%feature("docstring") gr_sample_and_hold_ss::gr_sample_and_hold_ss " + +Params: (NONE)" + +%feature("docstring") gr_sample_and_hold_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sample_and_hold_ss "Creates a sample_and_hold_ss block. + +sample and hold circuit + +Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). + +Params: (NONE)" + +%feature("docstring") gr_scrambler_bb "Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output." + +%feature("docstring") gr_scrambler_bb::gr_scrambler_bb " + +Params: (mask, seed, len)" + +%feature("docstring") gr_scrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_scrambler_bb "Creates a scrambler_bb block. + +Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. + +Params: (mask, seed, len)" + +%feature("docstring") gr_short_to_float "Convert stream of short to a stream of float." + +%feature("docstring") gr_short_to_float::gr_short_to_float " + +Params: (NONE)" + +%feature("docstring") gr_short_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_short_to_float "Creates a short_to_float block. + +Convert stream of short to a stream of float. + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c "signal generator with gr_complex output." + +%feature("docstring") gr_sig_source_c::gr_sig_source_c " + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_sig_source_c::sampling_freq " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c::waveform " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c::frequency " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c::amplitude " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c::offset " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_c::set_sampling_freq " + +Params: (sampling_freq)" + +%feature("docstring") gr_sig_source_c::set_waveform " + +Params: (waveform)" + +%feature("docstring") gr_sig_source_c::set_frequency " + +Params: (frequency)" + +%feature("docstring") gr_sig_source_c::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_sig_source_c::set_offset " + +Params: (offset)" + +%feature("docstring") gr_make_sig_source_c "Creates a sig_source_c block. + +signal generator with gr_complex output. + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_f "signal generator with float output." + +%feature("docstring") gr_sig_source_f::gr_sig_source_f " + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_sig_source_f::sampling_freq " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_f::waveform " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_f::frequency " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_f::amplitude " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_f::offset " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_f::set_sampling_freq " + +Params: (sampling_freq)" + +%feature("docstring") gr_sig_source_f::set_waveform " + +Params: (waveform)" + +%feature("docstring") gr_sig_source_f::set_frequency " + +Params: (frequency)" + +%feature("docstring") gr_sig_source_f::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_sig_source_f::set_offset " + +Params: (offset)" + +%feature("docstring") gr_make_sig_source_f "Creates a sig_source_f block. + +signal generator with float output. + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_i "signal generator with int output." + +%feature("docstring") gr_sig_source_i::gr_sig_source_i " + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_sig_source_i::sampling_freq " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_i::waveform " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_i::frequency " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_i::amplitude " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_i::offset " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_i::set_sampling_freq " + +Params: (sampling_freq)" + +%feature("docstring") gr_sig_source_i::set_waveform " + +Params: (waveform)" + +%feature("docstring") gr_sig_source_i::set_frequency " + +Params: (frequency)" + +%feature("docstring") gr_sig_source_i::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_sig_source_i::set_offset " + +Params: (offset)" + +%feature("docstring") gr_make_sig_source_i "Creates a sig_source_i block. + +signal generator with int output. + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_s "signal generator with short output." + +%feature("docstring") gr_sig_source_s::gr_sig_source_s " + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_sig_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_sig_source_s::sampling_freq " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_s::waveform " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_s::frequency " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_s::amplitude " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_s::offset " + +Params: (NONE)" + +%feature("docstring") gr_sig_source_s::set_sampling_freq " + +Params: (sampling_freq)" + +%feature("docstring") gr_sig_source_s::set_waveform " + +Params: (waveform)" + +%feature("docstring") gr_sig_source_s::set_frequency " + +Params: (frequency)" + +%feature("docstring") gr_sig_source_s::set_amplitude " + +Params: (ampl)" + +%feature("docstring") gr_sig_source_s::set_offset " + +Params: (offset)" + +%feature("docstring") gr_make_sig_source_s "Creates a sig_source_s block. + +signal generator with short output. + +Params: (sampling_freq, waveform, wave_freq, ampl, offset)" + +%feature("docstring") gr_simple_correlator "inverse of gr_simple_framer (more or less)" + +%feature("docstring") gr_simple_correlator::gr_simple_correlator " + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_correlator::slice " + +Params: (x)" + +%feature("docstring") gr_simple_correlator::update_avg " + +Params: (x)" + +%feature("docstring") gr_simple_correlator::enter_locked " + +Params: (NONE)" + +%feature("docstring") gr_simple_correlator::enter_under_threshold " + +Params: (NONE)" + +%feature("docstring") gr_simple_correlator::enter_looking " + +Params: (NONE)" + +%feature("docstring") gr_simple_correlator::add_index " + +Params: (a, b)" + +%feature("docstring") gr_simple_correlator::sub_index " + +Params: (a, b)" + +%feature("docstring") gr_simple_correlator::~gr_simple_correlator " + +Params: (NONE)" + +%feature("docstring") gr_simple_correlator::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_simple_correlator "Creates a simple_correlator block. + +inverse of gr_simple_framer (more or less) + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_framer "add sync field, seq number and command field to payload" + +%feature("docstring") gr_simple_framer::gr_simple_framer " + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_framer::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_simple_framer::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_simple_framer "Creates a simple_framer block. + +add sync field, seq number and command field to payload + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_squelch_cc "simple squelch block based on average signal power and threshold in dB." + +%feature("docstring") gr_simple_squelch_cc::gr_simple_squelch_cc " + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_simple_squelch_cc::~gr_simple_squelch_cc " + +Params: (NONE)" + +%feature("docstring") gr_simple_squelch_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_simple_squelch_cc::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_simple_squelch_cc::set_alpha " + +Params: (alpha)" + +%feature("docstring") gr_simple_squelch_cc::set_threshold " + +Params: (decibels)" + +%feature("docstring") gr_simple_squelch_cc::threshold " + +Params: (NONE)" + +%feature("docstring") gr_simple_squelch_cc::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_make_simple_squelch_cc "Creates a simple_squelch_cc block. + +simple squelch block based on average signal power and threshold in dB. + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_single_pole_iir_filter_cc "single pole IIR filter with complex input, complex output + +The input and output satisfy a difference equation of the form + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap." + +%feature("docstring") gr_single_pole_iir_filter_cc::gr_single_pole_iir_filter_cc " + +Params: (alpha, vlen)" + +%feature("docstring") gr_single_pole_iir_filter_cc::~gr_single_pole_iir_filter_cc " + +Params: (NONE)" + +%feature("docstring") gr_single_pole_iir_filter_cc::set_taps " + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir_filter_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_single_pole_iir_filter_cc "Creates a single_pole_iir_filter_cc block. + +single pole IIR filter with complex input, complex output + +The input and output satisfy a difference equation of the form + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap. + +Params: (alpha, vlen)" + +%feature("docstring") gr_single_pole_iir_filter_ff "single pole IIR filter with float input, float output + +The input and output satisfy a difference equation of the form + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap." + +%feature("docstring") gr_single_pole_iir_filter_ff::gr_single_pole_iir_filter_ff " + +Params: (alpha, vlen)" + +%feature("docstring") gr_single_pole_iir_filter_ff::~gr_single_pole_iir_filter_ff " + +Params: (NONE)" + +%feature("docstring") gr_single_pole_iir_filter_ff::set_taps " + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir_filter_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_single_pole_iir_filter_ff "Creates a single_pole_iir_filter_ff block. + +single pole IIR filter with float input, float output + +The input and output satisfy a difference equation of the form + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap. + +Params: (alpha, vlen)" + +%feature("docstring") gr_single_threaded_scheduler "Simple scheduler for stream computations." + +%feature("docstring") gr_single_threaded_scheduler::~gr_single_threaded_scheduler " + +Params: (NONE)" + +%feature("docstring") gr_single_threaded_scheduler::run " + +Params: (NONE)" + +%feature("docstring") gr_single_threaded_scheduler::stop " + +Params: (NONE)" + +%feature("docstring") gr_single_threaded_scheduler::gr_single_threaded_scheduler " + +Params: (blocks)" + +%feature("docstring") gr_single_threaded_scheduler::main_loop " + +Params: (NONE)" + +%feature("docstring") gr_make_single_threaded_scheduler "Creates a single_threaded_scheduler block. + +Simple scheduler for stream computations. + +Params: (blocks)" + +%feature("docstring") gr_skiphead "skips the first N items, from then on copies items to the output + +Useful for building test cases and sources which have metadata or junk at the start" + +%feature("docstring") gr_skiphead::gr_skiphead " + +Params: (itemsize, nitems_to_skip)" + +%feature("docstring") gr_skiphead::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_skiphead "Creates a skiphead block. + +skips the first N items, from then on copies items to the output + +Useful for building test cases and sources which have metadata or junk at the start + +Params: (itemsize, nitems_to_skip)" + + + +%feature("docstring") gr_squash_ff::gr_squash_ff " + +Params: (igrid, ogrid)" + +%feature("docstring") gr_squash_ff::~gr_squash_ff " + +Params: (NONE)" + +%feature("docstring") gr_squash_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_squash_ff "Creates a squash_ff block. + + + +Params: (igrid, ogrid)" + +%feature("docstring") gr_stream_mux "Stream muxing block to multiplex many streams into one with a specified format. + +Muxes N streams together producing an output stream that contains N0 items from the first stream, N1 items from the second, etc. and repeats: + +[N0, N1, N2, ..., Nm, N0, N1, ...]" + +%feature("docstring") gr_stream_mux::gr_stream_mux " + +Params: (itemsize, lengths)" + +%feature("docstring") gr_stream_mux::increment_stream " + +Params: (NONE)" + +%feature("docstring") gr_stream_mux::~gr_stream_mux " + +Params: ()" + +%feature("docstring") gr_stream_mux::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_stream_mux::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_stream_mux "Creates a stream_mux block. + +Stream muxing block to multiplex many streams into one with a specified format. + +Muxes N streams together producing an output stream that contains N0 items from the first stream, N1 items from the second, etc. and repeats: + +[N0, N1, N2, ..., Nm, N0, N1, ...] + +Params: (itemsize, lengths)" + +%feature("docstring") gr_stream_to_streams "convert a stream of items into a N streams of items + +Converts a stream of N items into N streams of 1 item. Repeat ad infinitum." + +%feature("docstring") gr_stream_to_streams::gr_stream_to_streams " + +Params: (item_size, nstreams)" + +%feature("docstring") gr_stream_to_streams::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_stream_to_streams "Creates a stream_to_streams block. + +convert a stream of items into a N streams of items + +Converts a stream of N items into N streams of 1 item. Repeat ad infinitum. + +Params: (item_size, nstreams)" + +%feature("docstring") gr_stream_to_vector "convert a stream of items into a stream of blocks containing nitems_per_block" + +%feature("docstring") gr_stream_to_vector::gr_stream_to_vector " + +Params: (item_size, nitems_per_block)" + +%feature("docstring") gr_stream_to_vector::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_stream_to_vector "Creates a stream_to_vector block. + +convert a stream of items into a stream of blocks containing nitems_per_block + +Params: (item_size, nitems_per_block)" + +%feature("docstring") gr_streams_to_stream "Convert N streams of 1 item into a 1 stream of N items + +Convert N streams of 1 item into 1 stream of N items. Repeat ad infinitum." + +%feature("docstring") gr_streams_to_stream::gr_streams_to_stream " + +Params: (item_size, nstreams)" + +%feature("docstring") gr_streams_to_stream::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_streams_to_stream "Creates a streams_to_stream block. + +Convert N streams of 1 item into a 1 stream of N items + +Convert N streams of 1 item into 1 stream of N items. Repeat ad infinitum. + +Params: (item_size, nstreams)" + +%feature("docstring") gr_streams_to_vector "convert N streams of items to 1 stream of vector length N" + +%feature("docstring") gr_streams_to_vector::gr_streams_to_vector " + +Params: (item_size, nstreams)" + +%feature("docstring") gr_streams_to_vector::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_streams_to_vector "Creates a streams_to_vector block. + +convert N streams of items to 1 stream of vector length N + +Params: (item_size, nstreams)" + + + +%feature("docstring") gr_stretch_ff::gr_stretch_ff " + +Params: (lo, vlen)" + +%feature("docstring") gr_stretch_ff::lo " + +Params: (NONE)" + +%feature("docstring") gr_stretch_ff::set_lo " + +Params: (lo)" + +%feature("docstring") gr_stretch_ff::vlen " + +Params: (NONE)" + +%feature("docstring") gr_stretch_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_stretch_ff "Creates a stretch_ff block. + + + +Params: (lo, vlen)" + +%feature("docstring") gr_sub_cc "output = input_0 - input_1 - ...) + +Subtract across all input streams." + +%feature("docstring") gr_sub_cc::gr_sub_cc " + +Params: (vlen)" + +%feature("docstring") gr_sub_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sub_cc "Creates a sub_cc block. + +output = input_0 - input_1 - ...) + +Subtract across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_sub_ff "output = input_0 - input_1 - ...) + +Subtract across all input streams." + +%feature("docstring") gr_sub_ff::gr_sub_ff " + +Params: (vlen)" + +%feature("docstring") gr_sub_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sub_ff "Creates a sub_ff block. + +output = input_0 - input_1 - ...) + +Subtract across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_sub_ii "output = input_0 - input_1 - ...) + +Subtract across all input streams." + +%feature("docstring") gr_sub_ii::gr_sub_ii " + +Params: (vlen)" + +%feature("docstring") gr_sub_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sub_ii "Creates a sub_ii block. + +output = input_0 - input_1 - ...) + +Subtract across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_sub_ss "output = input_0 - input_1 - ...) + +Subtract across all input streams." + +%feature("docstring") gr_sub_ss::gr_sub_ss " + +Params: (vlen)" + +%feature("docstring") gr_sub_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_sub_ss "Creates a sub_ss block. + +output = input_0 - input_1 - ...) + +Subtract across all input streams. + +Params: (vlen)" + +%feature("docstring") gr_test "Test class for testing runtime system (setting up buffers and such.) + +This block does not do any usefull actual data processing. It just exposes setting all standard block parameters using the contructor or public methods. + +This block can be usefull when testing the runtime system. You can force this block to have a large history, decimation factor and/or large output_multiple. The runtime system should detect this and create large enough buffers all through the signal chain." + +%feature("docstring") gr_test::~gr_test " + +Params: (NONE)" + +%feature("docstring") gr_test::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_test::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_test::set_check_topology "Force check topology to return true or false. + +Params: (check_topology)" + +%feature("docstring") gr_test::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_test::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (ninput)" + +%feature("docstring") gr_test::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. + +Params: (noutput)" + +%feature("docstring") gr_test::set_fixed_rate_public "Set if fixed rate should return true. N.B. This is normally a private method but we make it available here as public. + +Params: (fixed_rate)" + +%feature("docstring") gr_test::set_consume_type "Set the consume pattern. + +Params: (cons_type)" + +%feature("docstring") gr_test::set_consume_limit "Set the consume limit. + +Params: (limit)" + +%feature("docstring") gr_test::set_produce_type "Set the produce pattern. + +Params: (prod_type)" + +%feature("docstring") gr_test::set_produce_limit "Set the produce limit. + +Params: (limit)" + +%feature("docstring") gr_test::gr_test " + +Params: (name, min_inputs, max_inputs, sizeof_input_item, min_outputs, max_outputs, sizeof_output_item, history, output_multiple, relative_rate, fixed_rate, cons_type, prod_type)" + +%feature("docstring") gr_make_test "Creates a test block. + +Test class for testing runtime system (setting up buffers and such.) + +This block does not do any usefull actual data processing. It just exposes setting all standard block parameters using the contructor or public methods. + +This block can be usefull when testing the runtime system. You can force this block to have a large history, decimation factor and/or large output_multiple. The runtime system should detect this and create large enough buffers all through the signal chain. + +Params: (name, min_inputs, max_inputs, sizeof_input_item, min_outputs, max_outputs, sizeof_output_item, history, output_multiple, relative_rate, fixed_rate, cons_type, prod_type)" + +%feature("docstring") gr_threshold_ff "Please fix my documentation." + +%feature("docstring") gr_threshold_ff::gr_threshold_ff " + +Params: (lo, hi, initial_state)" + +%feature("docstring") gr_threshold_ff::lo " + +Params: (NONE)" + +%feature("docstring") gr_threshold_ff::set_lo " + +Params: (lo)" + +%feature("docstring") gr_threshold_ff::hi " + +Params: (NONE)" + +%feature("docstring") gr_threshold_ff::set_hi " + +Params: (hi)" + +%feature("docstring") gr_threshold_ff::last_state " + +Params: (NONE)" + +%feature("docstring") gr_threshold_ff::set_last_state " + +Params: (last_state)" + +%feature("docstring") gr_threshold_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_threshold_ff "Creates a threshold_ff block. + +Please fix my documentation. + +Params: (lo, hi, initial_state)" + +%feature("docstring") gr_throttle "throttle flow of samples such that the average rate does not exceed samples_per_sec. + +input: one stream of itemsize; output: one stream of itemsize + +N.B. this should only be used in GUI apps where there is no other rate limiting block. It is not intended nor effective at precisely controlling the rate of samples. That should be controlled by a source or sink tied to sample clock. E.g., a USRP or audio card." + +%feature("docstring") gr_throttle::gr_throttle " + +Params: (itemsize, samples_per_sec)" + +%feature("docstring") gr_throttle::~gr_throttle " + +Params: (NONE)" + +%feature("docstring") gr_throttle::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_throttle "Creates a throttle block. + +throttle flow of samples such that the average rate does not exceed samples_per_sec. + +input: one stream of itemsize; output: one stream of itemsize + +N.B. this should only be used in GUI apps where there is no other rate limiting block. It is not intended nor effective at precisely controlling the rate of samples. That should be controlled by a source or sink tied to sample clock. E.g., a USRP or audio card. + +Params: (itemsize, samples_per_sec)" + +%feature("docstring") gr_timer "implement timeouts" + +%feature("docstring") gr_timer::gr_timer " + +Params: ()" + +%feature("docstring") gr_timer::~gr_timer " + +Params: (NONE)" + +%feature("docstring") gr_timer::schedule_at "schedule timer to fire at abs_when + +Params: (abs_when)" + +%feature("docstring") gr_timer::schedule_after "schedule timer to fire rel_when seconds from now. + +Params: (rel_when)" + +%feature("docstring") gr_timer::schedule_periodic "schedule a periodic timeout. + +Params: (abs_when, period)" + +%feature("docstring") gr_timer::unschedule "cancel timer + +Params: (NONE)" + +%feature("docstring") gr_timer::now "return absolute current time (seconds since the epoc). + +Params: (NONE)" + +%feature("docstring") gr_make_timer "Creates a timer block. + +implement timeouts + +Params: ()" + +%feature("docstring") gr_top_block "Top-level hierarchical block representing a flowgraph." + +%feature("docstring") gr_top_block::gr_top_block " + +Params: (name)" + +%feature("docstring") gr_top_block::~gr_top_block " + +Params: (NONE)" + +%feature("docstring") gr_top_block::run "The simple interface to running a flowgraph. + +Calls start() then wait(). Used to run a flowgraph that will stop on its own, or when another thread will call stop(). + +Params: (NONE)" + +%feature("docstring") gr_top_block::start "Start the contained flowgraph. Creates one or more threads to execute the flow graph. Returns to the caller once the threads are created. Calling start() on a top_block that is already started IS an error. + +Params: (NONE)" + +%feature("docstring") gr_top_block::stop "Stop the running flowgraph. Notifies each thread created by the scheduler to shutdown, then returns to caller. Calling stop() on a top_block that is already stopped IS NOT an error. + +Params: (NONE)" + +%feature("docstring") gr_top_block::wait "Wait for a flowgraph to complete. Flowgraphs complete when either (1) all blocks indicate that they are done (typically only when using gr.file_source, or gr.head, or (2) after stop() has been called to request shutdown. Calling wait on a top_block that is not running IS NOT an error (wait returns w/o blocking). + +Params: (NONE)" + +%feature("docstring") gr_top_block::lock "Lock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. + +N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. + +Params: (NONE)" + +%feature("docstring") gr_top_block::unlock "Unlock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. + +N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. + +Params: (NONE)" + +%feature("docstring") gr_top_block::dump "Displays flattened flowgraph edges and block connectivity + +Params: (NONE)" + +%feature("docstring") gr_make_top_block "Creates a top_block block. + +Top-level hierarchical block representing a flowgraph. + +Params: (name)" + +%feature("docstring") gr_uchar_to_float "Convert stream of unsigned chars to a stream of float." + +%feature("docstring") gr_uchar_to_float::gr_uchar_to_float " + +Params: (NONE)" + +%feature("docstring") gr_uchar_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_uchar_to_float "Creates a uchar_to_float block. + +Convert stream of unsigned chars to a stream of float. + +Params: (NONE)" + +%feature("docstring") gr_udp_sink "Write stream to an UDP socket." + +%feature("docstring") gr_udp_sink::gr_udp_sink "UDP Sink Constructor. + +Params: (itemsize, host, port, payload_size, eof)" + +%feature("docstring") gr_udp_sink::~gr_udp_sink " + +Params: (NONE)" + +%feature("docstring") gr_udp_sink::payload_size "return the PAYLOAD_SIZE of the socket + +Params: (NONE)" + +%feature("docstring") gr_udp_sink::connect "Change the connection to a new destination. + +Calls disconnect() to terminate any current connection first. + +Params: (host, port)" + +%feature("docstring") gr_udp_sink::disconnect "Send zero-length packet (if eof is requested) then stop sending. + +Zero-byte packets can be interpreted as EOF by gr_udp_source. Note that disconnect occurs automatically when the sink is destroyed, but not when its top_block stops. + +Params: (NONE)" + +%feature("docstring") gr_udp_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_udp_sink "Creates a udp_sink block. + +Write stream to an UDP socket. + +Params: (itemsize, host, port, payload_size, eof)" + +%feature("docstring") gr_udp_source "Read stream from an UDP socket." + +%feature("docstring") gr_udp_source::gr_udp_source "UDP Source Constructor. + +Params: (itemsize, host, port, payload_size, eof, wait)" + +%feature("docstring") gr_udp_source::~gr_udp_source " + +Params: (NONE)" + +%feature("docstring") gr_udp_source::payload_size "return the PAYLOAD_SIZE of the socket + +Params: (NONE)" + +%feature("docstring") gr_udp_source::get_port "return the port number of the socket + +Params: (NONE)" + +%feature("docstring") gr_udp_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_udp_source "Creates a udp_source block. + +Read stream from an UDP socket. + +Params: (itemsize, host, port, payload_size, eof, wait)" + +%feature("docstring") gr_unpack_k_bits_bb "Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB." + +%feature("docstring") gr_unpack_k_bits_bb::gr_unpack_k_bits_bb " + +Params: (k)" + +%feature("docstring") gr_unpack_k_bits_bb::~gr_unpack_k_bits_bb " + +Params: (NONE)" + +%feature("docstring") gr_unpack_k_bits_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_unpack_k_bits_bb "Creates a unpack_k_bits_bb block. + +Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB. + +Params: (k)" + +%feature("docstring") gr_unpacked_to_packed_bb "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of unsigned char; output: stream of unsigned char. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_unpacked_to_packed_bb::gr_unpacked_to_packed_bb " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_unpacked_to_packed_bb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_unpacked_to_packed_bb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_unpacked_to_packed_bb::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_unpacked_to_packed_bb "Creates a unpacked_to_packed_bb block. + +Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of unsigned char; output: stream of unsigned char. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_unpacked_to_packed_ii "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of int; output: stream of int. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_unpacked_to_packed_ii::gr_unpacked_to_packed_ii " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_unpacked_to_packed_ii::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_unpacked_to_packed_ii::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_unpacked_to_packed_ii::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_unpacked_to_packed_ii "Creates a unpacked_to_packed_ii block. + +Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of int; output: stream of int. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_unpacked_to_packed_ss "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of short; output: stream of short. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." + +%feature("docstring") gr_unpacked_to_packed_ss::gr_unpacked_to_packed_ss " + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_unpacked_to_packed_ss::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_unpacked_to_packed_ss::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_unpacked_to_packed_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_make_unpacked_to_packed_ss "Creates a unpacked_to_packed_ss block. + +Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. + +input: stream of short; output: stream of short. + +This is the inverse of gr_packed_to_unpacked_XX. + +The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. + +The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. + +Params: (bits_per_chunk, endianness)" + +%feature("docstring") gr_vco_f "VCO - Voltage controlled oscillator + +input: float stream of control voltages; output: float oscillator output." + +%feature("docstring") gr_vco_f::gr_vco_f "VCO - Voltage controlled oscillator. + +Params: (sampling_rate, sensitivity, amplitude)" + +%feature("docstring") gr_vco_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vco_f "Creates a vco_f block. + +VCO - Voltage controlled oscillator + +input: float stream of control voltages; output: float oscillator output. + +Params: (sampling_rate, sensitivity, amplitude)" + +%feature("docstring") gr_vector_sink_b "unsigned char sink that writes to a vector" + +%feature("docstring") gr_vector_sink_b::gr_vector_sink_b " + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_b::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_vector_sink_b::reset " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_b::clear " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_b::data " + +Params: (NONE)" + +%feature("docstring") gr_make_vector_sink_b "Creates a vector_sink_b block. + +unsigned char sink that writes to a vector + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_c "gr_complex sink that writes to a vector" + +%feature("docstring") gr_vector_sink_c::gr_vector_sink_c " + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_vector_sink_c::reset " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_c::clear " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_c::data " + +Params: (NONE)" + +%feature("docstring") gr_make_vector_sink_c "Creates a vector_sink_c block. + +gr_complex sink that writes to a vector + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_f "float sink that writes to a vector" + +%feature("docstring") gr_vector_sink_f::gr_vector_sink_f " + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_vector_sink_f::reset " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_f::clear " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_f::data " + +Params: (NONE)" + +%feature("docstring") gr_make_vector_sink_f "Creates a vector_sink_f block. + +float sink that writes to a vector + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_i "int sink that writes to a vector" + +%feature("docstring") gr_vector_sink_i::gr_vector_sink_i " + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_i::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_vector_sink_i::reset " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_i::clear " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_i::data " + +Params: (NONE)" + +%feature("docstring") gr_make_vector_sink_i "Creates a vector_sink_i block. + +int sink that writes to a vector + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_s "short sink that writes to a vector" + +%feature("docstring") gr_vector_sink_s::gr_vector_sink_s " + +Params: (vlen)" + +%feature("docstring") gr_vector_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_vector_sink_s::reset " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_s::clear " + +Params: (NONE)" + +%feature("docstring") gr_vector_sink_s::data " + +Params: (NONE)" + +%feature("docstring") gr_make_vector_sink_s "Creates a vector_sink_s block. + +short sink that writes to a vector + +Params: (vlen)" + +%feature("docstring") gr_vector_source_b "source of unsigned char's that gets its data from a vector" + +%feature("docstring") gr_vector_source_b::gr_vector_source_b " + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_b::rewind " + +Params: (NONE)" + +%feature("docstring") gr_vector_source_b::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_source_b "Creates a vector_source_b block. + +source of unsigned char's that gets its data from a vector + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_c "source of gr_complex's that gets its data from a vector" + +%feature("docstring") gr_vector_source_c::gr_vector_source_c " + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_c::rewind " + +Params: (NONE)" + +%feature("docstring") gr_vector_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_source_c "Creates a vector_source_c block. + +source of gr_complex's that gets its data from a vector + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_f "source of float's that gets its data from a vector" + +%feature("docstring") gr_vector_source_f::gr_vector_source_f " + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_f::rewind " + +Params: (NONE)" + +%feature("docstring") gr_vector_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_source_f "Creates a vector_source_f block. + +source of float's that gets its data from a vector + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_i "source of int's that gets its data from a vector" + +%feature("docstring") gr_vector_source_i::gr_vector_source_i " + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_i::rewind " + +Params: (NONE)" + +%feature("docstring") gr_vector_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_source_i "Creates a vector_source_i block. + +source of int's that gets its data from a vector + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_s "source of short's that gets its data from a vector" + +%feature("docstring") gr_vector_source_s::gr_vector_source_s " + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_source_s::rewind " + +Params: (NONE)" + +%feature("docstring") gr_vector_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_source_s "Creates a vector_source_s block. + +source of short's that gets its data from a vector + +Params: (data, repeat, vlen)" + +%feature("docstring") gr_vector_to_stream "convert a stream of blocks of nitems_per_block items into a stream of items" + +%feature("docstring") gr_vector_to_stream::gr_vector_to_stream " + +Params: (item_size, nitems_per_block)" + +%feature("docstring") gr_vector_to_stream::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_to_stream "Creates a vector_to_stream block. + +convert a stream of blocks of nitems_per_block items into a stream of items + +Params: (item_size, nitems_per_block)" + +%feature("docstring") gr_vector_to_streams "Convert 1 stream of vectors of length N to N streams of items." + +%feature("docstring") gr_vector_to_streams::gr_vector_to_streams " + +Params: (item_size, nstreams)" + +%feature("docstring") gr_vector_to_streams::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_vector_to_streams "Creates a vector_to_streams block. + +Convert 1 stream of vectors of length N to N streams of items. + +Params: (item_size, nstreams)" + +%feature("docstring") gr_wavelet_ff "compute wavelet transform using gsl routines" + +%feature("docstring") gr_wavelet_ff::gr_wavelet_ff " + +Params: (size, order, forward)" + +%feature("docstring") gr_wavelet_ff::~gr_wavelet_ff " + +Params: (NONE)" + +%feature("docstring") gr_wavelet_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_wavelet_ff "Creates a wavelet_ff block. + +compute wavelet transform using gsl routines + +Params: (size, order, forward)" + +%feature("docstring") gr_wavfile_sink "Read stream from a Microsoft PCM (.wav) file, output floats. + +Values are within [-1;1]. Check gr_make_wavfile_source() for extra info." + +%feature("docstring") gr_wavfile_sink::gr_wavfile_sink " + +Params: (filename, n_channels, sample_rate, bits_per_sample)" + +%feature("docstring") gr_wavfile_sink::convert_to_short "Convert a sample value within [-1;+1] to a corresponding short integer value. + +Params: (sample)" + +%feature("docstring") gr_wavfile_sink::close_wav "Writes information to the WAV header which is not available a-priori (chunk size etc.) and closes the file. Not thread-safe and assumes d_fp is a valid file pointer, should thus only be called by other methods. + +Params: (NONE)" + +%feature("docstring") gr_wavfile_sink::~gr_wavfile_sink " + +Params: (NONE)" + +%feature("docstring") gr_wavfile_sink::open "Opens a new file and writes a WAV header. Thread-safe. + +Params: (filename)" + +%feature("docstring") gr_wavfile_sink::close "Closes the currently active file and completes the WAV header. Thread-safe. + +Params: (NONE)" + +%feature("docstring") gr_wavfile_sink::do_update "If any file changes have occurred, update now. This is called internally by work() and thus doesn't usually need to be called by hand. + +Params: (NONE)" + +%feature("docstring") gr_wavfile_sink::set_sample_rate "Set the sample rate. This will not affect the WAV file currently opened. Any following open() calls will use this new sample rate. + +Params: (sample_rate)" + +%feature("docstring") gr_wavfile_sink::set_bits_per_sample "Set bits per sample. This will not affect the WAV file currently opened (see set_sample_rate()). If the value is neither 8 nor 16, the call is ignored and the current value is kept. + +Params: (bits_per_sample)" + +%feature("docstring") gr_wavfile_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_wavfile_sink "Creates a wavfile_sink block. + +Read stream from a Microsoft PCM (.wav) file, output floats. + +Values are within [-1;1]. Check gr_make_wavfile_source() for extra info. + +Params: (filename, n_channels, sample_rate, bits_per_sample)" + +%feature("docstring") gr_wavfile_source "Read stream from a Microsoft PCM (.wav) file, output floats. + +Unless otherwise called, values are within [-1;1]. Check gr_make_wavfile_source() for extra info." + +%feature("docstring") gr_wavfile_source::gr_wavfile_source " + +Params: (filename, repeat)" + +%feature("docstring") gr_wavfile_source::convert_to_float "Convert an integer sample value to a float value within [-1;1]. + +Params: (sample)" + +%feature("docstring") gr_wavfile_source::~gr_wavfile_source " + +Params: (NONE)" + +%feature("docstring") gr_wavfile_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_wavfile_source::sample_rate "Read the sample rate as specified in the wav file header. + +Params: (NONE)" + +%feature("docstring") gr_wavfile_source::bits_per_sample "Return the number of bits per sample as specified in the wav file header. Only 8 or 16 bit are supported here. + +Params: (NONE)" + +%feature("docstring") gr_wavfile_source::channels "Return the number of channels in the wav file as specified in the wav file header. This is also the max number of outputs you can have. + +Params: (NONE)" + +%feature("docstring") gr_make_wavfile_source "Creates a wavfile_source block. + +Read stream from a Microsoft PCM (.wav) file, output floats. + +Unless otherwise called, values are within [-1;1]. Check gr_make_wavfile_source() for extra info. + +Params: (filename, repeat)" + +%feature("docstring") gr_wvps_ff "computes the Wavelet Power Spectrum from a set of wavelet coefficients" + +%feature("docstring") gr_wvps_ff::gr_wvps_ff " + +Params: (ilen)" + +%feature("docstring") gr_wvps_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_wvps_ff "Creates a wvps_ff block. + +computes the Wavelet Power Spectrum from a set of wavelet coefficients + +Params: (ilen)" + +%feature("docstring") gr_xor_bb "output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams." + +%feature("docstring") gr_xor_bb::gr_xor_bb " + +Params: (NONE)" + +%feature("docstring") gr_xor_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_xor_bb "Creates a xor_bb block. + +output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_xor_ii "output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams." + +%feature("docstring") gr_xor_ii::gr_xor_ii " + +Params: (NONE)" + +%feature("docstring") gr_xor_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_xor_ii "Creates a xor_ii block. + +output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams. + +Params: (NONE)" + +%feature("docstring") gr_xor_ss "output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams." + +%feature("docstring") gr_xor_ss::gr_xor_ss " + +Params: (NONE)" + +%feature("docstring") gr_xor_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_xor_ss "Creates a xor_ss block. + +output = input_0 ^ input_1 ^ , ... ^ input_N) + +bitwise boolean xor across all input streams. + +Params: (NONE)" + + + +%feature("docstring") msdd_source_simple::msdd_source_simple " + +Params: (src, port_src)" + +%feature("docstring") msdd_source_simple::~msdd_source_simple " + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::set_decim_rate " + +Params: (int)" + +%feature("docstring") msdd_source_simple::set_rx_freq " + +Params: (, )" + +%feature("docstring") msdd_source_simple::set_pga " + +Params: (, )" + +%feature("docstring") msdd_source_simple::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") msdd_source_simple::adc_freq " + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::decim_rate " + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::gain_range " + +Params: (NONE)" + +%feature("docstring") msdd_source_simple::freq_range " + +Params: (NONE)" + +%feature("docstring") msdd_make_source_simple "Creates a source_simple block. + + + +Params: (src, port_src)" + + + +%feature("docstring") noaa_hrpt_decoder::noaa_hrpt_decoder " + +Params: (verbose, output_files)" + +%feature("docstring") noaa_hrpt_decoder::process_mfnum " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::process_address " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::process_day_of_year " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::process_milli1 " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::process_milli2 " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::process_milli3 " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::~noaa_hrpt_decoder " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") noaa_make_hrpt_decoder "Creates a hrpt_decoder block. + + + +Params: (verbose, output_files)" + + + +%feature("docstring") noaa_hrpt_deframer::noaa_hrpt_deframer " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_deframer::enter_idle " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_deframer::enter_synced " + +Params: (NONE)" + +%feature("docstring") noaa_hrpt_deframer::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") noaa_make_hrpt_deframer "Creates a hrpt_deframer block. + + + +Params: (NONE)" + + + +%feature("docstring") noaa_hrpt_pll_cf::noaa_hrpt_pll_cf " + +Params: (alpha, beta, max_offset)" + +%feature("docstring") noaa_hrpt_pll_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") noaa_hrpt_pll_cf::set_alpha " + +Params: (alpha)" + +%feature("docstring") noaa_hrpt_pll_cf::set_beta " + +Params: (beta)" + +%feature("docstring") noaa_hrpt_pll_cf::set_max_offset " + +Params: (max_offset)" + +%feature("docstring") noaa_make_hrpt_pll_cf "Creates a hrpt_pll_cf block. + + + +Params: (alpha, beta, max_offset)" + +%feature("docstring") pager_flex_deinterleave "flex deinterleave description" + +%feature("docstring") pager_flex_deinterleave::pager_flex_deinterleave " + +Params: (NONE)" + +%feature("docstring") pager_flex_deinterleave::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") pager_make_flex_deinterleave "Creates a flex_deinterleave block. + +flex deinterleave description + +Params: (NONE)" + +%feature("docstring") pager_flex_frame "flex_frame." + +%feature("docstring") pager_flex_frame::pager_flex_frame " + +Params: (NONE)" + +%feature("docstring") pager_flex_frame::~pager_flex_frame " + +Params: (NONE)" + +%feature("docstring") pager_make_flex_frame "Creates a flex_frame block. + +flex_frame. + +Params: (NONE)" + +%feature("docstring") pager_flex_sync "flex sync description" + +%feature("docstring") pager_flex_sync::pager_flex_sync " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::enter_idle " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::enter_syncing " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::enter_sync1 " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::enter_sync2 " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::enter_data " + +Params: (NONE)" + +%feature("docstring") pager_flex_sync::index_avg " + +Params: (start, end)" + +%feature("docstring") pager_flex_sync::test_sync " + +Params: (sym)" + +%feature("docstring") pager_flex_sync::output_symbol " + +Params: (sym)" + +%feature("docstring") pager_flex_sync::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") pager_flex_sync::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") pager_make_flex_sync "Creates a flex_sync block. + +flex sync description + +Params: (NONE)" + +%feature("docstring") pager_slicer_fb "slicer description" + +%feature("docstring") pager_slicer_fb::pager_slicer_fb " + +Params: (alpha)" + +%feature("docstring") pager_slicer_fb::slice " + +Params: (sample)" + +%feature("docstring") pager_slicer_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") pager_slicer_fb::dc_offset " + +Params: (NONE)" + +%feature("docstring") pager_make_slicer_fb "Creates a slicer_fb block. + +slicer description + +Params: (alpha)" + +%feature("docstring") trellis_encoder_bb "Convolutional encoder." + +%feature("docstring") trellis_encoder_bb::trellis_encoder_bb " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_bb::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bb::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_bb "Creates a encoder_bb block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_bi "Convolutional encoder." + +%feature("docstring") trellis_encoder_bi::trellis_encoder_bi " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_bi::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bi::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bi::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_bi "Creates a encoder_bi block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_bs "Convolutional encoder." + +%feature("docstring") trellis_encoder_bs::trellis_encoder_bs " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_bs::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bs::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_bs::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_bs "Creates a encoder_bs block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_ii "Convolutional encoder." + +%feature("docstring") trellis_encoder_ii::trellis_encoder_ii " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_ii::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_ii::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_ii "Creates a encoder_ii block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_si "Convolutional encoder." + +%feature("docstring") trellis_encoder_si::trellis_encoder_si " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_si::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_si::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_si::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_si "Creates a encoder_si block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_ss "Convolutional encoder." + +%feature("docstring") trellis_encoder_ss::trellis_encoder_ss " + +Params: (FSM, ST)" + +%feature("docstring") trellis_encoder_ss::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_ss::ST " + +Params: (NONE)" + +%feature("docstring") trellis_encoder_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_encoder_ss "Creates a encoder_ss block. + +Convolutional encoder. + +Params: (FSM, ST)" + +%feature("docstring") trellis_metrics_c "Evaluate metrics for use by the Viterbi algorithm." + +%feature("docstring") trellis_metrics_c::trellis_metrics_c " + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_c::O " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_c::D " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_c::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_c::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_c::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_metrics_c::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_metrics_c::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_metrics_c "Creates a metrics_c block. + +Evaluate metrics for use by the Viterbi algorithm. + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_f "Evaluate metrics for use by the Viterbi algorithm." + +%feature("docstring") trellis_metrics_f::trellis_metrics_f " + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_f::O " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_f::D " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_f::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_f::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_f::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_metrics_f::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_metrics_f::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_metrics_f "Creates a metrics_f block. + +Evaluate metrics for use by the Viterbi algorithm. + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_i "Evaluate metrics for use by the Viterbi algorithm." + +%feature("docstring") trellis_metrics_i::trellis_metrics_i " + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_i::O " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_i::D " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_i::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_i::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_i::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_metrics_i::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_metrics_i::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_metrics_i "Creates a metrics_i block. + +Evaluate metrics for use by the Viterbi algorithm. + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_s "Evaluate metrics for use by the Viterbi algorithm." + +%feature("docstring") trellis_metrics_s::trellis_metrics_s " + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_metrics_s::O " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_s::D " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_s::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_s::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_metrics_s::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_metrics_s::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_metrics_s::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_metrics_s "Creates a metrics_s block. + +Evaluate metrics for use by the Viterbi algorithm. + +Params: (O, D, TABLE, TYPE)" + +%feature("docstring") trellis_permutation "Permutation." + +%feature("docstring") trellis_permutation::trellis_permutation " + +Params: (K, TABLE, SYMS_PER_BLOCK, NBYTES)" + +%feature("docstring") trellis_permutation::K " + +Params: (NONE)" + +%feature("docstring") trellis_permutation::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_permutation::SYMS_PER_BLOCK " + +Params: (NONE)" + +%feature("docstring") trellis_permutation::NBYTES_INOUT " + +Params: (NONE)" + +%feature("docstring") trellis_permutation::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") trellis_make_permutation "Creates a permutation block. + +Permutation. + +Params: (K, TABLE, SYMS_PER_BLOCK, NBYTES)" + + + +%feature("docstring") trellis_siso_combined_f::trellis_siso_combined_f " + +Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE, D, TABLE, TYPE)" + +%feature("docstring") trellis_siso_combined_f::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::K " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::SK " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::POSTI " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::POSTO " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::SISO_TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::D " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_siso_combined_f::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_siso_combined_f::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_siso_combined_f "Creates a siso_combined_f block. + + + +Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_siso_f::trellis_siso_f " + +Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE)" + +%feature("docstring") trellis_siso_f::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::K " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::SK " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::POSTI " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::POSTO " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::SISO_TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_siso_f::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_siso_f::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_siso_f "Creates a siso_f block. + + + +Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE)" + + + +%feature("docstring") trellis_viterbi_b::trellis_viterbi_b " + +Params: (FSM, K, S0, SK)" + +%feature("docstring") trellis_viterbi_b::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_b::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_b::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_b::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_b::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_b::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_b "Creates a viterbi_b block. + + + +Params: (FSM, K, S0, SK)" + + + +%feature("docstring") trellis_viterbi_combined_cb::trellis_viterbi_combined_cb " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_cb::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cb::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_cb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_cb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_cb "Creates a viterbi_combined_cb block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_ci::trellis_viterbi_combined_ci " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_ci::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ci::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_ci::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_ci::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_ci "Creates a viterbi_combined_ci block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_cs::trellis_viterbi_combined_cs " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_cs::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_cs::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_cs::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_cs::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_cs "Creates a viterbi_combined_cs block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_fb::trellis_viterbi_combined_fb " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_fb::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fb::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_fb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_fb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_fb "Creates a viterbi_combined_fb block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_fi::trellis_viterbi_combined_fi " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_fi::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fi::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_fi::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_fi::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_fi "Creates a viterbi_combined_fi block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_fs::trellis_viterbi_combined_fs " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_fs::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_fs::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_fs::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_fs::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_fs "Creates a viterbi_combined_fs block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_ib::trellis_viterbi_combined_ib " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_ib::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ib::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_ib::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_ib::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_ib "Creates a viterbi_combined_ib block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_ii::trellis_viterbi_combined_ii " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_ii::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ii::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_ii::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_ii::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_ii "Creates a viterbi_combined_ii block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_is::trellis_viterbi_combined_is " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_is::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_is::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_is::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_is::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_is "Creates a viterbi_combined_is block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_sb::trellis_viterbi_combined_sb " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_sb::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_sb::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_sb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_sb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_sb "Creates a viterbi_combined_sb block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_si::trellis_viterbi_combined_si " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_si::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_si::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_si::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_si::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_si "Creates a viterbi_combined_si block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_combined_ss::trellis_viterbi_combined_ss " + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + +%feature("docstring") trellis_viterbi_combined_ss::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::D " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::TABLE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::TYPE " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_combined_ss::set_TABLE " + +Params: (table)" + +%feature("docstring") trellis_viterbi_combined_ss::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_combined_ss::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_combined_ss "Creates a viterbi_combined_ss block. + + + +Params: (FSM, K, S0, SK, D, TABLE, TYPE)" + + + +%feature("docstring") trellis_viterbi_i::trellis_viterbi_i " + +Params: (FSM, K, S0, SK)" + +%feature("docstring") trellis_viterbi_i::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_i::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_i::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_i::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_i::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_i::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_i "Creates a viterbi_i block. + + + +Params: (FSM, K, S0, SK)" + + + +%feature("docstring") trellis_viterbi_s::trellis_viterbi_s " + +Params: (FSM, K, S0, SK)" + +%feature("docstring") trellis_viterbi_s::FSM " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_s::K " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_s::S0 " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_s::SK " + +Params: (NONE)" + +%feature("docstring") trellis_viterbi_s::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") trellis_viterbi_s::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") trellis_make_viterbi_s "Creates a viterbi_s block. + + + +Params: (FSM, K, S0, SK)" + + + +%feature("docstring") usrp2_sink_16sc::usrp2_sink_16sc " + +Params: (ifc, mac)" + +%feature("docstring") usrp2_sink_16sc::~usrp2_sink_16sc " + +Params: (NONE)" + +%feature("docstring") usrp2_sink_16sc::work "Derived class must override this. + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp2_make_sink_16sc "Creates a sink_16sc block. + + + +Params: (ifc, mac)" + + + +%feature("docstring") usrp2_sink_32fc::usrp2_sink_32fc " + +Params: (ifc, mac)" + +%feature("docstring") usrp2_sink_32fc::~usrp2_sink_32fc " + +Params: (NONE)" + +%feature("docstring") usrp2_sink_32fc::work "Derived class must override this. + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp2_make_sink_32fc "Creates a sink_32fc block. + + + +Params: (ifc, mac)" + + + +%feature("docstring") usrp2_source_16sc::usrp2_source_16sc " + +Params: (ifc, mac)" + +%feature("docstring") usrp2_source_16sc::~usrp2_source_16sc " + +Params: (NONE)" + +%feature("docstring") usrp2_source_16sc::work "Derived class must override this. + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp2_make_source_16sc "Creates a source_16sc block. + + + +Params: (ifc, mac)" + + + +%feature("docstring") usrp2_source_32fc::usrp2_source_32fc " + +Params: (ifc, mac)" + +%feature("docstring") usrp2_source_32fc::~usrp2_source_32fc " + +Params: (NONE)" + +%feature("docstring") usrp2_source_32fc::work "Derived class must override this. + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp2_make_source_32fc "Creates a source_32fc block. + + + +Params: (ifc, mac)" + +%feature("docstring") usrp_sink_c "Interface to Universal Software Radio Peripheral Tx path + +input: gr_complex." + +%feature("docstring") usrp_sink_c::usrp_sink_c " + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_sink_c::copy_to_usrp_buffer "convert between input item format and usrp native format + +Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" + +%feature("docstring") usrp_sink_c::~usrp_sink_c " + +Params: (NONE)" + +%feature("docstring") usrp_make_sink_c "Creates a sink_c block. + +Interface to Universal Software Radio Peripheral Tx path + +input: gr_complex. + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_sink_s "Interface to Universal Software Radio Peripheral Tx path + +input: short." + +%feature("docstring") usrp_sink_s::usrp_sink_s " + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_sink_s::copy_to_usrp_buffer "convert between input item format and usrp native format + +Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" + +%feature("docstring") usrp_sink_s::~usrp_sink_s " + +Params: (NONE)" + +%feature("docstring") usrp_make_sink_s "Creates a sink_s block. + +Interface to Universal Software Radio Peripheral Tx path + +input: short. + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_source_c "Interface to Universal Software Radio Peripheral Rx path + +output: 1 stream of complex" + +%feature("docstring") usrp_source_c::usrp_source_c " + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_source_c::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. + +Params: (noutput_items)" + +%feature("docstring") usrp_source_c::copy_from_usrp_buffer "convert between native usrp format and output item format + +The copy must consume all bytes available. That is, must equal . + +Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" + +%feature("docstring") usrp_source_c::~usrp_source_c " + +Params: (NONE)" + +%feature("docstring") usrp_make_source_c "Creates a source_c block. + +Interface to Universal Software Radio Peripheral Rx path + +output: 1 stream of complex + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_source_s "Interface to Universal Software Radio Peripheral Rx path + +output: 1 stream of short." + +%feature("docstring") usrp_source_s::usrp_source_s " + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_source_s::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. + +Params: (noutput_items)" + +%feature("docstring") usrp_source_s::copy_from_usrp_buffer "convert between native usrp format and output item format + +The copy must consume all bytes available. That is, must equal . + +Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" + +%feature("docstring") usrp_source_s::~usrp_source_s " + +Params: (NONE)" + +%feature("docstring") usrp_make_source_s "Creates a source_s block. + +Interface to Universal Software Radio Peripheral Rx path + +output: 1 stream of short. + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") audio_alsa_make_sink "make an alsa audio sink. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_alsa_make_source "Make an ALSA audio source. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_jack_make_sink "make an JACK audio sink. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") jack_sink_process " + +Params: (nframes, arg)" + +%feature("docstring") audio_jack_make_source "make a JACK audio source. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") jack_source_process " + +Params: (nframes, arg)" + +%feature("docstring") audio_oss_make_sink " + +Params: (sampling_rate, dev, ok_to_block)" + +%feature("docstring") audio_oss_make_source " + +Params: (sampling_rate, dev, ok_to_block)" + +%feature("docstring") audio_osx_make_sink " + +Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" + +%feature("docstring") audio_osx_make_source " + +Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" + +%feature("docstring") audio_portaudio_make_sink "PORTAUDIO audio sink. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_portaudio_make_source "PORTAUDIO audio source. + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_windows_make_sink " + +Params: (sampling_freq, dev)" + +%feature("docstring") audio_windows_make_source " + +Params: (sampling_freq, dev)" + +%feature("docstring") dec2base "change base + +Params: (num, base, s)" + +%feature("docstring") dec2bases " + +Params: (num, bases, s)" + +%feature("docstring") base2dec " + +Params: (s, base)" + +%feature("docstring") bases2dec " + +Params: (s, bases)" + +%feature("docstring") ccomplex_dotprod_generic " + +Params: (input, taps, n_2_ccomplex_blocks, result)" + +%feature("docstring") ccomplex_dotprod_3dnow " + +Params: (input, taps, n_2_ccomplex_blocks, result)" + +%feature("docstring") ccomplex_dotprod_3dnowext " + +Params: (input, taps, n_2_ccomplex_blocks, result)" + +%feature("docstring") ccomplex_dotprod_sse " + +Params: (input, taps, n_2_ccomplex_blocks, result)" + +%feature("docstring") modnn " + +Params: (rs, x)" + +%feature("docstring") complex_dotprod_generic " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") complex_dotprod_3dnow " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") complex_dotprod_3dnowext " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") complex_dotprod_sse " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") create_atsci_equalizer_nop " + +Params: (NONE)" + +%feature("docstring") create_atsci_equalizer_lms " + +Params: (NONE)" + +%feature("docstring") create_atsci_equalizer_lms2 " + +Params: (NONE)" + +%feature("docstring") create_atsci_fs_checker "Factory that creates appropriate atsci_fs_checker + +Params: (NONE)" + +%feature("docstring") create_atsci_fs_correlator "Factory that creates appropriate atsci_fs_correlator + +Params: (NONE)" + +%feature("docstring") cvsd_make_decode_bs "Constructor parameters to initialize the CVSD decoder. The default values are modeled after the Bluetooth standard and should not be changed, except by an advanced user. + +Params: (min_step, max_step, step_decay, accum_decay, K, J, pos_accum_max, neg_accum_max)" + +%feature("docstring") cvsd_make_encode_sb "Constructor parameters to initialize the CVSD encoder. The default values are modeled after the Bluetooth standard and should not be changed except by an advanced user. + +Params: (min_step, max_step, step_decay, accum_decay, K, J, pos_accum_max, neg_accum_max)" + +%feature("docstring") darwin_error_str " + +Params: (result)" + +%feature("docstring") darwin_to_errno " + +Params: (result)" + +%feature("docstring") ep_to_pipeRef " + +Params: (device, ep)" + +%feature("docstring") operator<< " + +Params: (os, x)" + +%feature("docstring") instantiate_dbs " + +Params: (dbid, usrp, which_side)" + +%feature("docstring") int_seq_to_str " + +Params: (seq)" + +%feature("docstring") str_to_int_seq " + +Params: (str)" + +%feature("docstring") make_dial_tone " + +Params: (NONE)" + +%feature("docstring") dotprod_fff_altivec " + +Params: (a, b, n)" + +%feature("docstring") dotprod_fff_armv7_a " + +Params: (a, b, n)" + +%feature("docstring") fcomplex_dotprod_3dnow " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") fcomplex_dotprod_sse " + +Params: (input, taps, n_2_complex_blocks, result)" + +%feature("docstring") _fft_1d_r2 " + +Params: (out, in, W, log2_size)" + +%feature("docstring") mod255 " + +Params: (x)" + +%feature("docstring") float_dotprod_generic " + +Params: (input, taps, n_4_float_blocks)" + +%feature("docstring") float_dotprod_3dnow " + +Params: (input, taps, n_4_float_blocks)" + +%feature("docstring") float_dotprod_sse " + +Params: (input, taps, n_4_float_blocks)" + +%feature("docstring") ep_to_pipeRef " + +Params: (device, ep)" + +%feature("docstring") g72x_init_state " + +Params: ()" + +%feature("docstring") g721_encoder " + +Params: (sample, in_coding, state_ptr)" + +%feature("docstring") g721_decoder " + +Params: (code, out_coding, state_ptr)" + +%feature("docstring") g723_24_encoder " + +Params: (sample, in_coding, state_ptr)" + +%feature("docstring") g723_24_decoder " + +Params: (code, out_coding, state_ptr)" + +%feature("docstring") g723_40_encoder " + +Params: (sample, in_coding, state_ptr)" + +%feature("docstring") g723_40_decoder " + +Params: (code, out_coding, state_ptr)" + +%feature("docstring") quantize " + +Params: (d, y, table, size)" + +%feature("docstring") reconstruct " + +Params: (, , )" + +%feature("docstring") update " + +Params: (code_size, y, wi, fi, dq, sr, dqsez, state_ptr)" + +%feature("docstring") tandem_adjust_alaw " + +Params: (sr, se, y, i, sign, qtab)" + +%feature("docstring") tandem_adjust_ulaw " + +Params: (sr, se, y, i, sign, qtab)" + +%feature("docstring") linear2alaw " + +Params: (pcm_val)" + +%feature("docstring") alaw2linear " + +Params: (a_val)" + +%feature("docstring") linear2ulaw " + +Params: (pcm_val)" + +%feature("docstring") ulaw2linear " + +Params: (u_val)" + +%feature("docstring") predictor_zero " + +Params: (state_ptr)" + +%feature("docstring") predictor_pole " + +Params: (state_ptr)" + +%feature("docstring") step_size " + +Params: (state_ptr)" + +%feature("docstring") gc_aligned_alloc "Return pointer to chunk of storage of size size bytes. The allocation will be aligned to an boundary. + +Throws if can't allocate memory. The storage should be freed with \"free\" when done. The memory is initialized to zero. + +Params: (size, alignment)" + +%feature("docstring") gc_udelay " + +Params: (usecs)" + +%feature("docstring") gc_cdelay " + +Params: (cpu_cycles)" + +%feature("docstring") gc_jd_queue_init "Initialize the queue to empty. + +Params: (q)" + +%feature("docstring") gc_jd_queue_enqueue "Add to the tail of . + +Params: (q, item)" + +%feature("docstring") gc_jd_queue_dequeue "Remove and return item at head of queue, or 0 if queue is empty. + +Params: (q)" + +%feature("docstring") gc_jd_queue_dequeue "Remove and return item at head of queue. + +If return is not GCQ_OK, we're holding a lock-line reservation that covers the queue. + +Params: (q, item_ea, jd_tag, item)" + +%feature("docstring") gc_jd_stack_init "Initialize the stack to empty. + +Params: (stack)" + +%feature("docstring") gc_jd_stack_push "Add to the top of . + +Params: (stack, item)" + +%feature("docstring") gc_jd_stack_pop "pop and return top item on stack, or 0 if stack is empty + +Params: (stack)" + +%feature("docstring") ea_to_jdp " + +Params: (ea)" + +%feature("docstring") jdp_to_ea " + +Params: (item)" + +%feature("docstring") gc_program_handle_from_filename "Return a boost::shared_ptr to an spe_program_handle_t. + +Calls spe_image_open to open the file. If successful returns a boost::shared_ptr that will call spe_image_close when it's time to free the object. + +Returns the equivalent of the NULL pointer if the file cannot be opened, or if it's not an SPE ELF object file. + +Params: (filename)" + +%feature("docstring") gc_program_handle_from_address "Return a boost::shared_ptr to an spe_program_handle_t. + +If successful returns a boost::shared_ptr that does nothing when it's time to free the object. + +Params: (handle)" + +%feature("docstring") gc_job_status_string "map gc_job_status_t into a string + +Params: (status)" + +%feature("docstring") gc_make_job_manager " + +Params: (options)" + +%feature("docstring") gcpd_find_table "find the gc_proc_def table in the SPE program + +Params: (program, table, nentries, ls_addr)" + +%feature("docstring") gc_uniform_deviate "Return a uniformly distributed value in the range [0, 1.0) (Linear congruential generator. YMMV. Caveat emptor.). + +Params: ()" + +%feature("docstring") gc_set_seed " + +Params: (seed)" + +%feature("docstring") ea_to_ptr " + +Params: (ea)" + +%feature("docstring") ptr_to_ea " + +Params: (p)" + +%feature("docstring") gcp_fft_1d_r2_submit "Submit a job that computes the forward or inverse FFT. + +Returns a shared_ptr to a job descriptor which should be passed to wait_job*. Throws an exception in the event of a problem. This uses the FFTW conventions for scaling. That is, neither the forward nor inverse are scaled by 1/fft_length. + +Params: (mgr, log2_fft_length, forward, shift, out, in, twiddle, window)" + +%feature("docstring") gcp_fft_1d_r2_twiddle "Compute twiddle factors. + +Params: (log2_fft_length, W)" + +%feature("docstring") operator< " + +Params: (lhs, rhs)" + +%feature("docstring") gr_basic_block_ncurrently_allocated " + +Params: (NONE)" + +%feature("docstring") operator<< " + +Params: (os, basic_block)" + +%feature("docstring") operator<< " + +Params: (os, m)" + +%feature("docstring") gr_block_detail_ncurrently_allocated " + +Params: (NONE)" + +%feature("docstring") gr_buffer_add_reader "Create a new gr_buffer_reader and attach it to buffer . + +Params: (buf, nzero_preload, link)" + +%feature("docstring") gr_buffer_ncurrently_allocated "returns # of gr_buffers currently allocated + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader_ncurrently_allocated "returns # of gr_buffer_readers currently allocated + +Params: (NONE)" + +%feature("docstring") is_complex " + +Params: (x)" + +%feature("docstring") gr_prefix "return ./configure --prefix argument. Typically /usr/local + +Params: (NONE)" + +%feature("docstring") gr_sysconfdir "return ./configure --sysconfdir argument. Typically $prefix/etc or /etc + +Params: (NONE)" + +%feature("docstring") gr_prefsdir "return preferences file directory. Typically $sysconfdir/etc/conf.d + +Params: (NONE)" + +%feature("docstring") gr_build_date "return date/time of build, as set when 'bootstrap' is run + +Params: (NONE)" + +%feature("docstring") gr_version "return version string defined in configure.ac + +Params: (NONE)" + +%feature("docstring") gr_count_bits8 " + +Params: (x)" + +%feature("docstring") gr_count_bits16 " + +Params: (x)" + +%feature("docstring") gr_count_bits32 " + +Params: (x)" + +%feature("docstring") gr_count_bits64 " + +Params: (x)" + +%feature("docstring") gr_update_crc32 "update running CRC-32 + +Update a running CRC with the bytes buf[0..len-1] The CRC should be initialized to all 1's, and the transmitted value is the 1's complement of the final running CRC. The resulting CRC should be transmitted in big endian order. + +Params: (crc, buf, len)" + +%feature("docstring") gr_crc32 " + +Params: (buf, len)" + +%feature("docstring") gr_dispatcher_singleton " + +Params: (NONE)" + +%feature("docstring") gr_expj " + +Params: (phase)" + +%feature("docstring") gr_feval_dd_example "trivial examples / test cases showing C++ calling Python code + +Params: (f, x)" + +%feature("docstring") gr_feval_cc_example " + +Params: (f, x)" + +%feature("docstring") gr_feval_ll_example " + +Params: (f, x)" + +%feature("docstring") gr_feval_example " + +Params: (f)" + +%feature("docstring") gr_fir_sysconfig_singleton " + +Params: (NONE)" + +%feature("docstring") operator<< " + +Params: (os, endp)" + +%feature("docstring") gr_make_io_signature "Create an i/o signature. + +Params: (min_streams, max_streams, sizeof_stream_item)" + +%feature("docstring") gr_make_io_signature2 "Create an i/o signature. + +Params: (min_streams, max_streams, sizeof_stream_item1, sizeof_stream_item2)" + +%feature("docstring") gr_make_io_signature3 "Create an i/o signature. + +Params: (min_streams, max_streams, sizeof_stream_item1, sizeof_stream_item2, sizeof_stream_item3)" + +%feature("docstring") gr_make_io_signaturev "Create an i/o signature. + +If there are more streams than there are entries in sizeof_stream_items, the value of the last entry in sizeof_stream_items is used for the missing values. sizeof_stream_items must contain at least 1 entry. + +Params: (min_streams, max_streams, sizeof_stream_items)" + +%feature("docstring") gr_log2_const " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 1 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 2 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 4 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 8 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 16 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 32 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 64 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 128 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 256 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 512 > " + +Params: (NONE)" + +%feature("docstring") gr_log2_const< 1024 > " + +Params: (NONE)" + +%feature("docstring") gr_is_power_of_2 " + +Params: (x)" + +%feature("docstring") gr_gcd " + +Params: (m, n)" + +%feature("docstring") gr_isnan " + +Params: (value)" + +%feature("docstring") gr_signbit " + +Params: (x)" + +%feature("docstring") gr_fast_atan2f "Fast arc tangent using table lookup and linear interpolation. + +This function calculates the angle of the vector (x,y) based on a table lookup and linear interpolation. The table uses a 256 point table covering -45 to +45 degrees and uses symetry to determine the final angle value in the range of -180 to 180 degrees. Note that this function uses the small angle approximation for values close to zero. This routine calculates the arc tangent with an average error of +/- 0.045 degrees. + +Params: (y, x)" + +%feature("docstring") gr_branchless_clip " + +Params: (x, clip)" + +%feature("docstring") gr_clip " + +Params: (x, clip)" + +%feature("docstring") gr_binary_slicer " + +Params: (x)" + +%feature("docstring") gr_quad_45deg_slicer " + +Params: (r, i)" + +%feature("docstring") gr_quad_0deg_slicer " + +Params: (r, i)" + +%feature("docstring") gr_branchless_binary_slicer " + +Params: (x)" + +%feature("docstring") gr_branchless_quad_0deg_slicer " + +Params: (r, i)" + +%feature("docstring") gr_branchless_quad_45deg_slicer " + +Params: (r, i)" + +%feature("docstring") gr_p2_round_down " + +Params: (x, pow2)" + +%feature("docstring") gr_p2_round_up " + +Params: (x, pow2)" + +%feature("docstring") gr_p2_modulo " + +Params: (x, pow2)" + +%feature("docstring") gr_p2_modulo_neg " + +Params: (x, pow2)" + +%feature("docstring") gr_make_message_from_string " + +Params: (s, type, arg1, arg2)" + +%feature("docstring") gr_message_ncurrently_allocated " + +Params: (NONE)" + +%feature("docstring") gr_rounduppow2 " + +Params: (n)" + +%feature("docstring") gr_zero_vector " + +Params: (v)" + +%feature("docstring") gr_make_msg_queue " + +Params: (limit)" + +%feature("docstring") gr_pagesize "return the page size in bytes + +Params: (NONE)" + +%feature("docstring") gr_enable_realtime_scheduling "If possible, enable high-priority \"real time\" scheduling. + +Params: (NONE)" + +%feature("docstring") gr_remez "Parks-McClellan FIR filter design. + +Calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands. + + +Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2) + +Params: (order, bands, ampl, error_weight, filter_type, grid_density)" + +%feature("docstring") gr_reverse " + +Params: (taps)" + +%feature("docstring") gr_sincos " + +Params: (x, sin, cos)" + +%feature("docstring") gr_sincosf " + +Params: (x, sin, cos)" + +%feature("docstring") gr_tmp_path "return directory portion of pathname used for temporary files. + +Params: (NONE)" + +%feature("docstring") ensure_unittest_path " + +Params: (grpath, path)" + +%feature("docstring") get_unittest_path " + +Params: (filename, fullpath, pathsize)" + +%feature("docstring") gri_add_const_ss "Low-level, high-speed add_const_ss primitive. + +copy src to dst adding konst + +Params: (dst, src, nshorts, konst)" + +%feature("docstring") gri_alsa_dump_hw_params " + +Params: (pcm, hwparams, fp)" + +%feature("docstring") gri_alsa_pick_acceptable_format " + +Params: (pcm, hwparams, acceptable_formats, nacceptable_formats, selected_format, error_msg_tag, verbose)" + +%feature("docstring") gri_char_to_float " + +Params: (in, out, nsamples)" + +%feature("docstring") gri_float_to_char "convert array of floats to chars with rounding and saturation. + +Params: (in, out, nsamples)" + +%feature("docstring") gri_float_to_short "convert array of floats to shorts with rounding and saturation. + +Params: (in, out, nsamples)" + +%feature("docstring") gri_float_to_uchar "convert array of floats to unsigned chars with rounding and saturation. + +Params: (in, out, nsamples)" + +%feature("docstring") gri_interleaved_short_to_complex " + +Params: (in, out, nsamples)" + +%feature("docstring") gri_pa_find_device_by_name " + +Params: (name)" + +%feature("docstring") gri_print_devices " + +Params: (NONE)" + +%feature("docstring") gri_short_to_float " + +Params: (in, out, nsamples)" + +%feature("docstring") gri_uchar_to_float " + +Params: (in, out, nsamples)" + +%feature("docstring") gri_wav_read_sample "Read one sample from an open WAV file at the current position. + +Takes care of endianness. + +Params: (fp, bytes_per_sample)" + +%feature("docstring") gri_wavheader_write "Write a valid RIFF file header. + +Note: Some header values are kept blank because they're usually not known a-priori (file and chunk lengths). Use gri_wavheader_complete() to fill these in. + +Params: (fp, sample_rate, nchans, bytes_per_sample)" + +%feature("docstring") gri_wav_write_sample "Write one sample to an open WAV file at the current position. + +Takes care of endianness. + +Params: (fp, sample, bytes_per_sample)" + +%feature("docstring") gri_wavheader_complete "Complete a WAV header. + +Note: The stream position is changed during this function. If anything needs to be written to the WAV file after calling this function (which shouldn't happen), you need to fseek() to the end of the file (or whereever). + + File pointer to an open WAV file with a blank header Length of all samples written to the file in bytes. + +Params: (fp, byte_count)" + +%feature("docstring") gsm_fr_make_decode_ps " + +Params: (NONE)" + +%feature("docstring") gsm_fr_make_encode_sp " + +Params: (NONE)" + +%feature("docstring") make_i2c_bbio_pp " + +Params: (pp)" + +%feature("docstring") make_i2c_bitbang " + +Params: (io)" + +%feature("docstring") htonll " + +Params: (x)" + +%feature("docstring") ntohll " + +Params: (x)" + +%feature("docstring") ntohx " + +Params: (x)" + +%feature("docstring") htonx " + +Params: (x)" + +%feature("docstring") modnn " + +Params: (rs, x)" + +%feature("docstring") fft_1d_r2 " + +Params: (out, in, W, log2_size)" + +%feature("docstring") malloc16Align " + +Params: (size)" + +%feature("docstring") calloc16Align " + +Params: (nmemb, size)" + +%feature("docstring") free16Align " + +Params: (p)" + +%feature("docstring") md5_init_ctx " + +Params: (ctx)" + +%feature("docstring") md5_process_block " + +Params: (buffer, len, ctx)" + +%feature("docstring") md5_process_bytes " + +Params: (buffer, len, ctx)" + +%feature("docstring") md5_finish_ctx " + +Params: (ctx, resbuf)" + +%feature("docstring") md5_read_ctx " + +Params: (ctx, resbuf)" + +%feature("docstring") md5_stream " + +Params: (stream, resblock)" + +%feature("docstring") md5_buffer " + +Params: (buffer, len, resblock)" + +%feature("docstring") smp_mb " + +Params: ()" + +%feature("docstring") smp_rmb " + +Params: ()" + +%feature("docstring") smp_wmb " + +Params: ()" + +%feature("docstring") msdd_rs_make_source_simple " + +Params: (src, port_src)" + +%feature("docstring") pageri_bch3221 " + +Params: (data)" + +%feature("docstring") find_flex_mode " + +Params: (sync_code)" + +%feature("docstring") is_alphanumeric_page " + +Params: (type)" + +%feature("docstring") is_numeric_page " + +Params: (type)" + +%feature("docstring") is_tone_page " + +Params: (type)" + +%feature("docstring") pageri_reverse_bits8 " + +Params: (val)" + +%feature("docstring") pageri_reverse_bits32 " + +Params: (val)" + +%feature("docstring") posix_memalign " + +Params: (memptr, alignment, size)" + +%feature("docstring") make_ppio "Factory method. + +Split out from class to make life easier for SWIG + +Params: (which_pp)" + +%feature("docstring") make_ppio_ppdev " + +Params: (which)" + +%feature("docstring") SWAP " + +Params: (a, b)" + +%feature("docstring") quicksort_index " + +Params: (p, index, left, right)" + +%feature("docstring") encode_rs_char " + +Params: (rs, data, parity)" + +%feature("docstring") decode_rs_char " + +Params: (rs, data, eras_pos, no_eras)" + +%feature("docstring") init_rs_char " + +Params: (symsize, gfpoly, fcr, prim, nroots)" + +%feature("docstring") free_rs_char " + +Params: (rs)" + +%feature("docstring") encode_rs_int " + +Params: (rs, data, parity)" + +%feature("docstring") decode_rs_int " + +Params: (rs, data, eras_pos, no_eras)" + +%feature("docstring") init_rs_int " + +Params: (symsize, gfpoly, fcr, prim, nroots)" + +%feature("docstring") free_rs_int " + +Params: (rs)" + +%feature("docstring") encode_rs_8 " + +Params: (data, parity)" + +%feature("docstring") decode_rs_8 " + +Params: (data, eras_pos, no_eras)" + +%feature("docstring") short_dotprod_generic " + +Params: (input, taps, n_4_short_blocks)" + +%feature("docstring") short_dotprod_mmx " + +Params: (input, taps, n_4_short_blocks)" + +%feature("docstring") short_dotprod_sse2 " + +Params: (input, taps, n_4_short_blocks)" + +%feature("docstring") qsimp " + +Params: (func, a, b)" + +%feature("docstring") strtod_si "convert string at s to double honoring any trailing SI suffixes + +Params: (s, result)" + +%feature("docstring") calc_metric " + +Params: (O, D, TABLE, in, metric, type)" + +%feature("docstring") operator<< " + +Params: (os, x)" + +%feature("docstring") bswap_16 "routines for convertering between host and usrp byte order + +Prior to including this file, the user must include \"config.h\" which will or won't define WORDS_BIGENDIAN based on the result of the AC_C_BIGENDIAN autoconf test. + +Params: (x)" + +%feature("docstring") bswap_32 " + +Params: (x)" + +%feature("docstring") host_to_usrp_u32 " + +Params: (x)" + +%feature("docstring") usrp_to_host_u32 " + +Params: (x)" + +%feature("docstring") host_to_usrp_short " + +Params: (x)" + +%feature("docstring") usrp_to_host_short " + +Params: (x)" + +%feature("docstring") usrp_rx_config_stream_count "given a usrp_rx_config word, return the number of I & Q streams that are interleaved on the USB. + +Params: (usrp_rx_config)" + +%feature("docstring") usrp_tx_config_stream_count "given a usrp_tx_config word, return the number of I & Q streams that are interleaved on the USB. + +Params: (usrp_tx_config)" + +%feature("docstring") usrp_one_time_init "initialize libusb; Behavior differs depending on libusb version + +libusb-0.12 + +Probe busses and devices. The argument is ignored and defaults to NULL. Safe to call more than once. + +libusb-1.0 + +If an location to a libusb_context is passed in, create and write in the new context. If no argument is provided, initialize libusb with the default (NULL) context. + +Generally _not_ safe to call more than once with non-NULL argument since a new context will be created each time. + +Params: (ctx)" + +%feature("docstring") usrp_deinit "deinitialize libusb + +libusb-0.1: No effect + +libusb-1.0: Deinitialize context ctx + +Params: (ctx)" + +%feature("docstring") usrp_rescan " + +Params: (NONE)" + +%feature("docstring") usrp_find_device "locate Nth (zero based) USRP device in system. Return pointer or 0 if not found. + +The following kinds of devices are considered USRPs: + +unconfigured USRP (no firwmare loaded) configured USRP (firmware loaded) unconfigured Cypress FX2 (only if fx2_ok_p is true) + +Params: (nth, fx2_ok_p, ctx)" + +%feature("docstring") usrp_usrp_p " + +Params: (q)" + +%feature("docstring") usrp_usrp0_p " + +Params: (q)" + +%feature("docstring") usrp_usrp1_p " + +Params: (q)" + +%feature("docstring") usrp_usrp2_p " + +Params: (q)" + +%feature("docstring") usrp_hw_rev " + +Params: (q)" + +%feature("docstring") usrp_fx2_p " + +Params: (q)" + +%feature("docstring") usrp_unconfigured_usrp_p " + +Params: (q)" + +%feature("docstring") usrp_configured_usrp_p " + +Params: (q)" + +%feature("docstring") usrp_open_cmd_interface "given a libusb_device return an instance of the appropriate libusb_device_handle + +These routines claim the specified interface and select the correct alternate interface. (USB nomenclature is totally screwed!) + +If interface can't be opened, or is already claimed by some other process, 0 is returned. + +Params: (dev)" + +%feature("docstring") usrp_open_rx_interface " + +Params: (dev)" + +%feature("docstring") usrp_open_tx_interface " + +Params: (dev)" + +%feature("docstring") usrp_close_interface "close interface. + +Params: (udh)" + +%feature("docstring") usrp_load_firmware "load intel hex format file into USRP/Cypress FX2 (8051). + +The filename extension is typically *.ihx + +Note that loading firmware may cause the device to renumerate. I.e., change its configuration, invalidating the current device handle. + +Params: (udh, filename, force)" + +%feature("docstring") usrp_load_firmware_nth "load intel hex format file into USRP FX2 (8051). + +The filename extension is typically *.ihx + +Note that loading firmware may cause the device to renumerate. I.e., change its configuration, invalidating the current device handle. If the result is ULS_OK, usrp_load_firmware_nth delays 1 second then rescans the busses and devices. + +Params: (nth, filename, force, ctx)" + +%feature("docstring") usrp_load_fpga "load fpga configuration bitstream + +Params: (udh, filename, force)" + +%feature("docstring") usrp_load_standard_bits "load the regular firmware and fpga bitstream in the Nth USRP. + +This is the normal starting point... + +Params: (nth, force, fpga_filename, firmware_filename, ctx)" + +%feature("docstring") usrp_set_hash "copy the given into the USRP hash slot . The usrp implements two hash slots, 0 and 1. + +Params: (udh, which, hash)" + +%feature("docstring") usrp_get_hash "retrieve the from the USRP hash slot . The usrp implements two hash slots, 0 and 1. + +Params: (udh, which, hash)" + +%feature("docstring") usrp_write_fpga_reg " + +Params: (udh, reg, value)" + +%feature("docstring") usrp_read_fpga_reg " + +Params: (udh, reg, value)" + +%feature("docstring") usrp_set_fpga_reset " + +Params: (udh, on)" + +%feature("docstring") usrp_set_fpga_tx_enable " + +Params: (udh, on)" + +%feature("docstring") usrp_set_fpga_rx_enable " + +Params: (udh, on)" + +%feature("docstring") usrp_set_fpga_tx_reset " + +Params: (udh, on)" + +%feature("docstring") usrp_set_fpga_rx_reset " + +Params: (udh, on)" + +%feature("docstring") usrp_set_led " + +Params: (udh, which, on)" + +%feature("docstring") usrp_check_rx_overrun " + +Params: (udh, overrun_p)" + +%feature("docstring") usrp_check_tx_underrun " + +Params: (udh, underrun_p)" + +%feature("docstring") usrp_i2c_write " + +Params: (udh, i2c_addr, buf, len)" + +%feature("docstring") usrp_i2c_read " + +Params: (udh, i2c_addr, buf, len)" + +%feature("docstring") usrp_spi_write " + +Params: (udh, optional_header, enables, format, buf, len)" + +%feature("docstring") usrp_spi_read " + +Params: (udh, optional_header, enables, format, buf, len)" + +%feature("docstring") usrp_9862_write " + +Params: (udh, which_codec, regno, value)" + +%feature("docstring") usrp_9862_read " + +Params: (udh, which_codec, regno, value)" + +%feature("docstring") usrp_9862_write_many "Write multiple 9862 regs at once. + +contains alternating register_number, register_value pairs. must be even and is the length of buf in bytes. + +Params: (udh, which_codec, buf, len)" + +%feature("docstring") usrp_9862_write_many_all "write specified regs to all 9862's in the system + +Params: (udh, buf, len)" + +%feature("docstring") usrp_eeprom_write " + +Params: (udh, i2c_addr, eeprom_offset, buf, len)" + +%feature("docstring") usrp_eeprom_read " + +Params: (udh, i2c_addr, eeprom_offset, buf, len)" + +%feature("docstring") usrp_write_aux_dac "write to the specified aux dac. + +which Tx or Rx slot to write. N.B., SLOT_TX_A and SLOT_RX_A share the same AUX DAC's SLOT_TX_B and SLOT_RX_B share the same AUX DAC's + + [0,3] RX slots must use only 0 and 1. TX slots must use only 2 and 3. + +AUX DAC 3 is really the 9862 sigma delta output. + + to write to aux dac. All dacs take straight binary values. Although dacs 0, 1 and 2 are 8-bit and dac 3 is 12-bit, the interface is in terms of 12-bit values [0,4095] + +Params: (uhd, slot, which_dac, value)" + +%feature("docstring") usrp_read_aux_adc "Read the specified aux adc. + +which Tx or Rx slot to read aux dac [0,1] which of the two adcs to read : return value, 12-bit straight binary. + +Params: (udh, slot, which_adc, value)" + +%feature("docstring") usrp_dbid_to_string "usrp daughterboard id to name mapping + +Params: (dbid)" + +%feature("docstring") usrp_read_dboard_eeprom "Read and return parsed daughterboard eeprom. + +Params: (udh, slot_id, eeprom)" + +%feature("docstring") usrp_write_dboard_offsets "write ADC/DAC offset calibration constants to d'board eeprom + +Params: (udh, slot_id, offset0, offset1)" + +%feature("docstring") usrp_serial_number "return a usrp's serial number. + +Note that this only works on a configured usrp. + +Params: (udh)" + +%feature("docstring") usrp_open_interface " + +Params: (dev, interface, altinterface)" + +%feature("docstring") write_cmd " + +Params: (udh, request, value, index, bytes, len)" + +%feature("docstring") _get_usb_device " + +Params: (udh)" + +%feature("docstring") _get_usb_device_descriptor " + +Params: (q)" + +%feature("docstring") _get_usb_string_descriptor " + +Params: (udh, index, data, length)" + +%feature("docstring") _usb_control_transfer " + +Params: (udh, request_type, request, value, index, data, length, timeout)" + +%feature("docstring") make_usrp_rx_cfile " + +Params: (which, spec, decim, freq, gain, width8, nohb, output_shorts, nsamples, filename)" + +%feature("docstring") str_to_subdev " + +Params: (spec_str)" + +%feature("docstring") make_usrp_siggen " + +Params: (which, spec, rf_freq, interp, wfreq, waveform, amp, gain, offset, nsamples)" + +%feature("docstring") video_sdl_make_sink_s " + +Params: (framerate, width, height, format, dst_width, dst_height)" + +%feature("docstring") video_sdl_make_sink_uc " + +Params: (framerate, width, height, format, dst_width, dst_height)" + +%feature("docstring") gen_met " + +Params: (mettab, amp, esn0, bias, scale)" + +%feature("docstring") encode " + +Params: (symbols, data, nbytes, encstate)" + +%feature("docstring") viterbi_chunks_init " + +Params: (state)" + +%feature("docstring") viterbi_butterfly2 " + +Params: (symbols, mettab, state0, state1)" + +%feature("docstring") viterbi_get_output " + +Params: (state, outbuf)" + + + +%feature("docstring") _1200_common::_1200_common " + +Params: (NONE)" + +%feature("docstring") _1200_common::~_1200_common " + +Params: (NONE)" + +%feature("docstring") _1200_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _1200_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _1800_common::_1800_common " + +Params: (NONE)" + +%feature("docstring") _1800_common::~_1800_common " + +Params: (NONE)" + +%feature("docstring") _1800_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _1800_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _2200_common::_2200_common " + +Params: (NONE)" + +%feature("docstring") _2200_common::~_2200_common " + +Params: (NONE)" + +%feature("docstring") _2200_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _2200_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _2400_common::_2400_common " + +Params: (NONE)" + +%feature("docstring") _2400_common::~_2400_common " + +Params: (NONE)" + +%feature("docstring") _2400_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _2400_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _400_common::_400_common " + +Params: (NONE)" + +%feature("docstring") _400_common::~_400_common " + +Params: (NONE)" + +%feature("docstring") _400_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _400_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _400_rx::_400_rx " + +Params: (NONE)" + +%feature("docstring") _400_rx::~_400_rx " + +Params: (NONE)" + + + +%feature("docstring") _400_tx::_400_tx " + +Params: (NONE)" + +%feature("docstring") _400_tx::~_400_tx " + +Params: (NONE)" + + + +%feature("docstring") _900_common::_900_common " + +Params: (NONE)" + +%feature("docstring") _900_common::~_900_common " + +Params: (NONE)" + +%feature("docstring") _900_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _900_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _AD4360_common::_AD4360_common " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::~_AD4360_common " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::freq_max " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_compute_regs " + +Params: (refclk_freq, freq, retR, retcontrol, retN, retfreq)" + +%feature("docstring") _AD4360_common::_compute_control_reg " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_prescaler " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::R_DIV " + +Params: (div)" + + + +%feature("docstring") _ADF410X_common::_ADF410X_common " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::~_ADF410X_common " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + +%feature("docstring") _ADF410X_common::_write_all " + +Params: (R, N, control)" + +%feature("docstring") _ADF410X_common::_write_R " + +Params: (R)" + +%feature("docstring") _ADF410X_common::_write_N " + +Params: (N)" + +%feature("docstring") _ADF410X_common::_write_func " + +Params: (func)" + +%feature("docstring") _ADF410X_common::_write_init " + +Params: (init)" + +%feature("docstring") _ADF410X_common::_prescaler " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_write_it " + +Params: (v)" + +%feature("docstring") _ADF410X_common::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_rx_write_io " + +Params: (value, mask)" + +%feature("docstring") _ADF410X_common::_lock_detect " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::usrp " + +Params: (NONE)" + + + +%feature("docstring") _lo_common::_lo_common " + +Params: (NONE)" + +%feature("docstring") _lo_common::~_lo_common " + +Params: (NONE)" + +%feature("docstring") _lo_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _lo_common::freq_max " + +Params: (NONE)" + +%feature("docstring") _lo_common::set_divider " + +Params: (main_or_aux, divisor)" + +%feature("docstring") _lo_common::set_freq " + +Params: (freq)" + + + +%feature("docstring") adf4350::adf4350 " + +Params: (NONE)" + +%feature("docstring") adf4350::~adf4350 " + +Params: (NONE)" + +%feature("docstring") adf4350::_update " + +Params: (NONE)" + +%feature("docstring") adf4350::compute_register " + +Params: (addr)" + +%feature("docstring") adf4350::_set_freq " + +Params: (freq, refclock_freq)" + +%feature("docstring") adf4350::_get_freq " + +Params: (refclock_freq)" + +%feature("docstring") adf4350::_get_max_freq " + +Params: (NONE)" + +%feature("docstring") adf4350::_get_min_freq " + +Params: (NONE)" + + + +%feature("docstring") adf4350_regs::adf4350_regs " + +Params: (NONE)" + +%feature("docstring") adf4350_regs::~adf4350_regs " + +Params: (NONE)" + +%feature("docstring") adf4350_regs::_reg_shift " + +Params: (data, shift)" + +%feature("docstring") adf4350_regs::compute_register " + +Params: (addr)" + + + +%feature("docstring") std::allocator "STL class." + +%feature("docstring") atsc_data_segment "contains 832 3 bit symbols. The low 3 bits in the byte hold the symbol." + +%feature("docstring") atsc_data_segment::operator== " + +Params: (other)" + +%feature("docstring") atsc_data_segment::operator!= " + +Params: (other)" + + + +%feature("docstring") atsc_mpeg_packet::operator== " + +Params: (other)" + +%feature("docstring") atsc_mpeg_packet::operator!= " + +Params: (other)" + + + +%feature("docstring") atsc_mpeg_packet_no_sync::operator== " + +Params: (other)" + +%feature("docstring") atsc_mpeg_packet_no_sync::operator!= " + +Params: (other)" + + + +%feature("docstring") atsc_mpeg_packet_rs_encoded::operator== " + +Params: (other)" + +%feature("docstring") atsc_mpeg_packet_rs_encoded::operator!= " + +Params: (other)" + + + +%feature("docstring") atsc_root_raised_cosine::taps " + +Params: (sampling_freq)" + + + +%feature("docstring") atsc_root_raised_cosine_bandpass::atsc_root_raised_cosine_bandpass " + +Params: (center_freq)" + +%feature("docstring") atsc_root_raised_cosine_bandpass::taps " + +Params: (sampling_freq)" + +%feature("docstring") atsc_soft_data_segment "Contains 832 bipolar floating point symbols. Nominal values are +/- {1, 3, 5, 7}. This data type represents the input to the viterbi decoder." + +%feature("docstring") atsc_soft_data_segment::operator== " + +Params: (other)" + +%feature("docstring") atsc_soft_data_segment::operator!= " + +Params: (other)" + + + +%feature("docstring") atsc_vsbtx_lp::taps " + +Params: (sampling_freq)" + +%feature("docstring") atsci_basic_trellis_encoder "ATSC trellis encoder building block. + +Note this is NOT the 12x interleaved interface. + +This implements a single instance of the ATSC trellis encoder. This is a rate 2/3 encoder (really a constraint length 3, rate 1/2 encoder with the top bit passed through unencoded. This does not implement the \"precoding\" of the top bit, because the NTSC rejection filter is not supported." + +%feature("docstring") atsci_basic_trellis_encoder::atsci_basic_trellis_encoder " + +Params: (NONE)" + +%feature("docstring") atsci_basic_trellis_encoder::encode "Encode two bit INPUT into 3 bit return value. Domain is [0,3], Range is [0,7]. The mapping to bipolar levels is not done. + +Params: (input)" + +%feature("docstring") atsci_basic_trellis_encoder::reset "reset encoder state + +Params: (NONE)" + +%feature("docstring") atsci_data_deinterleaver "atsc convolutional data deinterleaver" + +%feature("docstring") atsci_data_deinterleaver::atsci_data_deinterleaver " + +Params: (NONE)" + +%feature("docstring") atsci_data_deinterleaver::deinterleave " + +Params: (out, in)" + +%feature("docstring") atsci_data_deinterleaver::remap_pli " + +Params: (out, in)" + +%feature("docstring") atsci_data_interleaver "atsc convolutional data interleaver" + +%feature("docstring") atsci_data_interleaver::atsci_data_interleaver " + +Params: (NONE)" + +%feature("docstring") atsci_data_interleaver::interleave " + +Params: (out, in)" + +%feature("docstring") atsci_equalizer "abstract base class for ATSC equalizer" + +%feature("docstring") atsci_equalizer::atsci_equalizer " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer::~atsci_equalizer " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer::reset "reset state (e.g., on channel change) + +Note, subclasses must invoke the superclass's method too! + +Params: (NONE)" + +%feature("docstring") atsci_equalizer::filter "produce of output from given inputs and tags + +This is the main entry point. It examines the input_tags and local state and invokes the appropriate virtual function to handle each sub-segment of the input data. + + must have (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] are referenced to compute the output values. + + must have nsamples valid entries. input_tags[0] .. input_tags[nsamples - 1] are referenced to compute the output values. + +Params: (input_samples, input_tags, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer::ntaps "how much history the input data stream requires. + +This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. + +Params: (NONE)" + +%feature("docstring") atsci_equalizer::npretaps "how many taps are \"in the future\". + +This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. + +npretaps () must return a value between 0 and ntaps() - 1. + +If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). + +Params: (NONE)" + +%feature("docstring") atsci_equalizer::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset)" + +%feature("docstring") atsci_equalizer::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset, which_field)" + + + +%feature("docstring") atsci_equalizer_lms::atsci_equalizer_lms " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms::~atsci_equalizer_lms " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms::reset "reset state (e.g., on channel change) + +Note, subclasses must invoke the superclass's method too! + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms::ntaps "how much history the input data stream requires. + +This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms::npretaps "how many taps are \"in the future\". + +This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. + +npretaps () must return a value between 0 and ntaps() - 1. + +If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset)" + +%feature("docstring") atsci_equalizer_lms::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset, which_field)" + +%feature("docstring") atsci_equalizer_lms::filterN " + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms::adaptN " + +Params: (input_samples, training_pattern, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms::filter1 " + +Params: (input)" + +%feature("docstring") atsci_equalizer_lms::adapt1 " + +Params: (input, ideal_output)" + + + +%feature("docstring") atsci_equalizer_lms2::atsci_equalizer_lms2 " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms2::~atsci_equalizer_lms2 " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms2::reset "reset state (e.g., on channel change) + +Note, subclasses must invoke the superclass's method too! + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms2::ntaps "how much history the input data stream requires. + +This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms2::npretaps "how many taps are \"in the future\". + +This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. + +npretaps () must return a value between 0 and ntaps() - 1. + +If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_lms2::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms2::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset)" + +%feature("docstring") atsci_equalizer_lms2::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset, which_field)" + +%feature("docstring") atsci_equalizer_lms2::filterN " + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms2::adaptN " + +Params: (input_samples, training_pattern, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_lms2::filter1 " + +Params: (input)" + +%feature("docstring") atsci_equalizer_lms2::adapt1 " + +Params: (input, ideal_output)" + + + +%feature("docstring") atsci_equalizer_nop::scale " + +Params: (input)" + +%feature("docstring") atsci_equalizer_nop::scale_and_train " + +Params: (input)" + +%feature("docstring") atsci_equalizer_nop::atsci_equalizer_nop " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_nop::~atsci_equalizer_nop " + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_nop::reset "reset state (e.g., on channel change) + +Note, subclasses must invoke the superclass's method too! + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_nop::ntaps "how much history the input data stream requires. + +This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_nop::npretaps "how many taps are \"in the future\". + +This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. + +npretaps () must return a value between 0 and ntaps() - 1. + +If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). + +Params: (NONE)" + +%feature("docstring") atsci_equalizer_nop::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples)" + +%feature("docstring") atsci_equalizer_nop::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset)" + +%feature("docstring") atsci_equalizer_nop::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). + + has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. + +Params: (input_samples, output_samples, nsamples, offset, which_field)" + + + +%feature("docstring") atsci_exp2_lp::taps " + +Params: (sampling_freq)" + +%feature("docstring") atsci_fake_single_viterbi "single channel viterbi decoder" + +%feature("docstring") atsci_fake_single_viterbi::atsci_fake_single_viterbi " + +Params: (NONE)" + +%feature("docstring") atsci_fake_single_viterbi::decode "ideally takes on the values +/- 1,3,5,7 return is decoded dibit in the range [0, 3] + +Params: (input)" + +%feature("docstring") atsci_fake_single_viterbi::reset " + +Params: (NONE)" + +%feature("docstring") atsci_fake_single_viterbi::delay "internal delay of decoder + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker "abstract base class for ATSC field sync checker + +Processes input samples one at a time looking for an occurence of either the field sync 1 or field sync 2 pattern. + +Note that unlike atsci_fs_correlator, this class uses the symbol_num in input_tag to avoid having to test each symbol position. + +For each sample processed, an output sample and an output tag are produced. The output samples are identical to the input samples but are delayed by a number of samples given by . The output tag associated with the the given output sample indicates whether this sample is the beginning of one of the field syncs or is an ordinary sample. The tags are defined in atsci_sync_tag.h. + +For ease of use, the field sync patterns are defined to begin with the first symbol of the 4 symbol data segment sync pattern that immediately proceeds the actual PN 511 code. This makes it easier for downstream code to determine the location of data segment syncs merely by counting. They'll occur every 832 samples assuming everything is working." + +%feature("docstring") atsci_fs_checker::atsci_fs_checker " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker::~atsci_fs_checker " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker::reset " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker::filter " + +Params: (input_sample, input_tag, output_sample, output_tag)" + +%feature("docstring") atsci_fs_checker::delay "return delay in samples from input to output + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker_naive "Naive concrete implementation of field sync checker." + +%feature("docstring") atsci_fs_checker_naive::wrap " + +Params: (index)" + +%feature("docstring") atsci_fs_checker_naive::incr " + +Params: (index)" + +%feature("docstring") atsci_fs_checker_naive::decr " + +Params: (index)" + +%feature("docstring") atsci_fs_checker_naive::atsci_fs_checker_naive " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker_naive::~atsci_fs_checker_naive " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker_naive::reset " + +Params: (NONE)" + +%feature("docstring") atsci_fs_checker_naive::filter " + +Params: (input_sample, input_tag, output_sample, output_tag)" + +%feature("docstring") atsci_fs_checker_naive::delay "return delay in samples from input to output + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator "abstract base class for ATSC field sync correlator + +Processes input samples one at a time looking for an occurence of either the field sync 1 or field sync 2 pattern. + +For each sample processed, an output sample and an output tag are produced. The output samples are identical to the input samples but are delayed by a number of samples given by . The output tag associated with the the given output sample indicates whether this sample is the beginning of one of the field syncs or is an ordinary sample. The tags are defined in atsci_sync_tag.h. + +For ease of use, the field sync patterns are defined to begin with the first symbol of the 4 symbol data segment sync pattern that immediately proceeds the actual PN 511 code. This makes it easier for downstream code to determine the location of data segment syncs merely by counting. They'll occur every 832 samples assuming everything is working." + +%feature("docstring") atsci_fs_correlator::atsci_fs_correlator " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator::~atsci_fs_correlator " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator::reset " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator::filter " + +Params: (input_sample, output_sample, output_tag)" + +%feature("docstring") atsci_fs_correlator::delay "return delay in samples from input to output + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator_naive "Naive concrete implementation of field sync correlator." + +%feature("docstring") atsci_fs_correlator_naive::wrap " + +Params: (index)" + +%feature("docstring") atsci_fs_correlator_naive::incr " + +Params: (index)" + +%feature("docstring") atsci_fs_correlator_naive::decr " + +Params: (index)" + +%feature("docstring") atsci_fs_correlator_naive::atsci_fs_correlator_naive " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator_naive::~atsci_fs_correlator_naive " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator_naive::reset " + +Params: (NONE)" + +%feature("docstring") atsci_fs_correlator_naive::filter " + +Params: (input_sample, output_sample, output_tag)" + +%feature("docstring") atsci_fs_correlator_naive::delay "return delay in samples from input to output + +Params: (NONE)" + +%feature("docstring") atsci_interpolator "interpolator control for segment and symbol sync recovery" + +%feature("docstring") atsci_interpolator::atsci_interpolator "must be >= 1.8 + +Params: (nominal_ratio_of_rx_clock_to_symbol_freq)" + +%feature("docstring") atsci_interpolator::~atsci_interpolator " + +Params: (NONE)" + +%feature("docstring") atsci_interpolator::reset "call on channel change + +Params: (NONE)" + +%feature("docstring") atsci_interpolator::update "produce next sample referenced to Tx clock + +If there aren't enough input_samples left to produce an output, return false, else true. + +Params: (input_samples, nsamples, index, timing_adjustment, output_sample)" + +%feature("docstring") atsci_interpolator::ntaps " + +Params: (NONE)" + +%feature("docstring") atsci_interpolator::mu " + +Params: (NONE)" + +%feature("docstring") atsci_interpolator::w " + +Params: (NONE)" + +%feature("docstring") atsci_interpolator::incr " + +Params: (NONE)" + +%feature("docstring") atsci_randomizer "ATSC data \"whitener\". + +The data randomizer described in ATSC standard A/53B. See figure D4 on page 54." + +%feature("docstring") atsci_randomizer::atsci_randomizer " + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::reset "reset randomizer LFSR + +must be called during the Data Segment Sync interval prior to the first data segment. I.e., the LFSR is reset prior to the first field of each VSB data frame. + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::randomize "randomize (whiten) mpeg packet and remove leading MPEG-2 sync byte + +Params: (out, in)" + +%feature("docstring") atsci_randomizer::derandomize "derandomize (de-whiten) mpeg packet and add leading MPEG-2 sync byte + +Params: (out, in)" + +%feature("docstring") atsci_randomizer::state " + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::initialize_output_map " + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::slow_output_map " + +Params: (st)" + +%feature("docstring") atsci_randomizer::fast_output_map " + +Params: (st)" + +%feature("docstring") atsci_randomizer::output "return current output value + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::clk "clock LFSR; advance to next state. + +Params: (NONE)" + +%feature("docstring") atsci_randomizer::output_and_clk "return current output value and advance to next state + +Params: (NONE)" + +%feature("docstring") atsci_reed_solomon "ATSC Reed-Solomon encoder / decoder. + +The t=10 (207,187) code described in ATSC standard A/53B. See figure D5 on page 55." + +%feature("docstring") atsci_reed_solomon::atsci_reed_solomon " + +Params: (NONE)" + +%feature("docstring") atsci_reed_solomon::~atsci_reed_solomon " + +Params: (NONE)" + +%feature("docstring") atsci_reed_solomon::encode "Add RS error correction encoding. + +Params: (out, in)" + +%feature("docstring") atsci_reed_solomon::decode "Decode RS encoded packet. + +Params: (out, in)" + +%feature("docstring") atsci_single_viterbi "single channel viterbi decoder" + +%feature("docstring") atsci_single_viterbi::atsci_single_viterbi " + +Params: (NONE)" + +%feature("docstring") atsci_single_viterbi::decode "ideally takes on the values +/- 1,3,5,7 return is decoded dibit in the range [0, 3] + +Params: (input)" + +%feature("docstring") atsci_single_viterbi::reset " + +Params: (NONE)" + +%feature("docstring") atsci_single_viterbi::delay "internal delay of decoder + +Params: (NONE)" + +%feature("docstring") atsci_slicer_agc "Automatic Gain Control class for atsc slicer. + +Given perfect data, output values will be +/- {7, 5, 3, 1}" + +%feature("docstring") atsci_slicer_agc::atsci_slicer_agc " + +Params: (NONE)" + +%feature("docstring") atsci_slicer_agc::gain " + +Params: (NONE)" + +%feature("docstring") atsci_slicer_agc::scale " + +Params: (input)" + +%feature("docstring") atsci_sliding_correlator "look for the PN 511 field sync pattern" + +%feature("docstring") atsci_sliding_correlator::atsci_sliding_correlator " + +Params: (NONE)" + +%feature("docstring") atsci_sliding_correlator::~atsci_sliding_correlator " + +Params: (NONE)" + +%feature("docstring") atsci_sliding_correlator::input_bit "input hard decision bit, return correlation (0,511) + +Params: (bit)" + +%feature("docstring") atsci_sliding_correlator::input_int "input sample, return correlation (0,511) + +Params: (sample)" + +%feature("docstring") atsci_sliding_correlator::input_float "input sample, return correlation (0,511) + +Params: (sample)" + +%feature("docstring") atsci_sliding_correlator::reset " + +Params: (NONE)" + +%feature("docstring") atsci_sssr "ATSC Segment and Symbol Sync Recovery. + +This class implements data segment sync tracking and symbol timing using the method described in \"ATSC/VSB Tutorial - Receiver Technology\" by Wayne E. Bretl of Zenith, pgs 41-45." + +%feature("docstring") atsci_sssr::incr_counter " + +Params: (NONE)" + +%feature("docstring") atsci_sssr::incr_symbol_index " + +Params: (NONE)" + +%feature("docstring") atsci_sssr::atsci_sssr " + +Params: (NONE)" + +%feature("docstring") atsci_sssr::~atsci_sssr " + +Params: (NONE)" + +%feature("docstring") atsci_sssr::reset "call on channel change + +Params: (NONE)" + +%feature("docstring") atsci_sssr::update "process a single sample at the ATSC symbol rate (~10.76 MSPS) + +This block computes an indication of our timing error and keeps track of where the segment sync's occur. is returned to indicate how the interpolator timing needs to be adjusted to track the transmitter's symbol timing. If is true, then is the index of this sample in the current segment. The symbols are numbered from 0 to 831, where symbols 0, 1, 2 and 3 correspond to the data segment sync pattern, nominally +5, -5, -5, +5. + +Params: (sample_in, seg_locked, symbol_index, timing_adjust)" + +%feature("docstring") atsci_trellis_encoder "fancy, schmancy 12-way interleaved trellis encoder for ATSC" + +%feature("docstring") atsci_trellis_encoder::atsci_trellis_encoder " + +Params: (NONE)" + +%feature("docstring") atsci_trellis_encoder::~atsci_trellis_encoder " + +Params: (NONE)" + +%feature("docstring") atsci_trellis_encoder::reset "reset all encoder states + +Params: (NONE)" + +%feature("docstring") atsci_trellis_encoder::encode "Take 12 RS encoded, convolutionally interleaved segments and produce 12 trellis coded data segments. We work in groups of 12 because that's the smallest number of segments that composes a single full cycle of the encoder mux. + +Params: (out, in)" + +%feature("docstring") atsci_trellis_encoder::encode_helper " + +Params: (out, in)" + +%feature("docstring") atsci_viterbi_decoder "fancy, schmancy 12-way interleaved viterbi decoder for ATSC" + +%feature("docstring") atsci_viterbi_decoder::atsci_viterbi_decoder " + +Params: (NONE)" + +%feature("docstring") atsci_viterbi_decoder::~atsci_viterbi_decoder " + +Params: (NONE)" + +%feature("docstring") atsci_viterbi_decoder::reset "reset all decoder states + +Params: (NONE)" + +%feature("docstring") atsci_viterbi_decoder::decode "Take 12 data segments of soft decisions (floats) and produce 12 RS encoded data segments. We work in groups of 12 because that's the smallest number of segments that composes a single full cycle of the decoder mux. + +Params: (out, in)" + +%feature("docstring") atsci_viterbi_decoder::decode_helper " + +Params: (out, in)" + +%feature("docstring") audio_alsa_sink "audio sink using ALSA + +The sink has N input streams of floats, where N depends on the hardware characteristics of the selected device. + +Input samples must be in the range [-1,1]." + +%feature("docstring") audio_alsa_sink::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_alsa_sink::bail " + +Params: (msg, err)" + +%feature("docstring") audio_alsa_sink::audio_alsa_sink " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_alsa_sink::write_buffer " + +Params: (buffer, nframes, sizeof_frame)" + +%feature("docstring") audio_alsa_sink::work_s16 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_sink::work_s16_1x2 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_sink::work_s32 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_sink::work_s32_1x2 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_sink::~audio_alsa_sink " + +Params: (NONE)" + +%feature("docstring") audio_alsa_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_alsa_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_source "audio source using ALSA + +The source has between 1 and N input streams of floats, where N is depends on the hardware characteristics of the selected device. + +Output samples will be in the range [-1,1]." + +%feature("docstring") audio_alsa_source::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_alsa_source::bail " + +Params: (msg, err)" + +%feature("docstring") audio_alsa_source::audio_alsa_source " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_alsa_source::read_buffer " + +Params: (buffer, nframes, sizeof_frame)" + +%feature("docstring") audio_alsa_source::work_s16 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_source::work_s16_2x1 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_source::work_s32 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_source::work_s32_2x1 " + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_alsa_source::~audio_alsa_source " + +Params: (NONE)" + +%feature("docstring") audio_alsa_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_alsa_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_jack_sink "audio sink using JACK + +The sink has one input stream of floats. + +Input samples must be in the range [-1,1]." + +%feature("docstring") audio_jack_sink::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_jack_sink::bail " + +Params: (msg, err)" + +%feature("docstring") audio_jack_sink::audio_jack_sink " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_jack_sink::~audio_jack_sink " + +Params: (NONE)" + +%feature("docstring") audio_jack_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_jack_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_jack_source "audio source using JACK + +The source has one input stream of floats. + +Output samples will be in the range [-1,1]." + +%feature("docstring") audio_jack_source::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_jack_source::bail " + +Params: (msg, err)" + +%feature("docstring") audio_jack_source::audio_jack_source " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_jack_source::~audio_jack_source " + +Params: (NONE)" + +%feature("docstring") audio_jack_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_jack_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_oss_sink "audio sink using OSS + +input signature is one or two streams of floats. Input samples must be in the range [-1,1]." + +%feature("docstring") audio_oss_sink::audio_oss_sink " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_oss_sink::~audio_oss_sink " + +Params: (NONE)" + +%feature("docstring") audio_oss_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_oss_source "audio source using OSS + +Output signature is one or two streams of floats. Output samples will be in the range [-1,1]." + +%feature("docstring") audio_oss_source::audio_oss_source " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_oss_source::~audio_oss_source " + +Params: (NONE)" + +%feature("docstring") audio_oss_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_osx_sink "audio sink using OSX + +input signature is one or two streams of floats. Input samples must be in the range [-1,1]." + +%feature("docstring") audio_osx_sink::audio_osx_sink " + +Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" + +%feature("docstring") audio_osx_sink::~audio_osx_sink " + +Params: (NONE)" + +%feature("docstring") audio_osx_sink::IsRunning " + +Params: (NONE)" + +%feature("docstring") audio_osx_sink::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") audio_osx_sink::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") audio_osx_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_osx_sink::AUOutputCallback " + +Params: (inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData)" + +%feature("docstring") audio_osx_source "audio source using OSX + +Input signature is one or two streams of floats. Samples must be in the range [-1,1]." + +%feature("docstring") audio_osx_source::audio_osx_source " + +Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" + +%feature("docstring") audio_osx_source::~audio_osx_source " + +Params: (NONE)" + +%feature("docstring") audio_osx_source::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") audio_osx_source::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") audio_osx_source::IsRunning " + +Params: (NONE)" + +%feature("docstring") audio_osx_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_osx_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_osx_source::SetDefaultInputDeviceAsCurrent " + +Params: (NONE)" + +%feature("docstring") audio_osx_source::AllocAudioBufferList " + +Params: (t_ABL, n_channels, inputBufferSizeBytes)" + +%feature("docstring") audio_osx_source::FreeAudioBufferList " + +Params: (t_ABL)" + +%feature("docstring") audio_osx_source::ConverterCallback " + +Params: (inAudioConverter, ioNumberDataPackets, ioData, outASPD, inUserData)" + +%feature("docstring") audio_osx_source::AUInputCallback " + +Params: (inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData)" + +%feature("docstring") audio_portaudio_sink "\ Audio sink using PORTAUDIO + +Input samples must be in the range [-1,1]." + +%feature("docstring") audio_portaudio_sink::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_portaudio_sink::bail " + +Params: (msg, err)" + +%feature("docstring") audio_portaudio_sink::create_ringbuffer " + +Params: (NONE)" + +%feature("docstring") audio_portaudio_sink::audio_portaudio_sink " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_portaudio_sink::~audio_portaudio_sink " + +Params: (NONE)" + +%feature("docstring") audio_portaudio_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_portaudio_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_portaudio_source "\ Audio source using PORTAUDIO + +Input samples must be in the range [-1,1]." + +%feature("docstring") audio_portaudio_source::output_error_msg " + +Params: (msg, err)" + +%feature("docstring") audio_portaudio_source::bail " + +Params: (msg, err)" + +%feature("docstring") audio_portaudio_source::create_ringbuffer " + +Params: (NONE)" + +%feature("docstring") audio_portaudio_source::audio_portaudio_source " + +Params: (sampling_rate, device_name, ok_to_block)" + +%feature("docstring") audio_portaudio_source::~audio_portaudio_source " + +Params: (NONE)" + +%feature("docstring") audio_portaudio_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") audio_portaudio_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_windows_sink "audio sink using winmm mmsystem (win32 only) + +input signature is one or two streams of floats. Input samples must be in the range [-1,1]." + +%feature("docstring") audio_windows_sink::string_to_int " + +Params: (s)" + +%feature("docstring") audio_windows_sink::audio_windows_sink " + +Params: (sampling_freq, device_name)" + +%feature("docstring") audio_windows_sink::open_waveout_device " + +Params: ()" + +%feature("docstring") audio_windows_sink::write_waveout " + +Params: (lp_data, dw_data_size)" + +%feature("docstring") audio_windows_sink::~audio_windows_sink " + +Params: (NONE)" + +%feature("docstring") audio_windows_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") audio_windows_source "audio source using winmm mmsystem (win32 only) + +Output signature is one or two streams of floats. Output samples will be in the range [-1,1]." + +%feature("docstring") audio_windows_source::audio_windows_source " + +Params: (sampling_freq, device_name)" + +%feature("docstring") audio_windows_source::~audio_windows_source " + +Params: (NONE)" + +%feature("docstring") audio_windows_source::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") std::auto_ptr "STL class." + +%feature("docstring") std::bad_alloc "STL class." + +%feature("docstring") std::bad_cast "STL class." + +%feature("docstring") std::bad_exception "STL class." + +%feature("docstring") std::bad_typeid "STL class." + +%feature("docstring") std::basic_fstream "STL class." + +%feature("docstring") std::basic_ifstream "STL class." + +%feature("docstring") std::basic_ios "STL class." + +%feature("docstring") std::basic_iostream "STL class." + +%feature("docstring") std::basic_istream "STL class." + +%feature("docstring") std::basic_istringstream "STL class." + +%feature("docstring") std::basic_ofstream "STL class." + +%feature("docstring") std::basic_ostream "STL class." + +%feature("docstring") std::basic_ostringstream "STL class." + +%feature("docstring") std::basic_string "STL class." + +%feature("docstring") std::basic_stringstream "STL class." + +%feature("docstring") std::bitset "STL class." + + + +%feature("docstring") msdd::BufferCopyBehavior::operator() " + +Params: (a, b, output_index, nitems)" + +%feature("docstring") msdd::BufferCopyBehavior::~BufferCopyBehavior " + +Params: (NONE)" + + + +%feature("docstring") msdd::BufferCopyBehaviorComplex::operator() " + +Params: (a, b, output_index, nitems)" + + + +%feature("docstring") msdd::BufferCopyBehaviorGeneric::operator() " + +Params: (a, b, output_index, nitems)" + + + +%feature("docstring") circular_buffer::delete_mutex_cond " + +Params: (NONE)" + +%feature("docstring") circular_buffer::circular_buffer " + +Params: (bufLen_I, doWriteBlock, doFullRead)" + +%feature("docstring") circular_buffer::~circular_buffer " + +Params: (NONE)" + +%feature("docstring") circular_buffer::n_avail_write_items " + +Params: (NONE)" + +%feature("docstring") circular_buffer::n_avail_read_items " + +Params: (NONE)" + +%feature("docstring") circular_buffer::buffer_length_items " + +Params: (NONE)" + +%feature("docstring") circular_buffer::do_write_block " + +Params: (NONE)" + +%feature("docstring") circular_buffer::do_full_read " + +Params: (NONE)" + +%feature("docstring") circular_buffer::reset " + +Params: (NONE)" + +%feature("docstring") circular_buffer::enqueue " + +Params: (buf, bufLen_I)" + +%feature("docstring") circular_buffer::dequeue " + +Params: (buf, bufLen_I)" + +%feature("docstring") circular_buffer::abort " + +Params: (NONE)" + + + +%feature("docstring") circular_linked_list::circular_linked_list " + +Params: (n_nodes)" + +%feature("docstring") circular_linked_list::~circular_linked_list " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::find_next_available_node " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::make_node_available " + +Params: (l_node)" + +%feature("docstring") circular_linked_list::iterate_start " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::iterate_next " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::object " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::num_nodes " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::num_used " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::num_available " + +Params: (NONE)" + +%feature("docstring") circular_linked_list::num_used_inc " + +Params: ()" + +%feature("docstring") circular_linked_list::num_used_dec " + +Params: ()" + +%feature("docstring") circular_linked_list::in_use " + +Params: (NONE)" + +%feature("docstring") std::complex "STL class." + +%feature("docstring") std::basic_string::const_iterator "STL iterator class." + +%feature("docstring") std::string::const_iterator "STL iterator class." + +%feature("docstring") std::wstring::const_iterator "STL iterator class." + +%feature("docstring") std::deque::const_iterator "STL iterator class." + +%feature("docstring") std::list::const_iterator "STL iterator class." + +%feature("docstring") std::map::const_iterator "STL iterator class." + +%feature("docstring") std::multimap::const_iterator "STL iterator class." + +%feature("docstring") std::multiset::const_iterator "STL iterator class." + +%feature("docstring") std::vector::const_iterator "STL iterator class." + +%feature("docstring") std::set::const_iterator "STL iterator class." + +%feature("docstring") std::basic_string::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::wstring::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::string::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::deque::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::list::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::map::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::multimap::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::set::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::multiset::const_reverse_iterator "STL iterator class." + +%feature("docstring") std::vector::const_reverse_iterator "STL iterator class." + +%feature("docstring") convolutional_interleaver "template class for generic convolutional interleaver" + +%feature("docstring") convolutional_interleaver::convolutional_interleaver " + +Params: (interleave_p, nbanks, fifo_size_incr)" + +%feature("docstring") convolutional_interleaver::~convolutional_interleaver " + +Params: (NONE)" + +%feature("docstring") convolutional_interleaver::reset "reset interleaver (flushes contents and resets commutator) + +Params: (NONE)" + +%feature("docstring") convolutional_interleaver::sync "sync interleaver (resets commutator, but doesn't flush fifos) + +Params: (NONE)" + +%feature("docstring") convolutional_interleaver::end_to_end_delay "return end to end delay in symbols (delay through concatenated interleaver / deinterleaver) + +Params: (NONE)" + +%feature("docstring") convolutional_interleaver::transform "transform a single symbol + +Params: (input)" + + + +%feature("docstring") usrp2::copy_handler::copy_handler " + +Params: (dest, len)" + +%feature("docstring") usrp2::copy_handler::~copy_handler " + +Params: (NONE)" + +%feature("docstring") usrp2::copy_handler::operator() " + +Params: (base, len)" + +%feature("docstring") usrp2::copy_handler::bytes " + +Params: (NONE)" + +%feature("docstring") usrp2::copy_handler::times " + +Params: (NONE)" + +%feature("docstring") usrp2::copy_handler::full " + +Params: (NONE)" + +%feature("docstring") usrp2::data_handler "Abstract function object called to handle received data blocks." + +%feature("docstring") usrp2::data_handler::operator() " + +Params: (base, len)" + +%feature("docstring") usrp2::data_handler::~data_handler " + +Params: (NONE)" + +%feature("docstring") db_base "Abstract base class for all USRP daughterboards." + +%feature("docstring") db_base::_enable_refclk " + +Params: (enable)" + +%feature("docstring") db_base::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") db_base::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") db_base::usrp " + +Params: (NONE)" + +%feature("docstring") db_base::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_base::db_base " + +Params: (usrp, which)" + +%feature("docstring") db_base::~db_base " + +Params: (NONE)" + +%feature("docstring") db_base::dbid " + +Params: (NONE)" + +%feature("docstring") db_base::name " + +Params: (NONE)" + +%feature("docstring") db_base::side_and_name " + +Params: (NONE)" + +%feature("docstring") db_base::which " + +Params: (NONE)" + +%feature("docstring") db_base::bypass_adc_buffers " + +Params: (bypass)" + +%feature("docstring") db_base::set_atr_mask " + +Params: (v)" + +%feature("docstring") db_base::set_atr_txval " + +Params: (v)" + +%feature("docstring") db_base::set_atr_rxval " + +Params: (v)" + +%feature("docstring") db_base::set_atr_tx_delay " + +Params: (v)" + +%feature("docstring") db_base::set_atr_rx_delay " + +Params: (v)" + +%feature("docstring") db_base::set_lo_offset " + +Params: (offset)" + +%feature("docstring") db_base::lo_offset " + +Params: (NONE)" + +%feature("docstring") db_base::gain_min " + +Params: (NONE)" + +%feature("docstring") db_base::gain_max " + +Params: (NONE)" + +%feature("docstring") db_base::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_base::freq_min " + +Params: (NONE)" + +%feature("docstring") db_base::freq_max " + +Params: (NONE)" + +%feature("docstring") db_base::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_base::set_gain " + +Params: (gain)" + +%feature("docstring") db_base::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_base::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_base::spectrum_inverted " + +Params: (NONE)" + +%feature("docstring") db_base::set_enable " + +Params: (on)" + +%feature("docstring") db_base::set_auto_tr " + +Params: (on)" + +%feature("docstring") db_base::select_rx_antenna " + +Params: (which_antenna)" + +%feature("docstring") db_base::set_bw " + +Params: (bw)" + + + +%feature("docstring") db_basic_rx::db_basic_rx " + +Params: (usrp, which, subdev)" + +%feature("docstring") db_basic_rx::~db_basic_rx " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::freq_max " + +Params: (NONE)" + +%feature("docstring") db_basic_rx::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_basic_rx::set_gain " + +Params: (gain)" + +%feature("docstring") db_basic_rx::is_quadrature " + +Params: (NONE)" + + + +%feature("docstring") db_basic_tx::db_basic_tx " + +Params: (usrp, which)" + +%feature("docstring") db_basic_tx::~db_basic_tx " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::freq_max " + +Params: (NONE)" + +%feature("docstring") db_basic_tx::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_basic_tx::set_gain " + +Params: (gain)" + +%feature("docstring") db_basic_tx::is_quadrature " + +Params: (NONE)" + + + +%feature("docstring") db_bitshark_rx::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") db_bitshark_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::db_bitshark_rx " + +Params: (usrp, which)" + +%feature("docstring") db_bitshark_rx::~db_bitshark_rx " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::freq_max " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::set_freq " + +Params: (freq)" + +%feature("docstring") db_bitshark_rx::set_gain " + +Params: (gain)" + +%feature("docstring") db_bitshark_rx::set_bw " + +Params: (bw)" + +%feature("docstring") db_bitshark_rx::set_clock_scheme " + +Params: (clock_scheme, ref_clock_freq)" + +%feature("docstring") db_bitshark_rx::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_bitshark_rx::i_and_q_swapped " + +Params: (NONE)" + + + +%feature("docstring") db_dbs_rx::_write_reg " + +Params: (regno, v)" + +%feature("docstring") db_dbs_rx::_write_regs " + +Params: (starting_regno, vals)" + +%feature("docstring") db_dbs_rx::_read_status " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::_send_reg " + +Params: (regno)" + +%feature("docstring") db_dbs_rx::_set_m " + +Params: (m)" + +%feature("docstring") db_dbs_rx::_set_fdac " + +Params: (fdac)" + +%feature("docstring") db_dbs_rx::_set_dl " + +Params: (dl)" + +%feature("docstring") db_dbs_rx::_set_gc2 " + +Params: (gc2)" + +%feature("docstring") db_dbs_rx::_set_gc1 " + +Params: (gc1)" + +%feature("docstring") db_dbs_rx::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") db_dbs_rx::_set_osc " + +Params: (osc)" + +%feature("docstring") db_dbs_rx::_set_cp " + +Params: (cp)" + +%feature("docstring") db_dbs_rx::_set_n " + +Params: (n)" + +%feature("docstring") db_dbs_rx::_set_div2 " + +Params: (div2)" + +%feature("docstring") db_dbs_rx::_set_r " + +Params: (r)" + +%feature("docstring") db_dbs_rx::_set_ade " + +Params: (ade)" + +%feature("docstring") db_dbs_rx::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::db_dbs_rx " + +Params: (usrp, which)" + +%feature("docstring") db_dbs_rx::~db_dbs_rx " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::freq_max " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::set_freq " + +Params: (freq)" + +%feature("docstring") db_dbs_rx::set_gain " + +Params: (gain)" + +%feature("docstring") db_dbs_rx::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_dbs_rx::set_bw " + +Params: (bw)" + + + +%feature("docstring") db_dtt754::db_dtt754 " + +Params: (usrp, which)" + +%feature("docstring") db_dtt754::~db_dtt754 " + +Params: (NONE)" + +%feature("docstring") db_dtt754::gain_min " + +Params: (NONE)" + +%feature("docstring") db_dtt754::gain_max " + +Params: (NONE)" + +%feature("docstring") db_dtt754::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_dtt754::set_gain " + +Params: (gain)" + +%feature("docstring") db_dtt754::freq_min " + +Params: (NONE)" + +%feature("docstring") db_dtt754::freq_max " + +Params: (NONE)" + +%feature("docstring") db_dtt754::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_dtt754::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_dtt754::spectrum_inverted " + +Params: (NONE)" + +%feature("docstring") db_dtt754::set_bw " + +Params: (bw)" + +%feature("docstring") db_dtt754::_set_rfagc " + +Params: (gain)" + +%feature("docstring") db_dtt754::_set_ifagc " + +Params: (gain)" + +%feature("docstring") db_dtt754::_set_pga " + +Params: (pga_gain)" + + + +%feature("docstring") db_dtt768::db_dtt768 " + +Params: (usrp, which)" + +%feature("docstring") db_dtt768::~db_dtt768 " + +Params: (NONE)" + +%feature("docstring") db_dtt768::gain_min " + +Params: (NONE)" + +%feature("docstring") db_dtt768::gain_max " + +Params: (NONE)" + +%feature("docstring") db_dtt768::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_dtt768::set_gain " + +Params: (gain)" + +%feature("docstring") db_dtt768::freq_min " + +Params: (NONE)" + +%feature("docstring") db_dtt768::freq_max " + +Params: (NONE)" + +%feature("docstring") db_dtt768::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_dtt768::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_dtt768::spectrum_inverted " + +Params: (NONE)" + +%feature("docstring") db_dtt768::set_bw " + +Params: (bw)" + +%feature("docstring") db_dtt768::_set_rfagc " + +Params: (gain)" + +%feature("docstring") db_dtt768::_set_ifagc " + +Params: (gain)" + +%feature("docstring") db_dtt768::_set_pga " + +Params: (pga_gain)" + + + +%feature("docstring") db_flexrf_1200_rx::db_flexrf_1200_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_rx::~db_flexrf_1200_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_1200_rx_mimo_a::db_flexrf_1200_rx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_rx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1200_rx_mimo_b::db_flexrf_1200_rx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_rx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1200_tx::db_flexrf_1200_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_tx::~db_flexrf_1200_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1200_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_1200_tx_mimo_a::db_flexrf_1200_tx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_tx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1200_tx_mimo_b::db_flexrf_1200_tx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1200_tx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1800_rx::db_flexrf_1800_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_rx::~db_flexrf_1800_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_1800_rx_mimo_a::db_flexrf_1800_rx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_rx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1800_rx_mimo_b::db_flexrf_1800_rx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_rx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1800_tx::db_flexrf_1800_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_tx::~db_flexrf_1800_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_1800_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_1800_tx_mimo_a::db_flexrf_1800_tx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_tx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_1800_tx_mimo_b::db_flexrf_1800_tx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_1800_tx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_2200_rx::db_flexrf_2200_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2200_rx::~db_flexrf_2200_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_2200_tx::db_flexrf_2200_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2200_tx::~db_flexrf_2200_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2200_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_2400_rx::db_flexrf_2400_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_rx::~db_flexrf_2400_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_2400_rx_mimo_a::db_flexrf_2400_rx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_rx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_2400_rx_mimo_b::db_flexrf_2400_rx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_rx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_2400_tx::db_flexrf_2400_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_tx::~db_flexrf_2400_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_2400_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_2400_tx_mimo_a::db_flexrf_2400_tx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_tx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_2400_tx_mimo_b::db_flexrf_2400_tx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_2400_tx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_400_rx::db_flexrf_400_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_rx::~db_flexrf_400_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_400_rx_mimo_a::db_flexrf_400_rx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_rx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_400_rx_mimo_b::db_flexrf_400_rx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_rx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_400_tx::db_flexrf_400_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_tx::~db_flexrf_400_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_400_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_400_tx_mimo_a::db_flexrf_400_tx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_tx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_400_tx_mimo_b::db_flexrf_400_tx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_400_tx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_900_rx::db_flexrf_900_rx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_rx::~db_flexrf_900_rx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_rx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_rx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_900_rx_mimo_a::db_flexrf_900_rx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_rx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_900_rx_mimo_b::db_flexrf_900_rx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_rx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_900_tx::db_flexrf_900_tx " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_tx::~db_flexrf_900_tx " + +Params: (NONE)" + +%feature("docstring") db_flexrf_900_tx::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + + + +%feature("docstring") db_flexrf_900_tx_mimo_a::db_flexrf_900_tx_mimo_a " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_tx_mimo_a::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_flexrf_900_tx_mimo_b::db_flexrf_900_tx_mimo_b " + +Params: (usrp, which)" + +%feature("docstring") db_flexrf_900_tx_mimo_b::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_lf_rx::db_lf_rx " + +Params: (usrp, which, subdev)" + +%feature("docstring") db_lf_rx::~db_lf_rx " + +Params: (NONE)" + +%feature("docstring") db_lf_rx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_lf_rx::freq_max " + +Params: (NONE)" + + + +%feature("docstring") db_lf_tx::db_lf_tx " + +Params: (usrp, which)" + +%feature("docstring") db_lf_tx::~db_lf_tx " + +Params: (NONE)" + +%feature("docstring") db_lf_tx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_lf_tx::freq_max " + +Params: (NONE)" + + + +%feature("docstring") db_tv_rx::_set_rfagc " + +Params: (gain)" + +%feature("docstring") db_tv_rx::_set_ifagc " + +Params: (gain)" + +%feature("docstring") db_tv_rx::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") db_tv_rx::db_tv_rx " + +Params: (usrp, which, first_IF, second_IF)" + +%feature("docstring") db_tv_rx::~db_tv_rx " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::freq_min " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::freq_max " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_tv_rx::set_gain " + +Params: (gain)" + +%feature("docstring") db_tv_rx::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_tv_rx::spectrum_inverted " + +Params: (NONE)" + + + +%feature("docstring") db_tv_rx_mimo::db_tv_rx_mimo " + +Params: (usrp, which, first_IF, second_IF)" + +%feature("docstring") db_tv_rx_mimo::_refclk_divisor " + +Params: (NONE)" + + + +%feature("docstring") db_wbx_lo_rx::db_wbx_lo_rx " + +Params: (usrp, which)" + +%feature("docstring") db_wbx_lo_rx::~db_wbx_lo_rx " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::_rx_write_io " + +Params: (value, mask)" + +%feature("docstring") db_wbx_lo_rx::_lock_detect " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_rx::usrp " + +Params: (NONE)" + + + +%feature("docstring") db_wbx_lo_tx::db_wbx_lo_tx " + +Params: (usrp, which)" + +%feature("docstring") db_wbx_lo_tx::~db_wbx_lo_tx " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::set_gain " + +Params: (gain)" + +%feature("docstring") db_wbx_lo_tx::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::_rx_write_io " + +Params: (value, mask)" + +%feature("docstring") db_wbx_lo_tx::_lock_detect " + +Params: (NONE)" + +%feature("docstring") db_wbx_lo_tx::usrp " + +Params: (NONE)" + + + +%feature("docstring") db_wbxng_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_wbxng_rx::_set_attn " + +Params: (attn)" + +%feature("docstring") db_wbxng_rx::db_wbxng_rx " + +Params: (usrp, which)" + +%feature("docstring") db_wbxng_rx::~db_wbxng_rx " + +Params: (NONE)" + +%feature("docstring") db_wbxng_rx::set_auto_tr " + +Params: (on)" + +%feature("docstring") db_wbxng_rx::select_rx_antenna " + +Params: (which_antenna)" + +%feature("docstring") db_wbxng_rx::set_gain " + +Params: (gain)" + +%feature("docstring") db_wbxng_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_wbxng_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_wbxng_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_wbxng_rx::i_and_q_swapped " + +Params: (NONE)" + + + +%feature("docstring") db_wbxng_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_wbxng_tx::db_wbxng_tx " + +Params: (usrp, which)" + +%feature("docstring") db_wbxng_tx::~db_wbxng_tx " + +Params: (NONE)" + +%feature("docstring") db_wbxng_tx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_wbxng_tx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_wbxng_tx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_wbxng_tx::set_auto_tr " + +Params: (on)" + +%feature("docstring") db_wbxng_tx::set_enable " + +Params: (on)" + +%feature("docstring") db_wbxng_tx::set_gain " + +Params: (gain)" + + + +%feature("docstring") db_xcvr2450_base::db_xcvr2450_base " + +Params: (usrp, which)" + +%feature("docstring") db_xcvr2450_base::~db_xcvr2450_base " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_base::set_freq " + +Params: (target_freq)" + +%feature("docstring") db_xcvr2450_base::is_quadrature " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_base::freq_min " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_base::freq_max " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_base::shutdown_common " + +Params: (NONE)" + + + +%feature("docstring") db_xcvr2450_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_rx::db_xcvr2450_rx " + +Params: (usrp, which)" + +%feature("docstring") db_xcvr2450_rx::~db_xcvr2450_rx " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_rx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_rx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_rx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_rx::set_gain " + +Params: (gain)" + + + +%feature("docstring") db_xcvr2450_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_tx::db_xcvr2450_tx " + +Params: (usrp, which)" + +%feature("docstring") db_xcvr2450_tx::~db_xcvr2450_tx " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_tx::gain_min " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_tx::gain_max " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_tx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") db_xcvr2450_tx::set_gain " + +Params: (gain)" + +%feature("docstring") db_xcvr2450_tx::i_and_q_swapped " + +Params: (NONE)" + +%feature("docstring") std::deque "STL class." + + + +%feature("docstring") dial_tone::dial_tone " + +Params: (NONE)" + +%feature("docstring") sssr::digital_correlator "digital correlator for 1001 and 0110 patterns" + +%feature("docstring") sssr::digital_correlator::digital_correlator " + +Params: (NONE)" + +%feature("docstring") sssr::digital_correlator::reset "called on channel change + +Params: (NONE)" + +%feature("docstring") sssr::digital_correlator::update "clock bit in and return true if we've seen 1001 + +Params: (bit)" + +%feature("docstring") std::domain_error "STL class." + +%feature("docstring") usrp2::eth_buffer "high-performance interface to send and receive raw ethernet frames with out-of-order retirement of received frames. + +On many systems it should be possible to implement this on top of libpcap" + +%feature("docstring") usrp2::eth_buffer::frame_available " + +Params: (NONE)" + +%feature("docstring") usrp2::eth_buffer::inc_head " + +Params: (NONE)" + +%feature("docstring") usrp2::eth_buffer::eth_buffer " + +Params: (rx_bufsize)" + +%feature("docstring") usrp2::eth_buffer::~eth_buffer " + +Params: (NONE)" + +%feature("docstring") usrp2::eth_buffer::open "open the specified interface + +Params: (ifname, protocol)" + +%feature("docstring") usrp2::eth_buffer::close "close the interface + +Params: (NONE)" + +%feature("docstring") usrp2::eth_buffer::attach_pktfilter "attach packet filter to socket to restrict which packets read sees. + +Params: (pf)" + +%feature("docstring") usrp2::eth_buffer::mac "return 6 byte string containing our MAC address + +Params: (NONE)" + +%feature("docstring") usrp2::eth_buffer::rx_frames "Call for each frame in the receive buffer. + +If is 0, rx_frames will not wait for frames if none are available, and f will not be invoked. If is -1 (the default), rx_frames will block indefinitely until frames are available. If is positive, it indicates the number of milliseconds to wait for a frame to become available. Once the timeout has expired, rx_frames will return, f never having been invoked. + + will be called on each ethernet frame that is available. returns a bit mask with one of the following set or cleared: + +data_handler::KEEP - hold onto the frame and present it again during the next call to rx_frames, otherwise discard it + +data_handler::DONE - return from rx_frames now even though more frames might be available; otherwise continue if more frames are ready. + +The idea of holding onto a frame for the next iteration allows the caller to scan the received packet stream for particular classes of frames (such as command replies) leaving the rest intact. On the next call all kept frames, followed by any new frames received, will be presented in order to . See usrp2.cc for an example of the pattern. + +Params: (f, timeout)" + +%feature("docstring") usrp2::eth_buffer::release_frame " + +Params: (p)" + +%feature("docstring") usrp2::eth_buffer::tx_frame " + +Params: (base, len, flags)" + +%feature("docstring") usrp2::eth_buffer::tx_framev " + +Params: (iov, iovcnt, flags)" + +%feature("docstring") usrp2::eth_buffer::max_frames " + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet "Read and write ethernet frames. + +This provides a low level interface to hardware that communicates via raw (non-IP) ethernet frames." + +%feature("docstring") usrp2::ethernet::ethernet " + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet::~ethernet " + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet::open " + +Params: (ifname, protocol)" + +%feature("docstring") usrp2::ethernet::close " + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet::attach_pktfilter "attach packet filter to socket to restrict which packets read sees. + +Params: (pf)" + +%feature("docstring") usrp2::ethernet::mac "return 6 byte string containing our MAC address + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet::fd "Return file descriptor associated with socket. + +Params: (NONE)" + +%feature("docstring") usrp2::ethernet::read_packet "Read packet from interface. + +Returned packet includes 14-byte ethhdr + +Params: (buf, buflen)" + +%feature("docstring") usrp2::ethernet::read_packet_dont_block "Read packet from interface, but don't block waiting. + +Returned packet includes 14-byte ethhdr + +Params: (buf, buflen)" + +%feature("docstring") usrp2::ethernet::write_packet " + +Params: (buf, buflen)" + +%feature("docstring") usrp2::ethernet::write_packetv " + +Params: (iov, iovlen)" + +%feature("docstring") std::exception "STL class." + +%feature("docstring") std::ios_base::failure "STL class." + + + +%feature("docstring") flexrf_base::flexrf_base " + +Params: (usrp, which, _power_on)" + +%feature("docstring") flexrf_base::~flexrf_base " + +Params: (NONE)" + +%feature("docstring") flexrf_base::set_freq " + +Params: (freq)" + +%feature("docstring") flexrf_base::is_quadrature " + +Params: (NONE)" + +%feature("docstring") flexrf_base::freq_min " + +Params: (NONE)" + +%feature("docstring") flexrf_base::freq_max " + +Params: (NONE)" + +%feature("docstring") flexrf_base::_write_all " + +Params: (R, control, N)" + +%feature("docstring") flexrf_base::_write_control " + +Params: (control)" + +%feature("docstring") flexrf_base::_write_R " + +Params: (R)" + +%feature("docstring") flexrf_base::_write_N " + +Params: (N)" + +%feature("docstring") flexrf_base::_write_it " + +Params: (v)" + +%feature("docstring") flexrf_base::_lock_detect " + +Params: (NONE)" + +%feature("docstring") flexrf_base::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + +%feature("docstring") flexrf_base::_compute_control_reg " + +Params: (NONE)" + +%feature("docstring") flexrf_base::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") flexrf_base::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") flexrf_base::power_on " + +Params: (NONE)" + +%feature("docstring") flexrf_base::power_off " + +Params: (NONE)" + + + +%feature("docstring") flexrf_base_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") flexrf_base_rx::flexrf_base_rx " + +Params: (usrp, which, _power_on)" + +%feature("docstring") flexrf_base_rx::~flexrf_base_rx " + +Params: (NONE)" + +%feature("docstring") flexrf_base_rx::set_auto_tr " + +Params: (on)" + +%feature("docstring") flexrf_base_rx::select_rx_antenna " + +Params: (which_antenna)" + +%feature("docstring") flexrf_base_rx::set_gain " + +Params: (gain)" + + + +%feature("docstring") flexrf_base_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") flexrf_base_tx::flexrf_base_tx " + +Params: (usrp, which, _power_on)" + +%feature("docstring") flexrf_base_tx::~flexrf_base_tx " + +Params: (NONE)" + +%feature("docstring") flexrf_base_tx::gain_min " + +Params: (NONE)" + +%feature("docstring") flexrf_base_tx::gain_max " + +Params: (NONE)" + +%feature("docstring") flexrf_base_tx::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") flexrf_base_tx::set_auto_tr " + +Params: (on)" + +%feature("docstring") flexrf_base_tx::set_enable " + +Params: (on)" + +%feature("docstring") flexrf_base_tx::set_gain " + +Params: (gain)" + +%feature("docstring") fsm "FSM class." + +%feature("docstring") fsm::generate_PS_PI " + +Params: (NONE)" + +%feature("docstring") fsm::generate_TM " + +Params: (NONE)" + +%feature("docstring") fsm::find_es " + +Params: (es)" + +%feature("docstring") fsm::fsm " + +Params: (NONE)" + +%feature("docstring") fsm::I " + +Params: (NONE)" + +%feature("docstring") fsm::S " + +Params: (NONE)" + +%feature("docstring") fsm::O " + +Params: (NONE)" + +%feature("docstring") fsm::NS " + +Params: (NONE)" + +%feature("docstring") fsm::OS " + +Params: (NONE)" + +%feature("docstring") fsm::PS " + +Params: (NONE)" + +%feature("docstring") fsm::PI " + +Params: (NONE)" + +%feature("docstring") fsm::TMi " + +Params: (NONE)" + +%feature("docstring") fsm::TMl " + +Params: (NONE)" + +%feature("docstring") fsm::write_trellis_svg " + +Params: (filename, number_stages)" + +%feature("docstring") fsm::write_fsm_txt " + +Params: (filename)" + +%feature("docstring") std::fstream "STL class." + +%feature("docstring") fusb_devhandle "abstract usb device handle" + +%feature("docstring") fusb_devhandle::fusb_devhandle " + +Params: (rhs)" + +%feature("docstring") fusb_devhandle::operator= " + +Params: (rhs)" + +%feature("docstring") fusb_devhandle::~fusb_devhandle " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle::get_usb_dev_handle " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_darwin "darwin implementation of fusb_devhandle + +This is currently identical to the generic implementation and is intended as a starting point for whatever magic is required to make usb fly." + +%feature("docstring") fusb_devhandle_darwin::fusb_devhandle_darwin " + +Params: (udh)" + +%feature("docstring") fusb_devhandle_darwin::~fusb_devhandle_darwin " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_darwin::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle_generic "generic implementation of fusb_devhandle using only libusb" + +%feature("docstring") fusb_devhandle_generic::fusb_devhandle_generic " + +Params: (udh)" + +%feature("docstring") fusb_devhandle_generic::~fusb_devhandle_generic " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_generic::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle_libusb1 "libusb1 implementation of fusb_devhandle" + +%feature("docstring") fusb_devhandle_libusb1::pending_add " + +Params: (lut)" + +%feature("docstring") fusb_devhandle_libusb1::pending_get " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_libusb1::fusb_devhandle_libusb1 " + +Params: (udh, ctx)" + +%feature("docstring") fusb_devhandle_libusb1::~fusb_devhandle_libusb1 " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_libusb1::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle_libusb1::_submit_lut " + +Params: ()" + +%feature("docstring") fusb_devhandle_libusb1::_cancel_lut " + +Params: ()" + +%feature("docstring") fusb_devhandle_libusb1::_cancel_pending_rqsts " + +Params: (eph)" + +%feature("docstring") fusb_devhandle_libusb1::_reap " + +Params: (ok_to_block_p)" + +%feature("docstring") fusb_devhandle_libusb1::_wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_libusb1::pending_remove " + +Params: (lut)" + +%feature("docstring") fusb_devhandle_libusb1::_teardown " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_linux "linux specific implementation of fusb_devhandle using usbdevice_fs" + +%feature("docstring") fusb_devhandle_linux::pending_add " + +Params: (urb)" + +%feature("docstring") fusb_devhandle_linux::pending_remove " + +Params: (urb)" + +%feature("docstring") fusb_devhandle_linux::pending_get " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_linux::fusb_devhandle_linux " + +Params: (udh)" + +%feature("docstring") fusb_devhandle_linux::~fusb_devhandle_linux " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_linux::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle_linux::_submit_urb " + +Params: (urb)" + +%feature("docstring") fusb_devhandle_linux::_cancel_urb " + +Params: (urb)" + +%feature("docstring") fusb_devhandle_linux::_cancel_pending_rqsts " + +Params: (eph)" + +%feature("docstring") fusb_devhandle_linux::_reap " + +Params: (ok_to_block_p)" + +%feature("docstring") fusb_devhandle_linux::_wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_ra_wb "generic implementation of fusb_devhandle using only libusb" + +%feature("docstring") fusb_devhandle_ra_wb::fusb_devhandle_ra_wb " + +Params: (udh)" + +%feature("docstring") fusb_devhandle_ra_wb::~fusb_devhandle_ra_wb " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_ra_wb::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_devhandle_win32 "win32 implementation of fusb_devhandle using libusb-win32" + +%feature("docstring") fusb_devhandle_win32::fusb_devhandle_win32 " + +Params: (udh)" + +%feature("docstring") fusb_devhandle_win32::~fusb_devhandle_win32 " + +Params: (NONE)" + +%feature("docstring") fusb_devhandle_win32::make_ephandle "return an ephandle of the correct subtype + +Params: (endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle "abstract usb end point handle" + +%feature("docstring") fusb_ephandle::fusb_ephandle " + +Params: (rhs)" + +%feature("docstring") fusb_ephandle::operator= " + +Params: (rhs)" + +%feature("docstring") fusb_ephandle::~fusb_ephandle " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle::block_size "returns current block size. + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_darwin "darwin implementation of fusb_ephandle + +This is currently identical to the generic implementation and is intended as a starting point for whatever magic is required to make usb fly." + +%feature("docstring") fusb_ephandle_darwin::write_completed " + +Params: (ret_io_size, result, io_size)" + +%feature("docstring") fusb_ephandle_darwin::read_completed " + +Params: (ret_io_size, result, io_size)" + +%feature("docstring") fusb_ephandle_darwin::run_thread " + +Params: (arg)" + +%feature("docstring") fusb_ephandle_darwin::read_thread " + +Params: (arg)" + +%feature("docstring") fusb_ephandle_darwin::read_issue " + +Params: (l_both)" + +%feature("docstring") fusb_ephandle_darwin::fusb_ephandle_darwin " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_darwin::~fusb_ephandle_darwin " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_darwin::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_darwin::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_darwin::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_darwin::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_darwin::abort " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_darwin::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_generic "generic implementation of fusb_ephandle using only libusb" + +%feature("docstring") fusb_ephandle_generic::fusb_ephandle_generic " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_generic::~fusb_ephandle_generic " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_generic::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_generic::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_generic::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_generic::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_generic::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1 "libusb1 implementation of fusb_ephandle" + +%feature("docstring") fusb_ephandle_libusb1::get_write_work_in_progress " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::reap_complete_writes " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::reload_read_buffer " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::submit_lut " + +Params: (lut)" + +%feature("docstring") fusb_ephandle_libusb1::fusb_ephandle_libusb1 " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_libusb1::~fusb_ephandle_libusb1 " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_libusb1::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_libusb1::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::free_list_add " + +Params: (lut)" + +%feature("docstring") fusb_ephandle_libusb1::completed_list_add " + +Params: (lut)" + +%feature("docstring") fusb_ephandle_libusb1::free_list_get " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::completed_list_get " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_libusb1::get_fusb_devhandle_libusb1 " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux "linux specific implementation of fusb_ephandle using usbdevice_fs" + +%feature("docstring") fusb_ephandle_linux::get_write_work_in_progress " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::reap_complete_writes " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::reload_read_buffer " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::submit_urb " + +Params: (urb)" + +%feature("docstring") fusb_ephandle_linux::fusb_ephandle_linux " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_linux::~fusb_ephandle_linux " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_linux::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_linux::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::free_list_add " + +Params: (urb)" + +%feature("docstring") fusb_ephandle_linux::completed_list_add " + +Params: (urb)" + +%feature("docstring") fusb_ephandle_linux::free_list_get " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_linux::completed_list_get " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_ra_wb "generic implementation of fusb_ephandle using only libusb" + +%feature("docstring") fusb_ephandle_ra_wb::fusb_ephandle_ra_wb " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_ra_wb::~fusb_ephandle_ra_wb " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_ra_wb::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_ra_wb::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_ra_wb::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_ra_wb::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_ra_wb::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_win32 "win32 implementation of fusb_ephandle using libusb-win32" + +%feature("docstring") fusb_ephandle_win32::fusb_ephandle_win32 " + +Params: (dh, endpoint, input_p, block_size, nblocks)" + +%feature("docstring") fusb_ephandle_win32::~fusb_ephandle_win32 " + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_win32::start "begin streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_win32::stop "stop streaming i/o + +Params: (NONE)" + +%feature("docstring") fusb_ephandle_win32::write " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_win32::read " + +Params: (buffer, nbytes)" + +%feature("docstring") fusb_ephandle_win32::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") fusb_sysconfig "factory for creating concrete instances of the appropriate subtype." + +%feature("docstring") fusb_sysconfig::make_devhandle "returns fusb_devhandle or throws if trouble + +Params: (udh, ctx)" + +%feature("docstring") fusb_sysconfig::max_block_size "Returns max block size in bytes (hard limit). + +Params: (NONE)" + +%feature("docstring") fusb_sysconfig::default_block_size "Returns default block size in bytes. + +Params: (NONE)" + +%feature("docstring") fusb_sysconfig::default_buffer_size "Returns the default buffer size in bytes. + +Params: (NONE)" + + + +%feature("docstring") gc_bad_align::gc_bad_align " + +Params: (msg)" + + + +%feature("docstring") gc_bad_alloc::gc_bad_alloc " + +Params: (msg)" + + + +%feature("docstring") gc_bad_submit::gc_bad_submit " + +Params: (name, status)" + + + +%feature("docstring") gc_client_thread_info::gc_client_thread_info " + +Params: (NONE)" + +%feature("docstring") gc_client_thread_info::~gc_client_thread_info " + +Params: (NONE)" + + + +%feature("docstring") gc_exception::gc_exception " + +Params: (msg)" + +%feature("docstring") gc_job_manager "Abstract class that manages SPE jobs. + +There is typically a single instance derived from this class. It is safe to call its methods from any thread." + +%feature("docstring") gc_job_manager::gc_job_manager " + +Params: (options)" + +%feature("docstring") gc_job_manager::~gc_job_manager " + +Params: (NONE)" + +%feature("docstring") gc_job_manager::shutdown "Stop accepting new jobs. Wait for existing jobs to complete. Return all managed SPE's to the system. + +Params: (NONE)" + +%feature("docstring") gc_job_manager::nspes "Return number of SPE's currently allocated to job manager. + +Params: (NONE)" + +%feature("docstring") gc_job_manager::alloc_job_desc "Return a pointer to a properly aligned job descriptor, or throws gc_bad_alloc if there are none available. + +Params: (NONE)" + +%feature("docstring") gc_job_manager::free_job_desc " + +Params: (jd)" + +%feature("docstring") gc_job_manager::submit_job "Submit a job for asynchronous processing on an SPE. + +The caller must not read or write the job description or any of the memory associated with any indirect arguments until after calling wait_job. + +Params: (jd)" + +%feature("docstring") gc_job_manager::wait_job "Wait for job to complete. + +A thread may only wait for jobs which it submitted. + +Params: (jd)" + +%feature("docstring") gc_job_manager::wait_jobs "wait for 1 or more jobs to complete. + +A thread may only wait for jobs which it submitted. + +Params: (njobs, jd, done, mode)" + +%feature("docstring") gc_job_manager::ea_args_maxsize "Return the maximum number of bytes of EA arguments that may be copied to or from the SPE in a single job. The limit applies independently to the \"get\" and \"put\" args. + +Params: (NONE)" + +%feature("docstring") gc_job_manager::lookup_proc "Return gc_proc_id_t associated with spu procedure if one exists, otherwise throws gc_unknown_proc. + +Params: (proc_name)" + +%feature("docstring") gc_job_manager::proc_names "Return a vector of all known spu procedure names. + +Params: (NONE)" + +%feature("docstring") gc_job_manager::set_singleton "Set the singleton gc_job_manager instance. + +The singleton is weakly held, thus the caller must maintain a reference to the mgr for the duration. (If we held the manager strongly, the destructor would never be called, and the resources (SPEs) would not be returned.) Bottom line: the caller is responsible for life-time management. + +Params: (mgr)" + +%feature("docstring") gc_job_manager::singleton "Retrieve the singleton gc_job_manager instance. + +Returns the singleton gc_job_manager instance or raises boost::bad_weak_ptr if the singleton is empty. + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl "Concrete class that manages SPE jobs. + +This class contains all the implementation details." + +%feature("docstring") gc_job_manager_impl::alloc_cti " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::free_cti " + +Params: (cti)" + +%feature("docstring") gc_job_manager_impl::create_event_handler " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::set_eh_state " + +Params: (s)" + +%feature("docstring") gc_job_manager_impl::set_ea_args_maxsize " + +Params: (maxsize)" + +%feature("docstring") gc_job_manager_impl::notify_clients_jobs_are_done " + +Params: (spe_num, completion_info_idx)" + +%feature("docstring") gc_job_manager_impl::send_all_spes " + +Params: (msg)" + +%feature("docstring") gc_job_manager_impl::send_spe " + +Params: (spe, msg)" + +%feature("docstring") gc_job_manager_impl::print_event " + +Params: (evt)" + +%feature("docstring") gc_job_manager_impl::handle_event " + +Params: (evt)" + +%feature("docstring") gc_job_manager_impl::incr_njobs_active " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::decr_njobs_active " + +Params: (n)" + +%feature("docstring") gc_job_manager_impl::tell_spes_to_check_queue " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::poll_for_job_completion " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::bv_zero " + +Params: (bv)" + +%feature("docstring") gc_job_manager_impl::bv_clr " + +Params: (bv, bitno)" + +%feature("docstring") gc_job_manager_impl::bv_set " + +Params: (bv, bitno)" + +%feature("docstring") gc_job_manager_impl::bv_isset " + +Params: (bv, bitno)" + +%feature("docstring") gc_job_manager_impl::bv_isclr " + +Params: (bv, bitno)" + +%feature("docstring") gc_job_manager_impl::setup_logfiles " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::sync_logfiles " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::unmap_logfiles " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::gc_job_manager_impl " + +Params: (options)" + +%feature("docstring") gc_job_manager_impl::event_handler_loop " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::job_completer_loop " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::~gc_job_manager_impl " + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::shutdown "Stop accepting new jobs. Wait for existing jobs to complete. Return all managed SPE's to the system. + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::nspes "Return number of SPE's currently allocated to job manager. + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::alloc_job_desc "Return a pointer to a properly aligned job descriptor, or zero if none are available. + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::free_job_desc " + +Params: (jd)" + +%feature("docstring") gc_job_manager_impl::submit_job "Submit a job for asynchronous processing on an SPE. + +The caller must not read or write the job description or any of the memory associated with any indirect arguments until after calling wait_job. + +Params: (jd)" + +%feature("docstring") gc_job_manager_impl::wait_job "Wait for job to complete. + +A thread may only wait for jobs which it submitted. + +Params: (jd)" + +%feature("docstring") gc_job_manager_impl::wait_jobs "wait for 1 or more jobs to complete. + +A thread may only wait for jobs which it submitted. + +Params: (njobs, jd, done, mode)" + +%feature("docstring") gc_job_manager_impl::ea_args_maxsize "Return the maximum number of bytes of EA arguments that may be copied to or from the SPE in a single job. The limit applies independently to the \"get\" and \"put\" args. + +Params: (NONE)" + +%feature("docstring") gc_job_manager_impl::lookup_proc "Return gc_proc_id_t associated with spu procedure if one exists, otherwise throws gc_unknown_proc. + +Params: (proc_name)" + +%feature("docstring") gc_job_manager_impl::proc_names "Return a vector of all known spu procedure names. + +Params: (NONE)" + + + +%feature("docstring") gc_unknown_proc::gc_unknown_proc " + +Params: (msg)" + +%feature("docstring") gr_adaptive_fir_ccf "Adaptive FIR filter with gr_complex input, gr_complex output and float taps." + +%feature("docstring") gr_adaptive_fir_ccf::error " + +Params: (out)" + +%feature("docstring") gr_adaptive_fir_ccf::update_tap " + +Params: (tap, in)" + +%feature("docstring") gr_adaptive_fir_ccf::gr_adaptive_fir_ccf " + +Params: (name, decimation, taps)" + +%feature("docstring") gr_adaptive_fir_ccf::set_taps " + +Params: (taps)" + +%feature("docstring") gr_adaptive_fir_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + + + +%feature("docstring") gr_base_error_handler::gr_base_error_handler " + +Params: (NONE)" + +%feature("docstring") gr_base_error_handler::nwarnings " + +Params: (NONE)" + +%feature("docstring") gr_base_error_handler::nerrors " + +Params: (NONE)" + +%feature("docstring") gr_base_error_handler::reset_counts " + +Params: (NONE)" + +%feature("docstring") gr_base_error_handler::count_error " + +Params: (s)" + +%feature("docstring") gr_basic_block "The abstract base class for all signal processing blocks. + +Basic blocks are the bare abstraction of an entity that has a name, a set of inputs and outputs, and a message queue. These are never instantiated directly; rather, this is the abstract parent class of both gr_hier_block, which is a recursive container, and gr_block, which implements actual signal processing functions." + +%feature("docstring") gr_basic_block::gr_basic_block "Protected constructor prevents instantiation by non-derived classes. + +Params: (name, input_signature, output_signature)" + +%feature("docstring") gr_basic_block::set_input_signature "may only be called during constructor + +Params: (iosig)" + +%feature("docstring") gr_basic_block::set_output_signature "may only be called during constructor + +Params: (iosig)" + +%feature("docstring") gr_basic_block::set_color "Allow the flowgraph to set for sorting and partitioning. + +Params: (color)" + +%feature("docstring") gr_basic_block::color " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::~gr_basic_block " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::unique_id " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::name " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::input_signature " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::output_signature " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::basic_block " + +Params: (NONE)" + +%feature("docstring") gr_basic_block::check_topology "Confirm that ninputs and noutputs is an acceptable combination. + +This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. + +Params: (ninputs, noutputs)" + +%feature("docstring") gr_basic_block::handle_msg "Block message handler. + +This function is called by the runtime system whenever there are messages in its queue. Blocks should override this to receive messages; the default behavior is to drop them on the floor. + +Params: (msg)" + +%feature("docstring") gr_block "The abstract base class for all 'terminal' processing blocks. + +A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions. This is the base class for all such leaf nodes. + +Blocks have a set of input streams and output streams. The input_signature and output_signature define the number of input streams and output streams respectively, and the type of the data items in each stream. + +Although blocks may consume data on each input stream at a different rate, all outputs streams must produce data at the same rate. That rate may be different from any of the input rates. + +User derived blocks override two methods, forecast and general_work, to implement their signal processing behavior. forecast is called by the system scheduler to determine how many items are required on each input stream in order to produce a given number of output items. + +general_work is called to perform the signal processing in the block. It reads the input items and writes the output items." + +%feature("docstring") gr_block::~gr_block " + +Params: (NONE)" + +%feature("docstring") gr_block::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. + +Params: (NONE)" + +%feature("docstring") gr_block::set_history " + +Params: (history)" + +%feature("docstring") gr_block::fixed_rate "Return true if this block has a fixed input to output rate. + +If true, then fixed_rate_in_to_out and fixed_rate_out_to_in may be called. + +Params: (NONE)" + +%feature("docstring") gr_block::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_block::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_block::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") gr_block::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") gr_block::set_output_multiple "Constrain the noutput_items argument passed to forecast and general_work. + +set_output_multiple causes the scheduler to ensure that the noutput_items argument passed to forecast and general_work will be an integer multiple of + +Params: (multiple)" + +%feature("docstring") gr_block::output_multiple " + +Params: (NONE)" + +%feature("docstring") gr_block::consume "Tell the scheduler of input stream were consumed. + +Params: (which_input, how_many_items)" + +%feature("docstring") gr_block::consume_each "Tell the scheduler were consumed on each input stream. + +Params: (how_many_items)" + +%feature("docstring") gr_block::produce "Tell the scheduler were produced on output stream . + +If the block's general_work method calls produce, must return WORK_CALLED_PRODUCE. + +Params: (which_output, how_many_items)" + +%feature("docstring") gr_block::set_relative_rate "Set the approximate output rate / input rate. + +Provide a hint to the buffer allocator and scheduler. The default relative_rate is 1.0 + +decimators have relative_rates < 1.0 interpolators have relative_rates > 1.0 + +Params: (relative_rate)" + +%feature("docstring") gr_block::relative_rate "return the approximate output rate / input rate + +Params: (NONE)" + +%feature("docstring") gr_block::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (ninput)" + +%feature("docstring") gr_block::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (noutput)" + +%feature("docstring") gr_block::detail " + +Params: (NONE)" + +%feature("docstring") gr_block::set_detail " + +Params: (detail)" + +%feature("docstring") gr_block::gr_block " + +Params: (name, input_signature, output_signature)" + +%feature("docstring") gr_block::set_fixed_rate " + +Params: (fixed_rate)" + +%feature("docstring") gr_block_executor "Manage the execution of a single block." + +%feature("docstring") gr_block_executor::gr_block_executor " + +Params: (block)" + +%feature("docstring") gr_block_executor::~gr_block_executor " + +Params: (NONE)" + +%feature("docstring") gr_block_executor::run_one_iteration " + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader "How we keep track of the readers of a gr_buffer." + +%feature("docstring") gr_buffer_reader::~gr_buffer_reader " + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::items_available "Return number of items available for reading. + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::buffer "Return buffer this reader reads from. + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::max_possible_items_available "Return maximum number of items that could ever be available for reading. This is used as a sanity check in the scheduler to avoid looping forever. + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::read_pointer "return pointer to read buffer. + +The return value points to items_available() number of items + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::update_read_pointer " + +Params: (nitems)" + +%feature("docstring") gr_buffer_reader::set_done " + +Params: (done)" + +%feature("docstring") gr_buffer_reader::done " + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::mutex " + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::link "Return the block that reads via this reader. + +Params: (NONE)" + +%feature("docstring") gr_buffer_reader::gr_buffer_reader "constructor is private. Use gr_buffer::add_reader to create instances + +Params: (buffer, read_index, link)" + + + +%feature("docstring") gr_circular_file::gr_circular_file " + +Params: (filename, writable, size)" + +%feature("docstring") gr_circular_file::~gr_circular_file " + +Params: (NONE)" + +%feature("docstring") gr_circular_file::write " + +Params: (data, nbytes)" + +%feature("docstring") gr_circular_file::read " + +Params: (data, nbytes)" + +%feature("docstring") gr_circular_file::reset_read_pointer " + +Params: (NONE)" + +%feature("docstring") gr_edge "Class representing a connection between to graph endpoints." + +%feature("docstring") gr_edge::gr_edge " + +Params: (NONE)" + +%feature("docstring") gr_edge::~gr_edge " + +Params: (NONE)" + +%feature("docstring") gr_edge::src " + +Params: (NONE)" + +%feature("docstring") gr_edge::dst " + +Params: (NONE)" + +%feature("docstring") gr_endpoint "Class representing a specific input or output graph endpoint." + +%feature("docstring") gr_endpoint::gr_endpoint " + +Params: (NONE)" + +%feature("docstring") gr_endpoint::block " + +Params: (NONE)" + +%feature("docstring") gr_endpoint::port " + +Params: (NONE)" + +%feature("docstring") gr_endpoint::operator== " + +Params: (other)" + +%feature("docstring") gr_error_handler "abstract error handler" + +%feature("docstring") gr_error_handler::gr_error_handler " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::~gr_error_handler " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::message " + +Params: (format, )" + +%feature("docstring") gr_error_handler::warning " + +Params: (format, )" + +%feature("docstring") gr_error_handler::error " + +Params: (format, )" + +%feature("docstring") gr_error_handler::fatal " + +Params: (format, )" + +%feature("docstring") gr_error_handler::nwarnings " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::nerrors " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::reset_counts " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::verror " + +Params: (s, format, )" + +%feature("docstring") gr_error_handler::verror_text " + +Params: (s, text)" + +%feature("docstring") gr_error_handler::default_handler " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::silent_handler " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::has_default_handler " + +Params: (NONE)" + +%feature("docstring") gr_error_handler::set_default_handler " + +Params: (errh)" + +%feature("docstring") gr_error_handler::count_error " + +Params: (s)" + +%feature("docstring") gr_error_handler::handle_text " + +Params: (s, str)" + +%feature("docstring") gr_error_handler::make_text " + +Params: (s, format, )" + +%feature("docstring") gr_feval "base class for evaluating a function: void -> void + +This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. + +Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." + +%feature("docstring") gr_feval::eval "override this to define the function + +Params: (NONE)" + +%feature("docstring") gr_feval::gr_feval " + +Params: (NONE)" + +%feature("docstring") gr_feval::~gr_feval " + +Params: (NONE)" + +%feature("docstring") gr_feval::calleval " + +Params: (NONE)" + +%feature("docstring") gr_feval_cc "base class for evaluating a function: complex -> complex + +This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. + +Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." + +%feature("docstring") gr_feval_cc::eval "override this to define the function + +Params: (x)" + +%feature("docstring") gr_feval_cc::gr_feval_cc " + +Params: (NONE)" + +%feature("docstring") gr_feval_cc::~gr_feval_cc " + +Params: (NONE)" + +%feature("docstring") gr_feval_cc::calleval " + +Params: (x)" + +%feature("docstring") gr_feval_dd "base class for evaluating a function: double -> double + +This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. + +Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." + +%feature("docstring") gr_feval_dd::eval "override this to define the function + +Params: (x)" + +%feature("docstring") gr_feval_dd::gr_feval_dd " + +Params: (NONE)" + +%feature("docstring") gr_feval_dd::~gr_feval_dd " + +Params: (NONE)" + +%feature("docstring") gr_feval_dd::calleval " + +Params: (x)" + +%feature("docstring") gr_feval_ll "base class for evaluating a function: long -> long + +This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. + +Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." + +%feature("docstring") gr_feval_ll::eval "override this to define the function + +Params: (x)" + +%feature("docstring") gr_feval_ll::gr_feval_ll " + +Params: (NONE)" + +%feature("docstring") gr_feval_ll::~gr_feval_ll " + +Params: (NONE)" + +%feature("docstring") gr_feval_ll::calleval " + +Params: (x)" + + + +%feature("docstring") gr_file_error_handler::gr_file_error_handler " + +Params: (file)" + +%feature("docstring") gr_file_error_handler::~gr_file_error_handler " + +Params: (NONE)" + +%feature("docstring") gr_file_error_handler::handle_text " + +Params: (s, str)" + +%feature("docstring") gr_file_sink_base "Common base class for file sinks." + +%feature("docstring") gr_file_sink_base::gr_file_sink_base " + +Params: (filename, is_binary)" + +%feature("docstring") gr_file_sink_base::~gr_file_sink_base " + +Params: (NONE)" + +%feature("docstring") gr_file_sink_base::open "Open filename and begin output to it. + +Params: (filename)" + +%feature("docstring") gr_file_sink_base::close "Close current output file. + +Closes current output file and ignores any output until open is called to connect to another file. + +Params: (NONE)" + +%feature("docstring") gr_file_sink_base::do_update "if we've had an update, do it now. + +Params: (NONE)" + +%feature("docstring") gr_file_sink_base::set_unbuffered "turn on unbuffered writes for slower outputs + +Params: (unbuffered)" + +%feature("docstring") gr_fir_ccc "Abstract class for FIR with gr_complex input, gr_complex output and gr_complex taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_ccc::gr_fir_ccc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc::~gr_fir_ccc " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_ccc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_ccc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_ccc::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc_3dnow "3DNow! version of gr_fir_ccc" + +%feature("docstring") gr_fir_ccc_3dnow::gr_fir_ccc_3dnow " + +Params: (NONE)" + + + +%feature("docstring") gr_fir_ccc_3dnowext::gr_fir_ccc_3dnowext " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc_generic "Concrete class for generic implementation of FIR with gr_complex input, gr_complex output and gr_complex taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_ccc_generic::gr_fir_ccc_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccc_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_ccc_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_ccc_simd "common base class for SIMD versions of gr_fir_ccc + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_ccc_simd::gr_fir_ccc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc_simd::~gr_fir_ccc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccc_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_ccc_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccc_sse "SSE version of gr_fir_ccc." + +%feature("docstring") gr_fir_ccc_sse::gr_fir_ccc_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf "Abstract class for FIR with gr_complex input, gr_complex output and float taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_ccf::gr_fir_ccf "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf::~gr_fir_ccf " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccf::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_ccf::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_ccf::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_ccf::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_3dnow "3DNow! version of gr_fir_ccf" + +%feature("docstring") gr_fir_ccf_3dnow::gr_fir_ccf_3dnow " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_generic "Concrete class for generic implementation of FIR with gr_complex input, gr_complex output and float taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_ccf_generic::gr_fir_ccf_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccf_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_ccf_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_ccf_simd "common base class for SIMD versions of gr_fir_ccf + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_ccf_simd::gr_fir_ccf_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_simd::~gr_fir_ccf_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_ccf_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_ccf_sse "SSE version of gr_fir_ccf." + +%feature("docstring") gr_fir_ccf_sse::gr_fir_ccf_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc "Abstract class for FIR with float input, gr_complex output and gr_complex taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fcc::gr_fir_fcc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc::~gr_fir_fcc " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fcc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fcc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fcc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fcc::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc_3dnow "3DNow! version of gr_fir_fcc" + +%feature("docstring") gr_fir_fcc_3dnow::gr_fir_fcc_3dnow " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc_generic "Concrete class for generic implementation of FIR with float input, gr_complex output and gr_complex taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fcc_generic::gr_fir_fcc_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fcc_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fcc_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fcc_simd "common base class for SIMD versions of gr_fir_fcc + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_fcc_simd::gr_fir_fcc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc_simd::~gr_fir_fcc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fcc_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fcc_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fcc_sse "SSE version of gr_fir_fcc." + +%feature("docstring") gr_fir_fcc_sse::gr_fir_fcc_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff "Abstract class for FIR with float input, float output and float taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fff::gr_fir_fff "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_fff::~gr_fir_fff " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fff::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fff::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fff::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fff::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_3dnow "3DNow! version of gr_fir_fff" + +%feature("docstring") gr_fir_fff_3dnow::gr_fir_fff_3dnow " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_altivec "altivec version of gr_fir_fff" + +%feature("docstring") gr_fir_fff_altivec::gr_fir_fff_altivec " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_altivec::~gr_fir_fff_altivec " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_altivec::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fff_altivec::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fff_armv7_a "armv7_a using NEON coprocessor version of gr_fir_fff" + +%feature("docstring") gr_fir_fff_armv7_a::gr_fir_fff_armv7_a " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_armv7_a::~gr_fir_fff_armv7_a " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_armv7_a::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fff_armv7_a::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fff_generic "Concrete class for generic implementation of FIR with float input, float output and float taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fff_generic::gr_fir_fff_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fff_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fff_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fff_simd "common base class for SIMD versions of gr_fir_fff + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_fff_simd::gr_fir_fff_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_simd::~gr_fir_fff_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fff_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fff_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fff_sse "SSE version of gr_fir_fff." + +%feature("docstring") gr_fir_fff_sse::gr_fir_fff_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf "Abstract class for FIR with float input, short output and float taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fsf::gr_fir_fsf "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf::~gr_fir_fsf " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fsf::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fsf::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fsf::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fsf::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf_3dnow "3DNow! version of gr_fir_fsf" + +%feature("docstring") gr_fir_fsf_3dnow::gr_fir_fsf_3dnow " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf_generic "Concrete class for generic implementation of FIR with float input, short output and float taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_fsf_generic::gr_fir_fsf_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fsf_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_fsf_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_fsf_simd "common base class for SIMD versions of gr_fir_fsf + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_fsf_simd::gr_fir_fsf_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf_simd::~gr_fir_fsf_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_fsf_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_fsf_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_fsf_sse "SSE version of gr_fir_fsf." + +%feature("docstring") gr_fir_fsf_sse::gr_fir_fsf_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc "Abstract class for FIR with short input, gr_complex output and gr_complex taps + +This is the abstract class for a Finite Impulse Response filter. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_scc::gr_fir_scc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (NONE)" + +%feature("docstring") gr_fir_scc::~gr_fir_scc " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_scc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_scc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_scc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_scc::ntaps " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc::get_taps " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_3dnow "3DNow! version of gr_fir_scc" + +%feature("docstring") gr_fir_scc_3dnow::gr_fir_scc_3dnow " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_3dnowext "3DNow! Ext version of gr_fir_scc" + +%feature("docstring") gr_fir_scc_3dnowext::gr_fir_scc_3dnowext " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_generic "Concrete class for generic implementation of FIR with short input, gr_complex output and gr_complex taps. + +The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" + +%feature("docstring") gr_fir_scc_generic::gr_fir_scc_generic " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_generic::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_scc_generic::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gr_fir_scc_generic::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gr_fir_scc_simd "common base class for SIMD versions of gr_fir_scc + +This base class handles alignment issues common to SSE and 3DNOW subclasses." + +%feature("docstring") gr_fir_scc_simd::gr_fir_scc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_simd::~gr_fir_scc_simd " + +Params: (NONE)" + +%feature("docstring") gr_fir_scc_simd::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_scc_simd::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gr_fir_scc_sse "SSE version of gr_fir_scc." + +%feature("docstring") gr_fir_scc_sse::gr_fir_scc_sse " + +Params: (NONE)" + +%feature("docstring") gr_fir_sysconfig "abstract base class for configuring the automatic selection of the fastest gr_fir for your platform. + +This is used internally by gr_fir_util." + +%feature("docstring") gr_fir_sysconfig::~gr_fir_sysconfig " + +Params: (NONE)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_ccf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_fcc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_ccc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_fff " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_scc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::create_gr_fir_fsf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_ccf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_fcc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_ccc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_fff_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_scc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig::get_gr_fir_fsf_info " + +Params: (info)" + + + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_ccf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fcc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fff " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fsf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_scc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_ccc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_ccf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fcc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fff_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fsf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_scc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_ccc_info " + +Params: (info)" + + + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_ccf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fcc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_ccc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fff " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_scc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fsf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_ccf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fcc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_ccc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fff_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_scc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fsf_info " + +Params: (info)" + + + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_ccf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fcc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fff " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fsf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_scc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_ccc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_ccf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fcc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fff_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fsf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_scc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_ccc_info " + +Params: (info)" + + + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_ccf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fcc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fff " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fsf " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_scc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_ccc " + +Params: (taps)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_ccf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fcc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fff_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fsf_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_scc_info " + +Params: (info)" + +%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_ccc_info " + +Params: (info)" + +%feature("docstring") gr_firdes "Finite Impulse Response (FIR) filter design functions." + +%feature("docstring") gr_firdes::low_pass "use \"window method\" to design a low-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, cutoff_freq, transition_width, window, beta)" + +%feature("docstring") gr_firdes::low_pass_2 "use \"window method\" to design a low-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). required stopband attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuatin --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, cutoff_freq, transition_width, attenuation_dB, window, beta)" + +%feature("docstring") gr_firdes::high_pass "use \"window method\" to design a high-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, cutoff_freq, transition_width, window, beta)" + +%feature("docstring") gr_firdes::high_pass_2 "use \"window method\" to design a high-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, cutoff_freq, transition_width, attenuation_dB, window, beta)" + +%feature("docstring") gr_firdes::band_pass "use \"window method\" to design a band-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" + +%feature("docstring") gr_firdes::band_pass_2 "use \"window method\" to design a band-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" + +%feature("docstring") gr_firdes::complex_band_pass "use \"window method\" to design a complex band-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" + +%feature("docstring") gr_firdes::complex_band_pass_2 "use \"window method\" to design a complex band-pass FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" + +%feature("docstring") gr_firdes::band_reject "use \"window method\" to design a band-reject FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" + +%feature("docstring") gr_firdes::band_reject_2 "use \"window method\" to design a band-reject FIR filter + +overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window + +Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" + +%feature("docstring") gr_firdes::hilbert "design a Hilbert Transform Filter + +Number of taps, must be odd What kind of window to use Only used for Kaiser + +Params: (ntaps, windowtype, beta)" + +%feature("docstring") gr_firdes::root_raised_cosine "design a Root Cosine FIR Filter (do we need a window?) + +overall gain of filter (typically 1.0) sampling freq (Hz) rate: symbol rate, must be a factor of sample rate excess bandwidth factor number of taps + +Params: (gain, sampling_freq, symbol_rate, alpha, ntaps)" + +%feature("docstring") gr_firdes::gaussian "design a Gaussian filter + +overall gain of filter (typically 1.0) per bit: symbol rate, must be a factor of sample rate number of taps + +Params: (gain, spb, bt, ntaps)" + +%feature("docstring") gr_firdes::window " + +Params: (type, ntaps, beta)" + +%feature("docstring") gr_firdes::bessi0 " + +Params: (x)" + +%feature("docstring") gr_firdes::sanity_check_1f " + +Params: (sampling_freq, f1, transition_width)" + +%feature("docstring") gr_firdes::sanity_check_2f " + +Params: (sampling_freq, f1, f2, transition_width)" + +%feature("docstring") gr_firdes::sanity_check_2f_c " + +Params: (sampling_freq, f1, f2, transition_width)" + +%feature("docstring") gr_firdes::compute_ntaps " + +Params: (sampling_freq, transition_width, window_type, beta)" + +%feature("docstring") gr_firdes::compute_ntaps_windes " + +Params: (sampling_freq, transition_width, attenuation_dB)" + +%feature("docstring") gr_fxpt "fixed point sine and cosine and friends. + +fixed pt radians --------- -------- -2**31 -pi 0 0 2**31-1 pi - epsilon" + +%feature("docstring") gr_fxpt::float_to_fixed " + +Params: (x)" + +%feature("docstring") gr_fxpt::fixed_to_float " + +Params: (x)" + +%feature("docstring") gr_fxpt::sin "Given a fixed point angle x, return float sine (x). + +Params: (x)" + +%feature("docstring") gr_fxpt::cos " + +Params: (x)" + +%feature("docstring") gr_fxpt_nco "Numerically Controlled Oscillator (NCO)." + +%feature("docstring") gr_fxpt_nco::gr_fxpt_nco " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_nco::~gr_fxpt_nco " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_nco::set_phase " + +Params: (angle)" + +%feature("docstring") gr_fxpt_nco::adjust_phase " + +Params: (delta_phase)" + +%feature("docstring") gr_fxpt_nco::set_freq " + +Params: (angle_rate)" + +%feature("docstring") gr_fxpt_nco::adjust_freq " + +Params: (delta_angle_rate)" + +%feature("docstring") gr_fxpt_nco::step " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_nco::get_phase " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_nco::get_freq " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_nco::sincos " + +Params: (sinx, cosx)" + +%feature("docstring") gr_fxpt_nco::sin " + +Params: (output, noutput_items, ampl)" + +%feature("docstring") gr_fxpt_nco::cos " + +Params: (output, noutput_items, ampl)" + +%feature("docstring") gr_fxpt_vco "Voltage Controlled Oscillator (VCO)." + +%feature("docstring") gr_fxpt_vco::gr_fxpt_vco " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_vco::~gr_fxpt_vco " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_vco::set_phase " + +Params: (angle)" + +%feature("docstring") gr_fxpt_vco::adjust_phase " + +Params: (delta_phase)" + +%feature("docstring") gr_fxpt_vco::get_phase " + +Params: (NONE)" + +%feature("docstring") gr_fxpt_vco::sincos " + +Params: (sinx, cosx)" + +%feature("docstring") gr_fxpt_vco::cos " + +Params: (output, input, noutput_items, k, ampl)" + +%feature("docstring") gr_fxpt_vco::sin " + +Params: (NONE)" + + + +%feature("docstring") gr_hier_block2_detail::gr_hier_block2_detail " + +Params: (owner)" + +%feature("docstring") gr_hier_block2_detail::~gr_hier_block2_detail " + +Params: (NONE)" + +%feature("docstring") gr_hier_block2_detail::connect " + +Params: (block)" + +%feature("docstring") gr_hier_block2_detail::disconnect " + +Params: (block)" + +%feature("docstring") gr_hier_block2_detail::disconnect_all " + +Params: (NONE)" + +%feature("docstring") gr_hier_block2_detail::lock " + +Params: (NONE)" + +%feature("docstring") gr_hier_block2_detail::unlock " + +Params: (NONE)" + +%feature("docstring") gr_hier_block2_detail::flatten_aux " + +Params: (sfg)" + +%feature("docstring") gr_hier_block2_detail::connect_input " + +Params: (my_port, port, block)" + +%feature("docstring") gr_hier_block2_detail::connect_output " + +Params: (my_port, port, block)" + +%feature("docstring") gr_hier_block2_detail::disconnect_input " + +Params: (my_port, port, block)" + +%feature("docstring") gr_hier_block2_detail::disconnect_output " + +Params: (my_port, port, block)" + +%feature("docstring") gr_hier_block2_detail::resolve_port " + +Params: (port, is_input)" + +%feature("docstring") gr_hier_block2_detail::resolve_endpoint " + +Params: (endp, is_input)" + +%feature("docstring") gr_io_signature "i/o signature for input and output ports. + +misc" + +%feature("docstring") gr_io_signature::gr_io_signature " + +Params: (min_streams, max_streams, sizeof_stream_items)" + +%feature("docstring") gr_io_signature::~gr_io_signature " + +Params: (NONE)" + +%feature("docstring") gr_io_signature::min_streams " + +Params: (NONE)" + +%feature("docstring") gr_io_signature::max_streams " + +Params: (NONE)" + +%feature("docstring") gr_io_signature::sizeof_stream_item " + +Params: (index)" + +%feature("docstring") gr_io_signature::sizeof_stream_items " + +Params: (NONE)" + +%feature("docstring") gr_local_sighandler "Get and set signal handler. + +Constructor installs new handler, destructor reinstalls original value." + +%feature("docstring") gr_local_sighandler::gr_local_sighandler " + +Params: (signum, new_handler)" + +%feature("docstring") gr_local_sighandler::~gr_local_sighandler " + +Params: (NONE)" + +%feature("docstring") gr_local_sighandler::throw_signal " + +Params: (signum)" + +%feature("docstring") gr_msg_accepter "Accepts messages and inserts them into a message queue, then notifies subclass gr_basic_block there is a message pending." + +%feature("docstring") gr_msg_accepter::gr_msg_accepter " + +Params: (NONE)" + +%feature("docstring") gr_msg_accepter::~gr_msg_accepter " + +Params: (NONE)" + +%feature("docstring") gr_msg_accepter::post "send to + +Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. + +Params: (msg)" + +%feature("docstring") gr_msg_handler "abstract class of message handlers" + +%feature("docstring") gr_msg_handler::~gr_msg_handler " + +Params: (NONE)" + +%feature("docstring") gr_msg_handler::handle "handle + +Params: (msg)" + +%feature("docstring") gr_msg_queue "thread-safe message queue" + +%feature("docstring") gr_msg_queue::gr_msg_queue " + +Params: (limit)" + +%feature("docstring") gr_msg_queue::~gr_msg_queue " + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::handle "Generic msg_handler method: insert the message. + +Params: (msg)" + +%feature("docstring") gr_msg_queue::insert_tail "Insert message at tail of queue. + +Block if queue if full. + +Params: (msg)" + +%feature("docstring") gr_msg_queue::delete_head "Delete message from head of queue and return it. Block if no message is available. + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::delete_head_nowait "If there's a message in the q, delete it and return it. If no message is available, return 0. + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::flush "Delete all messages from the queue. + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::empty_p "is the queue empty? + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::full_p "is the queue full? + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::count "return number of messages in queue + +Params: (NONE)" + +%feature("docstring") gr_msg_queue::limit "return limit on number of message in queue. 0 -> unbounded + +Params: (NONE)" + +%feature("docstring") gr_nco "base class template for Numerically Controlled Oscillator (NCO)" + +%feature("docstring") gr_nco::gr_nco " + +Params: (NONE)" + +%feature("docstring") gr_nco::~gr_nco " + +Params: (NONE)" + +%feature("docstring") gr_nco::set_phase " + +Params: (angle)" + +%feature("docstring") gr_nco::adjust_phase " + +Params: (delta_phase)" + +%feature("docstring") gr_nco::set_freq " + +Params: (angle_rate)" + +%feature("docstring") gr_nco::adjust_freq " + +Params: (delta_angle_rate)" + +%feature("docstring") gr_nco::step " + +Params: (NONE)" + +%feature("docstring") gr_nco::get_phase " + +Params: (NONE)" + +%feature("docstring") gr_nco::get_freq " + +Params: (NONE)" + +%feature("docstring") gr_nco::sincos " + +Params: (sinx, cosx)" + +%feature("docstring") gr_nco::cos " + +Params: (NONE)" + +%feature("docstring") gr_nco::sin " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts "guts of oscilloscope trigger and buffer module + +This module processes sets of samples provided the method. When appropriate given the updateRate, sampleRate and trigger conditions, process_sample will periodically write output records of captured data to output_fd. For each trigger event, nchannels records will be written. Each record consists of get_samples_per_output_record binary floats. The trigger instant occurs at the 1/2 way point in the buffer. Thus, output records consist of 50% pre-trigger data and 50% post-trigger data." + +%feature("docstring") gr_oscope_guts::gr_oscope_guts " + +Params: (rhs)" + +%feature("docstring") gr_oscope_guts::operator= " + +Params: (rhs)" + +%feature("docstring") gr_oscope_guts::trigger_changed " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::update_rate_or_decimation_changed " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::found_trigger " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::write_output_records " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::enter_hold_off " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::enter_look_for_trigger " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::enter_post_trigger " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::~gr_oscope_guts " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::process_sample "points to nchannels float values. These are the values for each channel at this sample time. + +Params: (channel_data)" + +%feature("docstring") gr_oscope_guts::set_update_rate " + +Params: (update_rate)" + +%feature("docstring") gr_oscope_guts::set_decimation_count " + +Params: (decimation_count)" + +%feature("docstring") gr_oscope_guts::set_trigger_channel " + +Params: (channel)" + +%feature("docstring") gr_oscope_guts::set_trigger_mode " + +Params: (mode)" + +%feature("docstring") gr_oscope_guts::set_trigger_slope " + +Params: (slope)" + +%feature("docstring") gr_oscope_guts::set_trigger_level " + +Params: (trigger_level)" + +%feature("docstring") gr_oscope_guts::set_trigger_level_auto " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::set_sample_rate " + +Params: (sample_rate)" + +%feature("docstring") gr_oscope_guts::set_num_channels " + +Params: (nchannels)" + +%feature("docstring") gr_oscope_guts::num_channels " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::sample_rate " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::update_rate " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_decimation_count " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_trigger_channel " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_trigger_mode " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_trigger_slope " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_trigger_level " + +Params: (NONE)" + +%feature("docstring") gr_oscope_guts::get_samples_per_output_record " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x "Abstract class for python oscilloscope module. + +Don't instantiate this. Use gr_oscope_sink_f or gr_oscope_sink_c instead." + +%feature("docstring") gr_oscope_sink_x::gr_oscope_sink_x " + +Params: (name, input_sig, sampling_rate)" + +%feature("docstring") gr_oscope_sink_x::~gr_oscope_sink_x " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::set_update_rate " + +Params: (update_rate)" + +%feature("docstring") gr_oscope_sink_x::set_decimation_count " + +Params: (decimation_count)" + +%feature("docstring") gr_oscope_sink_x::set_trigger_channel " + +Params: (channel)" + +%feature("docstring") gr_oscope_sink_x::set_trigger_mode " + +Params: (mode)" + +%feature("docstring") gr_oscope_sink_x::set_trigger_slope " + +Params: (slope)" + +%feature("docstring") gr_oscope_sink_x::set_trigger_level " + +Params: (trigger_level)" + +%feature("docstring") gr_oscope_sink_x::set_trigger_level_auto " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::set_sample_rate " + +Params: (sample_rate)" + +%feature("docstring") gr_oscope_sink_x::set_num_channels " + +Params: (nchannels)" + +%feature("docstring") gr_oscope_sink_x::num_channels " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::sample_rate " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::update_rate " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_decimation_count " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_trigger_channel " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_trigger_mode " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_trigger_slope " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_trigger_level " + +Params: (NONE)" + +%feature("docstring") gr_oscope_sink_x::get_samples_per_output_record " + +Params: (NONE)" + + + +%feature("docstring") gr_preferences::get " + +Params: (key)" + +%feature("docstring") gr_preferences::set " + +Params: (key, value)" + +%feature("docstring") gr_prefs "Base class for representing user preferences a la windows INI files. + +The real implementation is in Python, and is accessable from C++ via the magic of SWIG directors." + +%feature("docstring") gr_prefs::singleton " + +Params: (NONE)" + +%feature("docstring") gr_prefs::set_singleton " + +Params: (p)" + +%feature("docstring") gr_prefs::~gr_prefs " + +Params: (NONE)" + +%feature("docstring") gr_prefs::has_section "Does exist? + +Params: (section)" + +%feature("docstring") gr_prefs::has_option "Does exist? + +Params: (section, option)" + +%feature("docstring") gr_prefs::get_string "If option exists return associated value; else default_val. + +Params: (section, option, default_val)" + +%feature("docstring") gr_prefs::get_bool "If option exists and value can be converted to bool, return it; else default_val. + +Params: (section, option, default_val)" + +%feature("docstring") gr_prefs::get_long "If option exists and value can be converted to long, return it; else default_val. + +Params: (section, option, default_val)" + +%feature("docstring") gr_prefs::get_double "If option exists and value can be converted to double, return it; else default_val. + +Params: (section, option, default_val)" + +%feature("docstring") gr_random "pseudo random number generator" + +%feature("docstring") gr_random::gr_random " + +Params: (seed)" + +%feature("docstring") gr_random::reseed " + +Params: (seed)" + +%feature("docstring") gr_random::ran1 "uniform random deviate in the range [0.0, 1.0) + +Params: (NONE)" + +%feature("docstring") gr_random::gasdev "normally distributed deviate with zero mean and variance 1 + +Params: (NONE)" + +%feature("docstring") gr_random::laplacian " + +Params: (NONE)" + +%feature("docstring") gr_random::impulse " + +Params: (factor)" + +%feature("docstring") gr_random::rayleigh " + +Params: (NONE)" + +%feature("docstring") gr_random::rayleigh_complex " + +Params: (NONE)" + + + +%feature("docstring") gr_rotator::gr_rotator " + +Params: (NONE)" + +%feature("docstring") gr_rotator::set_phase " + +Params: (phase)" + +%feature("docstring") gr_rotator::set_phase_incr " + +Params: (incr)" + +%feature("docstring") gr_rotator::rotate " + +Params: (in)" + +%feature("docstring") gr_scheduler "Abstract scheduler that takes a flattened flow graph and runs it. + +Preconditions: details, buffers and buffer readers have been assigned." + +%feature("docstring") gr_scheduler::gr_scheduler "Construct a scheduler and begin evaluating the graph. + +The scheduler will continue running until all blocks until they report that they are done or the stop method is called. + +Params: (ffg)" + +%feature("docstring") gr_scheduler::~gr_scheduler " + +Params: (NONE)" + +%feature("docstring") gr_scheduler::stop "Tell the scheduler to stop executing. + +Params: (NONE)" + +%feature("docstring") gr_scheduler::wait "Block until the graph is done. + +Params: (NONE)" + +%feature("docstring") gr_scheduler_sts "Concrete scheduler that uses the single_threaded_scheduler." + +%feature("docstring") gr_scheduler_sts::gr_scheduler_sts "Construct a scheduler and begin evaluating the graph. + +The scheduler will continue running until all blocks until they report that they are done or the stop method is called. + +Params: (ffg)" + +%feature("docstring") gr_scheduler_sts::make " + +Params: (ffg)" + +%feature("docstring") gr_scheduler_sts::~gr_scheduler_sts " + +Params: (NONE)" + +%feature("docstring") gr_scheduler_sts::stop "Tell the scheduler to stop executing. + +Params: (NONE)" + +%feature("docstring") gr_scheduler_sts::wait "Block until the graph is done. + +Params: (NONE)" + +%feature("docstring") gr_scheduler_tpb "Concrete scheduler that uses a kernel thread-per-block." + +%feature("docstring") gr_scheduler_tpb::gr_scheduler_tpb "Construct a scheduler and begin evaluating the graph. + +The scheduler will continue running until all blocks until they report that they are done or the stop method is called. + +Params: (ffg)" + +%feature("docstring") gr_scheduler_tpb::make " + +Params: (ffg)" + +%feature("docstring") gr_scheduler_tpb::~gr_scheduler_tpb " + +Params: (NONE)" + +%feature("docstring") gr_scheduler_tpb::stop "Tell the scheduler to stop executing. + +Params: (NONE)" + +%feature("docstring") gr_scheduler_tpb::wait "Block until the graph is done. + +Params: (NONE)" + +%feature("docstring") gr_select_handler "Abstract handler for select based notification." + +%feature("docstring") gr_select_handler::gr_select_handler " + +Params: (file_descriptor)" + +%feature("docstring") gr_select_handler::~gr_select_handler " + +Params: (NONE)" + +%feature("docstring") gr_select_handler::fd " + +Params: (NONE)" + +%feature("docstring") gr_select_handler::file_descriptor " + +Params: (NONE)" + +%feature("docstring") gr_select_handler::handle_read "Called when file_descriptor is readable. + +Called when the dispatcher detects that file_descriptor can be read without blocking. + +Params: (NONE)" + +%feature("docstring") gr_select_handler::handle_write "Called when file_descriptor is writable. + +Called when dispatcher detects that file descriptor can be written without blocking. + +Params: (NONE)" + +%feature("docstring") gr_select_handler::readable "Called each time around the dispatcher loop to determine whether this handler's file descriptor should be added to the list on which read events can occur. The default method returns true, indicating that by default, all handlers are interested in read events. + +Params: (NONE)" + +%feature("docstring") gr_select_handler::writable "Called each time around the dispatcher loop to determine whether this handler's file descriptor should be added to the list on which write events can occur. The default method returns true, indicating that by default, all handlers are interested in write events. + +Params: (NONE)" + +%feature("docstring") gr_signal "Representation of signal." + +%feature("docstring") gr_signal::gr_signal " + +Params: (signum)" + +%feature("docstring") gr_signal::signal " + +Params: (NONE)" + +%feature("docstring") gr_signal::name " + +Params: (NONE)" + +%feature("docstring") gr_single_pole_iir "class template for single pole IIR filter" + +%feature("docstring") gr_single_pole_iir::gr_single_pole_iir "construct new single pole IIR with given alpha + +computes y(i) = (1-alpha) * y(i-1) + alpha * x(i) + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir::filter "compute a single output value. + +Params: (input)" + +%feature("docstring") gr_single_pole_iir::filterN "compute an array of N output values. must have n valid entries. + +Params: (output, input, n)" + +%feature("docstring") gr_single_pole_iir::set_taps "install as the current taps. + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir::reset "reset state to zero + +Params: (NONE)" + +%feature("docstring") gr_single_pole_iir::prev_output " + +Params: (NONE)" + + + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::gr_single_pole_iir "construct new single pole IIR with given alpha + +computes y(i) = (1-alpha) * y(i-1) + alpha * x(i) + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::filter "compute a single output value. + +Params: (input)" + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::filterN "compute an array of N output values. must have n valid entries. + +Params: (output, input, n)" + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::set_taps "install as the current taps. + +Params: (alpha)" + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::reset "reset state to zero + +Params: (NONE)" + +%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::prev_output " + +Params: (NONE)" + + + +%feature("docstring") gr_squelch_base_cc::update_state " + +Params: (sample)" + +%feature("docstring") gr_squelch_base_cc::mute " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_cc::gr_squelch_base_cc " + +Params: (name, ramp, gate)" + +%feature("docstring") gr_squelch_base_cc::ramp " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_cc::set_ramp " + +Params: (ramp)" + +%feature("docstring") gr_squelch_base_cc::gate " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_cc::set_gate " + +Params: (gate)" + +%feature("docstring") gr_squelch_base_cc::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_cc::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_cc::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + + + +%feature("docstring") gr_squelch_base_ff::update_state " + +Params: (sample)" + +%feature("docstring") gr_squelch_base_ff::mute " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_ff::gr_squelch_base_ff " + +Params: (name, ramp, gate)" + +%feature("docstring") gr_squelch_base_ff::ramp " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_ff::set_ramp " + +Params: (ramp)" + +%feature("docstring") gr_squelch_base_ff::gate " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_ff::set_gate " + +Params: (gate)" + +%feature("docstring") gr_squelch_base_ff::unmuted " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_ff::squelch_range " + +Params: (NONE)" + +%feature("docstring") gr_squelch_base_ff::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_sync_block "synchronous 1:1 input to output with history + +Override work to provide the signal processing implementation." + +%feature("docstring") gr_sync_block::gr_sync_block " + +Params: (name, input_signature, output_signature)" + +%feature("docstring") gr_sync_block::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_sync_block::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_sync_block::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_sync_block::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (ninput)" + +%feature("docstring") gr_sync_block::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (noutput)" + +%feature("docstring") gr_sync_decimator "synchronous N:1 input to output with history + +Override work to provide the signal processing implementation." + +%feature("docstring") gr_sync_decimator::gr_sync_decimator " + +Params: (name, input_signature, output_signature, decimation)" + +%feature("docstring") gr_sync_decimator::decimation " + +Params: (NONE)" + +%feature("docstring") gr_sync_decimator::set_decimation " + +Params: (decimation)" + +%feature("docstring") gr_sync_decimator::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_sync_decimator::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_sync_decimator::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (ninput)" + +%feature("docstring") gr_sync_decimator::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (noutput)" + +%feature("docstring") gr_sync_interpolator "synchronous 1:N input to output with history + +Override work to provide the signal processing implementation." + +%feature("docstring") gr_sync_interpolator::gr_sync_interpolator " + +Params: (name, input_signature, output_signature, interpolation)" + +%feature("docstring") gr_sync_interpolator::interpolation " + +Params: (NONE)" + +%feature("docstring") gr_sync_interpolator::set_interpolation " + +Params: (interpolation)" + +%feature("docstring") gr_sync_interpolator::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_sync_interpolator::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_sync_interpolator::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (ninput)" + +%feature("docstring") gr_sync_interpolator::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. + +Params: (noutput)" + +%feature("docstring") gr_top_block_impl "Abstract implementation details of gr_top_block + +The actual implementation of gr_top_block. Separate class allows decoupling of changes from dependent classes." + +%feature("docstring") gr_top_block_impl::gr_top_block_impl " + +Params: (owner)" + +%feature("docstring") gr_top_block_impl::~gr_top_block_impl " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::start " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::stop " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::wait " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::lock " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::unlock " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::dump " + +Params: (NONE)" + +%feature("docstring") gr_top_block_impl::restart " + +Params: (NONE)" + +%feature("docstring") gr_tpb_thread_body "The body of each thread-per-block thread. + +One of these is instantiated in its own thread for each block. The constructor turns into the main loop which returns when the block is done or is interrupted." + +%feature("docstring") gr_tpb_thread_body::gr_tpb_thread_body " + +Params: (block)" + +%feature("docstring") gr_tpb_thread_body::~gr_tpb_thread_body " + +Params: (NONE)" + +%feature("docstring") gr_vco "base class template for Voltage Controlled Oscillator (VCO)" + +%feature("docstring") gr_vco::gr_vco " + +Params: (NONE)" + +%feature("docstring") gr_vco::~gr_vco " + +Params: (NONE)" + +%feature("docstring") gr_vco::set_phase " + +Params: (angle)" + +%feature("docstring") gr_vco::adjust_phase " + +Params: (delta_phase)" + +%feature("docstring") gr_vco::get_phase " + +Params: (NONE)" + +%feature("docstring") gr_vco::sincos " + +Params: (sinx, cosx)" + +%feature("docstring") gr_vco::cos " + +Params: (NONE)" + +%feature("docstring") gr_vco::sin " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf "abstract class to implement doubly mapped virtual memory circular buffers" + +%feature("docstring") gr_vmcircbuf::gr_vmcircbuf " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf::~gr_vmcircbuf " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf::pointer_to_first_copy " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf::pointer_to_second_copy " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_createfilemapping "concrete class to implement circular buffers with mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_createfilemapping::gr_vmcircbuf_createfilemapping " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_createfilemapping::~gr_vmcircbuf_createfilemapping " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_createfilemapping_factory "concrete factory for circular buffers built using mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_createfilemapping_factory::singleton " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_createfilemapping_factory::name "return name of this factory + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_createfilemapping_factory::granularity "return granularity of mapping, typically equal to page size + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_createfilemapping_factory::make "return a gr_vmcircbuf, or 0 if unable. + +Call this to create a doubly mapped circular buffer. + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_factory "abstract factory for creating circular buffers" + +%feature("docstring") gr_vmcircbuf_factory::gr_vmcircbuf_factory " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_factory::~gr_vmcircbuf_factory " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_factory::name "return name of this factory + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_factory::granularity "return granularity of mapping, typically equal to page size + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_factory::make "return a gr_vmcircbuf, or 0 if unable. + +Call this to create a doubly mapped circular buffer. + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open "concrete class to implement circular buffers with mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open::gr_vmcircbuf_mmap_shm_open " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open::~gr_vmcircbuf_mmap_shm_open " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory "concrete factory for circular buffers built using mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::singleton " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::name "return name of this factory + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::granularity "return granularity of mapping, typically equal to page size + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::make "return a gr_vmcircbuf, or 0 if unable. + +Call this to create a doubly mapped circular buffer. + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile "concrete class to implement circular buffers with mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile::gr_vmcircbuf_mmap_tmpfile " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile::~gr_vmcircbuf_mmap_tmpfile " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory "concrete factory for circular buffers built using mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::singleton " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::name "return name of this factory + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::granularity "return granularity of mapping, typically equal to page size + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::make "return a gr_vmcircbuf, or 0 if unable. + +Call this to create a doubly mapped circular buffer. + +Params: (size)" + + + +%feature("docstring") gr_vmcircbuf_sysconfig::get_default_factory " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysconfig::granularity " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysconfig::make " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_sysconfig::all_factories " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysconfig::set_default_factory " + +Params: (f)" + +%feature("docstring") gr_vmcircbuf_sysconfig::test_factory "Does this factory really work? + +verbose = 0: silent verbose = 1: names of factories tested and results verbose = 2: all intermediate results + +Params: (f, verbose)" + +%feature("docstring") gr_vmcircbuf_sysconfig::test_all_factories "Test all factories, return true if at least one of them works verbose = 0: silent verbose = 1: names of factories tested and results verbose = 2: all intermediate results. + +Params: (verbose)" + +%feature("docstring") gr_vmcircbuf_sysv_shm "concrete class to implement circular buffers with mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_sysv_shm::gr_vmcircbuf_sysv_shm " + +Params: (size)" + +%feature("docstring") gr_vmcircbuf_sysv_shm::~gr_vmcircbuf_sysv_shm " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysv_shm_factory "concrete factory for circular buffers built using mmap and shm_open" + +%feature("docstring") gr_vmcircbuf_sysv_shm_factory::singleton " + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysv_shm_factory::name "return name of this factory + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysv_shm_factory::granularity "return granularity of mapping, typically equal to page size + +Params: (NONE)" + +%feature("docstring") gr_vmcircbuf_sysv_shm_factory::make "return a gr_vmcircbuf, or 0 if unable. + +Call this to create a doubly mapped circular buffer. + +Params: (size)" + +%feature("docstring") gri_agc2_cc "high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used." + +%feature("docstring") gri_agc2_cc::gri_agc2_cc " + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gri_agc2_cc::decay_rate " + +Params: (NONE)" + +%feature("docstring") gri_agc2_cc::attack_rate " + +Params: (NONE)" + +%feature("docstring") gri_agc2_cc::reference " + +Params: (NONE)" + +%feature("docstring") gri_agc2_cc::gain " + +Params: (NONE)" + +%feature("docstring") gri_agc2_cc::max_gain " + +Params: (NONE)" + +%feature("docstring") gri_agc2_cc::set_decay_rate " + +Params: (rate)" + +%feature("docstring") gri_agc2_cc::set_attack_rate " + +Params: (rate)" + +%feature("docstring") gri_agc2_cc::set_reference " + +Params: (reference)" + +%feature("docstring") gri_agc2_cc::set_gain " + +Params: (gain)" + +%feature("docstring") gri_agc2_cc::set_max_gain " + +Params: (max_gain)" + +%feature("docstring") gri_agc2_cc::scale " + +Params: (input)" + +%feature("docstring") gri_agc2_cc::scaleN " + +Params: (output, input, n)" + +%feature("docstring") gri_agc2_ff "high performance Automatic Gain Control class with attack and decay rate + +Power is approximated by absolute value" + +%feature("docstring") gri_agc2_ff::gri_agc2_ff " + +Params: (attack_rate, decay_rate, reference, gain, max_gain)" + +%feature("docstring") gri_agc2_ff::attack_rate " + +Params: (NONE)" + +%feature("docstring") gri_agc2_ff::decay_rate " + +Params: (NONE)" + +%feature("docstring") gri_agc2_ff::reference " + +Params: (NONE)" + +%feature("docstring") gri_agc2_ff::gain " + +Params: (NONE)" + +%feature("docstring") gri_agc2_ff::max_gain " + +Params: (NONE)" + +%feature("docstring") gri_agc2_ff::set_attack_rate " + +Params: (rate)" + +%feature("docstring") gri_agc2_ff::set_decay_rate " + +Params: (rate)" + +%feature("docstring") gri_agc2_ff::set_reference " + +Params: (reference)" + +%feature("docstring") gri_agc2_ff::set_gain " + +Params: (gain)" + +%feature("docstring") gri_agc2_ff::set_max_gain " + +Params: (max_gain)" + +%feature("docstring") gri_agc2_ff::scale " + +Params: (input)" + +%feature("docstring") gri_agc2_ff::scaleN " + +Params: (output, input, n)" + +%feature("docstring") gri_agc_cc "high performance Automatic Gain Control class + +For Power the absolute value of the complex number is used." + +%feature("docstring") gri_agc_cc::gri_agc_cc " + +Params: (rate, reference, gain, max_gain)" + +%feature("docstring") gri_agc_cc::rate " + +Params: (NONE)" + +%feature("docstring") gri_agc_cc::reference " + +Params: (NONE)" + +%feature("docstring") gri_agc_cc::gain " + +Params: (NONE)" + +%feature("docstring") gri_agc_cc::max_gain " + +Params: (NONE)" + +%feature("docstring") gri_agc_cc::set_rate " + +Params: (rate)" + +%feature("docstring") gri_agc_cc::set_reference " + +Params: (reference)" + +%feature("docstring") gri_agc_cc::set_gain " + +Params: (gain)" + +%feature("docstring") gri_agc_cc::set_max_gain " + +Params: (max_gain)" + +%feature("docstring") gri_agc_cc::scale " + +Params: (input)" + +%feature("docstring") gri_agc_cc::scaleN " + +Params: (output, input, n)" + +%feature("docstring") gri_agc_ff "high performance Automatic Gain Control class + +Power is approximated by absolute value" + +%feature("docstring") gri_agc_ff::gri_agc_ff " + +Params: (rate, reference, gain, max_gain)" + +%feature("docstring") gri_agc_ff::rate " + +Params: (NONE)" + +%feature("docstring") gri_agc_ff::reference " + +Params: (NONE)" + +%feature("docstring") gri_agc_ff::gain " + +Params: (NONE)" + +%feature("docstring") gri_agc_ff::max_gain " + +Params: (NONE)" + +%feature("docstring") gri_agc_ff::set_rate " + +Params: (rate)" + +%feature("docstring") gri_agc_ff::set_reference " + +Params: (reference)" + +%feature("docstring") gri_agc_ff::set_gain " + +Params: (gain)" + +%feature("docstring") gri_agc_ff::set_max_gain " + +Params: (max_gain)" + +%feature("docstring") gri_agc_ff::scale " + +Params: (input)" + +%feature("docstring") gri_agc_ff::scaleN " + +Params: (output, input, n)" + +%feature("docstring") gri_fft_complex "FFT: complex in, complex out." + +%feature("docstring") gri_fft_complex::gri_fft_complex " + +Params: (fft_size, forward)" + +%feature("docstring") gri_fft_complex::~gri_fft_complex " + +Params: (NONE)" + +%feature("docstring") gri_fft_complex::get_inbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_complex::get_outbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_complex::inbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_complex::outbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_complex::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_ccc_generic "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gri_fft_filter_ccc_generic::compute_sizes " + +Params: (ntaps)" + +%feature("docstring") gri_fft_filter_ccc_generic::tailsize " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_ccc_generic::gri_fft_filter_ccc_generic "Construct an FFT filter for complex vectors with the given taps and decimation rate. + +This is the basic implementation for performing FFT filter for fast convolution in other blocks for complex vectors (such as gr_fft_filter_ccc). + +Params: (decimation, taps)" + +%feature("docstring") gri_fft_filter_ccc_generic::~gri_fft_filter_ccc_generic " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_ccc_generic::set_taps "Set new taps for the filter. + +Sets new taps and resets the class properties to handle different sizes + +Params: (taps)" + +%feature("docstring") gri_fft_filter_ccc_generic::filter "Perform the filter operation. + +Params: (nitems, input, output)" + +%feature("docstring") gri_fft_filter_ccc_sse "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gri_fft_filter_ccc_sse::compute_sizes " + +Params: (ntaps)" + +%feature("docstring") gri_fft_filter_ccc_sse::tailsize " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_ccc_sse::gri_fft_filter_ccc_sse "Construct an FFT filter for complex vectors with the given taps and decimation rate. + +This is the basic implementation for performing FFT filter for fast convolution in other blocks for complex vectors (such as gr_fft_filter_ccc). + +Params: (decimation, taps)" + +%feature("docstring") gri_fft_filter_ccc_sse::~gri_fft_filter_ccc_sse " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_ccc_sse::set_taps "Set new taps for the filter. + +Sets new taps and resets the class properties to handle different sizes + +Params: (taps)" + +%feature("docstring") gri_fft_filter_ccc_sse::filter "Perform the filter operation. + +Params: (nitems, input, output)" + + + +%feature("docstring") gri_fft_filter_fff_generic::compute_sizes " + +Params: (ntaps)" + +%feature("docstring") gri_fft_filter_fff_generic::tailsize " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_fff_generic::gri_fft_filter_fff_generic "Construct a FFT filter for float vectors with the given taps and decimation rate. + +This is the basic implementation for performing FFT filter for fast convolution in other blocks for floating point vectors (such as gr_fft_filter_fff). + +Params: (decimation, taps)" + +%feature("docstring") gri_fft_filter_fff_generic::~gri_fft_filter_fff_generic " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_fff_generic::set_taps "Set new taps for the filter. + +Sets new taps and resets the class properties to handle different sizes + +Params: (taps)" + +%feature("docstring") gri_fft_filter_fff_generic::filter "Perform the filter operation. + +Params: (nitems, input, output)" + + + +%feature("docstring") gri_fft_filter_fff_sse::compute_sizes " + +Params: (ntaps)" + +%feature("docstring") gri_fft_filter_fff_sse::tailsize " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_fff_sse::gri_fft_filter_fff_sse "Construct a FFT filter for float vectors with the given taps and decimation rate. + +This is the basic implementation for performing FFT filter for fast convolution in other blocks for floating point vectors (such as gr_fft_filter_fff). + +Params: (decimation, taps)" + +%feature("docstring") gri_fft_filter_fff_sse::~gri_fft_filter_fff_sse " + +Params: (NONE)" + +%feature("docstring") gri_fft_filter_fff_sse::set_taps "Set new taps for the filter. + +Sets new taps and resets the class properties to handle different sizes + +Params: (taps)" + +%feature("docstring") gri_fft_filter_fff_sse::filter "Perform the filter operation. + +Params: (nitems, input, output)" + +%feature("docstring") gri_fft_planner "Export reference to planner mutex for those apps that want to use FFTW w/o using the gri_fftw* classes." + +%feature("docstring") gri_fft_planner::mutex "Return reference to planner mutex + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd "FFT: real in, complex out." + +%feature("docstring") gri_fft_real_fwd::gri_fft_real_fwd " + +Params: (fft_size)" + +%feature("docstring") gri_fft_real_fwd::~gri_fft_real_fwd " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd::get_inbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd::get_outbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd::inbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd::outbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_fwd::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev "FFT: complex in, float out." + +%feature("docstring") gri_fft_real_rev::gri_fft_real_rev " + +Params: (fft_size)" + +%feature("docstring") gri_fft_real_rev::~gri_fft_real_rev " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev::get_inbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev::get_outbuf " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev::inbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev::outbuf_length " + +Params: (NONE)" + +%feature("docstring") gri_fft_real_rev::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc "FIR with internal buffer for gr_complex input, gr_complex output and gr_complex taps." + +%feature("docstring") gri_fir_filter_with_buffer_ccc::gri_fir_filter_with_buffer_ccc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::~gri_fir_filter_with_buffer_ccc " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccc::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf "FIR with internal buffer for gr_complex input, gr_complex output and float taps." + +%feature("docstring") gri_fir_filter_with_buffer_ccf::gri_fir_filter_with_buffer_ccf "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::~gri_fir_filter_with_buffer_ccf " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_ccf::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc "FIR with internal buffer for float input, gr_complex output and gr_complex taps." + +%feature("docstring") gri_fir_filter_with_buffer_fcc::gri_fir_filter_with_buffer_fcc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::~gri_fir_filter_with_buffer_fcc " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fcc::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fff "FIR with internal buffer for float input, float output and float taps." + +%feature("docstring") gri_fir_filter_with_buffer_fff::gri_fir_filter_with_buffer_fff "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::~gri_fir_filter_with_buffer_fff " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fff::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf "FIR with internal buffer for float input, short output and float taps." + +%feature("docstring") gri_fir_filter_with_buffer_fsf::gri_fir_filter_with_buffer_fsf "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::~gri_fir_filter_with_buffer_fsf " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_fsf::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_scc "FIR with internal buffer for short input, gr_complex output and gr_complex taps." + +%feature("docstring") gri_fir_filter_with_buffer_scc::gri_fir_filter_with_buffer_scc "construct new FIR with given taps. + +Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::~gri_fir_filter_with_buffer_scc " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::filterN "compute an array of N output values. + +must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::filterNdec "compute an array of N output values, decimating the input + +must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. + +Params: (output, input, n, decimate)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_fir_filter_with_buffer_scc::get_taps " + +Params: (NONE)" + +%feature("docstring") gri_glfsr "Galois Linear Feedback Shift Register using specified polynomial mask + +Generates a maximal length pseudo-random sequence of length 2^degree-1." + +%feature("docstring") gri_glfsr::gri_glfsr " + +Params: (mask, seed)" + +%feature("docstring") gri_glfsr::next_bit " + +Params: (NONE)" + +%feature("docstring") gri_glfsr::mask " + +Params: (NONE)" + +%feature("docstring") gri_glfsr::glfsr_mask " + +Params: (degree)" + +%feature("docstring") gri_goertzel "Implements Goertzel single-bin DFT calculation." + +%feature("docstring") gri_goertzel::gri_goertzel " + +Params: (NONE)" + +%feature("docstring") gri_goertzel::batch " + +Params: (in)" + +%feature("docstring") gri_goertzel::input " + +Params: (in)" + +%feature("docstring") gri_goertzel::output " + +Params: (NONE)" + +%feature("docstring") gri_goertzel::ready " + +Params: (NONE)" + +%feature("docstring") gri_iir "base class template for Infinite Impulse Response filter (IIR)" + +%feature("docstring") gri_iir::gri_iir "Construct an IIR with the given taps. + +This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. + + and must have equal numbers of taps + +The input and output satisfy a difference equation of the form + + + +with the corresponding rational system function + + + +Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps. + +Params: (fftaps, fbtaps)" + +%feature("docstring") gri_iir::~gri_iir " + +Params: (NONE)" + +%feature("docstring") gri_iir::filter "compute a single output value. + +Params: (input)" + +%feature("docstring") gri_iir::filter_n "compute an array of N output values. must have N valid entries. + +Params: (output, input, n)" + +%feature("docstring") gri_iir::ntaps_ff " + +Params: (NONE)" + +%feature("docstring") gri_iir::ntaps_fb " + +Params: (NONE)" + +%feature("docstring") gri_iir::set_taps "install new taps. + +Params: (fftaps, fbtaps)" + +%feature("docstring") gri_lfsr "Fibonacci Linear Feedback Shift Register using specified polynomial mask + +Generates a maximal length pseudo-random sequence of length 2^degree-1. + +Constructor: gri_lfsr(int mask, int seed, int reg_len); + +mask - polynomial coefficients representing the locations of feedback taps from a shift register which are xor'ed together to form the new high order bit. + +Some common masks might be: x^4 + x^3 + x^0 = 0x19 x^5 + x^3 + x^0 = 0x29 x^6 + x^5 + x^0 = 0x61 + +seed - the initialization vector placed into the register durring initialization. Low order bit corresponds to x^0 coefficient -- the first to be shifted as output. + +reg_len - specifies the length of the feedback shift register to be used. Durring each iteration, the register is rightshifted one and the new bit is placed in bit reg_len. reg_len should generally be at least order(mask) + 1 + +see for more explanation. + +next_bit() - Standard LFSR operation + +Perform one cycle of the LFSR. The output bit is taken from the shift register LSB. The shift register MSB is assigned from the modulo 2 sum of the masked shift register. + +next_bit_scramble(unsigned char input) - Scramble an input stream + +Perform one cycle of the LFSR. The output bit is taken from the shift register LSB. The shift register MSB is assigned from the modulo 2 sum of the masked shift register and the input LSB. + +next_bit_descramble(unsigned char input) - Descramble an input stream + +Perform one cycle of the LFSR. The output bit is taken from the modulo 2 sum of the masked shift register and the input LSB. The shift register MSB is assigned from the LSB of the input. + +See for operation of these last two functions (see multiplicative scrambler.)" + +%feature("docstring") gri_lfsr::popCount " + +Params: (x)" + +%feature("docstring") gri_lfsr::gri_lfsr " + +Params: (mask, seed, reg_len)" + +%feature("docstring") gri_lfsr::next_bit " + +Params: (NONE)" + +%feature("docstring") gri_lfsr::next_bit_scramble " + +Params: (input)" + +%feature("docstring") gri_lfsr::next_bit_descramble " + +Params: (input)" + +%feature("docstring") gri_lfsr::reset "Reset shift register to initial seed value + +Params: (NONE)" + +%feature("docstring") gri_lfsr::pre_shift "Rotate the register through x number of bits where we are just throwing away the results to get queued up correctly + +Params: (num)" + +%feature("docstring") gri_lfsr::mask " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_15_1_0 "Linear Feedback Shift Register using primitive polynomial x^15 + x + 1 + +Generates a maximal length pseudo-random sequence of length 2^15 - 1 bits." + +%feature("docstring") gri_lfsr_15_1_0::gri_lfsr_15_1_0 " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_15_1_0::reset " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_15_1_0::next_bit " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_15_1_0::next_byte " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_32k "generate pseudo-random sequence of length 32768 bits. + +This is based on gri_lfsr_15_1_0 with an extra 0 added at the end of the sequence." + +%feature("docstring") gri_lfsr_32k::gri_lfsr_32k " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_32k::reset " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_32k::next_bit " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_32k::next_byte " + +Params: (NONE)" + +%feature("docstring") gri_lfsr_32k::next_short " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator "Compute intermediate samples between signal samples x(k*Ts) + +This implements a Mininum Mean Squared Error interpolator with 8 taps. It is suitable for signals where the bandwidth of interest B = 1/(4*Ts) Where Ts is the time between samples. + +Although mu, the fractional delay, is specified as a float, it is actually quantized. 0.0 <= mu <= 1.0. That is, mu is quantized in the interpolate method to 32nd's of a sample." + +%feature("docstring") gri_mmse_fir_interpolator::gri_mmse_fir_interpolator " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator::~gri_mmse_fir_interpolator " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator::nsteps " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator::interpolate "compute a single interpolated output value. must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +must be in the range [0, 1] and specifies the fractional delay. + +Params: (input, mu)" + +%feature("docstring") gri_mmse_fir_interpolator_cc "Compute intermediate samples between signal samples x(k*Ts) + +This implements a Mininum Mean Squared Error interpolator with 8 taps. It is suitable for signals where the bandwidth of interest B = 1/(4*Ts) Where Ts is the time between samples. + +Although mu, the fractional delay, is specified as a float, it is actually quantized. 0.0 <= mu <= 1.0. That is, mu is quantized in the interpolate method to 32nd's of a sample." + +%feature("docstring") gri_mmse_fir_interpolator_cc::gri_mmse_fir_interpolator_cc " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator_cc::~gri_mmse_fir_interpolator_cc " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator_cc::ntaps " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator_cc::nsteps " + +Params: (NONE)" + +%feature("docstring") gri_mmse_fir_interpolator_cc::interpolate "compute a single interpolated output value. + +must have ntaps() valid entries and be 8-byte aligned. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + must be in the range [0, 1] and specifies the fractional delay. + +Params: (input, mu)" + +%feature("docstring") gsm_fr_decode_ps "GSM 06.10 Full Rate Vocoder Decoder." + +%feature("docstring") gsm_fr_decode_ps::gsm_fr_decode_ps " + +Params: (NONE)" + +%feature("docstring") gsm_fr_decode_ps::~gsm_fr_decode_ps " + +Params: (NONE)" + +%feature("docstring") gsm_fr_decode_ps::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gsm_fr_encode_sp "GSM 06.10 Full Rate Vocoder Encoder + +shorts in; 33 byte packets out." + +%feature("docstring") gsm_fr_encode_sp::gsm_fr_encode_sp " + +Params: (NONE)" + +%feature("docstring") gsm_fr_encode_sp::~gsm_fr_encode_sp " + +Params: (NONE)" + +%feature("docstring") gsm_fr_encode_sp::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") i2c "abstract class for controlling i2c bus" + +%feature("docstring") i2c::i2c " + +Params: (NONE)" + +%feature("docstring") i2c::~i2c " + +Params: (NONE)" + +%feature("docstring") i2c::write " + +Params: (addr, buf, nbytes)" + +%feature("docstring") i2c::read " + +Params: (addr, buf, max_bytes)" + +%feature("docstring") i2c_bbio "abstract class that implements bit banging i/o for i2c bus." + +%feature("docstring") i2c_bbio::i2c_bbio " + +Params: (NONE)" + +%feature("docstring") i2c_bbio::~i2c_bbio " + +Params: (NONE)" + +%feature("docstring") i2c_bbio::set_scl " + +Params: (state)" + +%feature("docstring") i2c_bbio::set_sda " + +Params: (state)" + +%feature("docstring") i2c_bbio::get_sda " + +Params: (NONE)" + +%feature("docstring") i2c_bbio::lock " + +Params: (NONE)" + +%feature("docstring") i2c_bbio::unlock " + +Params: (NONE)" + +%feature("docstring") i2c_bbio_pp "concrete class that bit bangs eval board i2c bus using parallel port + +This class talks to the i2c bus on the microtune eval board using the parallel port. This works for both the 4937 and 4702 boards." + +%feature("docstring") i2c_bbio_pp::i2c_bbio_pp " + +Params: (pp)" + +%feature("docstring") i2c_bbio_pp::set_scl " + +Params: (state)" + +%feature("docstring") i2c_bbio_pp::set_sda " + +Params: (state)" + +%feature("docstring") i2c_bbio_pp::get_sda " + +Params: (NONE)" + +%feature("docstring") i2c_bbio_pp::lock " + +Params: (NONE)" + +%feature("docstring") i2c_bbio_pp::unlock " + +Params: (NONE)" + +%feature("docstring") i2c_bitbang "class for controlling i2c bus" + +%feature("docstring") i2c_bitbang::i2c_bitbang " + +Params: (io)" + +%feature("docstring") i2c_bitbang::start " + +Params: (NONE)" + +%feature("docstring") i2c_bitbang::stop " + +Params: (NONE)" + +%feature("docstring") i2c_bitbang::write_bit " + +Params: (bit)" + +%feature("docstring") i2c_bitbang::write_byte " + +Params: (byte)" + +%feature("docstring") i2c_bitbang::set_sda " + +Params: (bit)" + +%feature("docstring") i2c_bitbang::set_scl " + +Params: (bit)" + +%feature("docstring") i2c_bitbang::get_sda " + +Params: (NONE)" + +%feature("docstring") i2c_bitbang::~i2c_bitbang " + +Params: (NONE)" + +%feature("docstring") i2c_bitbang::write " + +Params: (addr, buf, nbytes)" + +%feature("docstring") i2c_bitbang::read " + +Params: (addr, buf, max_bytes)" + +%feature("docstring") std::ifstream "STL class." + + + +%feature("docstring") usrp2::usrp2::impl::inc_enqueued " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::dec_enqueued " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::init_et_hdrs " + +Params: (p, dst)" + +%feature("docstring") usrp2::usrp2::impl::init_etf_hdrs " + +Params: (p, dst, word0_flags, chan, timestamp)" + +%feature("docstring") usrp2::usrp2::impl::start_bg " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::stop_bg " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::init_config_rx_v2_cmd " + +Params: (cmd)" + +%feature("docstring") usrp2::usrp2::impl::init_config_tx_v2_cmd " + +Params: (cmd)" + +%feature("docstring") usrp2::usrp2::impl::transmit_cmd_and_wait " + +Params: (cmd, len, p, secs)" + +%feature("docstring") usrp2::usrp2::impl::transmit_cmd " + +Params: (cmd, len)" + +%feature("docstring") usrp2::usrp2::impl::operator() " + +Params: (base, len)" + +%feature("docstring") usrp2::usrp2::impl::handle_control_packet " + +Params: (base, len)" + +%feature("docstring") usrp2::usrp2::impl::handle_data_packet " + +Params: (base, len)" + +%feature("docstring") usrp2::usrp2::impl::dboard_info " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::reset_db " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::impl " + +Params: (ifc, p, rx_bufsize)" + +%feature("docstring") usrp2::usrp2::impl::~impl " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::mac_addr " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::interface_name " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_antenna " + +Params: (ant)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_gain " + +Params: (gain)" + +%feature("docstring") usrp2::usrp2::impl::rx_gain_min " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::rx_gain_max " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::rx_gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_lo_offset " + +Params: (frequency)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_center_freq " + +Params: (frequency, result)" + +%feature("docstring") usrp2::usrp2::impl::rx_freq_min " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::rx_freq_max " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_decim " + +Params: (decimation_factor)" + +%feature("docstring") usrp2::usrp2::impl::rx_decim " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_rx_scale_iq " + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::impl::set_gpio_ddr " + +Params: (bank, value, mask)" + +%feature("docstring") usrp2::usrp2::impl::set_gpio_sels " + +Params: (bank, src)" + +%feature("docstring") usrp2::usrp2::impl::enable_gpio_streaming " + +Params: (bank, enable)" + +%feature("docstring") usrp2::usrp2::impl::write_gpio " + +Params: (bank, value, mask)" + +%feature("docstring") usrp2::usrp2::impl::read_gpio " + +Params: (bank, value)" + +%feature("docstring") usrp2::usrp2::impl::start_rx_streaming " + +Params: (channel, items_per_frame)" + +%feature("docstring") usrp2::usrp2::impl::start_rx_streaming_at " + +Params: (channel, items_per_frame, time)" + +%feature("docstring") usrp2::usrp2::impl::sync_and_start_rx_streaming_at " + +Params: (channel, items_per_frame, time)" + +%feature("docstring") usrp2::usrp2::impl::rx_samples " + +Params: (channel, handler)" + +%feature("docstring") usrp2::usrp2::impl::flush_rx_samples " + +Params: (channel)" + +%feature("docstring") usrp2::usrp2::impl::stop_rx_streaming " + +Params: (channel)" + +%feature("docstring") usrp2::usrp2::impl::rx_overruns " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::rx_missing " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_antenna " + +Params: (ant)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_gain " + +Params: (gain)" + +%feature("docstring") usrp2::usrp2::impl::tx_gain_min " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::tx_gain_max " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::tx_gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_lo_offset " + +Params: (frequency)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_center_freq " + +Params: (frequency, result)" + +%feature("docstring") usrp2::usrp2::impl::tx_freq_min " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::tx_freq_max " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_interp " + +Params: (interpolation_factor)" + +%feature("docstring") usrp2::usrp2::impl::tx_interp " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::default_tx_scale_iq " + +Params: (interpolation_factor, scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::impl::set_tx_scale_iq " + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::impl::tx_32fc " + +Params: (channel, samples, nsamples, metadata)" + +%feature("docstring") usrp2::usrp2::impl::tx_16sc " + +Params: (channel, samples, nsamples, metadata)" + +%feature("docstring") usrp2::usrp2::impl::tx_raw " + +Params: (channel, items, nitems, metadata)" + +%feature("docstring") usrp2::usrp2::impl::config_mimo " + +Params: (flags)" + +%feature("docstring") usrp2::usrp2::impl::fpga_master_clock_freq " + +Params: (freq)" + +%feature("docstring") usrp2::usrp2::impl::adc_rate " + +Params: (rate)" + +%feature("docstring") usrp2::usrp2::impl::dac_rate " + +Params: (rate)" + +%feature("docstring") usrp2::usrp2::impl::tx_daughterboard_id " + +Params: (dbid)" + +%feature("docstring") usrp2::usrp2::impl::rx_daughterboard_id " + +Params: (dbid)" + +%feature("docstring") usrp2::usrp2::impl::burn_mac_addr " + +Params: (new_addr)" + +%feature("docstring") usrp2::usrp2::impl::sync_to_pps " + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::impl::sync_every_pps " + +Params: (enable)" + +%feature("docstring") usrp2::usrp2::impl::peek32 " + +Params: (addr, words)" + +%feature("docstring") usrp2::usrp2::impl::poke32 " + +Params: (addr, data)" + +%feature("docstring") usrp2::usrp2::impl::bg_loop " + +Params: (NONE)" + +%feature("docstring") interleaver "INTERLEAVER class." + +%feature("docstring") interleaver::interleaver " + +Params: (NONE)" + +%feature("docstring") interleaver::K " + +Params: (NONE)" + +%feature("docstring") interleaver::INTER " + +Params: (NONE)" + +%feature("docstring") interleaver::DEINTER " + +Params: (NONE)" + +%feature("docstring") interleaver::write_interleaver_txt " + +Params: (filename)" + +%feature("docstring") interleaver_fifo "template class for interleaver fifo" + +%feature("docstring") interleaver_fifo::interleaver_fifo " + +Params: (size)" + +%feature("docstring") interleaver_fifo::~interleaver_fifo " + +Params: (NONE)" + +%feature("docstring") interleaver_fifo::reset "reset interleaver (flushes contents and resets commutator) + +Params: (NONE)" + +%feature("docstring") interleaver_fifo::stuff "stuff a symbol into the fifo and return the oldest + +Params: (input)" + +%feature("docstring") std::invalid_argument "STL class." + +%feature("docstring") std::ios "STL class." + +%feature("docstring") std::ios_base "STL class." + +%feature("docstring") std::istream "STL class." + +%feature("docstring") std::istringstream "STL class." + +%feature("docstring") std::multimap::iterator "STL iterator class." + +%feature("docstring") std::map::iterator "STL iterator class." + +%feature("docstring") std::deque::iterator "STL iterator class." + +%feature("docstring") std::multiset::iterator "STL iterator class." + +%feature("docstring") std::list::iterator "STL iterator class." + +%feature("docstring") std::set::iterator "STL iterator class." + +%feature("docstring") std::basic_string::iterator "STL iterator class." + +%feature("docstring") std::string::iterator "STL iterator class." + +%feature("docstring") std::vector::iterator "STL iterator class." + +%feature("docstring") std::wstring::iterator "STL iterator class." + +%feature("docstring") std::length_error "STL class." + +%feature("docstring") std::list "STL class." + +%feature("docstring") std::logic_error "STL class." + +%feature("docstring") std::map "STL class." + +%feature("docstring") microtune_4702 "class for controlling microtune 4702 tuner module" + +%feature("docstring") microtune_4702::microtune_4702 " + +Params: (i2c, i2c_addr)" + +%feature("docstring") microtune_4702::~microtune_4702 " + +Params: (NONE)" + +%feature("docstring") microtune_4702::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. + +Params: (freq, actual_freq)" + +%feature("docstring") microtune_4702::pll_locked_p " + +Params: (NONE)" + +%feature("docstring") microtune_4702::get_output_freq " + +Params: (NONE)" + +%feature("docstring") microtune_4702_eval_board "control microtune 4702 eval board" + +%feature("docstring") microtune_4702_eval_board::microtune_4702_eval_board " + +Params: (which_pp)" + +%feature("docstring") microtune_4702_eval_board::~microtune_4702_eval_board " + +Params: (NONE)" + +%feature("docstring") microtune_4702_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) + +This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. + +Params: (value_0_1000)" + +%feature("docstring") microtune_4937 "class for controlling microtune 4937 tuner module" + +%feature("docstring") microtune_4937::microtune_4937 " + +Params: (i2c, i2c_addr)" + +%feature("docstring") microtune_4937::~microtune_4937 " + +Params: (NONE)" + +%feature("docstring") microtune_4937::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. + +Params: (freq, actual_freq)" + +%feature("docstring") microtune_4937::pll_locked_p " + +Params: (NONE)" + +%feature("docstring") microtune_4937::get_output_freq " + +Params: (NONE)" + +%feature("docstring") microtune_4937_eval_board "control microtune 4937 eval board" + +%feature("docstring") microtune_4937_eval_board::microtune_4937_eval_board " + +Params: (which_pp)" + +%feature("docstring") microtune_4937_eval_board::~microtune_4937_eval_board " + +Params: (NONE)" + +%feature("docstring") microtune_4937_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) + +This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. + +Params: (value_0_1000)" + +%feature("docstring") microtune_xxxx "abstract class for controlling microtune {4937,4702} tuner modules" + +%feature("docstring") microtune_xxxx::microtune_xxxx " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx::~microtune_xxxx " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. + +Params: (freq, actual_freq)" + +%feature("docstring") microtune_xxxx::pll_locked_p " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx::get_output_freq " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx_eval_board "abstract class for controlling microtune xxxx eval board" + +%feature("docstring") microtune_xxxx_eval_board::microtune_xxxx_eval_board " + +Params: (which_pp)" + +%feature("docstring") microtune_xxxx_eval_board::~microtune_xxxx_eval_board " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx_eval_board::board_present_p "is the eval board present? + +Params: (NONE)" + +%feature("docstring") microtune_xxxx_eval_board::set_RF_AGC_voltage "set RF and IF AGC control voltages ([0, 5] volts) + +Params: (volts)" + +%feature("docstring") microtune_xxxx_eval_board::set_IF_AGC_voltage " + +Params: (volts)" + +%feature("docstring") microtune_xxxx_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) + +This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. + +Params: (value_0_1000)" + +%feature("docstring") microtune_xxxx_eval_board::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. + +Params: (freq, actual_freq)" + +%feature("docstring") microtune_xxxx_eval_board::pll_locked_p " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx_eval_board::get_output_freq " + +Params: (NONE)" + +%feature("docstring") microtune_xxxx_eval_board::write_dac " + +Params: (which, value)" + +%feature("docstring") microtune_xxxx_eval_board::write_both_dacs " + +Params: (val0, val1)" + + + +%feature("docstring") MSDD6000::MSDD6000 " + +Params: (ip_addr)" + +%feature("docstring") MSDD6000::~MSDD6000 " + +Params: (NONE)" + +%feature("docstring") MSDD6000::set_decim " + +Params: (decim_pow2)" + +%feature("docstring") MSDD6000::set_fc " + +Params: (center_mhz, offset_hz)" + +%feature("docstring") MSDD6000::set_ddc_gain " + +Params: (gain)" + +%feature("docstring") MSDD6000::set_rf_attn " + +Params: (attn)" + +%feature("docstring") MSDD6000::set_output " + +Params: (mode, arg)" + +%feature("docstring") MSDD6000::start " + +Params: (NONE)" + +%feature("docstring") MSDD6000::stop " + +Params: (NONE)" + +%feature("docstring") MSDD6000::send_request " + +Params: (, , , , )" + +%feature("docstring") MSDD6000::read " + +Params: (, )" + + + +%feature("docstring") MSDD6000_RS::MSDD6000_RS " + +Params: (ip_addr)" + +%feature("docstring") MSDD6000_RS::~MSDD6000_RS " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::set_rf_attn " + +Params: (attn)" + +%feature("docstring") MSDD6000_RS::set_ddc_gain " + +Params: (gain)" + +%feature("docstring") MSDD6000_RS::set_fc " + +Params: (center_mhz, offset_hz)" + +%feature("docstring") MSDD6000_RS::set_ddc_samp_rate " + +Params: (sample_rate_khz)" + +%feature("docstring") MSDD6000_RS::set_ddc_bw " + +Params: (bw_khz)" + +%feature("docstring") MSDD6000_RS::start " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::stop " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::start_data " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::stop_data " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::pull_ddc_samp_rate " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::pull_ddc_bw " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::pull_rx_freq " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::pull_ddc_gain " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::pull_rf_atten " + +Params: (NONE)" + +%feature("docstring") MSDD6000_RS::send_request " + +Params: (, , , , , , )" + +%feature("docstring") MSDD6000_RS::read " + +Params: (, )" + + + +%feature("docstring") msdd_rs_source_simple::msdd_rs_source_simple " + +Params: (src, port_src)" + +%feature("docstring") msdd_rs_source_simple::~msdd_rs_source_simple " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::start_data " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::stop_data " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::set_ddc_samp_rate " + +Params: ()" + +%feature("docstring") msdd_rs_source_simple::set_ddc_bw " + +Params: ()" + +%feature("docstring") msdd_rs_source_simple::set_rx_freq " + +Params: ()" + +%feature("docstring") msdd_rs_source_simple::set_ddc_gain " + +Params: ()" + +%feature("docstring") msdd_rs_source_simple::set_rf_atten " + +Params: ()" + +%feature("docstring") msdd_rs_source_simple::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") msdd_rs_source_simple::pull_adc_freq " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::pull_ddc_samp_rate " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::pull_ddc_bw " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::pull_rx_freq " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::pull_ddc_gain " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::pull_rf_atten " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::gain_range " + +Params: (NONE)" + +%feature("docstring") msdd_rs_source_simple::freq_range " + +Params: (NONE)" + +%feature("docstring") gruel::msg_accepter "Virtual base class that accepts messages." + +%feature("docstring") gruel::msg_accepter::msg_accepter " + +Params: (NONE)" + +%feature("docstring") gruel::msg_accepter::~msg_accepter " + +Params: (NONE)" + +%feature("docstring") gruel::msg_accepter::post "send to + +Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. + +Params: (msg)" + +%feature("docstring") gruel::msg_accepter_msgq "Concrete class that accepts messages and inserts them into a message queue." + +%feature("docstring") gruel::msg_accepter_msgq::msg_accepter_msgq " + +Params: (msgq)" + +%feature("docstring") gruel::msg_accepter_msgq::~msg_accepter_msgq " + +Params: (NONE)" + +%feature("docstring") gruel::msg_accepter_msgq::post "send to + +Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. + +Params: (msg)" + +%feature("docstring") gruel::msg_accepter_msgq::msg_queue " + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue "thread-safe message queue" + +%feature("docstring") gruel::msg_queue::msg_queue " + +Params: (limit)" + +%feature("docstring") gruel::msg_queue::~msg_queue " + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::insert_tail "Insert message at tail of queue. + +Block if queue if full. + +Params: (msg)" + +%feature("docstring") gruel::msg_queue::delete_head "Delete message from head of queue and return it. Block if no message is available. + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::delete_head_nowait "If there's a message in the q, delete it and return it. If no message is available, return pmt_t(). + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::flush "Delete all messages from the queue. + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::empty_p "is the queue empty? + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::full_p "is the queue full? + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::count "return number of messages in queue + +Params: (NONE)" + +%feature("docstring") gruel::msg_queue::limit "return limit on number of message in queue. 0 -> unbounded + +Params: (NONE)" + +%feature("docstring") std::multimap "STL class." + +%feature("docstring") std::multiset "STL class." + +%feature("docstring") std::ofstream "STL class." + +%feature("docstring") std::ostream "STL class." + +%feature("docstring") std::ostringstream "STL class." + +%feature("docstring") std::out_of_range "STL class." + +%feature("docstring") std::overflow_error "STL class." + +%feature("docstring") usrp2::pending_reply "Control mechanism to allow API calls to block waiting for reply packets" + +%feature("docstring") usrp2::pending_reply::pending_reply "Construct a pending reply from the reply ID, response packet buffer, and buffer length. + +Params: (rid, buffer, len)" + +%feature("docstring") usrp2::pending_reply::~pending_reply "Destructor. Signals creating thread. + +Params: (NONE)" + +%feature("docstring") usrp2::pending_reply::wait_for_completion "Block, waiting for reply packet. Returns: 1 = ok, reply packet in buffer 0 = timeout + +Params: (secs)" + +%feature("docstring") usrp2::pending_reply::notify_completion "Allows creating thread to resume after copying reply into buffer + +Params: (NONE)" + +%feature("docstring") usrp2::pending_reply::rid "Retrieve pending reply ID + +Params: (NONE)" + +%feature("docstring") usrp2::pending_reply::buffer "Retrieve destination buffer address + +Params: (NONE)" + +%feature("docstring") usrp2::pending_reply::len "Retrieve destination buffer length + +Params: (NONE)" + + + +%feature("docstring") usrp2::pktfilter::pktfilter " + +Params: (NONE)" + +%feature("docstring") usrp2::pktfilter::~pktfilter " + +Params: (NONE)" + +%feature("docstring") usrp2::pktfilter::make_ethertype "Return a filter that harvests packets with the specified ethertype. + +Params: (ethertype)" + +%feature("docstring") usrp2::pktfilter::make_ethertype_inbound "Return a filter that harvests inbound packets with the specified ethertype. + +Params: (ethertype, our_mac)" + +%feature("docstring") usrp2::pktfilter::make_ethertype_inbound_target "Return a filter that harvests inbound packets with the specified ethertype and source MAC address. + +Params: (ethertype, usrp_mac)" + +%feature("docstring") plinfo "pipeline info that flows with data + +Not all modules need all the info" + +%feature("docstring") plinfo::plinfo " + +Params: (NONE)" + +%feature("docstring") plinfo::field_sync1_p " + +Params: (NONE)" + +%feature("docstring") plinfo::field_sync2_p " + +Params: (NONE)" + +%feature("docstring") plinfo::field_sync_p " + +Params: (NONE)" + +%feature("docstring") plinfo::regular_seg_p " + +Params: (NONE)" + +%feature("docstring") plinfo::in_field1_p " + +Params: (NONE)" + +%feature("docstring") plinfo::in_field2_p " + +Params: (NONE)" + +%feature("docstring") plinfo::first_regular_seg_p " + +Params: (NONE)" + +%feature("docstring") plinfo::transport_error_p " + +Params: (NONE)" + +%feature("docstring") plinfo::segno " + +Params: (NONE)" + +%feature("docstring") plinfo::flags " + +Params: (NONE)" + +%feature("docstring") plinfo::set_field_sync1 " + +Params: (NONE)" + +%feature("docstring") plinfo::set_field_sync2 " + +Params: (NONE)" + +%feature("docstring") plinfo::set_regular_seg " + +Params: (field2, segno)" + +%feature("docstring") plinfo::set_transport_error " + +Params: (error)" + +%feature("docstring") plinfo::operator== " + +Params: (other)" + +%feature("docstring") plinfo::operator!= " + +Params: (other)" + +%feature("docstring") plinfo::delay "Set such that it reflects a pipeline delay from . + +Params: (out, in, nsegs_of_delay)" + +%feature("docstring") plinfo::sanity_check "confirm that is plausible + +Params: (in)" + + + +%feature("docstring") pmt::pmt_any::pmt_any " + +Params: (any)" + +%feature("docstring") pmt::pmt_any::is_any " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_any::ref " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_any::set " + +Params: (any)" + + + +%feature("docstring") pmt::pmt_base::pmt_base " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::~pmt_base " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_bool " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_symbol " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_number " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_integer " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_uint64 " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_real " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_complex " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_null " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_pair " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_tuple " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_dict " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_any " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_uniform_vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_u8vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_s8vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_u16vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_s16vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_u32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_s32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_u64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_s64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_f32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_f64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_c32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_base::is_c64vector " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_bool::pmt_bool " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_bool::is_bool " + +Params: (NONE)" + + + +%feature("docstring") pmt_c32vector::pmt_c32vector " + +Params: (k, fill)" + +%feature("docstring") pmt_c32vector::is_c32vector " + +Params: (NONE)" + +%feature("docstring") pmt_c32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_c32vector::ref " + +Params: (k)" + +%feature("docstring") pmt_c32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_c32vector::elements " + +Params: (len)" + +%feature("docstring") pmt_c32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_c32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_c32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_c32vector::pmt_c32vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_c32vector::is_c32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_c32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_c32vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_c32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_c32vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_c64vector::pmt_c64vector " + +Params: (k, fill)" + +%feature("docstring") pmt_c64vector::is_c64vector " + +Params: (NONE)" + +%feature("docstring") pmt_c64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_c64vector::ref " + +Params: (k)" + +%feature("docstring") pmt_c64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_c64vector::elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_c64vector::pmt_c64vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_c64vector::is_c64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_c64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_c64vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_c64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_c64vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_c64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_complex::pmt_complex " + +Params: (value)" + +%feature("docstring") pmt::pmt_complex::is_number " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_complex::is_complex " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_complex::value " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_exception::pmt_exception " + +Params: (msg, obj)" + + + +%feature("docstring") pmt_f32vector::pmt_f32vector " + +Params: (k, fill)" + +%feature("docstring") pmt_f32vector::is_f32vector " + +Params: (NONE)" + +%feature("docstring") pmt_f32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_f32vector::ref " + +Params: (k)" + +%feature("docstring") pmt_f32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_f32vector::elements " + +Params: (len)" + +%feature("docstring") pmt_f32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_f32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_f32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_f32vector::pmt_f32vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_f32vector::is_f32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_f32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_f32vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_f32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_f32vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_f64vector::pmt_f64vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_f64vector::is_f64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_f64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_f64vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_f64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_f64vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_f64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_f64vector::pmt_f64vector " + +Params: (k, fill)" + +%feature("docstring") pmt_f64vector::is_f64vector " + +Params: (NONE)" + +%feature("docstring") pmt_f64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_f64vector::ref " + +Params: (k)" + +%feature("docstring") pmt_f64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_f64vector::elements " + +Params: (len)" + +%feature("docstring") pmt_f64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_f64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_f64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_integer::pmt_integer " + +Params: (value)" + +%feature("docstring") pmt::pmt_integer::is_number " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_integer::is_integer " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_integer::value " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_notimplemented::pmt_notimplemented " + +Params: (msg, obj)" + + + +%feature("docstring") pmt::pmt_null::pmt_null " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_null::is_null " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_out_of_range::pmt_out_of_range " + +Params: (msg, obj)" + + + +%feature("docstring") pmt::pmt_pair::pmt_pair " + +Params: (car, cdr)" + +%feature("docstring") pmt::pmt_pair::is_pair " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_pair::car " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_pair::cdr " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_pair::set_car " + +Params: (car)" + +%feature("docstring") pmt::pmt_pair::set_cdr " + +Params: (cdr)" + +%feature("docstring") pmt::pmt_pool "very simple thread-safe fixed-size allocation pool + +FIXME may want to go to global allocation with per-thread free list. This would eliminate virtually all lock contention." + +%feature("docstring") pmt::pmt_pool::pmt_pool " + +Params: (itemsize, alignment, allocation_size, max_items)" + +%feature("docstring") pmt::pmt_pool::~pmt_pool " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_pool::malloc " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_pool::free " + +Params: (p)" + + + +%feature("docstring") pmt::pmt_real::pmt_real " + +Params: (value)" + +%feature("docstring") pmt::pmt_real::is_number " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_real::is_real " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_real::value " + +Params: (NONE)" + + + +%feature("docstring") pmt_s16vector::pmt_s16vector " + +Params: (k, fill)" + +%feature("docstring") pmt_s16vector::is_s16vector " + +Params: (NONE)" + +%feature("docstring") pmt_s16vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_s16vector::ref " + +Params: (k)" + +%feature("docstring") pmt_s16vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_s16vector::elements " + +Params: (len)" + +%feature("docstring") pmt_s16vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_s16vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_s16vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_s16vector::pmt_s16vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_s16vector::is_s16vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s16vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s16vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_s16vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_s16vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s16vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s16vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s16vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_s32vector::pmt_s32vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_s32vector::is_s32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s32vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_s32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_s32vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_s32vector::pmt_s32vector " + +Params: (k, fill)" + +%feature("docstring") pmt_s32vector::is_s32vector " + +Params: (NONE)" + +%feature("docstring") pmt_s32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_s32vector::ref " + +Params: (k)" + +%feature("docstring") pmt_s32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_s32vector::elements " + +Params: (len)" + +%feature("docstring") pmt_s32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_s32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_s32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_s64vector::pmt_s64vector " + +Params: (k, fill)" + +%feature("docstring") pmt_s64vector::is_s64vector " + +Params: (NONE)" + +%feature("docstring") pmt_s64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_s64vector::ref " + +Params: (k)" + +%feature("docstring") pmt_s64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_s64vector::elements " + +Params: (len)" + +%feature("docstring") pmt_s64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_s64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_s64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_s64vector::pmt_s64vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_s64vector::is_s64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s64vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_s64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_s64vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_s8vector::pmt_s8vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_s8vector::is_s8vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s8vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_s8vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_s8vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_s8vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s8vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s8vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_s8vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_s8vector::pmt_s8vector " + +Params: (k, fill)" + +%feature("docstring") pmt_s8vector::is_s8vector " + +Params: (NONE)" + +%feature("docstring") pmt_s8vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_s8vector::ref " + +Params: (k)" + +%feature("docstring") pmt_s8vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_s8vector::elements " + +Params: (len)" + +%feature("docstring") pmt_s8vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_s8vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_s8vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_symbol::pmt_symbol " + +Params: (name)" + +%feature("docstring") pmt::pmt_symbol::is_symbol " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_symbol::name " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_symbol::next " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_symbol::set_next " + +Params: (next)" + + + +%feature("docstring") pmt::pmt_tuple::pmt_tuple " + +Params: (len)" + +%feature("docstring") pmt::pmt_tuple::is_tuple " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_tuple::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_tuple::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_tuple::_ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_tuple::_set " + +Params: (k, v)" + + + +%feature("docstring") pmt_u16vector::pmt_u16vector " + +Params: (k, fill)" + +%feature("docstring") pmt_u16vector::is_u16vector " + +Params: (NONE)" + +%feature("docstring") pmt_u16vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_u16vector::ref " + +Params: (k)" + +%feature("docstring") pmt_u16vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_u16vector::elements " + +Params: (len)" + +%feature("docstring") pmt_u16vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_u16vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_u16vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_u16vector::pmt_u16vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_u16vector::is_u16vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u16vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u16vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_u16vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_u16vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u16vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u16vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u16vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_u32vector::pmt_u32vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_u32vector::is_u32vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u32vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_u32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_u32vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_u32vector::pmt_u32vector " + +Params: (k, fill)" + +%feature("docstring") pmt_u32vector::is_u32vector " + +Params: (NONE)" + +%feature("docstring") pmt_u32vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_u32vector::ref " + +Params: (k)" + +%feature("docstring") pmt_u32vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_u32vector::elements " + +Params: (len)" + +%feature("docstring") pmt_u32vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_u32vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_u32vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_u64vector::pmt_u64vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_u64vector::is_u64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u64vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_u64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_u64vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_u64vector::pmt_u64vector " + +Params: (k, fill)" + +%feature("docstring") pmt_u64vector::is_u64vector " + +Params: (NONE)" + +%feature("docstring") pmt_u64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_u64vector::ref " + +Params: (k)" + +%feature("docstring") pmt_u64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_u64vector::elements " + +Params: (len)" + +%feature("docstring") pmt_u64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_u64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_u64vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt_u8vector::pmt_u8vector " + +Params: (k, fill)" + +%feature("docstring") pmt_u8vector::is_u8vector " + +Params: (NONE)" + +%feature("docstring") pmt_u8vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_u8vector::ref " + +Params: (k)" + +%feature("docstring") pmt_u8vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_u8vector::elements " + +Params: (len)" + +%feature("docstring") pmt_u8vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_u8vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_u8vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_u8vector::pmt_u8vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_u8vector::is_u8vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u8vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u8vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_u8vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_u8vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u8vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u8vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u8vector::uniform_writable_elements " + +Params: (len)" + + + +%feature("docstring") pmt::pmt_uint64::pmt_uint64 " + +Params: (value)" + +%feature("docstring") pmt::pmt_uint64::is_number " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_uint64::is_uint64 " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_uint64::value " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_uniform_vector::is_uniform_vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_uniform_vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_uniform_vector::uniform_writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_uniform_vector::length " + +Params: (NONE)" + + + +%feature("docstring") pmt::pmt_vector::pmt_vector " + +Params: (len, fill)" + +%feature("docstring") pmt::pmt_vector::is_vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_vector::set " + +Params: (k, obj)" + +%feature("docstring") pmt::pmt_vector::fill " + +Params: (fill)" + +%feature("docstring") pmt::pmt_vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_vector::_ref " + +Params: (k)" + + + +%feature("docstring") pmt::pmt_wrong_type::pmt_wrong_type " + +Params: (msg, obj)" + +%feature("docstring") ppio "abstract class that provides low level access to parallel port bits" + +%feature("docstring") ppio::ppio " + +Params: (NONE)" + +%feature("docstring") ppio::~ppio " + +Params: (NONE)" + +%feature("docstring") ppio::write_data " + +Params: (v)" + +%feature("docstring") ppio::read_data " + +Params: (NONE)" + +%feature("docstring") ppio::write_control " + +Params: (v)" + +%feature("docstring") ppio::read_control " + +Params: (NONE)" + +%feature("docstring") ppio::read_status " + +Params: (NONE)" + +%feature("docstring") ppio::lock " + +Params: (NONE)" + +%feature("docstring") ppio::unlock " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev "access to parallel port bits using the linux ppdev interface" + +%feature("docstring") ppio_ppdev::ppio_ppdev " + +Params: (which)" + +%feature("docstring") ppio_ppdev::~ppio_ppdev " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev::write_data " + +Params: (v)" + +%feature("docstring") ppio_ppdev::read_data " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev::write_control " + +Params: (v)" + +%feature("docstring") ppio_ppdev::read_control " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev::read_status " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev::lock " + +Params: (NONE)" + +%feature("docstring") ppio_ppdev::unlock " + +Params: (NONE)" + +%feature("docstring") std::priority_queue "STL class." + +%feature("docstring") sssr::quad_filter "quad filter (used to compute timing error)" + +%feature("docstring") sssr::quad_filter::quad_filter " + +Params: (NONE)" + +%feature("docstring") sssr::quad_filter::reset "called on channel change + +Params: (NONE)" + +%feature("docstring") sssr::quad_filter::update " + +Params: (sample)" + +%feature("docstring") std::queue "STL class." + +%feature("docstring") std::range_error "STL class." + +%feature("docstring") std::multiset::reverse_iterator "STL iterator class." + +%feature("docstring") std::basic_string::reverse_iterator "STL iterator class." + +%feature("docstring") std::string::reverse_iterator "STL iterator class." + +%feature("docstring") std::map::reverse_iterator "STL iterator class." + +%feature("docstring") std::list::reverse_iterator "STL iterator class." + +%feature("docstring") std::wstring::reverse_iterator "STL iterator class." + +%feature("docstring") std::set::reverse_iterator "STL iterator class." + +%feature("docstring") std::deque::reverse_iterator "STL iterator class." + +%feature("docstring") std::multimap::reverse_iterator "STL iterator class." + +%feature("docstring") std::vector::reverse_iterator "STL iterator class." + + + +%feature("docstring") usrp2::ring::inc_read_ind " + +Params: (NONE)" + +%feature("docstring") usrp2::ring::inc_write_ind " + +Params: (NONE)" + +%feature("docstring") usrp2::ring::empty " + +Params: (NONE)" + +%feature("docstring") usrp2::ring::full " + +Params: (NONE)" + +%feature("docstring") usrp2::ring::ring " + +Params: (entries)" + +%feature("docstring") usrp2::ring::wait_for_not_empty " + +Params: (NONE)" + +%feature("docstring") usrp2::ring::enqueue " + +Params: (p, len)" + +%feature("docstring") usrp2::ring::dequeue " + +Params: (p, len)" + +%feature("docstring") std::runtime_error "STL class." + + + +%feature("docstring") rx_16sc_handler::rx_16sc_handler " + +Params: (max_samples, max_quantum, dest)" + +%feature("docstring") rx_16sc_handler::make " + +Params: (max_samples, max_quantum, dest)" + +%feature("docstring") rx_16sc_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. + + + points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. + +Params: (items, nitems, metadata)" + +%feature("docstring") rx_16sc_handler::~rx_16sc_handler " + +Params: (NONE)" + + + +%feature("docstring") rx_32fc_handler::rx_32fc_handler " + +Params: (max_samples, max_quantum, dest)" + +%feature("docstring") rx_32fc_handler::make " + +Params: (max_samples, max_quantum, dest)" + +%feature("docstring") rx_32fc_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. + + + points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. + +Params: (items, nitems, metadata)" + +%feature("docstring") rx_32fc_handler::~rx_32fc_handler " + +Params: (NONE)" + + + +%feature("docstring") usrp2::rx_nop_handler::rx_nop_handler "Constructor + +Params: (max_samples, max_quantum)" + +%feature("docstring") usrp2::rx_nop_handler::~rx_nop_handler "Destructor. Derived classes must implement their own, non-inline destructor. + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::nframes "Returns number of frames this copier was called with. + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::nsamples "Returns actual number of samples copied. + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::max_samples "Returns maximum number of samples that will be copied. + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::has_errored_p "Returns true if an error has occurred. Derived classes must set d_err to true when an error occurs in the () operator + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::has_finished_p "Returns true if this instance has reached the maximum number of samples. + +Params: (NONE)" + +%feature("docstring") usrp2::rx_nop_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. + + + points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. + +Params: (items, nitems, metadata)" + +%feature("docstring") usrp2::rx_sample_handler "Abstract function object called to handle received data blocks. + +An object derived from this class is passed to usrp2::rx_samples to process the received frames of samples." + +%feature("docstring") usrp2::rx_sample_handler::~rx_sample_handler " + +Params: (NONE)" + +%feature("docstring") usrp2::rx_sample_handler::operator() "points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. + +This is the general purpose, low level interface and relies on other functions to handle all required endian-swapping and format conversion. + +Params: (items, nitems, metadata)" + + + +%feature("docstring") s_both::s_both " + +Params: (l_node, l_this)" + +%feature("docstring") s_both::~s_both " + +Params: (NONE)" + +%feature("docstring") s_both::node " + +Params: (NONE)" + +%feature("docstring") s_both::This " + +Params: (NONE)" + +%feature("docstring") s_both::set " + +Params: (l_node, l_this)" + + + +%feature("docstring") s_buffer::s_buffer " + +Params: (n_alloc)" + +%feature("docstring") s_buffer::~s_buffer " + +Params: (NONE)" + +%feature("docstring") s_buffer::n_used " + +Params: (NONE)" + +%feature("docstring") s_buffer::n_alloc " + +Params: (NONE)" + +%feature("docstring") s_buffer::buffer " + +Params: (l_buffer, bufLen)" + +%feature("docstring") s_buffer::reset " + +Params: (NONE)" + + + +%feature("docstring") s_node::s_node " + +Params: (l_object, l_prev, l_next)" + +%feature("docstring") s_node::~s_node " + +Params: (NONE)" + +%feature("docstring") s_node::remove " + +Params: (NONE)" + +%feature("docstring") s_node::insert_before " + +Params: (l_next)" + +%feature("docstring") s_node::insert_after " + +Params: (l_prev)" + +%feature("docstring") s_node::object " + +Params: (NONE)" + +%feature("docstring") s_node::available " + +Params: (NONE)" + +%feature("docstring") s_node::set_available " + +Params: (NONE)" + +%feature("docstring") s_node::set_not_available " + +Params: (NONE)" + +%feature("docstring") s_node::next " + +Params: (NONE)" + +%feature("docstring") s_node::prev " + +Params: (NONE)" + +%feature("docstring") s_node::both " + +Params: (NONE)" + +%feature("docstring") sdr_1000_base "Very low level interface to SDR 1000 xcvr hardware." + +%feature("docstring") sdr_1000_base::sdr_1000_base " + +Params: (which_pp)" + +%feature("docstring") sdr_1000_base::~sdr_1000_base " + +Params: (NONE)" + +%feature("docstring") sdr_1000_base::reset " + +Params: (NONE)" + +%feature("docstring") sdr_1000_base::write_latch " + +Params: (which, value, mask)" + +%feature("docstring") sssr::seg_sync_integrator "segment sync integrator" + +%feature("docstring") sssr::seg_sync_integrator::seg_sync_integrator " + +Params: (NONE)" + +%feature("docstring") sssr::seg_sync_integrator::reset "called on channel change + +Params: (NONE)" + +%feature("docstring") sssr::seg_sync_integrator::update "update current tap with weight and return integrated correlation value + +Params: (weight, index)" + +%feature("docstring") sssr::seg_sync_integrator::find_max "return index of maximum correlation value + +Params: (value)" + +%feature("docstring") std::set "STL class." + +%feature("docstring") boost::shared_ptr "shared_ptr documentation stub + +An enhanced relative of scoped_ptr with reference counted copy semantics. The object pointed to is deleted when the last shared_ptr pointing to it is destroyed or reset." + + + +%feature("docstring") atsci_sliding_correlator::shift_reg::shift_reg " + +Params: (NONE)" + +%feature("docstring") atsci_sliding_correlator::shift_reg::reset " + +Params: (NONE)" + +%feature("docstring") atsci_sliding_correlator::shift_reg::shift_in " + +Params: (bit)" + + + +%feature("docstring") std::stack "STL class." + +%feature("docstring") std::string "STL class." + +%feature("docstring") std::stringstream "STL class." + + + +%feature("docstring") gruel::thread_body_wrapper::thread_body_wrapper " + +Params: (f, name)" + +%feature("docstring") gruel::thread_body_wrapper::operator() " + +Params: (NONE)" + + + +%feature("docstring") gruel::thread_group::thread_group " + +Params: (NONE)" + +%feature("docstring") gruel::thread_group::~thread_group " + +Params: (NONE)" + +%feature("docstring") gruel::thread_group::create_thread " + +Params: (threadfunc)" + +%feature("docstring") gruel::thread_group::add_thread " + +Params: (thrd)" + +%feature("docstring") gruel::thread_group::remove_thread " + +Params: (thrd)" + +%feature("docstring") gruel::thread_group::join_all " + +Params: (NONE)" + +%feature("docstring") gruel::thread_group::interrupt_all " + +Params: (NONE)" + +%feature("docstring") gruel::thread_group::size " + +Params: (NONE)" + + + +%feature("docstring") usrp2::tune_result::tune_result " + +Params: (baseband, dxc, residual, inverted)" + +%feature("docstring") std::underflow_error "STL class." + +%feature("docstring") usrp2::usrp2 "standard C++ interface to USRP2" + +%feature("docstring") usrp2::usrp2::make "Static function to return an instance of usrp2 as a shared pointer + +Params: (ifc, addr, rx_bufsize)" + +%feature("docstring") usrp2::usrp2::~usrp2 "Class destructor + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::mac_addr "Returns the MAC address associated with this USRP + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::interface_name "Returns the GbE interface name associated with this USRP + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_rx_antenna "Set the rx antenna + +Params: (ant)" + +%feature("docstring") usrp2::usrp2::set_rx_gain "Set receiver gain + +Params: (gain)" + +%feature("docstring") usrp2::usrp2::rx_gain_min "return minimum Rx gain + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::rx_gain_max "return maximum Rx gain + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::rx_gain_db_per_step "return Rx gain db_per_step + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_rx_lo_offset "Set receive daughterboard LO offset frequency. + +Params: (frequency)" + +%feature("docstring") usrp2::usrp2::set_rx_center_freq "Set receiver center frequency + +Params: (frequency, result)" + +%feature("docstring") usrp2::usrp2::rx_freq_min "return minimum Rx center frequency + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::rx_freq_max "return maximum Rx center frequency + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_rx_decim "Set receiver sample rate decimation + +Params: (decimation_factor)" + +%feature("docstring") usrp2::usrp2::rx_decim "Return current decimation factor. + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_rx_scale_iq "Set receiver IQ magnitude scaling + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::start_rx_streaming "Set received sample format + +domain: complex or real type: floating, fixed point, or raw depth: bits per sample + +Sets format over the wire for samples from USRP2. + +Start streaming receive mode. USRP2 will send a continuous stream of DSP pipeline samples to host. Call rx_samples(...) to access. + +Params: (channel, items_per_frame)" + +%feature("docstring") usrp2::usrp2::start_rx_streaming_at "Start streaming receive mode at specified timestamp. USRP2 will send a continuous stream of DSP pipeline samples to host. Call rx_samples(...) to access. + +Params: (channel, items_per_frame, time)" + +%feature("docstring") usrp2::usrp2::sync_and_start_rx_streaming_at "Sync to PPS and start streaming receive mode at specified timestamp. Just like calling sync_to_pps() and start_rx_streaming_at(). + +Params: (channel, items_per_frame, time)" + +%feature("docstring") usrp2::usrp2::stop_rx_streaming "Stop streaming receive mode. + +Params: (channel)" + +%feature("docstring") usrp2::usrp2::rx_samples "Receive data from the specified channel This method is used to receive all data: streaming or discrete. + +Params: (channel, handler)" + +%feature("docstring") usrp2::usrp2::rx_overruns "Returns number of times receive overruns have occurred + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::rx_missing "Returns total number of missing frames from overruns. + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_tx_antenna "Set the tx antenna + +Params: (ant)" + +%feature("docstring") usrp2::usrp2::set_tx_gain "Set transmitter gain + +Params: (gain)" + +%feature("docstring") usrp2::usrp2::tx_gain_min "return minimum Tx gain + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::tx_gain_max "return maximum Tx gain + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::tx_gain_db_per_step "return Tx gain db_per_step + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_tx_lo_offset " + +Params: (frequency)" + +%feature("docstring") usrp2::usrp2::set_tx_center_freq "Set transmitter center frequency + +Params: (frequency, result)" + +%feature("docstring") usrp2::usrp2::tx_freq_min "return minimum Tx center frequency + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::tx_freq_max "return maximum Tx center frequency + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::set_tx_interp "Set transmitter sample rate interpolation + +Params: (interpolation_factor)" + +%feature("docstring") usrp2::usrp2::tx_interp "Return current interpolation factor. + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::default_tx_scale_iq " + +Params: (interpolation_factor, scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::set_tx_scale_iq "Set transmit IQ magnitude scaling + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2::usrp2::tx_32fc "transmit complex samples to USRP2 + +Set transmit sample format + +domain: complex or real type: floating, fixed point, or raw depth: bits per sample + +Sets format over the wire for samples to USRP2. + + +The complex samples are converted to the appropriate \"on the wire\" representation, depending on the current USRP2 configuration. Typically, this is big-endian 16-bit I & Q. + +Params: (channel, samples, nsamples, metadata)" + +%feature("docstring") usrp2::usrp2::tx_16sc "transmit complex samples to USRP2 + +The complex samples are converted to the appropriate \"on the wire\" representation, depending on the current USRP2 configuration. Typically, this is big-endian 16-bit I & Q. + +Params: (channel, samples, nsamples, metadata)" + +%feature("docstring") usrp2::usrp2::tx_raw "transmit raw uint32_t data items to USRP2 + +The caller is responsible for ensuring that the items are formatted appropriately for the USRP2 and its configuration. This method is used primarily by the system itself. Users should call tx_32fc or tx_16sc instead. + +Params: (channel, items, nitems, metadata)" + +%feature("docstring") usrp2::usrp2::config_mimo "MIMO configuration. + +Params: (flags)" + +%feature("docstring") usrp2::usrp2::fpga_master_clock_freq "Get frequency of master oscillator in Hz. + +Params: (freq)" + +%feature("docstring") usrp2::usrp2::adc_rate " + +Params: (rate)" + +%feature("docstring") usrp2::usrp2::dac_rate " + +Params: (rate)" + +%feature("docstring") usrp2::usrp2::tx_daughterboard_id "Get Tx daughterboard ID. + +daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. + +Params: (dbid)" + +%feature("docstring") usrp2::usrp2::rx_daughterboard_id "Get Rx daughterboard ID. + +daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. + +Params: (dbid)" + +%feature("docstring") usrp2::usrp2::burn_mac_addr "Burn new mac address into EEPROM on USRP2 + +Params: (new_addr)" + +%feature("docstring") usrp2::usrp2::sync_to_pps "Reset master time to 0 at next PPS edge + +Params: (NONE)" + +%feature("docstring") usrp2::usrp2::sync_every_pps "Reset master time to 0 at every PPS edge + +Params: (enable)" + +%feature("docstring") usrp2::usrp2::peek32 "Read memory from Wishbone bus as 32-bit words. Handles endian swapping if needed. + + + +WARNING: Attempts to read memory from addresses that do not correspond to RAM or memory-mapped peripherals may cause the USRP2 to hang, requiring a power cycle. + +Params: (addr, words)" + +%feature("docstring") usrp2::usrp2::poke32 "Write memory to Wishbone bus as 32-bit words. Handles endian swapping if needed. + + + +WARNING: Attempts to read memory from addresses that do not correspond to RAM or memory-mapped peripherals may cause the USRP2 to hang, requiring a power cycle. + +Params: (addr, data)" + +%feature("docstring") usrp2::usrp2::set_gpio_ddr "Set daughterboard GPIO data direction register. + + + +WARNING: Improper usage of this function may result in damage to the USRP2 + +Params: (bank, value, mask)" + +%feature("docstring") usrp2::usrp2::set_gpio_sels "Set daughterboard GPIO output selection register. For those GPIO pins that are configured as outputs in the DDR, this settings configures the source of the pin value. + + + +WARNING: Improper usage of this function may result in damage to the USRP2 + +Params: (bank, sels)" + +%feature("docstring") usrp2::usrp2::write_gpio "Set daughterboard GPIO pin values. + + + +WARNING: Improper usage of this function may result in damage to the USRP2 + +Params: (bank, value, mask)" + +%feature("docstring") usrp2::usrp2::read_gpio "Read daughterboard GPIO pin values + +Params: (bank, value)" + +%feature("docstring") usrp2::usrp2::enable_gpio_streaming "Set GPIO streaming mode + +Individually enables streaming GPIO pins through LSBs of DSP samples. + +On receive, io_rx[15] replaces I[0], io_rx[14] replaces Q[0] On transmit, I[0] maps to io_tx[15], Q[0] maps to io_tx[14] (Transmit streaming is not yet implemented.) + +The selected GPIO pins must have been set as inputs or outputs and, for transmit, set to software control. + +When enabled, the replaced DSP sample LSBs become 0. + + + +WARNING: Improper usage of this function may result in damage to the USRP2 + +Params: (bank, enable)" + +%feature("docstring") usrp2::usrp2::find_existing_or_make_new " + +Params: (ifc, p, rx_bufsize)" + +%feature("docstring") usrp2::usrp2::usrp2 " + +Params: (ifc, p, rx_bufsize)" + +%feature("docstring") usrp2_base "Base class for all USRP2 blocks" + +%feature("docstring") usrp2_base::usrp2_base " + +Params: (name, input_signature, output_signature, ifc, mac)" + +%feature("docstring") usrp2_base::~usrp2_base " + +Params: (NONE)" + +%feature("docstring") usrp2_base::mac_addr "Get USRP2 hardware MAC address. + +Params: (NONE)" + +%feature("docstring") usrp2_base::interface_name "Get interface name used to communicat with USRP2. + +Params: (NONE)" + +%feature("docstring") usrp2_base::fpga_master_clock_freq "Get USRP2 master clock rate. + +Params: (freq)" + +%feature("docstring") usrp2_base::config_mimo "MIMO configuration. + +Params: (flags)" + +%feature("docstring") usrp2_base::sync_to_pps "Set master time to 0 at next PPS rising edge. + +Params: (NONE)" + +%feature("docstring") usrp2_base::sync_every_pps "Reset master time to 0 at every PPS edge + +Params: (enable)" + +%feature("docstring") usrp2_base::peek32 "Read memory from Wishbone bus as words. + +Params: (addr, words)" + +%feature("docstring") usrp2_base::poke32 "Write memory to Wishbone bus as words. + +Params: (addr, data)" + +%feature("docstring") usrp2_base::start "Called by scheduler when starting flowgraph. + +Params: (NONE)" + +%feature("docstring") usrp2_base::stop "Called by scheduler when stopping flowgraph. + +Params: (NONE)" + +%feature("docstring") usrp2_base::work "Derived class must override this. + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp2_sink_base "Base class for all USRP2 transmit blocks" + +%feature("docstring") usrp2_sink_base::usrp2_sink_base " + +Params: (name, input_signature, ifc, mac)" + +%feature("docstring") usrp2_sink_base::~usrp2_sink_base " + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::set_antenna "Set antenna. + +Params: (ant)" + +%feature("docstring") usrp2_sink_base::set_gain "Set transmitter gain. + +Params: (gain)" + +%feature("docstring") usrp2_sink_base::set_lo_offset "Set transmitter LO offset frequency. + +Params: (frequency)" + +%feature("docstring") usrp2_sink_base::set_center_freq "Set transmitter center frequency. + +Params: (frequency, tr)" + +%feature("docstring") usrp2_sink_base::set_interp "Set transmit interpolation rate. + +Params: (interp_factor)" + +%feature("docstring") usrp2_sink_base::default_scale_iq "Calculate default scale_iq for given interpolation factor. + +Params: (interpolation_factor, scale_i, scale_q)" + +%feature("docstring") usrp2_sink_base::set_scale_iq "Set transmit IQ scale factors. + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2_sink_base::interp "Get transmit interpolation rate. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::dac_rate "Get DAC sample rate in Hz. + +Params: (rate)" + +%feature("docstring") usrp2_sink_base::gain_min "Returns minimum Tx gain. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::gain_max "Returns maximum Tx gain. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::gain_db_per_step "Returns Tx gain db_per_step. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::freq_min "Returns minimum Tx center frequency. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::freq_max "Returns maximum Tx center frequency. + +Params: (NONE)" + +%feature("docstring") usrp2_sink_base::daughterboard_id "Get Tx daughterboard ID. + +daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. + +Params: (dbid)" + +%feature("docstring") usrp2_sink_base::set_gpio_ddr "Set daughterboard GPIO data direction register. + +Params: (value, mask)" + +%feature("docstring") usrp2_sink_base::set_gpio_sels "Set daughterboard GPIO output selection register. + +Params: (sels)" + +%feature("docstring") usrp2_sink_base::write_gpio "Set daughterboard GPIO pin values. + +Params: (value, mask)" + +%feature("docstring") usrp2_sink_base::read_gpio "Read daughterboard GPIO pin values. + +Params: (value)" + +%feature("docstring") usrp2_sink_base::start_streaming_at "First samples begin streaming to USRP2 at given time. + +Params: (time)" + +%feature("docstring") usrp2_source_base "Base class for all USRP2 source blocks" + +%feature("docstring") usrp2_source_base::usrp2_source_base " + +Params: (name, output_signature, ifc, mac)" + +%feature("docstring") usrp2_source_base::~usrp2_source_base " + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::set_antenna "Set antenna. + +Params: (ant)" + +%feature("docstring") usrp2_source_base::set_gain "Set receiver gain. + +Params: (gain)" + +%feature("docstring") usrp2_source_base::set_lo_offset "Set receive LO offset frequency. + +Params: (frequency)" + +%feature("docstring") usrp2_source_base::set_center_freq "Set receiver center frequency. + +Params: (frequency, tr)" + +%feature("docstring") usrp2_source_base::set_decim "Set receive decimation rate. + +Params: (decimation_factor)" + +%feature("docstring") usrp2_source_base::set_scale_iq "Set receive IQ scale factors. + +Params: (scale_i, scale_q)" + +%feature("docstring") usrp2_source_base::decim "Get receive decimation rate. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::adc_rate "Get the ADC sample rate. + +Params: (rate)" + +%feature("docstring") usrp2_source_base::gain_min "Returns minimum Rx gain. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::gain_max "Returns maximum Rx gain. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::gain_db_per_step "Returns Rx gain db_per_step. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::freq_min "Returns minimum Rx center frequency. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::freq_max "Returns maximum Rx center frequency. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::daughterboard_id "Get Rx daughterboard ID. + +daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. + +Params: (dbid)" + +%feature("docstring") usrp2_source_base::overruns "Returns number of receiver overruns. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::missing "Returns number of missing sequence numbers. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::start "Called by scheduler when starting flowgraph. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::stop "Called by scheduler when stopping flowgraph. + +Params: (NONE)" + +%feature("docstring") usrp2_source_base::set_gpio_ddr "Set daughterboard GPIO data direction register. + +Params: (value, mask)" + +%feature("docstring") usrp2_source_base::set_gpio_sels "Set daughterboard GPIO output selection register. + +Params: (sels)" + +%feature("docstring") usrp2_source_base::write_gpio "Set daughterboard GPIO pin values. + +Params: (value, mask)" + +%feature("docstring") usrp2_source_base::read_gpio "Read daughterboard GPIO pin values. + +Params: (value)" + +%feature("docstring") usrp2_source_base::enable_gpio_streaming "Enable streaming GPIO in sample LSBs. + +Params: (enable)" + +%feature("docstring") usrp_base "base class for GNU Radio interface to the USRP" + +%feature("docstring") usrp_base::usrp_base " + +Params: (name, input_signature, output_signature)" + +%feature("docstring") usrp_base::set_usrp_basic " + +Params: (u)" + +%feature("docstring") usrp_base::~usrp_base " + +Params: (NONE)" + +%feature("docstring") usrp_base::db " + +Params: (NONE)" + +%feature("docstring") usrp_base::selected_subdev "given a usrp_subdev_spec, return the corresponding daughterboard object. + +Params: (ss)" + +%feature("docstring") usrp_base::fpga_master_clock_freq "return frequency of master oscillator on USRP + +Params: (NONE)" + +%feature("docstring") usrp_base::set_fpga_master_clock_freq "Tell API that the master oscillator on the USRP is operating at a non-standard fixed frequency. This is only needed for custom USRP hardware modified to operate at a different frequency from the default factory configuration. This function must be called prior to any other API function. + +Params: (master_clock)" + +%feature("docstring") usrp_base::set_verbose " + +Params: (on)" + +%feature("docstring") usrp_base::write_eeprom "Write EEPROM on motherboard or any daughterboard. + +Params: (i2c_addr, eeprom_offset, buf)" + +%feature("docstring") usrp_base::read_eeprom "Read EEPROM on motherboard or any daughterboard. + +Params: (i2c_addr, eeprom_offset, len)" + +%feature("docstring") usrp_base::write_i2c "Write to I2C peripheral. + +Params: (i2c_addr, buf)" + +%feature("docstring") usrp_base::read_i2c "Read from I2C peripheral. + +Params: (i2c_addr, len)" + +%feature("docstring") usrp_base::set_adc_offset "Set ADC offset correction. + +Params: (which_adc, offset)" + +%feature("docstring") usrp_base::set_dac_offset "Set DAC offset correction. + +Params: (which_dac, offset, offset_pin)" + +%feature("docstring") usrp_base::set_adc_buffer_bypass "Control ADC input buffer. + +Params: (which_adc, bypass)" + +%feature("docstring") usrp_base::set_dc_offset_cl_enable "Enable/disable automatic DC offset removal control loop in FPGA. + +If the corresponding bit is set, enable the automatic DC offset correction control loop. + + + + + +By default the control loop is enabled on all ADC's. + +Params: (bits, mask)" + +%feature("docstring") usrp_base::serial_number "return the usrp's serial number. + +Params: (NONE)" + +%feature("docstring") usrp_base::daughterboard_id "Return daughterboard ID for given side [0,1]. + +Params: (which_side)" + +%feature("docstring") usrp_base::write_atr_tx_delay "Clock ticks to delay rising of T/R signal. + +Params: (value)" + +%feature("docstring") usrp_base::write_atr_rx_delay "Clock ticks to delay falling edge of T/R signal. + +Params: (value)" + +%feature("docstring") usrp_base::set_pga "Set Programmable Gain Amplifier (PGA). + +gain is rounded to closest setting supported by hardware. + +Params: (which_amp, gain_in_db)" + +%feature("docstring") usrp_base::pga "Return programmable gain amplifier gain setting in dB. + +Params: (which_amp)" + +%feature("docstring") usrp_base::pga_min "Return minimum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_base::pga_max "Return maximum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_base::pga_db_per_step "Return hardware step size of PGA (linear in dB). + +Params: (NONE)" + +%feature("docstring") usrp_base::_write_oe "Write direction register (output enables) for pins that go to daughterboard. + +Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. + +This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_base::write_io "Write daughterboard i/o pin value. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_base::read_io "Read daughterboard i/o pin value. + +Params: (which_side)" + +%feature("docstring") usrp_base::write_refclk "Write daughterboard refclk config register. + +Params: (which_side, value)" + +%feature("docstring") usrp_base::write_atr_mask " + +Params: (which_side, value)" + +%feature("docstring") usrp_base::write_atr_txval " + +Params: (which_side, value)" + +%feature("docstring") usrp_base::write_atr_rxval " + +Params: (which_side, value)" + +%feature("docstring") usrp_base::write_aux_dac "Write auxiliary digital to analog converter. + +Params: (which_side, which_dac, value)" + +%feature("docstring") usrp_base::read_aux_adc "Read auxiliary analog to digital converter. + +Params: (which_side, which_adc)" + +%feature("docstring") usrp_base::converter_rate "returns A/D or D/A converter rate in Hz + +Params: (NONE)" + +%feature("docstring") usrp_base::_set_led " + +Params: (which_led, on)" + +%feature("docstring") usrp_base::_write_fpga_reg "Write FPGA register. + +Params: (regno, value)" + +%feature("docstring") usrp_base::_read_fpga_reg "Read FPGA register. + +Params: (regno, value)" + +%feature("docstring") usrp_base::_write_fpga_reg_masked "Write FPGA register with mask. + +Params: (regno, value, mask)" + +%feature("docstring") usrp_base::_write_9862 "Write AD9862 register. + +Params: (which_codec, regno, value)" + +%feature("docstring") usrp_base::_read_9862 "Read AD9862 register. + +Params: (which_codec, regno)" + +%feature("docstring") usrp_base::_write_spi "Write data to SPI bus peripheral. + +If specifies that optional_header bytes are present, they are written to the peripheral immediately prior to writing . + +Params: (optional_header, enables, format, buf)" + +%feature("docstring") usrp_base::_read_spi " + +Params: (optional_header, enables, format, len)" + +%feature("docstring") usrp_base::pick_subdev "Return an existing daughterboard from list of candidate dbids, or the first found on side A or side B. + + +Throws std::runtime_error if not found + +Params: (candidates)" + +%feature("docstring") usrp_basic "abstract base class for usrp operations" + +%feature("docstring") usrp_basic::shutdown_daughterboards " + +Params: (NONE)" + +%feature("docstring") usrp_basic::init_db "One time call, made only only from usrp_standard_*make after shared_ptr is created. + +Params: (u)" + +%feature("docstring") usrp_basic::usrp_basic " + +Params: (which_board, open_interface, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_basic::set_usb_data_rate "advise usrp_basic of usb data rate (bytes/sec) + +N.B., this doesn't tweak any hardware. Derived classes should call this to inform us of the data rate whenever it's first set or if it changes. + +Params: (usb_data_rate)" + +%feature("docstring") usrp_basic::_write_aux_dac "Write auxiliary digital to analog converter. + +Params: (slot, which_dac, value)" + +%feature("docstring") usrp_basic::_read_aux_adc "Read auxiliary analog to digital converter. + +Params: (slot, which_adc, value)" + +%feature("docstring") usrp_basic::~usrp_basic " + +Params: (NONE)" + +%feature("docstring") usrp_basic::db "Return a vector of vectors that contain shared pointers to the daughterboard instance(s) associated with the specified side. + +It is an error to use the returned objects after the usrp_basic object has been destroyed. + +Params: (NONE)" + +%feature("docstring") usrp_basic::is_valid "is the subdev_spec valid? + +Params: (ss)" + +%feature("docstring") usrp_basic::selected_subdev "given a subdev_spec, return the corresponding daughterboard object. + +Params: (ss)" + +%feature("docstring") usrp_basic::fpga_master_clock_freq "return frequency of master oscillator on USRP + +Params: (NONE)" + +%feature("docstring") usrp_basic::set_fpga_master_clock_freq "Tell API that the master oscillator on the USRP is operating at a non-standard fixed frequency. This is only needed for custom USRP hardware modified to operate at a different frequency from the default factory configuration. This function must be called prior to any other API function. + +Params: (master_clock)" + +%feature("docstring") usrp_basic::usb_data_rate " + +Params: (NONE)" + +%feature("docstring") usrp_basic::set_verbose " + +Params: (on)" + +%feature("docstring") usrp_basic::write_eeprom "Write EEPROM on motherboard or any daughterboard. + +Params: (i2c_addr, eeprom_offset, buf)" + +%feature("docstring") usrp_basic::read_eeprom "Read EEPROM on motherboard or any daughterboard. + +Params: (i2c_addr, eeprom_offset, len)" + +%feature("docstring") usrp_basic::write_i2c "Write to I2C peripheral. + +Params: (i2c_addr, buf)" + +%feature("docstring") usrp_basic::read_i2c "Read from I2C peripheral. + +Params: (i2c_addr, len)" + +%feature("docstring") usrp_basic::set_adc_offset "Set ADC offset correction. + +Params: (which_adc, offset)" + +%feature("docstring") usrp_basic::set_dac_offset "Set DAC offset correction. + +Params: (which_dac, offset, offset_pin)" + +%feature("docstring") usrp_basic::set_adc_buffer_bypass "Control ADC input buffer. + +Params: (which_adc, bypass)" + +%feature("docstring") usrp_basic::set_dc_offset_cl_enable "Enable/disable automatic DC offset removal control loop in FPGA. + +If the corresponding bit is set, enable the automatic DC offset correction control loop. + + + + + +By default the control loop is enabled on all ADC's. + +Params: (bits, mask)" + +%feature("docstring") usrp_basic::serial_number "return the usrp's serial number. + +Params: (NONE)" + +%feature("docstring") usrp_basic::daughterboard_id "Return daughterboard ID for given side [0,1]. + +Params: (which_side)" + +%feature("docstring") usrp_basic::write_atr_tx_delay "Clock ticks to delay rising of T/R signal. + +Params: (value)" + +%feature("docstring") usrp_basic::write_atr_rx_delay "Clock ticks to delay falling edge of T/R signal. + +Params: (value)" + +%feature("docstring") usrp_basic::common_set_pga "Set Programmable Gain Amplifier(PGA). + +gain is rounded to closest setting supported by hardware. + +Params: (txrx, which_amp, gain_in_db)" + +%feature("docstring") usrp_basic::common_pga "Return programmable gain amplifier gain setting in dB. + +Params: (txrx, which_amp)" + +%feature("docstring") usrp_basic::common_pga_min "Return minimum legal PGA gain in dB. + +Params: (txrx)" + +%feature("docstring") usrp_basic::common_pga_max "Return maximum legal PGA gain in dB. + +Params: (txrx)" + +%feature("docstring") usrp_basic::common_pga_db_per_step "Return hardware step size of PGA(linear in dB). + +Params: (txrx)" + +%feature("docstring") usrp_basic::_common_write_oe "Write direction register(output enables) for pins that go to daughterboard. + +Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. + +This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. + +Params: (txrx, which_side, value, mask)" + +%feature("docstring") usrp_basic::common_write_io "Write daughterboard i/o pin value. + +Params: (txrx, which_side, value, mask)" + +%feature("docstring") usrp_basic::common_read_io "Read daughterboard i/o pin value. + +Params: (txrx, which_side, value)" + +%feature("docstring") usrp_basic::common_write_refclk "Write daughterboard refclk config register. + +Params: (txrx, which_side, value)" + +%feature("docstring") usrp_basic::common_write_atr_mask "Automatic Transmit/Receive switching. + +Params: (txrx, which_side, value)" + +%feature("docstring") usrp_basic::common_write_atr_txval " + +Params: (txrx, which_side, value)" + +%feature("docstring") usrp_basic::common_write_atr_rxval " + +Params: (txrx, which_side, value)" + +%feature("docstring") usrp_basic::common_write_aux_dac "Write auxiliary digital to analog converter. + +Params: (txrx, which_side, which_dac, value)" + +%feature("docstring") usrp_basic::common_read_aux_adc "Read auxiliary analog to digital converter. + +Params: (txrx, which_side, which_adc, value)" + +%feature("docstring") usrp_basic::set_pga "Set Programmable Gain Amplifier (PGA). + +gain is rounded to closest setting supported by hardware. + +Params: (which_amp, gain_in_db)" + +%feature("docstring") usrp_basic::pga "Return programmable gain amplifier gain setting in dB. + +Params: (which_amp)" + +%feature("docstring") usrp_basic::pga_min "Return minimum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic::pga_max "Return maximum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic::pga_db_per_step "Return hardware step size of PGA (linear in dB). + +Params: (NONE)" + +%feature("docstring") usrp_basic::_write_oe "Write direction register (output enables) for pins that go to daughterboard. + +Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. + +This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic::write_io "Write daughterboard i/o pin value. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic::read_io "Read daughterboard i/o pin value. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic::write_refclk "Write daughterboard refclk config register. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic::write_atr_mask " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic::write_atr_txval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic::write_atr_rxval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic::write_aux_dac "Write auxiliary digital to analog converter. + +Params: (which_side, which_dac, value)" + +%feature("docstring") usrp_basic::read_aux_adc "Read auxiliary analog to digital converter. + +Params: (which_side, which_adc, value)" + +%feature("docstring") usrp_basic::block_size "returns current fusb block size + +Params: (NONE)" + +%feature("docstring") usrp_basic::converter_rate "returns A/D or D/A converter rate in Hz + +Params: (NONE)" + +%feature("docstring") usrp_basic::_set_led " + +Params: (which_led, on)" + +%feature("docstring") usrp_basic::_write_fpga_reg "Write FPGA register. + +Params: (regno, value)" + +%feature("docstring") usrp_basic::_read_fpga_reg "Read FPGA register. + +Params: (regno, value)" + +%feature("docstring") usrp_basic::_write_fpga_reg_masked "Write FPGA register with mask. + +Params: (regno, value, mask)" + +%feature("docstring") usrp_basic::_write_9862 "Write AD9862 register. + +Params: (which_codec, regno, value)" + +%feature("docstring") usrp_basic::_read_9862 "Read AD9862 register. + +Params: (which_codec, regno, value)" + +%feature("docstring") usrp_basic::_write_spi "Write data to SPI bus peripheral. + +If specifies that optional_header bytes are present, they are written to the peripheral immediately prior to writing . + +Params: (optional_header, enables, format, buf)" + +%feature("docstring") usrp_basic::_read_spi " + +Params: (optional_header, enables, format, len)" + +%feature("docstring") usrp_basic::start "Start data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic::stop "Stop data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx "class for accessing the receive side of the USRP" + +%feature("docstring") usrp_basic_rx::usrp_basic_rx " + +Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_basic_rx::set_rx_enable " + +Params: (on)" + +%feature("docstring") usrp_basic_rx::rx_enable " + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::disable_rx " + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::restore_rx " + +Params: (on)" + +%feature("docstring") usrp_basic_rx::probe_rx_slots " + +Params: (verbose)" + +%feature("docstring") usrp_basic_rx::~usrp_basic_rx " + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::set_fpga_rx_sample_rate_divisor "tell the fpga the rate rx samples are coming from the A/D's + +div = fpga_master_clock_freq () / sample_rate + +sample_rate is determined by a myriad of registers in the 9862. That's why you have to tell us, so we can tell the fpga. + +Params: (div)" + +%feature("docstring") usrp_basic_rx::read "read data from the D/A's via the FPGA. must be a multiple of 512 bytes. + +If overrun is non-NULL it will be set true iff an RX overrun is detected. + +Params: (buf, len, overrun)" + +%feature("docstring") usrp_basic_rx::converter_rate "sampling rate of A/D converter + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::adc_rate " + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::daughterboard_id "Return daughterboard ID for given side [0,1]. + +Params: (which_side)" + +%feature("docstring") usrp_basic_rx::set_pga "Set Programmable Gain Amplifier (PGA). + +gain is rounded to closest setting supported by hardware. + +Params: (which_amp, gain_in_db)" + +%feature("docstring") usrp_basic_rx::pga "Return programmable gain amplifier gain setting in dB. + +Params: (which_amp)" + +%feature("docstring") usrp_basic_rx::pga_min "Return minimum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::pga_max "Return maximum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::pga_db_per_step "Return hardware step size of PGA (linear in dB). + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::_write_oe "Write direction register (output enables) for pins that go to daughterboard. + +Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. + +This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic_rx::write_io "Write daughterboard i/o pin value. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic_rx::read_io "Read daughterboard i/o pin value. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_rx::write_refclk "Write daughterboard refclk config register. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_rx::write_atr_mask " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_rx::write_atr_txval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_rx::write_atr_rxval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_rx::write_aux_dac "Write auxiliary digital to analog converter. + +Params: (which_side, which_dac, value)" + +%feature("docstring") usrp_basic_rx::read_aux_adc "Read auxiliary analog to digital converter. + +Params: (which_side, which_adc, value)" + +%feature("docstring") usrp_basic_rx::block_size "returns current fusb block size + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::start "Start data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::stop "Stop data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic_rx::make "invokes constructor, returns instance or 0 if trouble + +Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_basic_tx "class for accessing the transmit side of the USRP" + +%feature("docstring") usrp_basic_tx::usrp_basic_tx " + +Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_basic_tx::set_tx_enable " + +Params: (on)" + +%feature("docstring") usrp_basic_tx::tx_enable " + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::disable_tx " + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::restore_tx " + +Params: (on)" + +%feature("docstring") usrp_basic_tx::probe_tx_slots " + +Params: (verbose)" + +%feature("docstring") usrp_basic_tx::~usrp_basic_tx " + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::set_fpga_tx_sample_rate_divisor "tell the fpga the rate tx samples are going to the D/A's + +div = fpga_master_clock_freq () * 2 + +sample_rate is determined by a myriad of registers in the 9862. That's why you have to tell us, so we can tell the fpga. + +Params: (div)" + +%feature("docstring") usrp_basic_tx::write "Write data to the A/D's via the FPGA. + +must be a multiple of 512 bytes. +if is non-NULL, it will be set to true iff a transmit underrun condition is detected. + +Params: (buf, len, underrun)" + +%feature("docstring") usrp_basic_tx::wait_for_completion " + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::converter_rate "sampling rate of D/A converter + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::dac_rate " + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::daughterboard_id "Return daughterboard ID for given side [0,1]. + +Params: (which_side)" + +%feature("docstring") usrp_basic_tx::set_pga "Set Programmable Gain Amplifier (PGA). + +gain is rounded to closest setting supported by hardware. + +Params: (which_amp, gain_in_db)" + +%feature("docstring") usrp_basic_tx::pga "Return programmable gain amplifier gain setting in dB. + +Params: (which_amp)" + +%feature("docstring") usrp_basic_tx::pga_min "Return minimum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::pga_max "Return maximum legal PGA gain in dB. + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::pga_db_per_step "Return hardware step size of PGA (linear in dB). + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::_write_oe "Write direction register (output enables) for pins that go to daughterboard. + +Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. + +This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic_tx::write_io "Write daughterboard i/o pin value. + +Params: (which_side, value, mask)" + +%feature("docstring") usrp_basic_tx::read_io "Read daughterboard i/o pin value. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_tx::write_refclk "Write daughterboard refclk config register. + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_tx::write_atr_mask " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_tx::write_atr_txval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_tx::write_atr_rxval " + +Params: (which_side, value)" + +%feature("docstring") usrp_basic_tx::write_aux_dac "Write auxiliary digital to analog converter. + +Params: (which_side, which_dac, value)" + +%feature("docstring") usrp_basic_tx::read_aux_adc "Read auxiliary analog to digital converter. + +Params: (which_side, which_adc, value)" + +%feature("docstring") usrp_basic_tx::block_size "returns current fusb block size + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::start "Start data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::stop "Stop data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_basic_tx::make "invokes constructor, returns instance or 0 if trouble + +Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_local_sighandler "Get and set signal handler. + +Constructor installs new handler, destructor reinstalls original value." + +%feature("docstring") usrp_local_sighandler::usrp_local_sighandler " + +Params: (signum, new_handler)" + +%feature("docstring") usrp_local_sighandler::~usrp_local_sighandler " + +Params: (NONE)" + +%feature("docstring") usrp_local_sighandler::throw_signal " + +Params: (signum)" + + + +%feature("docstring") usrp_rx_cfile::usrp_rx_cfile " + +Params: (which, spec, decim, freq, gain, width8, nohb, output_shorts, nsamples, filename)" + + + +%feature("docstring") usrp_siggen::usrp_siggen " + +Params: (which, spec, rf_freq, interp, wfreq, waveform, amp, gain, offset, nsamples)" + +%feature("docstring") usrp_signal "Representation of signal." + +%feature("docstring") usrp_signal::usrp_signal " + +Params: (signum)" + +%feature("docstring") usrp_signal::signal " + +Params: (NONE)" + +%feature("docstring") usrp_signal::name " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base "abstract interface to Universal Software Radio Peripheral Tx path (Rev 1)" + +%feature("docstring") usrp_sink_base::usrp_sink_base " + +Params: (name, input_signature, which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_sink_base::copy_to_usrp_buffer "convert between input item format and usrp native format + +Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" + +%feature("docstring") usrp_sink_base::~usrp_sink_base " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp_sink_base::set_interp_rate "Set interpolator rate. must be in [4, 1024] and a multiple of 4. + +The final complex sample rate across the USB is dac_freq () / interp_rate () * nchannels () + +Params: (rate)" + +%feature("docstring") usrp_sink_base::set_nchannels " + +Params: (nchan)" + +%feature("docstring") usrp_sink_base::set_mux " + +Params: (mux)" + +%feature("docstring") usrp_sink_base::determine_tx_mux_value " + +Params: (ss)" + +%feature("docstring") usrp_sink_base::set_tx_freq "set the frequency of the digital up converter. + +must be 0. is the center frequency in Hz. It must be in the range [-44M, 44M]. The frequency specified is quantized. Use tx_freq to retrieve the actual value used. + +Params: (channel, freq)" + +%feature("docstring") usrp_sink_base::dac_rate " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::dac_freq " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::interp_rate " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::nchannels " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::mux " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::tx_freq " + +Params: (channel)" + +%feature("docstring") usrp_sink_base::nunderruns " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::has_rx_halfband " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::has_tx_halfband " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::nddcs " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::nducs " + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") usrp_sink_base::tune "High-level \"tune\" method. Works for the single channel case. + +This method adjusts both the daughterboard LO and the DUC so that DC in the complex baseband samples ends up at RF target_freq. + +Params: (chan, db, target_freq, result)" + +%feature("docstring") usrp_sink_base::pick_tx_subdevice "Select suitable Tx daughterboard. + +Params: (NONE)" + +%feature("docstring") usrp_source_base "abstract interface to Universal Software Radio Peripheral Rx path (Rev 1)" + +%feature("docstring") usrp_source_base::usrp_source_base " + +Params: (name, output_signature, which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_source_base::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. + +Params: (noutput_items)" + +%feature("docstring") usrp_source_base::sizeof_basic_sample "number of bytes in a low-level sample + +Params: (NONE)" + +%feature("docstring") usrp_source_base::copy_from_usrp_buffer "convert between native usrp format and output item format + +The copy must consume all bytes available. That is, must equal . + +Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" + +%feature("docstring") usrp_source_base::~usrp_source_base " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") usrp_source_base::set_decim_rate "Set decimator rate. must be EVEN and in [8, 256]. + +The final complex sample rate across the USB is adc_freq () / decim_rate () + +Params: (rate)" + +%feature("docstring") usrp_source_base::set_nchannels " + +Params: (nchan)" + +%feature("docstring") usrp_source_base::set_mux " + +Params: (mux)" + +%feature("docstring") usrp_source_base::determine_rx_mux_value " + +Params: (ss)" + +%feature("docstring") usrp_source_base::set_rx_freq "set the center frequency of the digital down converter. + +must be 0. is the center frequency in Hz. It must be in the range [-FIXME, FIXME]. The frequency specified is quantized. Use rx_freq to retrieve the actual value used. + +Params: (channel, freq)" + +%feature("docstring") usrp_source_base::set_fpga_mode "set fpga special modes + +Params: (mode)" + +%feature("docstring") usrp_source_base::set_ddc_phase "Set the digital down converter phase register. + +Params: (channel, phase)" + +%feature("docstring") usrp_source_base::adc_rate " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::adc_freq " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::decim_rate " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::nchannels " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::mux " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::rx_freq " + +Params: (channel)" + +%feature("docstring") usrp_source_base::noverruns " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::has_rx_halfband " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::has_tx_halfband " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::nddcs " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::nducs " + +Params: (NONE)" + +%feature("docstring") usrp_source_base::start "Called to enable drivers, etc for i/o devices. + +This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. + +Params: (NONE)" + +%feature("docstring") usrp_source_base::stop "Called to disable drivers, etc for i/o devices. + +Params: (NONE)" + +%feature("docstring") usrp_source_base::set_format "Specify Rx data format. + +Rx data format control register + +3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-----------------------------------------+-+-+---------+-------+ | Reserved (Must be zero) |B|Q| WIDTH | SHIFT | +-----------------------------------------+-+-+---------+-------+ + +SHIFT specifies arithmetic right shift [0, 15] WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not all valid) Q if set deliver both I & Q, else just I B if set bypass half-band filter. + +Right now the acceptable values are: + +B Q WIDTH SHIFT 0 1 16 0 0 1 8 8 + +More valid combos to come. + +Default value is 0x00000300 16-bits, 0 shift, deliver both I & Q. + +Params: (format)" + +%feature("docstring") usrp_source_base::format "return current format + +Params: (NONE)" + +%feature("docstring") usrp_source_base::tune "High-level \"tune\" method. Works for the single channel case. + +This method adjusts both the daughterboard LO and the DDC so that target_freq ends up at DC in the complex baseband samples. + +Params: (chan, db, target_freq, result)" + +%feature("docstring") usrp_source_base::pick_rx_subdevice "Select suitable Rx daughterboard. + +Params: (NONE)" + +%feature("docstring") usrp_source_base::make_format " + +Params: (width, shift, want_q, bypass_halfband)" + +%feature("docstring") usrp_source_base::format_width " + +Params: (format)" + +%feature("docstring") usrp_source_base::format_shift " + +Params: (format)" + +%feature("docstring") usrp_source_base::format_want_q " + +Params: (format)" + +%feature("docstring") usrp_source_base::format_bypass_halfband " + +Params: (format)" + + + +%feature("docstring") usrp_standard_common::usrp_standard_common " + +Params: (parent)" + +%feature("docstring") usrp_standard_common::has_rx_halfband "does the FPGA implement the final Rx half-band filter? If it doesn't, the maximum decimation factor with proper gain is 1/2 of what it would otherwise be. + +Params: (NONE)" + +%feature("docstring") usrp_standard_common::nddcs "number of digital downconverters implemented in the FPGA This will be 0, 1, 2 or 4. + +Params: (NONE)" + +%feature("docstring") usrp_standard_common::has_tx_halfband "does the FPGA implement the initial Tx half-band filter? + +Params: (NONE)" + +%feature("docstring") usrp_standard_common::nducs "number of digital upconverters implemented in the FPGA This will be 0, 1, or 2. + +Params: (NONE)" + +%feature("docstring") usrp_standard_common::calc_dxc_freq "Calculate the frequency to use for setting the digital up or down converter. + +Params: (target_freq, baseband_freq, fs, dxc_freq, inverted)" + +%feature("docstring") usrp_standard_rx "The C++ interface the receive side of the USRP + +This is the recommended interface to USRP receive functionality for applications that use the USRP but not GNU Radio." + +%feature("docstring") usrp_standard_rx::usrp_standard_rx " + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_standard_rx::write_hw_mux_reg " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::~usrp_standard_rx " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::set_decim_rate "Set decimator rate. MUST BE EVEN and in [8, 256]. + +The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels () + +Params: (rate)" + +%feature("docstring") usrp_standard_rx::set_nchannels "Set number of active channels. must be 1, 2 or 4. + +The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels () + +Params: (nchannels)" + +%feature("docstring") usrp_standard_rx::set_mux "Set input mux configuration. + +This determines which ADC (or constant zero) is connected to each DDC input. There are 4 DDCs. Each has two inputs. + +Params: (mux)" + +%feature("docstring") usrp_standard_rx::determine_rx_mux_value "Determine the appropriate Rx mux value as a function of the subdevice choosen and the characteristics of the respective daughterboard. + +Params: (ss)" + +%feature("docstring") usrp_standard_rx::set_rx_freq "set the frequency of the digital down converter. + +must be in the range [0,3]. is the center frequency in Hz. may be either negative or postive. The frequency specified is quantized. Use rx_freq to retrieve the actual value used. + +Params: (channel, freq)" + +%feature("docstring") usrp_standard_rx::set_fpga_mode "set fpga mode + +Params: (mode)" + +%feature("docstring") usrp_standard_rx::set_ddc_phase "Set the digital down converter phase register. + +Params: (channel, phase)" + +%feature("docstring") usrp_standard_rx::set_format "Specify Rx data format. + +Rx data format control register + +3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-----------------------------------------+-+-+---------+-------+ | Reserved (Must be zero) |B|Q| WIDTH | SHIFT | +-----------------------------------------+-+-+---------+-------+ + +SHIFT specifies arithmetic right shift [0, 15] WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not all valid) Q if set deliver both I & Q, else just I B if set bypass half-band filter. + +Right now the acceptable values are: + +B Q WIDTH SHIFT 0 1 16 0 0 1 8 8 + +More valid combos to come. + +Default value is 0x00000300 16-bits, 0 shift, deliver both I & Q. + +Params: (format)" + +%feature("docstring") usrp_standard_rx::tune "High-level \"tune\" method. Works for the single channel case. + +This method adjusts both the daughterboard LO and the DDC so that target_freq ends up at DC in the complex baseband samples. + +Params: (chan, db, target_freq, result)" + +%feature("docstring") usrp_standard_rx::decim_rate " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::rx_freq " + +Params: (channel)" + +%feature("docstring") usrp_standard_rx::nchannels " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::mux " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::format " + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::start "Start data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::stop "Stop data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_standard_rx::make "invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble + +Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_standard_rx::make_format " + +Params: (width, shift, want_q, bypass_halfband)" + +%feature("docstring") usrp_standard_rx::format_width " + +Params: (format)" + +%feature("docstring") usrp_standard_rx::format_shift " + +Params: (format)" + +%feature("docstring") usrp_standard_rx::format_want_q " + +Params: (format)" + +%feature("docstring") usrp_standard_rx::format_bypass_halfband " + +Params: (format)" + +%feature("docstring") usrp_standard_tx "The C++ interface the transmit side of the USRP + +This is the recommended interface to USRP transmit functionality for applications that use the USRP but not GNU Radio. + +Uses digital upconverter (coarse & fine modulators) in AD9862..." + +%feature("docstring") usrp_standard_tx::set_coarse_modulator " + +Params: (channel, cm)" + +%feature("docstring") usrp_standard_tx::coarse_modulator " + +Params: (channel)" + +%feature("docstring") usrp_standard_tx::usrp_standard_tx " + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + +%feature("docstring") usrp_standard_tx::write_hw_mux_reg " + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::~usrp_standard_tx " + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::set_interp_rate "Set interpolator rate. must be in [4, 512] and a multiple of 4. + +The final complex sample rate across the USB is dac_freq () / interp_rate () * nchannels () + +Params: (rate)" + +%feature("docstring") usrp_standard_tx::set_nchannels "Set number of active channels. must be 1 or 2. + +The final complex sample rate across the USB is dac_freq () / decim_rate () * nchannels () + +Params: (nchannels)" + +%feature("docstring") usrp_standard_tx::set_mux "Set output mux configuration. + +Params: (mux)" + +%feature("docstring") usrp_standard_tx::determine_tx_mux_value "Determine the appropriate Tx mux value as a function of the subdevice choosen and the characteristics of the respective daughterboard. + +Params: (ss)" + +%feature("docstring") usrp_standard_tx::set_tx_freq "set the frequency of the digital up converter. + +must be in the range [0,1]. is the center frequency in Hz. It must be in the range [-44M, 44M]. The frequency specified is quantized. Use tx_freq to retrieve the actual value used. + +Params: (channel, freq)" + +%feature("docstring") usrp_standard_tx::interp_rate " + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::tx_freq " + +Params: (channel)" + +%feature("docstring") usrp_standard_tx::nchannels " + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::mux " + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::tune "High-level \"tune\" method. Works for the single channel case. + +This method adjusts both the daughterboard LO and the DUC so that DC in the complex baseband samples ends up at RF target_freq. + +Params: (chan, db, target_freq, result)" + +%feature("docstring") usrp_standard_tx::start "Start data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::stop "Stop data transfers. Called in base class to derived class order. + +Params: (NONE)" + +%feature("docstring") usrp_standard_tx::make "invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble + +Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" + + + +%feature("docstring") usrp_tune_result::usrp_tune_result " + +Params: (baseband, dxc, residual, _inverted)" + +%feature("docstring") std::valarray "STL class." + +%feature("docstring") std::vector "vector documentation stub + +STL class." + +%feature("docstring") video_sdl_sink_s "video sink using SDL + +input signature is one, two or three streams of signed short. One stream: stream is grey (Y) two streems: first is grey (Y), second is alternating U and V Three streams: first is grey (Y), second is U, third is V Input samples must be in the range [0,255]." + +%feature("docstring") video_sdl_sink_s::video_sdl_sink_s " + +Params: (framerate, width, height, format, dst_width, dst_height)" + +%feature("docstring") video_sdl_sink_s::copy_line_pixel_interleaved " + +Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_s::copy_line_line_interleaved " + +Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_s::copy_line_single_plane " + +Params: (dst_pixels, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_s::copy_line_single_plane_dec2 " + +Params: (dst_pixels, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_s::copy_plane_to_surface " + +Params: (plane, noutput_items, src_pixels)" + +%feature("docstring") video_sdl_sink_s::~video_sdl_sink_s " + +Params: (NONE)" + +%feature("docstring") video_sdl_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") video_sdl_sink_uc "video sink using SDL + +input signature is one, two or three streams of uchar. One stream: stream is grey (Y) two streems: first is grey (Y), second is alternating U and V Three streams: first is grey (Y), second is U, third is V Input samples must be in the range [0,255]." + +%feature("docstring") video_sdl_sink_uc::video_sdl_sink_uc " + +Params: (framerate, width, height, format, dst_width, dst_height)" + +%feature("docstring") video_sdl_sink_uc::copy_line_pixel_interleaved " + +Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_uc::copy_line_line_interleaved " + +Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_uc::copy_line_single_plane " + +Params: (dst_pixels, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_uc::copy_line_single_plane_dec2 " + +Params: (dst_pixels, src_pixels, src_width)" + +%feature("docstring") video_sdl_sink_uc::copy_plane_to_surface " + +Params: (plane, noutput_items, src_pixels)" + +%feature("docstring") video_sdl_sink_uc::~video_sdl_sink_uc " + +Params: (NONE)" + +%feature("docstring") video_sdl_sink_uc::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + + + +%feature("docstring") wbx_base::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. + +N.B., any class that overrides shutdown MUST call shutdown in its destructor. + +Params: (NONE)" + +%feature("docstring") wbx_base::_lock_detect " + +Params: (NONE)" + +%feature("docstring") wbx_base::_tx_write_oe " + +Params: (value, mask)" + +%feature("docstring") wbx_base::_rx_write_oe " + +Params: (value, mask)" + +%feature("docstring") wbx_base::_tx_write_io " + +Params: (value, mask)" + +%feature("docstring") wbx_base::_rx_write_io " + +Params: (value, mask)" + +%feature("docstring") wbx_base::_rx_read_io " + +Params: (NONE)" + +%feature("docstring") wbx_base::_tx_read_io " + +Params: (NONE)" + +%feature("docstring") wbx_base::_compute_regs " + +Params: (freq)" + +%feature("docstring") wbx_base::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") wbx_base::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") wbx_base::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") wbx_base::wbx_base " + +Params: (usrp, which)" + +%feature("docstring") wbx_base::~wbx_base " + +Params: (NONE)" + +%feature("docstring") wbx_base::set_freq " + +Params: (freq)" + +%feature("docstring") wbx_base::gain_min " + +Params: (NONE)" + +%feature("docstring") wbx_base::gain_max " + +Params: (NONE)" + +%feature("docstring") wbx_base::gain_db_per_step " + +Params: (NONE)" + +%feature("docstring") wbx_base::set_gain " + +Params: (gain)" + +%feature("docstring") wbx_base::is_quadrature " + +Params: (NONE)" + + + +%feature("docstring") wbx_base_rx::wbx_base_rx " + +Params: (usrp, which)" + +%feature("docstring") wbx_base_rx::~wbx_base_rx " + +Params: (NONE)" + +%feature("docstring") wbx_base_rx::set_auto_tr " + +Params: (on)" + +%feature("docstring") wbx_base_rx::select_rx_antenna " + +Params: (which_antenna)" + +%feature("docstring") wbx_base_rx::set_gain " + +Params: (gain)" + +%feature("docstring") wbx_base_rx::i_and_q_swapped " + +Params: (NONE)" + + + +%feature("docstring") wbx_base_tx::wbx_base_tx " + +Params: (usrp, which)" + +%feature("docstring") wbx_base_tx::~wbx_base_tx " + +Params: (NONE)" + +%feature("docstring") wbx_base_tx::set_auto_tr " + +Params: (on)" + +%feature("docstring") wbx_base_tx::set_enable " + +Params: (on)" + + + +%feature("docstring") wbxng_base::wbxng_base " + +Params: (usrp, which)" + +%feature("docstring") wbxng_base::~wbxng_base " + +Params: (NONE)" + +%feature("docstring") wbxng_base::set_freq " + +Params: (freq)" + +%feature("docstring") wbxng_base::is_quadrature " + +Params: (NONE)" + +%feature("docstring") wbxng_base::freq_min " + +Params: (NONE)" + +%feature("docstring") wbxng_base::freq_max " + +Params: (NONE)" + +%feature("docstring") wbxng_base::_write_spi " + +Params: (data)" + +%feature("docstring") wbxng_base::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") wbxng_base::_get_locked " + +Params: (NONE)" + +%feature("docstring") wbxng_base::_set_pga " + +Params: (pga_gain)" + +%feature("docstring") std::wfstream "STL class." + +%feature("docstring") std::wifstream "STL class." + +%feature("docstring") std::wios "STL class." + +%feature("docstring") std::wistream "STL class." + +%feature("docstring") std::wistringstream "STL class." + +%feature("docstring") std::wofstream "STL class." + +%feature("docstring") std::wostream "STL class." + +%feature("docstring") std::wostringstream "STL class." + +%feature("docstring") std::wstring "STL class." + +%feature("docstring") std::wstringstream "STL class." \ No newline at end of file diff --git a/gnuradio-core/src/lib/swig/swig_doc.py b/gnuradio-core/src/lib/swig/swig_doc.py new file mode 100644 index 000000000..52989e1bd --- /dev/null +++ b/gnuradio-core/src/lib/swig/swig_doc.py @@ -0,0 +1,195 @@ +""" +Creates the swig_doc.i SWIG interface file. +Execute using: python swig_doc.py xml_path outputfilename + +The file instructs SWIG to transfer the doxygen comments into the +python docstrings. + +""" + +import sys + +from gnuradio.utils.doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction + + +def py_name(name): + bits = name.split('_') + return '_'.join(bits[1:]) + +def make_name(name): + bits = name.split('_') + return bits[0] + '_make_' + '_'.join(bits[1:]) + + +class Block(object): + """ + Checks if doxyxml produced objects correspond to a gnuradio block. + """ + + @classmethod + def includes(cls, item): + if not isinstance(item, DoxyClass): + return False + # Check for a parsing error. + if item.error(): + return False + return item.has_member(make_name(item.name()), DoxyFriend) + + +def utoascii(text): + """ + Convert unicode text into ascii and escape quotes. + """ + if text is None: + return '' + out = text.encode('ascii', 'replace') + out = out.replace('"', '\\"') + return out + + +def combine_descriptions(obj): + """ + Combines the brief and detailed descriptions of an object together. + """ + description = [] + bd = obj.brief_description + dd = obj.detailed_description + if bd: + description.append(bd) + if dd: + description.append(dd) + return utoascii('\n\n'.join(description)) + + +entry_templ = '%feature("docstring") {name} "{docstring}"' +def make_entry(obj, name=None, templ="{description}", description=None): + """ + 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 + variable named 'description'. + description - if this optional variable is set then it's value is + used as the description instead of extracting it from obj. + """ + if name is None: + name=obj.name() + if description is None: + description = combine_descriptions(obj) + docstring = templ.format(description=description) + if not docstring: + return '' + return entry_templ.format( + name=name, + docstring=docstring, + ) + + +def make_func_entry(func, name=None, description=None, params=None): + """ + Create a function docstring entry for a swig interface file. + + func - a doxyxml object from which documentation will be extracted. + name - the name of the C object (defaults to func.name()) + description - if this optional variable is set then it's value is + 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) + + +def make_class_entry(klass): + """ + Create a class docstring for a swig interface file. + """ + output = [] + output.append(make_entry(klass)) + for func in klass.in_category(DoxyFunction): + name = klass.name() + '::' + func.name() + output.append(make_func_entry(func, name=name)) + return "\n\n".join(output) + + +def make_block_entry(block): + """ + Create class and function docstrings of a gnuradio block for a + swig interface file. + """ + output = [] + # Get creator function + make_func = di.get_member(make_name(block.name())) + output.append(make_class_entry(block)) + creator = block.get_member(block.name()) + make_func_desc = "Creates a {name} block.\n\n{block_desc}" + description = make_func_desc.format( + block_desc = combine_descriptions(block), + name = py_name(block.name()), + ) + output.append(make_func_entry(make_func, description=description, params=creator.params)) + return "\n\n".join(output) + + +# Parse command line options and set up doxyxml. +err_msg = "Execute using: python swig_doc.py xml_path outputfilename" +if len(sys.argv) != 3: + raise StandardError(err_msg) +xml_path = sys.argv[1] +swigdocfilename = sys.argv[2] +swig_doc = file(swigdocfilename, 'w') +di = DoxyIndex(xml_path) + +output = [] + +# gnuradio.gr.msq_queue.insert_tail and delete_head create errors unless docstrings are defined! +# This is presumably a bug in SWIG. +msg_q = di.get_member(u'gr_msg_queue') +insert_tail = msg_q.get_member(u'insert_tail') +delete_head = msg_q.get_member(u'delete_head') +output.append(make_func_entry(insert_tail, name='gr_py_msg_queue__insert_tail')) +output.append(make_func_entry(delete_head, name='gr_py_msg_queue__delete_head')) + +# Create docstrings for the blocks. +blocks = di.in_category(Block) +make_funcs = set([]) +for block in blocks: + try: + make_func = di.get_member(make_name(block.name())) + make_funcs.add(make_func.name()) + output.append(make_block_entry(block)) + except block.ParsingError: + print('Parsing error for block %s' % block.name()) + +# 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] +for f in funcs: + try: + output.append(make_func_entry(f)) + except f.ParsingError: + print('Parsing error for function %s' % f.name()) + +# 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] +for k in klasses: + try: + output.append(make_class_entry(k)) + except k.ParsingError: + print('Parsing error for class %s' % 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. + +output = "\n\n".join(output) + +swig_doc.write(output) +swig_doc.close() diff --git a/gr-atsc/src/lib/Makefile.swig.gen b/gr-atsc/src/lib/Makefile.swig.gen index e52d65335..2c7a7336d 100644 --- a/gr-atsc/src/lib/Makefile.swig.gen +++ b/gr-atsc/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ atsc_python_PYTHON = \ ## Entry rule for running SWIG -atsc.h atsc.py atsc.cc: atsc.i +atsc.h atsc.py atsc.cc: atsc.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-audio-alsa/src/Makefile.swig.gen b/gr-audio-alsa/src/Makefile.swig.gen index 3a84a02b4..b15082e1c 100644 --- a/gr-audio-alsa/src/Makefile.swig.gen +++ b/gr-audio-alsa/src/Makefile.swig.gen @@ -107,11 +107,12 @@ audio_alsa_python_PYTHON = \ ## Entry rule for running SWIG -audio_alsa.h audio_alsa.py audio_alsa.cc: audio_alsa.i +audio_alsa.h audio_alsa.py audio_alsa.cc: audio_alsa.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-audio-oss/src/Makefile.swig.gen b/gr-audio-oss/src/Makefile.swig.gen index 6fce10c11..694d24eaf 100644 --- a/gr-audio-oss/src/Makefile.swig.gen +++ b/gr-audio-oss/src/Makefile.swig.gen @@ -107,11 +107,12 @@ audio_oss_python_PYTHON = \ ## Entry rule for running SWIG -audio_oss.h audio_oss.py audio_oss.cc: audio_oss.i +audio_oss.h audio_oss.py audio_oss.cc: audio_oss.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen index e192abc70..2a0061f6f 100644 --- a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen +++ b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ cvsd_vocoder_python_PYTHON = \ ## Entry rule for running SWIG -cvsd_vocoder.h cvsd_vocoder.py cvsd_vocoder.cc: cvsd_vocoder.i +cvsd_vocoder.h cvsd_vocoder.py cvsd_vocoder.cc: cvsd_vocoder.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen index 5446f346a..6f20b8c62 100644 --- a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen +++ b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ gsm_full_rate_python_PYTHON = \ ## Entry rule for running SWIG -gsm_full_rate.h gsm_full_rate.py gsm_full_rate.cc: gsm_full_rate.i +gsm_full_rate.h gsm_full_rate.py gsm_full_rate.cc: gsm_full_rate.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-msdd6000/src/Makefile.swig.gen b/gr-msdd6000/src/Makefile.swig.gen index ced3979f7..9a3bb939b 100644 --- a/gr-msdd6000/src/Makefile.swig.gen +++ b/gr-msdd6000/src/Makefile.swig.gen @@ -33,21 +33,14 @@ ## this has to be done in the including Makefile.am -before- ## Makefile.swig is included. - msdd_pythondir_category ?= gnuradio/msdd msdd_pylibdir_category ?= $(msdd_pythondir_category) msdd_pythondir = $(pythondir)/$(msdd_pythondir_category) msdd_pylibdir = $(pyexecdir)/$(msdd_pylibdir_category) -msdd_rs_pythondir_category ?= gnuradio/msdd_rs -msdd_rs_pylibdir_category ?= $(msdd_rs_pythondir_category) -msdd_rs_pythondir = $(pythondir)/$(msdd_rs_pythondir_category) -msdd_rs_pylibdir = $(pyexecdir)/$(msdd_rs_pylibdir_category) - ## SWIG headers are always installed into the same directory. msdd_swigincludedir = $(swigincludedir) -msdd_rs_swigincludedir = $(swigincludedir) ## This is a template file for a "generated" Makefile addition (in ## this case, "Makefile.swig.gen"). By including the top-level @@ -70,7 +63,6 @@ msdd_rs_swigincludedir = $(swigincludedir) ## the SWIG-generated files will be removed from the distribution. STAMPS += $(DEPDIR)/msdd-generate-* -STAMPS += $(DEPDIR)/msdd_rs-generate-* ## Other cleaned files: dependency files generated by SWIG or this Makefile @@ -80,40 +72,27 @@ MOSTLYCLEANFILES += $(DEPDIR)/*.S* ## .h file is sometimes built, but not always ... so that one has to ## be added manually by the including Makefile.am . -swig_built_sources += msdd.py msdd_rs.py msdd.cc msdd_rs.cc +swig_built_sources += msdd.py msdd.cc ## Various SWIG variables. These can be overloaded in the including ## Makefile.am by setting the variable value there, then including ## Makefile.swig . msdd_swiginclude_HEADERS = \ - msdd.i \ - msdd_rs.i \ + msdd.i \ $(msdd_swiginclude_headers) msdd_pylib_LTLIBRARIES = \ _msdd.la -msdd_rs_pylib_LTLIBRARIES = \ - _msdd_rs.la - _msdd_la_SOURCES = \ - msdd.cc \ + msdd.cc \ $(msdd_la_swig_sources) -_msdd_rs_la_SOURCES = \ - msdd_rs.cc \ - $(msdd_la_swig_sources) - - _msdd_la_LIBADD = \ $(STD_SWIG_LA_LIB_ADD) \ $(msdd_la_swig_libadd) -_msdd_rs_la_LIBADD = \ - $(STD_SWIG_LA_LIB_ADD) \ - $(msdd_rs_la_swig_libadd) - _msdd_la_LDFLAGS = \ $(STD_SWIG_LA_LD_FLAGS) \ $(msdd_la_swig_ldflags) @@ -122,29 +101,18 @@ _msdd_la_CXXFLAGS = \ $(STD_SWIG_CXX_FLAGS) \ $(msdd_la_swig_cxxflags) -_msdd_rs_la_LDFLAGS = \ - $(STD_SWIG_LA_LD_FLAGS) \ - $(msdd_rs_la_swig_ldflags) - -_msdd_rs_la_CXXFLAGS = \ - $(STD_SWIG_CXX_FLAGS) \ - $(msdd_rs_la_swig_cxxflags) - msdd_python_PYTHON = \ - msdd.py \ + msdd.py \ $(msdd_python) -msdd_rs_python_PYTHON = \ - msdd_rs.py \ - $(msdd_rs_python) - ## Entry rule for running SWIG -msdd.h msdd.py msdd.cc: msdd.i +msdd.h msdd.py msdd.cc: msdd.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -284,16 +252,127 @@ $(DEPDIR)/msdd-generate-stamp: ## touch $(DEPDIR)/msdd-generate-stamp +# KLUDGE: Force runtime include of a SWIG dependency file. This is +# not guaranteed to be portable, but will probably work. If it works, +# we have accurate dependencies for our swig stuff, which is good. + +@am__include@ @am__quote@./$(DEPDIR)/msdd.d@am__quote@ + +# -*- Makefile -*- +# +# Copyright 2009 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. +# + +# Makefile.swig.gen for msdd_rs.i + +## Default install locations for these files: +## +## Default location for the Python directory is: +## ${prefix}/lib/python${python_version}/site-packages/[category]/msdd_rs +## Default location for the Python exec directory is: +## ${exec_prefix}/lib/python${python_version}/site-packages/[category]/msdd_rs +## +## The following can be overloaded to change the install location, but +## this has to be done in the including Makefile.am -before- +## Makefile.swig is included. + +msdd_rs_pythondir_category ?= gnuradio/msdd_rs +msdd_rs_pylibdir_category ?= $(msdd_rs_pythondir_category) +msdd_rs_pythondir = $(pythondir)/$(msdd_rs_pythondir_category) +msdd_rs_pylibdir = $(pyexecdir)/$(msdd_rs_pylibdir_category) + +## SWIG headers are always installed into the same directory. + +msdd_rs_swigincludedir = $(swigincludedir) + +## This is a template file for a "generated" Makefile addition (in +## this case, "Makefile.swig.gen"). By including the top-level +## Makefile.swig, this file will be used to generate the SWIG +## dependencies. Assign the variable TOP_SWIG_FILES to be the list of +## SWIG .i files to generated wrappings for; there can be more than 1 +## so long as the names are unique (no sorting is done on the +## TOP_SWIG_FILES list). This file explicitly assumes that a SWIG .i +## file will generate .cc, .py, and possibly .h files -- meaning that +## all of these files will have the same base name (that provided for +## the SWIG .i file). +## +## This code is setup to ensure parallel MAKE ("-j" or "-jN") does the +## right thing. For more info, see < +## http://sources.redhat.com/automake/automake.html#Multiple-Outputs > + +## Stamps used to ensure parallel make does the right thing. These +## are removed by "make clean", but otherwise unused except during the +## parallel built. These will not be included in a tarball, because +## the SWIG-generated files will be removed from the distribution. + +STAMPS += $(DEPDIR)/msdd_rs-generate-* + +## Other cleaned files: dependency files generated by SWIG or this Makefile + +MOSTLYCLEANFILES += $(DEPDIR)/*.S* + +## Add the .py and .cc files to the list of SWIG built sources. The +## .h file is sometimes built, but not always ... so that one has to +## be added manually by the including Makefile.am . + +swig_built_sources += msdd_rs.py msdd_rs.cc + +## Various SWIG variables. These can be overloaded in the including +## Makefile.am by setting the variable value there, then including +## Makefile.swig . +msdd_rs_swiginclude_HEADERS = \ + msdd_rs.i \ + $(msdd_rs_swiginclude_headers) + +msdd_rs_pylib_LTLIBRARIES = \ + _msdd_rs.la + +_msdd_rs_la_SOURCES = \ + msdd_rs.cc \ + $(msdd_rs_la_swig_sources) + +_msdd_rs_la_LIBADD = \ + $(STD_SWIG_LA_LIB_ADD) \ + $(msdd_rs_la_swig_libadd) + +_msdd_rs_la_LDFLAGS = \ + $(STD_SWIG_LA_LD_FLAGS) \ + $(msdd_rs_la_swig_ldflags) +_msdd_rs_la_CXXFLAGS = \ + $(STD_SWIG_CXX_FLAGS) \ + $(msdd_rs_la_swig_cxxflags) +msdd_rs_python_PYTHON = \ + msdd_rs.py \ + $(msdd_rs_python) +## Entry rule for running SWIG -msdd_rs.h msdd_rs.py msdd_rs.cc: msdd_rs.i +msdd_rs.h msdd_rs.py msdd_rs.cc: msdd_rs.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is @@ -316,7 +395,7 @@ msdd_rs.h msdd_rs.py msdd_rs.cc: msdd_rs.i ## ## Once execution gets to here, it should always proceed no matter the ## state of a stamp (as discussed in link above). The -## $(DEPDIR)/msdd-generate stuff is used to allow for parallel +## $(DEPDIR)/msdd_rs-generate stuff is used to allow for parallel ## builds to "do the right thing". The stamp has no relationship with ## either the target files or dependency file; it is used solely for ## the protection of multiple builds during a given call to MAKE. @@ -437,8 +516,5 @@ $(DEPDIR)/msdd_rs-generate-stamp: # not guaranteed to be portable, but will probably work. If it works, # we have accurate dependencies for our swig stuff, which is good. - -@am__include@ @am__quote@./$(DEPDIR)/msdd.d@am__quote@ @am__include@ @am__quote@./$(DEPDIR)/msdd_rs.d@am__quote@ - diff --git a/gr-noaa/swig/Makefile.swig.gen b/gr-noaa/swig/Makefile.swig.gen index 3d7102fe3..1dd2461b6 100644 --- a/gr-noaa/swig/Makefile.swig.gen +++ b/gr-noaa/swig/Makefile.swig.gen @@ -107,11 +107,12 @@ noaa_swig_python_PYTHON = \ ## Entry rule for running SWIG -noaa_swig.h noaa_swig.py noaa_swig.cc: noaa_swig.i +noaa_swig.h noaa_swig.py noaa_swig.cc: noaa_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-pager/swig/Makefile.swig.gen b/gr-pager/swig/Makefile.swig.gen index 5cfbc66be..bf9087520 100644 --- a/gr-pager/swig/Makefile.swig.gen +++ b/gr-pager/swig/Makefile.swig.gen @@ -107,11 +107,12 @@ pager_swig_python_PYTHON = \ ## Entry rule for running SWIG -pager_swig.h pager_swig.py pager_swig.cc: pager_swig.i +pager_swig.h pager_swig.py pager_swig.cc: pager_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-qtgui/src/lib/Makefile.swig.gen b/gr-qtgui/src/lib/Makefile.swig.gen index f40f0d881..f4bf06df1 100644 --- a/gr-qtgui/src/lib/Makefile.swig.gen +++ b/gr-qtgui/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ qtgui_python_PYTHON = \ ## Entry rule for running SWIG -qtgui.h qtgui.py qtgui.cc: qtgui.i +qtgui.h qtgui.py qtgui.cc: qtgui.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-radio-astronomy/src/lib/Makefile.swig.gen b/gr-radio-astronomy/src/lib/Makefile.swig.gen index 26f2373f5..d4619b4f6 100644 --- a/gr-radio-astronomy/src/lib/Makefile.swig.gen +++ b/gr-radio-astronomy/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ ra_python_PYTHON = \ ## Entry rule for running SWIG -ra.h ra.py ra.cc: ra.i +ra.h ra.py ra.cc: ra.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-trellis/src/lib/Makefile.swig.gen b/gr-trellis/src/lib/Makefile.swig.gen index 1a9656b8f..edc7d6f72 100644 --- a/gr-trellis/src/lib/Makefile.swig.gen +++ b/gr-trellis/src/lib/Makefile.swig.gen @@ -107,11 +107,12 @@ trellis_python_PYTHON = \ ## Entry rule for running SWIG -trellis.h trellis.py trellis.cc: trellis.i +trellis.h trellis.py trellis.cc: trellis.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-usrp/src/Makefile.swig.gen b/gr-usrp/src/Makefile.swig.gen index 9884b3d4f..008d28b2e 100644 --- a/gr-usrp/src/Makefile.swig.gen +++ b/gr-usrp/src/Makefile.swig.gen @@ -107,11 +107,12 @@ usrp_swig_python_PYTHON = \ ## Entry rule for running SWIG -usrp_swig.h usrp_swig.py usrp_swig.cc: usrp_swig.i +usrp_swig.h usrp_swig.py usrp_swig.cc: usrp_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-usrp2/src/Makefile.swig.gen b/gr-usrp2/src/Makefile.swig.gen index 24d9f17c0..3d850cd90 100644 --- a/gr-usrp2/src/Makefile.swig.gen +++ b/gr-usrp2/src/Makefile.swig.gen @@ -107,11 +107,12 @@ usrp2_python_PYTHON = \ ## Entry rule for running SWIG -usrp2.h usrp2.py usrp2.cc: usrp2.i +usrp2.h usrp2.py usrp2.cc: usrp2.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/gr-video-sdl/src/Makefile.swig.gen b/gr-video-sdl/src/Makefile.swig.gen index a2728a4f3..9235a54da 100644 --- a/gr-video-sdl/src/Makefile.swig.gen +++ b/gr-video-sdl/src/Makefile.swig.gen @@ -107,11 +107,12 @@ video_sdl_python_PYTHON = \ ## Entry rule for running SWIG -video_sdl.h video_sdl.py video_sdl.cc: video_sdl.i +video_sdl.h video_sdl.py video_sdl.cc: video_sdl.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is diff --git a/usrp/host/swig/Makefile.swig.gen b/usrp/host/swig/Makefile.swig.gen index 00de3e423..55041892f 100644 --- a/usrp/host/swig/Makefile.swig.gen +++ b/usrp/host/swig/Makefile.swig.gen @@ -107,11 +107,12 @@ usrp_prims_python_PYTHON = \ ## Entry rule for running SWIG -usrp_prims.h usrp_prims.py usrp_prims.cc: usrp_prims.i +usrp_prims.h usrp_prims.py usrp_prims.cc: usrp_prims.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i ## This rule will get called only when MAKE decides that one of the ## targets needs to be created or re-created, because: ## -## * The .i file is newer than any or all of the generated files; +## * The .i file or the swig_doc.i are newer than any or all of the +## generated files; ## ## * Any or all of the .cc, .h, or .py files does not exist and is ## needed (in the case this file is not needed, the rule for it is -- cgit From 26e7851318dfc691fd4412823a392a15bd1c475e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Fri, 3 Dec 2010 21:25:47 -0700 Subject: Added a new example python script (a stripped down version of benchmark_loopback.py). Made minor change to blks2.demod_pkts. --- gnuradio-core/src/python/gnuradio/blks2impl/pkt.py | 3 +- gnuradio-examples/python/digital/simple.py | 64 ++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 gnuradio-examples/python/digital/simple.py diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py b/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py index 908437ef2..32109b84f 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py @@ -143,7 +143,8 @@ class demod_pkts(gr.hier_block2): self.framer_sink = gr.framer_sink_1(self._rcvd_pktq) self.connect(self, self._demodulator, self.correlator, self.framer_sink) - self._watcher = _queue_watcher_thread(self._rcvd_pktq, callback) + if callback is not None: + self._watcher = _queue_watcher_thread(self._rcvd_pktq, callback) class _queue_watcher_thread(_threading.Thread): diff --git a/gnuradio-examples/python/digital/simple.py b/gnuradio-examples/python/digital/simple.py new file mode 100644 index 000000000..6d340db36 --- /dev/null +++ b/gnuradio-examples/python/digital/simple.py @@ -0,0 +1,64 @@ + +from gnuradio import gr, blks2, packet_utils + +# Some constants +TX_AMPLITUDE = 0.25 +SAMPLE_RATE = 1e5 +# NOISE_VOLTAGE = 0.01 +NOISE_VOLTAGE = 0.01 +# FREQUENCY_OFFSET = 0 +FREQUENCY_OFFSET = 0.01 +TIMING_OFFSET = 1.0 +SAMPLES_PER_SYMBOL = 2 +GAIN = 1.0 +SW_DECIM = 1 +BAND_MIDPOINT = 1.0 +BAND_WIDTH = 0.5 + +# Modulation/Demodulation methods +modulator = blks2.dbpsk2_mod() +demodulator = blks2.dbpsk2_demod() + +#Transmission Blocks +packet_transmitter = blks2.mod_pkts(modulator, access_code=None, msgq_limit=4, + pad_for_usrp=True) +amp = gr.multiply_const_cc(TX_AMPLITUDE) +throttle = gr.throttle(gr.sizeof_gr_complex, SAMPLE_RATE) +# Channel +channel = gr.channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET) +# Receiver Blocks +chan_coeffs = gr.firdes.low_pass(GAIN, SW_DECIM * SAMPLES_PER_SYMBOL, + BAND_MIDPOINT, BAND_WIDTH, gr.firdes.WIN_HANN) +channel_filter = gr.fft_filter_ccc(SW_DECIM, chan_coeffs) +packet_receiver = blks2.demod_pkts(demodulator, access_code=None, callback=None, + threshold=-1) +# Put it all together and start it up (although nothing will be done +# until we send some packets). +tb = gr.top_block() +tb.connect(packet_transmitter, amp, throttle, channel, channel_filter, + packet_receiver) +tb.start() + +# The queue into which recieved packets are placed +pkq = packet_receiver._rcvd_pktq + +# The function to create a packet and place it in a queue to be sent. +sender = packet_transmitter.send_pkt + +# Some some packets (The second will not be recieved because it gets cut off +# before it can finish. I think this occurs during modulation.) +sender('hello there I wonder how long this needs to be before I start to see any errors.') +sender('world') +sender(eof=True) + +# Wait for all the packets to get sent and received. +tb.wait() + +# Check how many messages have been received and print them. +cnt = pkq.count() +print('There are %s messages' % cnt) +for a in range(0, cnt): + msg = pkq.delete_head() + ok, payload = packet_utils.unmake_packet(msg.to_string(), int(msg.arg1())) + print("Message %s is %s" % (a, payload)) + -- cgit From 4620927fdf7ddd70e8ddb63cf18b075740a099a5 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 5 Dec 2010 21:19:51 -0700 Subject: Fixed typos in comments ('samples per symbol' not 'samples per second'). --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 4e6ef5fc4..9a6cde9a2 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -84,8 +84,8 @@ class gr_fir_ccf; * the block constructor, we just ask for "gain," which is d_alpha while d_beta is * equal to (gain^2)/4. * - * The clock sync block needs to know the number of samples per second (sps), because it - * only returns a single point representing the sample. The sps can be any positive real + * The clock sync block needs to know the number of samples per symbol (sps), because it + * only returns a single point representing the symbol. The sps can be any positive real * number and does not need to be an integer. The filter taps must also be specified. The * taps are generated by first conceiving of the prototype filter that would be the signal's * matched filter. Then interpolate this by the number of filters in the filterbank. These @@ -115,7 +115,7 @@ class gr_pfb_clock_sync_ccf : public gr_block private: /*! * Build the polyphase filterbank timing synchronizer. - * \param sps (double) The number of samples per second in the incoming signal + * \param sps (double) The number of samples per symbol in the incoming signal * \param gain (float) The alpha gain of the control loop; beta = (gain^2)/4 by default. * \param taps (vector) The filter taps. * \param filter_size (uint) The number of filters in the filterbank (default = 32). -- cgit From 2863f40d5d0bca8713252bb3618f9844fccf673c Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 9 Dec 2010 15:12:14 -0700 Subject: Added support for modulation/demodulation of a generic constellation. Not yet robust enough. Inefficient QAM modulation/demodulation also added (via the generic implementation). --- gnuradio-core/src/lib/general/Makefile.am | 5 +- gnuradio-core/src/lib/general/general.i | 2 + .../lib/general/gr_constellation_receiver_cb.cc | 146 +++++++++ .../src/lib/general/gr_constellation_receiver_cb.h | 172 +++++++++++ .../src/lib/general/gr_constellation_receiver_cb.i | 54 ++++ .../src/python/gnuradio/blks2impl/Makefile.am | 1 + .../python/gnuradio/blks2impl/generic_mod_demod.py | 328 +++++++++++++++++++++ gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 293 ++++++++++++------ .../src/python/gnuradio/blks2impl/qam16.py | 208 ------------- .../src/python/gnuradio/blks2impl/qam256.py | 209 ------------- .../src/python/gnuradio/blks2impl/qam64.py | 208 ------------- .../src/python/gnuradio/blks2impl/qam8.py | 209 ------------- gnuradio-examples/python/digital/simple_qam.py | 64 ++++ 13 files changed, 979 insertions(+), 920 deletions(-) create mode 100644 gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc create mode 100644 gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h create mode 100644 gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py delete mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/qam16.py delete mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/qam256.py delete mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/qam64.py delete mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/qam8.py create mode 100644 gnuradio-examples/python/digital/simple_qam.py diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index 3d8a42805..daa3c446e 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -100,6 +100,7 @@ libgeneral_la_SOURCES = \ gr_math.cc \ gr_misc.cc \ gr_mpsk_receiver_cc.cc \ + gr_constellation_receiver_cb.cc \ gr_nlog10_ff.cc \ gr_nop.cc \ gr_null_sink.cc \ @@ -256,7 +257,7 @@ grinclude_HEADERS = \ gr_map_bb.h \ gr_math.h \ gr_misc.h \ - gr_mpsk_receiver_cc.h \ + gr_constellation_receiver_cb.h \ gr_nco.h \ gr_nlog10_ff.h \ gr_nop.h \ @@ -418,7 +419,7 @@ swiginclude_HEADERS = \ gr_lms_dfe_cc.i \ gr_lms_dfe_ff.i \ gr_map_bb.i \ - gr_mpsk_receiver_cc.i \ + gr_constellation_receiver_cb.i \ gr_nlog10_ff.i \ gr_nop.i \ gr_null_sink.i \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index 68cafce2e..f758211cc 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -190,6 +191,7 @@ %include "gr_fake_channel_coder_pp.i" %include "gr_throttle.i" %include "gr_mpsk_receiver_cc.i" +%include "gr_constellation_receiver_cb.i" %include "gr_stream_mux.i" %include "gr_stream_to_streams.i" %include "gr_streams_to_stream.i" diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc new file mode 100644 index 000000000..0a2309ac0 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -0,0 +1,146 @@ +/* -*- c++ -*- */ +/* + * Copyright 2005,2006,2007,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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +// For debugging +#include + + +#define M_TWOPI (2*M_PI) +#define VERBOSE_MM 0 // Used for debugging symbol timing loop +#define VERBOSE_COSTAS 0 // Used for debugging phase and frequency tracking + +// Public constructor + +gr_constellation_receiver_cb_sptr +gr_make_constellation_receiver_cb(gr_constellation constell, + float alpha, float beta, + float fmin, float fmax) +{ + return gnuradio::get_initial_sptr(new gr_constellation_receiver_cb (constell, + alpha, beta, + fmin, fmax)); +} + +gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation constellation, + float alpha, float beta, + float fmin, float fmax) + : gr_block ("constellation_receiver_cb", + gr_make_io_signature (1, 1, sizeof (gr_complex)), + gr_make_io_signature (1, 1, sizeof (unsigned char))), + d_constellation(constellation), + d_alpha(alpha), d_beta(beta), d_freq(0), d_max_freq(fmax), d_min_freq(fmin), d_phase(0), + d_current_const_point(0) +{} + +void +gr_constellation_receiver_cb::phase_error_tracking(float phase_error) +{ + + d_freq += d_beta*phase_error; // adjust frequency based on error + d_phase += d_freq + d_alpha*phase_error; // adjust phase based on error + + // Make sure we stay within +-2pi + while(d_phase > M_TWOPI) + d_phase -= M_TWOPI; + while(d_phase < -M_TWOPI) + d_phase += M_TWOPI; + + // Limit the frequency range + d_freq = gr_branchless_clip(d_freq, d_max_freq); + +#if VERBOSE_COSTAS + printf("cl: phase_error: %f phase: %f freq: %f sample: %f+j%f constellation: %f+j%f\n", + phase_error, d_phase, d_freq, sample.real(), sample.imag(), + d_constellation.constellation()[d_current_const_point].real(), d_constellation.constellation()[d_current_const_point].imag()); +#endif +} + +int +gr_constellation_receiver_cb::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + const gr_complex *in = (const gr_complex *) input_items[0]; + unsigned char *out = (unsigned char *) output_items[0]; + + int i=0, o=0; + + float phase_error; + unsigned int sym_value; + gr_complex sample; + + while((o < noutput_items) && (i < ninput_items[0])) { + sample = in[i]; + sym_value = d_constellation.decision_maker(sample); + //std::cout << "sym_value: " << sym_value << " sample: " << sample << std::endl; + phase_error = -arg(sample*conj(d_constellation.constellation()[sym_value])); + phase_error_tracking(phase_error); // corrects phase and frequency offsets + out[o++] = sym_value; + i++; + } + + #if 0 + printf("ninput_items: %d noutput_items: %d consuming: %d returning: %d\n", + ninput_items[0], noutput_items, i, o); + #endif + + consume_each(i); + return o; +} + +// Base Constellation Class + +gr_constellation::gr_constellation (std::vector constellation) { + d_constellation = constellation; +} + +// Chooses points base on shortest distance. +// Inefficient. +unsigned int gr_constellation::decision_maker(gr_complex sample) +{ + unsigned int table_size = constellation().size(); + unsigned int min_index = 0; + float min_euclid_dist; + float euclid_dist; + + min_euclid_dist = norm(sample - constellation()[0]); + min_index = 0; + for (unsigned int j = 1; j < table_size; j++){ + euclid_dist = norm(sample - constellation()[j]); + if (euclid_dist < min_euclid_dist){ + min_euclid_dist = euclid_dist; + min_index = j; + } + } + return min_index; +} diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h new file mode 100644 index 000000000..ba38bdad6 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h @@ -0,0 +1,172 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2007,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. + */ + +#ifndef INCLUDED_GR_CONSTELLATION_RECEIVER_CB_H +#define INCLUDED_GR_CONSTELLATION_RECEIVER_CB_H + +#include +#include +#include +#include + +class gr_constellation +{ + public: + + gr_constellation (std::vector constellation); + + //! Returns the set of points in this constellation. + std::vector constellation() { return d_constellation;} + + //! Returns the constellation point that matches best. + //! Also calculates the phase error. + unsigned int decision_maker (gr_complex sample); + + unsigned int bits_per_symbol () { + return floor(log(d_constellation.size())/log(2)); + } + + private: + + std::vector d_constellation; +}; + +class gri_mmse_fir_interpolator_cc; + +class gr_constellation_receiver_cb; +typedef boost::shared_ptr gr_constellation_receiver_cb_sptr; + +// public constructor +gr_constellation_receiver_cb_sptr +gr_make_constellation_receiver_cb (gr_constellation constellation, + float alpha, float beta, + float fmin, float fmax); + +/*! + * \brief This block takes care of receiving generic modulated signals through phase, frequency, and symbol + * synchronization. + * \ingroup sync_blk + * \ingroup demod_blk + * + * This block takes care of receiving generic modulated signals through phase, frequency, and symbol + * synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. + * + * The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming + * signal point compared to its nearest constellation point. The frequency and phase of the NCO are + * updated according to this error. + * + * The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: + * + * G. R. Danesfahani, T.G. Jeans, "Optimisation of modified Mueller and Muller + * algorithm," Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + * + * This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) + * every mu samples, then it finds the sampling error based on this and the past symbols and the decision + * made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK + * and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications + * to the M&M used here reduce self-noise. + * + */ + +class gr_constellation_receiver_cb : public gr_block +{ + public: + int general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + + // Member function related to the phase/frequency tracking portion of the receiver + //! (CL) Returns the value for alpha (the phase gain term) + float alpha() const { return d_alpha; } + + //! (CL) Returns the value of beta (the frequency gain term) + float beta() const { return d_beta; } + + //! (CL) Returns the current value of the frequency of the NCO in the Costas loop + float freq() const { return d_freq; } + + //! (CL) Returns the current value of the phase of the NCO in the Costal loop + float phase() const { return d_phase; } + + //! (CL) Sets the value for alpha (the phase gain term) + void set_alpha(float alpha) { d_alpha = alpha; } + + //! (CL) Setss the value of beta (the frequency gain term) + void set_beta(float beta) { d_beta = beta; } + + //! (CL) Sets the current value of the frequency of the NCO in the Costas loop + void set_freq(float freq) { d_freq = freq; } + + //! (CL) Setss the current value of the phase of the NCO in the Costal loop + void set_phase(float phase) { d_phase = phase; } + + +protected: + + /*! + * \brief Constructor to synchronize incoming M-PSK symbols + * + * \param constellation constellation of points for generic modulation + * \param alpha gain parameter to adjust the phase in the Costas loop (~0.01) + * \param beta gain parameter to adjust the frequency in the Costas loop (~alpha^2/4) + * \param fmin minimum normalized frequency value the loop can achieve + * \param fmax maximum normalized frequency value the loop can achieve + * + * The constructor also chooses which phase detector and decision maker to use in the work loop based on the + * value of M. + */ + gr_constellation_receiver_cb (gr_constellation constellation, + float alpha, float beta, + float fmin, float fmax); + + void phase_error_tracking(float phase_error); + + private: + unsigned int d_M; + + // Members related to carrier and phase tracking + float d_alpha; + float d_beta; + float d_freq, d_max_freq, d_min_freq; + float d_phase; + + gr_constellation d_constellation; + unsigned int d_current_const_point; + + //! delay line length. + static const unsigned int DLLEN = 8; + + //! delay line plus some length for overflow protection + gr_complex d_dl[2*DLLEN] __attribute__ ((aligned(8))); + + //! index to delay line + unsigned int d_dl_idx; + + friend gr_constellation_receiver_cb_sptr + gr_make_constellation_receiver_cb (gr_constellation constell, + float alpha, float beta, + float fmin, float fmax); +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i new file mode 100644 index 000000000..b48322f45 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i @@ -0,0 +1,54 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004 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. + */ + +GR_SWIG_BLOCK_MAGIC(gr,constellation_receiver_cb); + +%template(gr_complex_vector) std::vector; + +class gr_constellation +{ +public: + gr_constellation (std::vector constellation); + std::vector constellation(); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); +}; + +gr_constellation_receiver_cb_sptr gr_make_constellation_receiver_cb (gr_constellation constellation, + float alpha, float beta, + float fmin, float fmax); +class gr_constellation_receiver_cb : public gr_block +{ + private: + gr_constellation_receiver_cb (gr_contellation constellation, + float alpha, float beta, + float fmin, float fmax); +public: + float alpha() const { return d_alpha; } + float beta() const { return d_beta; } + float freq() const { return d_freq; } + float phase() const { return d_phase; } + void set_alpha(float alpha) { d_alpha = alpha; } + void set_beta(float beta) { d_beta = beta; } + void set_freq(float freq) { d_freq = freq; } + void set_phase(float phase) { d_phase = phase; } +}; diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index 7b24fb69d..377b61224 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -38,6 +38,7 @@ grblkspython_PYTHON = \ filterbank.py \ fm_demod.py \ fm_emph.py \ + generic_mod_demod.py \ generic_usrp.py \ gmsk.py \ cpm.py \ diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py new file mode 100644 index 000000000..8bc33d4dc --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -0,0 +1,328 @@ +# +# Copyright 2005,2006,2007,2009 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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential BPSK modulation and demodulation. +""" + +from gnuradio import gr, gru, modulation_utils +from math import pi, sqrt +import psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_verbose = False +_def_log = False + +# Frequency correction +_def_freq_alpha = 0.010 +# Symbol timing recovery +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 +_def_timing_max_dev = 1.5 +# Fine frequency / Phase correction +_def_costas_alpha = 0.1 + +# ///////////////////////////////////////////////////////////////////////////// +# Generic modulator +# ///////////////////////////////////////////////////////////////////////////// + +class generic_mod(gr.hier_block2): + + def __init__(self, constellation, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential generic modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param constellation: determines the modulation type + @type constellation: gnuradio.gr.gr_constellation + @param samples_per_symbol: samples per baud >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Log modulation data to files? + @type log: bool + """ + + gr.hier_block2.__init__(self, "generic_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._constellation = constellation + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + + if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) + + ntaps = 11 * self._samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + self.diffenc = gr.diff_encoder_bb(arity) + + self.chunks2symbols = gr.chunks_to_symbols_bc(self._constellation.constellation()) + + # pulse shaping filter + self.rrc_taps = gr.firdes.root_raised_cosine( + self._samples_per_symbol, # gain (samples_per_symbol since we're + # interpolating by samples_per_symbol) + self._samples_per_symbol, # sampling rate + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, + self.rrc_taps) + + # Connect + self.connect(self, self.bytes2chunks, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self): # static method that's also callable on an instance + return self._constellation.bits_per_symbol() + + def add_options(parser): + """ + Adds generic modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default]") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return {} + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "RRC roll-off factor: %.2f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + +# ///////////////////////////////////////////////////////////////////////////// +# Generic demodulator +# +# Differentially coherent detection of differentially encoded generically +# modulated signal. +# ///////////////////////////////////////////////////////////////////////////// + +class generic_demod(gr.hier_block2): + + def __init__(self, constellation, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + freq_alpha=_def_freq_alpha, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + costas_alpha=_def_costas_alpha, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential generic demodulation. + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param constellation: determines the modulation type + @type constellation: gnuradio.gr.gr_constellation + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param freq_alpha: loop filter gain for frequency recovery + @type freq_alpha: float + @param timing_alpha: loop alpha gain for timing recovery + @type timing_alpha: float + @param timing_max_dev: timing loop maximum rate deviations + @type timing_max_dev: float + @param costas_alpha: loop filter gain in costas loop + @type costas_alphas: float + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + gr.hier_block2.__init__(self, "generic_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + gr.io_signature(1, 1, gr.sizeof_char)) # Output signature + + self._constellation = constellation + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._costas_alpha = costas_alpha + self._freq_alpha = freq_alpha + self._freq_beta = 0.10*self._freq_alpha + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_beta + self._timing_max_dev=timing_max_dev + + if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + + # Frequency correction + self.freq_recov = gr.fll_band_edge_cc(self._samples_per_symbol, self._excess_bw, + 11*int(self._samples_per_symbol), + self._freq_alpha, self._freq_beta) + + # symbol timing recovery with RRC data filter + nfilts = 32 + ntaps = 11 * int(self._samples_per_symbol*nfilts) + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, + 1.0/float(self._samples_per_symbol), + self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha + fmin = -0.25 + fmax = 0.25 + + self.receiver = gr.constellation_receiver_cb( + self._constellation, + self._costas_alpha, self._costas_beta, + fmin, fmax) + + # Do differential decoding based on phase change of symbols + self.diffdec = gr.diff_decoder_bb(arity) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect and Initialize base class + self.connect(self, self.agc, self.freq_recov, self.time_recov, self.receiver, + self.diffdec, self.unpack, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self): # staticmethod that's also callable on an instance + return self._constellation.bits_per_symbol() + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "RRC roll-off factor: %.2f" % self._excess_bw + print "Costas Loop alpha: %.2e" % self._costas_alpha + print "Costas Loop beta: %.2e" % self._costas_beta + print "M&M mu: %.2f" % self._mm_mu + print "M&M mu gain: %.2e" % self._mm_gain_mu + print "M&M omega: %.2f" % self._mm_omega + print "M&M omega gain: %.2e" % self._mm_gain_omega + print "M&M omega limit: %.2f" % self._mm_omega_relative_limit + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.pre_scaler, + gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) + self.connect(self.receiver, + gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds generic demodulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--costas-alpha", type="float", default=None, + help="set Costas loop alpha value [default=%default] (PSK)") + parser.add_option("", "--gain-mu", type="float", default=_def_gain_mu, + help="set M&M symbol sync loop gain mu value [default=%default] (GMSK/PSK)") + parser.add_option("", "--mu", type="float", default=_def_mu, + help="set M&M symbol sync loop mu value [default=%default] (GMSK/PSK)") + parser.add_option("", "--omega-relative-limit", type="float", default=_def_omega_relative_limit, + help="M&M clock recovery omega relative limit [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return {} + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) +# +# Add these to the mod/demod registry +# +#modulation_utils.add_type_1_mod('dbpsk', dbpsk_mod) +#modulation_utils.add_type_1_demod('dbpsk', dbpsk_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 22b1e1dab..55081bcc0 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -19,95 +19,220 @@ # Boston, MA 02110-1301, USA. # -from math import pi, sqrt -import math +""" +QAM modulation and demodulation. +""" -# These constellations are generated for Gray coding when symbos [1, ..., m] are used -# Mapping to Gray coding is therefore unnecessary +from math import pi, sqrt, log +from itertools import islice + +from gnuradio import gr, gru, modulation_utils +from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod + + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_verbose = False +_def_log = False + +# Frequency correction +_def_freq_alpha = 0.010 +# Symbol timing recovery +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 +_def_timing_max_dev = 1.5 +# Fine frequency / Phase correction +_def_costas_alpha = 0.1 + +def is_power_of_four(x): + v = log(x)/log(4) + return int(v) == v + +def get_bit(x, n): + """ Get the n'th bit of integer x (from little end).""" + return (x&(0x01 << n)) >> n + +def get_bits(x, n, k): + """ Get the k bits of integer x starting at bit n(from little end).""" + # Remove the n smallest bits + v = x >> n + # Remove all bits bigger than n+k-1 + return v % pow(2, k) + +def gray_codes(): + """ Generates gray codes.""" + gcs = [0, 1] + yield 0 + yield 1 + # The last power of two passed through. + lp2 = 2 + # The next power of two that will be passed through. + np2 = 4 + i = 2 + while True: + if i == lp2: + # if i is a power of two then gray number is of form 1100000... + result = i + i/2 + else: + # if not we take advantage of the symmetry of all but the last bit + # around a power of two. + result = gcs[2*lp2-1-i] + lp2 + gcs.append(result) + yield result + i += 1 + if i == np2: + lp2 = i + np2 = i*2 def make_constellation(m): - # number of bits/symbol (log2(M)) - k = int(math.log10(m) / math.log10(2.0)) + """ + Create a constellation with m possible symbols where m must be + a power of 4. + + Points are laid out in a square grid. - coeff = 1 + """ + sqrtm = pow(m, 0.5) + if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): + raise ValueError("m must be a power of 4 integer.") + # Each symbol holds k bits. + k = int(log(m) / log(2.0)) + # First create a constellation for one quadrant containing m/4 points. + # The quadrant has 'side' points along each side of a quadrant. + side = int(sqrtm/2) + # Number rows and columns using gray codes. + gcs = list(islice(gray_codes(), side)) + # Get inverse gray codes. + i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + # The distance between points is found. + step = 1/(side-0.5) + + gc_to_x = [(i_gcs[gc]+0.5)*step for gc in range(0, side)] + + # Takes the (x, y) location of the point with the quadrant along + # with the quadrant number. (x, y) are integers referring to which + # point within the quadrant it is. + # A complex number representing this location of this point is returned. + def get_c(gc_x, gc_y, quad): + if quad == 0: + return complex(gc_to_x[gc_x], gc_to_x[gc_y]) + if quad == 1: + return complex(-gc_to_x[gc_y], gc_to_x[gc_x]) + if quad == 2: + return complex(-gc_to_x[gc_x], -gc_to_x[gc_y]) + if quad == 3: + return complex(gc_to_x[gc_y], -gc_to_x[gc_x]) + raise StandardError("Impossible!") + + # First two bits determine quadrant. + # Next (k-2)/2 bits determine x position. + # Following (k-2)/2 bits determine y position. + # How x and y relate to real and imag depends on quadrant (see get_c function). const_map = [] for i in range(m): - a = (i&(0x01 << k-1)) >> k-1 - b = (i&(0x01 << k-2)) >> k-2 - bits_i = [((i&(0x01 << k-j-1)) >> k-j-1) for j in range(2, k, 2)] - bits_q = [((i&(0x01 << k-j-1)) >> k-j-1) for j in range(3, k, 2)] - - ss = 0 - ll = len(bits_i) - for ii in range(ll): - rr = 0 - for jj in range(ll-ii): - rr = abs(bits_i[jj] - rr) - ss += rr*pow(2.0, ii+1) - re = (2*a-1)*(ss+1) - - ss = 0 - ll = len(bits_q) - for ii in range(ll): - rr = 0 - for jj in range(ll-ii): - rr = abs(bits_q[jj] - rr) - ss += rr*pow(2.0, ii+1) - im = (2*b-1)*(ss+1) - - a = max(re, im) - if a > coeff: - coeff = a - const_map.append(complex(re, im)) - - norm_map = [complex(i.real/coeff, i.imag/coeff) for i in const_map] - return norm_map + y = get_bits(i, 0, (k-2)/2) + x = get_bits(i, (k-2)/2, (k-2)/2) + quad = get_bits(i, k-2, 2) + const_map.append(get_c(x, y, quad)) + + return const_map -# Common definition of constellations for Tx and Rx -constellation = { - 4 : make_constellation(4), # QAM4 (QPSK) - 8 : make_constellation(8), # QAM8 - 16: make_constellation(16), # QAM16 - 64: make_constellation(64), # QAM64 - 256: make_constellation(256) # QAM256 - } - -# ----------------------- -# Do Gray code -# ----------------------- -# binary to gray coding -binary_to_gray = { - 4 : range(4), - 8 : range(8), - 16: range(16), - 64: range(64), - 256: range(256) - } - -# gray to binary -gray_to_binary = { - 4 : range(4), - 8 : range(8), - 16: range(16), - 64: range(64), - 256: range(256) - } - -# ----------------------- -# Don't Gray code -# ----------------------- -# identity mapping -binary_to_ungray = { - 4 : range(4), - 8 : range(8), - 16: range(16), - 64: range(64) - } + +# ///////////////////////////////////////////////////////////////////////////// +# QAM modulator +# ///////////////////////////////////////////////////////////////////////////// + +class qam_mod(generic_mod): + + def __init__(self, m, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + verbose=_def_verbose, + log=_def_log): + + """ + Hierarchical block for RRC-filtered QAM modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param m: Number of constellation points. Must be a power of four. + @type m: integer + @param samples_per_symbol: samples per baud >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Log modulation data to files? + @type log: bool + """ + + if not isinstance(m, int) or not is_power_of_four(m): + raise ValueError("m must be a power of two integer greater than or equal to 4.") + + points = make_constellation(m) + constellation = gr.gr_constellation(points) + + super(qam_mod, self).__init__(constellation, samples_per_symbol, + excess_bw, verbose, log) + + +# ///////////////////////////////////////////////////////////////////////////// +# QAM demodulator +# +# ///////////////////////////////////////////////////////////////////////////// + +class qam_demod(generic_demod): + + def __init__(self, m, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + freq_alpha=_def_freq_alpha, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + costas_alpha=_def_costas_alpha, + verbose=_def_verbose, + log=_def_log): + + """ + Hierarchical block for RRC-filtered QAM modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param m: Number of constellation points. Must be a power of four. + @type m: integer + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param freq_alpha: loop filter gain for frequency recovery + @type freq_alpha: float + @param timing_alpha: loop alpha gain for timing recovery + @type timing_alpha: float + @param timing_max_dev: timing loop maximum rate deviations + @type timing_max_dev: float + @param costas_alpha: loop filter gain in costas loop + @type costas_alphas: float + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + points = make_constellation(m) + constellation = gr.gr_constellation(points) + + super(qam_demod, self).__init__(constellation, samples_per_symbol, + excess_bw, freq_alpha, timing_alpha, + timing_max_dev, costas_alpha, verbose, + log) -# identity mapping -ungray_to_binary = { - 4 : range(4), - 8 : range(8), - 16: range(16), - 64: range(64) - } +# +# Add these to the mod/demod registry +# +# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK +#modulation_utils.add_type_1_mod('qam16', qam16_mod) +#modulation_utils.add_type_1_demod('qam16', qam16_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam16.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam16.py deleted file mode 100644 index 0bdb9c6fb..000000000 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam16.py +++ /dev/null @@ -1,208 +0,0 @@ -# -# Copyright 2005,2006,2007 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. -# - -# See gnuradio-examples/python/digital for examples - -""" -QAM16 modulation and demodulation. -""" - -from gnuradio import gr, gru, modulation_utils -from math import pi, sqrt -import qam -import cmath -from pprint import pprint - -# default values (used in __init__ and add_options) -_def_samples_per_symbol = 2 -_def_excess_bw = 0.35 -_def_gray_code = True -_def_verbose = False -_def_log = False - -_def_costas_alpha = None -_def_gain_mu = 0.03 -_def_mu = 0.05 -_def_omega_relative_limit = 0.005 - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM16 modulator -# ///////////////////////////////////////////////////////////////////////////// - -class qam16_mod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - """ - Hierarchical block for RRC-filtered QPSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - @param samples_per_symbol: samples per symbol >= 2 - @type samples_per_symbol: integer - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param gray_code: Tell modulator to Gray code the bits - @type gray_code: bool - @param verbose: Print information about modulator? - @type verbose: bool - @param debug: Print modualtion data to files? - @type debug: bool - """ - - gr.hier_block2.__init__(self, "qam16_mod", - gr.io_signature(1, 1, gr.sizeof_char), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature - - self._samples_per_symbol = samples_per_symbol - self._excess_bw = excess_bw - self._gray_code = gray_code - - if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: - raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) - - ntaps = 11 * samples_per_symbol - - arity = pow(2, self.bits_per_symbol()) - - # turn bytes into k-bit vectors - self.bytes2chunks = \ - gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - - if self._gray_code: - self.symbol_mapper = gr.map_bb(qam.binary_to_gray[arity]) - else: - self.symbol_mapper = gr.map_bb(qam.binary_to_ungray[arity]) - - self.diffenc = gr.diff_encoder_bb(arity) - - rot = 1.0 - print "constellation with %d arity" % arity - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) - - # pulse shaping filter - self.rrc_taps = gr.firdes.root_raised_cosine( - self._samples_per_symbol, # gain (sps since we're interpolating by sps) - self._samples_per_symbol, # sampling rate - 1.0, # symbol rate - self._excess_bw, # excess bandwidth (roll-off factor) - ntaps) - - self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - - if verbose: - self._print_verbage() - - if log: - self._setup_logging() - - # Connect - self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, - self.chunks2symbols, self.rrc_filter, self) - - def samples_per_symbol(self): - return self._samples_per_symbol - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 4 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - - def _print_verbage(self): - print "bits per symbol = %d" % self.bits_per_symbol() - print "Gray code = %s" % self._gray_code - print "RRS roll-off factor = %f" % self._excess_bw - - def _setup_logging(self): - print "Modulation logging turned on." - self.connect(self.bytes2chunks, - gr.file_sink(gr.sizeof_char, "bytes2chunks.dat")) - self.connect(self.symbol_mapper, - gr.file_sink(gr.sizeof_char, "graycoder.dat")) - self.connect(self.diffenc, - gr.file_sink(gr.sizeof_char, "diffenc.dat")) - self.connect(self.chunks2symbols, - gr.file_sink(gr.sizeof_gr_complex, "chunks2symbols.dat")) - self.connect(self.rrc_filter, - gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat")) - - def add_options(parser): - """ - Adds QAM modulation-specific options to the standard parser - """ - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default] (PSK)") - parser.add_option("", "--no-gray-code", dest="gray_code", - action="store_false", default=_def_gray_code, - help="disable gray coding on modulated bits (PSK)") - add_options=staticmethod(add_options) - - - def extract_kwargs_from_options(options): - """ - Given command line options, create dictionary suitable for passing to __init__ - """ - return modulation_utils.extract_kwargs_from_options(qam16_mod.__init__, - ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM16 demodulator -# -# ///////////////////////////////////////////////////////////////////////////// - -class qam16_demod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - costas_alpha=_def_costas_alpha, - gain_mu=_def_gain_mu, - mu=_def_mu, - omega_relative_limit=_def_omega_relative_limit, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - gr.hier_block2.__init__(self, "qam16_demod", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_char)) # Output signature - # do this - pass - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 4 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - -# -# Add these to the mod/demod registry -# -# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK -#modulation_utils.add_type_1_mod('qam16', qam16_mod) -#modulation_utils.add_type_1_demod('qam16', qam16_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam256.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam256.py deleted file mode 100644 index fc455f17c..000000000 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam256.py +++ /dev/null @@ -1,209 +0,0 @@ -# -# Copyright 2005,2006,2007 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. -# - -# See gnuradio-examples/python/digital for examples - -""" -QAM256 modulation and demodulation. -""" - -from gnuradio import gr, gru, modulation_utils -from math import pi, sqrt -import qam -import cmath -from pprint import pprint - -# default values (used in __init__ and add_options) -_def_samples_per_symbol = 2 -_def_excess_bw = 0.35 -_def_gray_code = True -_def_verbose = False -_def_log = False - -_def_costas_alpha = None -_def_gain_mu = 0.03 -_def_mu = 0.05 -_def_omega_relative_limit = 0.005 - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM256 modulator -# ///////////////////////////////////////////////////////////////////////////// - -class qam256_mod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - """ - Hierarchical block for RRC-filtered QPSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - @param samples_per_symbol: samples per symbol >= 2 - @type samples_per_symbol: integer - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param gray_code: Tell modulator to Gray code the bits - @type gray_code: bool - @param verbose: Print information about modulator? - @type verbose: bool - @param debug: Print modualtion data to files? - @type debug: bool - """ - - gr.hier_block2.__init__(self, "qam256_mod", - gr.io_signature(1, 1, gr.sizeof_char), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature - - self._samples_per_symbol = samples_per_symbol - self._excess_bw = excess_bw - self._gray_code = gray_code - - if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: - raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) - - ntaps = 11 * samples_per_symbol - - arity = pow(2, self.bits_per_symbol()) - - # turn bytes into k-bit vectors - self.bytes2chunks = \ - gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - - if self._gray_code: - self.symbol_mapper = gr.map_bb(qam.binary_to_gray[arity]) - else: - self.symbol_mapper = gr.map_bb(qam.binary_to_ungray[arity]) - - self.diffenc = gr.diff_encoder_bb(arity) - - rot = 1.0 - print "constellation with %d arity" % arity - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) - - # pulse shaping filter - self.rrc_taps = gr.firdes.root_raised_cosine( - self._samples_per_symbol, # gain (sps since we're interpolating by sps) - self._samples_per_symbol, # sampling rate - 1.0, # symbol rate - self._excess_bw, # excess bandwidth (roll-off factor) - ntaps) - - self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - - if verbose: - self._print_verbage() - - if log: - self._setup_logging() - - # Connect - self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, - self.chunks2symbols, self.rrc_filter, self) - - def samples_per_symbol(self): - return self._samples_per_symbol - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 8 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - - def _print_verbage(self): - print "bits per symbol = %d" % self.bits_per_symbol() - print "Gray code = %s" % self._gray_code - print "RRS roll-off factor = %f" % self._excess_bw - - def _setup_logging(self): - print "Modulation logging turned on." - self.connect(self.bytes2chunks, - gr.file_sink(gr.sizeof_char, "bytes2chunks.dat")) - self.connect(self.symbol_mapper, - gr.file_sink(gr.sizeof_char, "graycoder.dat")) - self.connect(self.diffenc, - gr.file_sink(gr.sizeof_char, "diffenc.dat")) - self.connect(self.chunks2symbols, - gr.file_sink(gr.sizeof_gr_complex, "chunks2symbols.dat")) - self.connect(self.rrc_filter, - gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat")) - - def add_options(parser): - """ - Adds QAM modulation-specific options to the standard parser - """ - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default] (PSK)") - parser.add_option("", "--no-gray-code", dest="gray_code", - action="store_false", default=_def_gray_code, - help="disable gray coding on modulated bits (PSK)") - add_options=staticmethod(add_options) - - - def extract_kwargs_from_options(options): - """ - Given command line options, create dictionary suitable for passing to __init__ - """ - return modulation_utils.extract_kwargs_from_options(qam256_mod.__init__, - ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM256 demodulator -# -# ///////////////////////////////////////////////////////////////////////////// - -class qam256_demod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - costas_alpha=_def_costas_alpha, - gain_mu=_def_gain_mu, - mu=_def_mu, - omega_relative_limit=_def_omega_relative_limit, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - gr.hier_block2.__init__(self, "qam256_demod", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_char)) # Output signature - - # do this - pass - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 8 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - -# -# Add these to the mod/demod registry -# -# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK -#modulation_utils.add_type_1_mod('qam256', qam256_mod) -#modulation_utils.add_type_1_demod('qam256', qam256_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam64.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam64.py deleted file mode 100644 index 5509f3745..000000000 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam64.py +++ /dev/null @@ -1,208 +0,0 @@ -# -# Copyright 2005,2006,2007 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. -# - -# See gnuradio-examples/python/digital for examples - -""" -differential QPSK modulation and demodulation. -""" - -from gnuradio import gr, gru, modulation_utils -from math import pi, sqrt -import qam -import cmath -from pprint import pprint - -# default values (used in __init__ and add_options) -_def_samples_per_symbol = 2 -_def_excess_bw = 0.35 -_def_gray_code = True -_def_verbose = False -_def_log = False - -_def_costas_alpha = None -_def_gain_mu = 0.03 -_def_mu = 0.05 -_def_omega_relative_limit = 0.005 - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM64 modulator -# ///////////////////////////////////////////////////////////////////////////// - -class qam64_mod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - """ - Hierarchical block for RRC-filtered QPSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - @param samples_per_symbol: samples per symbol >= 2 - @type samples_per_symbol: integer - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param gray_code: Tell modulator to Gray code the bits - @type gray_code: bool - @param verbose: Print information about modulator? - @type verbose: bool - @param debug: Print modualtion data to files? - @type debug: bool - """ - - gr.hier_block2.__init__(self, "qam64_mod", - gr.io_signature(1, 1, gr.sizeof_char), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature - self._samples_per_symbol = samples_per_symbol - self._excess_bw = excess_bw - self._gray_code = gray_code - - if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: - raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) - - ntaps = 11 * samples_per_symbol - - arity = pow(2, self.bits_per_symbol()) - - # turn bytes into k-bit vectors - self.bytes2chunks = \ - gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - - if self._gray_code: - self.symbol_mapper = gr.map_bb(qam.binary_to_gray[arity]) - else: - self.symbol_mapper = gr.map_bb(qam.binary_to_ungray[arity]) - - self.diffenc = gr.diff_encoder_bb(arity) - - rot = 1.0 - print "constellation with %d arity" % arity - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) - - # pulse shaping filter - self.rrc_taps = gr.firdes.root_raised_cosine( - self._samples_per_symbol, # gain (sps since we're interpolating by sps) - self._samples_per_symbol, # sampling rate - 1.0, # symbol rate - self._excess_bw, # excess bandwidth (roll-off factor) - ntaps) - - self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - - if verbose: - self._print_verbage() - - if log: - self._setup_logging() - - # Connect - self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, - self.chunks2symbols, self.rrc_filter, self) - - def samples_per_symbol(self): - return self._samples_per_symbol - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 6 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - - def _print_verbage(self): - print "bits per symbol = %d" % self.bits_per_symbol() - print "Gray code = %s" % self._gray_code - print "RRS roll-off factor = %f" % self._excess_bw - - def _setup_logging(self): - print "Modulation logging turned on." - self.connect(self.bytes2chunks, - gr.file_sink(gr.sizeof_char, "bytes2chunks.dat")) - self.connect(self.symbol_mapper, - gr.file_sink(gr.sizeof_char, "graycoder.dat")) - self.connect(self.diffenc, - gr.file_sink(gr.sizeof_char, "diffenc.dat")) - self.connect(self.chunks2symbols, - gr.file_sink(gr.sizeof_gr_complex, "chunks2symbols.dat")) - self.connect(self.rrc_filter, - gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat")) - - def add_options(parser): - """ - Adds QAM modulation-specific options to the standard parser - """ - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default] (PSK)") - parser.add_option("", "--no-gray-code", dest="gray_code", - action="store_false", default=_def_gray_code, - help="disable gray coding on modulated bits (PSK)") - add_options=staticmethod(add_options) - - - def extract_kwargs_from_options(options): - """ - Given command line options, create dictionary suitable for passing to __init__ - """ - return modulation_utils.extract_kwargs_from_options(qam64_mod.__init__, - ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM16 demodulator -# -# ///////////////////////////////////////////////////////////////////////////// - -class qam64_demod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - costas_alpha=_def_costas_alpha, - gain_mu=_def_gain_mu, - mu=_def_mu, - omega_relative_limit=_def_omega_relative_limit, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - gr.hier_block2.__init__(self, "qam64_demod", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_char)) # Output signature - - # do this - pass - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 6 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - -# -# Add these to the mod/demod registry -# -# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK -#modulation_utils.add_type_1_mod('qam64', qam64_mod) -#modulation_utils.add_type_1_demod('qam16', qam16_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam8.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam8.py deleted file mode 100644 index 6a7b35597..000000000 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam8.py +++ /dev/null @@ -1,209 +0,0 @@ -# -# Copyright 2005,2006,2007 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. -# - -# See gnuradio-examples/python/digital for examples - -""" -QAM8 modulation and demodulation. -""" - -from gnuradio import gr, gru, modulation_utils -from math import pi, sqrt -import qam -import cmath -from pprint import pprint - -# default values (used in __init__ and add_options) -_def_samples_per_symbol = 2 -_def_excess_bw = 0.35 -_def_gray_code = True -_def_verbose = False -_def_log = False - -_def_costas_alpha = None -_def_gain_mu = 0.03 -_def_mu = 0.05 -_def_omega_relative_limit = 0.005 - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM8 modulator -# ///////////////////////////////////////////////////////////////////////////// - -class qam8_mod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - """ - Hierarchical block for RRC-filtered QPSK modulation. - - The input is a byte stream (unsigned char) and the - output is the complex modulated signal at baseband. - - @param samples_per_symbol: samples per symbol >= 2 - @type samples_per_symbol: integer - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param gray_code: Tell modulator to Gray code the bits - @type gray_code: bool - @param verbose: Print information about modulator? - @type verbose: bool - @param debug: Print modualtion data to files? - @type debug: bool - """ - - gr.hier_block2.__init__(self, "qam8_mod", - gr.io_signature(1, 1, gr.sizeof_char), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature - - self._samples_per_symbol = samples_per_symbol - self._excess_bw = excess_bw - self._gray_code = gray_code - - if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: - raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) - - ntaps = 11 * samples_per_symbol - - arity = pow(2, self.bits_per_symbol()) - - # turn bytes into k-bit vectors - self.bytes2chunks = \ - gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - - if self._gray_code: - self.symbol_mapper = gr.map_bb(qam.binary_to_gray[arity]) - else: - self.symbol_mapper = gr.map_bb(qam.binary_to_ungray[arity]) - - self.diffenc = gr.diff_encoder_bb(arity) - - rot = 1.0 - print "constellation with %d arity" % arity - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) - - # pulse shaping filter - self.rrc_taps = gr.firdes.root_raised_cosine( - self._samples_per_symbol, # gain (sps since we're interpolating by sps) - self._samples_per_symbol, # sampling rate - 1.0, # symbol rate - self._excess_bw, # excess bandwidth (roll-off factor) - ntaps) - - self.rrc_filter = gr.interp_fir_filter_ccf(self._samples_per_symbol, self.rrc_taps) - - if verbose: - self._print_verbage() - - if log: - self._setup_logging() - - # Connect - self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, - self.chunks2symbols, self.rrc_filter, self) - - def samples_per_symbol(self): - return self._samples_per_symbol - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 3 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - - def _print_verbage(self): - print "bits per symbol = %d" % self.bits_per_symbol() - print "Gray code = %s" % self._gray_code - print "RRS roll-off factor = %f" % self._excess_bw - - def _setup_logging(self): - print "Modulation logging turned on." - self.connect(self.bytes2chunks, - gr.file_sink(gr.sizeof_char, "bytes2chunks.dat")) - self.connect(self.symbol_mapper, - gr.file_sink(gr.sizeof_char, "graycoder.dat")) - self.connect(self.diffenc, - gr.file_sink(gr.sizeof_char, "diffenc.dat")) - self.connect(self.chunks2symbols, - gr.file_sink(gr.sizeof_gr_complex, "chunks2symbols.dat")) - self.connect(self.rrc_filter, - gr.file_sink(gr.sizeof_gr_complex, "rrc_filter.dat")) - - def add_options(parser): - """ - Adds QAM modulation-specific options to the standard parser - """ - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default] (PSK)") - parser.add_option("", "--no-gray-code", dest="gray_code", - action="store_false", default=_def_gray_code, - help="disable gray coding on modulated bits (PSK)") - add_options=staticmethod(add_options) - - - def extract_kwargs_from_options(options): - """ - Given command line options, create dictionary suitable for passing to __init__ - """ - return modulation_utils.extract_kwargs_from_options(qam8_mod.__init__, - ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) - - -# ///////////////////////////////////////////////////////////////////////////// -# QAM8 demodulator -# -# ///////////////////////////////////////////////////////////////////////////// - -class qam8_demod(gr.hier_block2): - - def __init__(self, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - costas_alpha=_def_costas_alpha, - gain_mu=_def_gain_mu, - mu=_def_mu, - omega_relative_limit=_def_omega_relative_limit, - gray_code=_def_gray_code, - verbose=_def_verbose, - log=_def_log): - - gr.hier_block2.__init__(self, "qam8_demod", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(1, 1, gr.sizeof_char)) # Output signature - - # do this - pass - - def bits_per_symbol(self=None): # staticmethod that's also callable on an instance - return 3 - bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM - -# -# Add these to the mod/demod registry -# -# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK -modulation_utils.add_type_1_mod('qam8', qam8_mod) -#modulation_utils.add_type_1_demod('qam8', qam8_demod) diff --git a/gnuradio-examples/python/digital/simple_qam.py b/gnuradio-examples/python/digital/simple_qam.py new file mode 100644 index 000000000..dee57baeb --- /dev/null +++ b/gnuradio-examples/python/digital/simple_qam.py @@ -0,0 +1,64 @@ + +from gnuradio import gr, blks2, packet_utils + +# Some constants +NOISE_VOLTAGE = 0 +FREQUENCY_OFFSET = 0 +TIMING_OFFSET = 1.0 +SAMPLES_PER_SYMBOL = 2 +GAIN = 1.0 +SW_DECIM = 1 +BAND_MIDPOINT = 1.0 +BAND_WIDTH = 0.5 + +# Modulation/Demodulation methods +modulator = blks2.qam_mod(4, SAMPLES_PER_SYMBOL) +demodulator = blks2.qam_demod(4, SAMPLES_PER_SYMBOL) + +#Transmission Blocks +packet_transmitter = blks2.mod_pkts(modulator, access_code=None, msgq_limit=4, + pad_for_usrp=True) +# Channel +channel = gr.channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET) +# Receiver Blocks +chan_coeffs = gr.firdes.low_pass(GAIN, SW_DECIM * SAMPLES_PER_SYMBOL, + BAND_MIDPOINT, BAND_WIDTH, gr.firdes.WIN_HANN) +channel_filter = gr.fft_filter_ccc(SW_DECIM, chan_coeffs) +packet_receiver = blks2.demod_pkts(demodulator, access_code=None, callback=None, + threshold=-1) +# Put it all together and start it up (although nothing will be done +# until we send some packets). +tb = gr.top_block() +tb.connect(packet_transmitter, channel, channel_filter, + packet_receiver) +tb.start() + +# The queue into which recieved packets are placed +pkq = packet_receiver._rcvd_pktq + +# The function to create a packet and place it in a queue to be sent. +sender = packet_transmitter.send_pkt + +# Some some packets (The second will not be recieved because it gets cut off +# before it can finish. I think this occurs during modulation.) +sender('hello1') +sender('hello2') +sender('hello3') +sender('hello4') +sender('hello5') +sender('hello6') +sender('hello7') +sender('world') +sender(eof=True) + +# Wait for all the packets to get sent and received. +tb.wait() + +# Check how many messages have been received and print them. +cnt = pkq.count() +print('There are %s messages' % cnt) +for a in range(0, cnt): + msg = pkq.delete_head() + ok, payload = packet_utils.unmake_packet(msg.to_string(), int(msg.arg1())) + print("Message %s is %s" % (a, payload)) + -- cgit From 31c8002c506d8452915163d9a57a00746e7dfc5b Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 9 Dec 2010 15:16:29 -0700 Subject: Fixed Makefile so that generation of python docstrings works. Still not well done. --- Makefile.swig | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Makefile.swig b/Makefile.swig index f4ef3de89..ef1b2126d 100644 --- a/Makefile.swig +++ b/Makefile.swig @@ -79,12 +79,9 @@ $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i: $(top_srcdir)/docs/doxygen/ ## Make sure the doxygen docs are generated $(top_srcdir)/docs/doxygen/html/index.html: - docs_prep - @DOXYGEN@ - -docs_prep: - $(MKDIR_P) html - $(MKDIR_P) xml + $(MKDIR_P) $(top_srcdir)/docs/doxygen/html + $(MKDIR_P) $(top_srcdir)/docs/doxygen/xml + cd $(top_srcdir)/docs/doxygen; @DOXYGEN@ ## Create $(srcdir)/Makefile.swig.gen, containing all of the rules ## for running SWIG to generate or re-generate outputs. SWIG file -- cgit From 704825a27f69f1f3b5cd24e413d4a10a291167e7 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 9 Dec 2010 21:33:03 -0700 Subject: Fixing Makefile.am in blks2impl for recent changes. --- gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am | 4 ---- 1 file changed, 4 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index 377b61224..45d0c628c 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -58,10 +58,6 @@ grblkspython_PYTHON = \ pkt.py \ psk.py \ qam.py \ - qam8.py \ - qam16.py \ - qam64.py \ - qam256.py \ rational_resampler.py \ standard_squelch.py \ stream_to_vector_decimator.py \ -- cgit From ee21aaed629cfe9cec2e561c0e3d10374ec80e29 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Fri, 10 Dec 2010 23:42:13 -0700 Subject: Fixing generic demodulation. --- .../lib/general/gr_constellation_receiver_cb.cc | 32 ++++++-- .../python/gnuradio/blks2impl/generic_mod_demod.py | 94 +++++++++++++--------- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 49 +++++++---- gnuradio-examples/python/digital/simple_qam.py | 20 ++++- 4 files changed, 131 insertions(+), 64 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc index 0a2309ac0..93af6d078 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -50,12 +50,14 @@ gr_make_constellation_receiver_cb(gr_constellation constell, fmin, fmax)); } +static int ios[] = {sizeof(char), sizeof(float), sizeof(float), sizeof(float)}; +static std::vector iosig(ios, ios+sizeof(ios)/sizeof(int)); gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation constellation, float alpha, float beta, float fmin, float fmax) : gr_block ("constellation_receiver_cb", gr_make_io_signature (1, 1, sizeof (gr_complex)), - gr_make_io_signature (1, 1, sizeof (unsigned char))), + gr_make_io_signaturev (1, 4, iosig)), d_constellation(constellation), d_alpha(alpha), d_beta(beta), d_freq(0), d_max_freq(fmax), d_min_freq(fmin), d_phase(0), d_current_const_point(0) @@ -93,29 +95,43 @@ gr_constellation_receiver_cb::general_work (int noutput_items, const gr_complex *in = (const gr_complex *) input_items[0]; unsigned char *out = (unsigned char *) output_items[0]; - int i=0, o=0; + int i=0; float phase_error; unsigned int sym_value; - gr_complex sample; + gr_complex sample, nco; - while((o < noutput_items) && (i < ninput_items[0])) { + float *out_err = 0, *out_phase = 0, *out_freq = 0; + if(output_items.size() == 4) { + out_err = (float *) output_items[1]; + out_phase = (float *) output_items[2]; + out_freq = (float *) output_items[3]; + } + + while((i < noutput_items) && (i < ninput_items[0])) { sample = in[i]; + nco = gr_expj(d_phase); // get the NCO value for derotating the current sample + sample = nco*sample; // get the downconverted symbol sym_value = d_constellation.decision_maker(sample); - //std::cout << "sym_value: " << sym_value << " sample: " << sample << std::endl; phase_error = -arg(sample*conj(d_constellation.constellation()[sym_value])); + //std::cout << "sym_value: " << sym_value << " sample: " << sample << "phase_error: " << phase_error << std::endl; phase_error_tracking(phase_error); // corrects phase and frequency offsets - out[o++] = sym_value; + out[i] = sym_value; + if(output_items.size() == 4) { + out_err[i] = phase_error; + out_phase[i] = d_phase; + out_freq[i] = d_freq; + } i++; } #if 0 printf("ninput_items: %d noutput_items: %d consuming: %d returning: %d\n", - ninput_items[0], noutput_items, i, o); + ninput_items[0], noutput_items, i, i); #endif consume_each(i); - return o; + return i; } // Base Constellation Class diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index 8bc33d4dc..69e11fcb0 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -25,7 +25,7 @@ differential BPSK modulation and demodulation. """ -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from math import pi, sqrt import psk import cmath @@ -44,7 +44,7 @@ _def_timing_alpha = 0.100 _def_timing_beta = 0.010 _def_timing_max_dev = 1.5 # Fine frequency / Phase correction -_def_costas_alpha = 0.1 +_def_phase_alpha = 0.1 # ///////////////////////////////////////////////////////////////////////////// # Generic modulator @@ -138,7 +138,8 @@ class generic_mod(gr.hier_block2): """ Given command line options, create dictionary suitable for passing to __init__ """ - return {} + return modulation_utils2.extract_kwargs_from_options( + generic_mod.__init__, ('self',), options) extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) @@ -174,7 +175,7 @@ class generic_demod(gr.hier_block2): freq_alpha=_def_freq_alpha, timing_alpha=_def_timing_alpha, timing_max_dev=_def_timing_max_dev, - costas_alpha=_def_costas_alpha, + phase_alpha=_def_phase_alpha, verbose=_def_verbose, log=_def_log): """ @@ -195,8 +196,8 @@ class generic_demod(gr.hier_block2): @type timing_alpha: float @param timing_max_dev: timing loop maximum rate deviations @type timing_max_dev: float - @param costas_alpha: loop filter gain in costas loop - @type costas_alphas: float + @param phase_alpha: loop filter gain in phase loop + @type phase_alphas: float @param verbose: Print information about modulator? @type verbose: bool @param debug: Print modualtion data to files? @@ -210,7 +211,7 @@ class generic_demod(gr.hier_block2): self._constellation = constellation self._samples_per_symbol = samples_per_symbol self._excess_bw = excess_bw - self._costas_alpha = costas_alpha + self._phase_alpha = phase_alpha self._freq_alpha = freq_alpha self._freq_beta = 0.10*self._freq_alpha self._timing_alpha = timing_alpha @@ -241,13 +242,14 @@ class generic_demod(gr.hier_block2): taps, nfilts, nfilts/2, self._timing_max_dev) self.time_recov.set_beta(self._timing_beta) - self._costas_beta = 0.25 * self._costas_alpha * self._costas_alpha + #self._phase_beta = 0.25 * self._phase_alpha * self._phase_alpha + self._phase_beta = 0.25 * self._phase_alpha * self._phase_alpha fmin = -0.25 fmax = 0.25 self.receiver = gr.constellation_receiver_cb( self._constellation, - self._costas_alpha, self._costas_beta, + self._phase_alpha, self._phase_beta, fmin, fmax) # Do differential decoding based on phase change of symbols @@ -276,26 +278,43 @@ class generic_demod(gr.hier_block2): print "\nDemodulator:" print "bits per symbol: %d" % self.bits_per_symbol() print "RRC roll-off factor: %.2f" % self._excess_bw - print "Costas Loop alpha: %.2e" % self._costas_alpha - print "Costas Loop beta: %.2e" % self._costas_beta - print "M&M mu: %.2f" % self._mm_mu - print "M&M mu gain: %.2e" % self._mm_gain_mu - print "M&M omega: %.2f" % self._mm_omega - print "M&M omega gain: %.2e" % self._mm_gain_omega - print "M&M omega limit: %.2f" % self._mm_omega_relative_limit + print "FLL gain: %.2e" % self._freq_alpha + print "Timing alpha gain: %.2e" % self._timing_alpha + print "Timing beta gain: %.2e" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + print "Phase track alpha: %.2e" % self._phase_alpha + print "Phase track beta: %.2e" % self._phase_beta def _setup_logging(self): print "Modulation logging turned on." - self.connect(self.pre_scaler, - gr.file_sink(gr.sizeof_gr_complex, "rx_prescaler.dat")) self.connect(self.agc, gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) - self.connect(self.rrc_filter, - gr.file_sink(gr.sizeof_gr_complex, "rx_rrc_filter.dat")) - self.connect(self.receiver, - gr.file_sink(gr.sizeof_gr_complex, "rx_receiver.dat")) + self.connect((self.freq_recov, 0), + gr.file_sink(gr.sizeof_gr_complex, "rx_freq_recov.dat")) + self.connect((self.freq_recov, 1), + gr.file_sink(gr.sizeof_float, "rx_freq_recov_freq.dat")) + self.connect((self.freq_recov, 2), + gr.file_sink(gr.sizeof_float, "rx_freq_recov_phase.dat")) + self.connect((self.freq_recov, 3), + gr.file_sink(gr.sizeof_gr_complex, "rx_freq_recov_error.dat")) + self.connect((self.time_recov, 0), + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) + self.connect((self.time_recov, 1), + gr.file_sink(gr.sizeof_float, "rx_time_recov_error.dat")) + self.connect((self.time_recov, 2), + gr.file_sink(gr.sizeof_float, "rx_time_recov_rate.dat")) + self.connect((self.time_recov, 3), + gr.file_sink(gr.sizeof_float, "rx_time_recov_phase.dat")) + self.connect((self.receiver, 0), + gr.file_sink(gr.sizeof_char, "rx_receiver.dat")) + self.connect((self.receiver, 1), + gr.file_sink(gr.sizeof_float, "rx_receiver_error.dat")) + self.connect((self.receiver, 2), + gr.file_sink(gr.sizeof_float, "rx_receiver_phase.dat")) + self.connect((self.receiver, 3), + gr.file_sink(gr.sizeof_float, "rx_receiver_freq.dat")) self.connect(self.diffdec, - gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + gr.file_sink(gr.sizeof_char, "rx_diffdec.dat")) self.connect(self.unpack, gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) @@ -304,25 +323,28 @@ class generic_demod(gr.hier_block2): Adds generic demodulation-specific options to the standard parser """ parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default] (PSK)") - parser.add_option("", "--costas-alpha", type="float", default=None, - help="set Costas loop alpha value [default=%default] (PSK)") - parser.add_option("", "--gain-mu", type="float", default=_def_gain_mu, - help="set M&M symbol sync loop gain mu value [default=%default] (GMSK/PSK)") - parser.add_option("", "--mu", type="float", default=_def_mu, - help="set M&M symbol sync loop mu value [default=%default] (GMSK/PSK)") - parser.add_option("", "--omega-relative-limit", type="float", default=_def_omega_relative_limit, - help="M&M clock recovery omega relative limit [default=%default] (GMSK/PSK)") + help="set RRC excess bandwith factor [default=%default]") + parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, + help="set frequency lock loop alpha gain value [default=%default]") + parser.add_option("", "--phase-alpha", type="float", default=_def_phase_alpha, + help="set phase tracking loop alpha value [default=%default]") + parser.add_option("", "--timing-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default]") + parser.add_option("", "--timing-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default]") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default]") add_options=staticmethod(add_options) def extract_kwargs_from_options(options): """ Given command line options, create dictionary suitable for passing to __init__ """ - return {} + return modulation_utils2.extract_kwargs_from_options( + generic_demod.__init__, ('self',), options) extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) -# +## # Add these to the mod/demod registry # -#modulation_utils.add_type_1_mod('dbpsk', dbpsk_mod) -#modulation_utils.add_type_1_demod('dbpsk', dbpsk_demod) +#modulation_utils2.add_type_1_mod('generic', generic_mod) +#modulation_utils2.add_type_1_demod('generic', generic_demod) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 55081bcc0..9da7ca58e 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -26,11 +26,12 @@ QAM modulation and demodulation. from math import pi, sqrt, log from itertools import islice -from gnuradio import gr, gru, modulation_utils +from gnuradio import gr, gru, modulation_utils2 from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod # default values (used in __init__ and add_options) +_def_constellation_points = 16 _def_samples_per_symbol = 2 _def_excess_bw = 0.35 _def_verbose = False @@ -43,7 +44,7 @@ _def_timing_alpha = 0.100 _def_timing_beta = 0.010 _def_timing_max_dev = 1.5 # Fine frequency / Phase correction -_def_costas_alpha = 0.1 +_def_phase_alpha = 0.1 def is_power_of_four(x): v = log(x)/log(4) @@ -145,7 +146,7 @@ def make_constellation(m): class qam_mod(generic_mod): - def __init__(self, m, + def __init__(self, constellation_points=_def_constellation_points, samples_per_symbol=_def_samples_per_symbol, excess_bw=_def_excess_bw, verbose=_def_verbose, @@ -169,15 +170,23 @@ class qam_mod(generic_mod): @type log: bool """ - if not isinstance(m, int) or not is_power_of_four(m): - raise ValueError("m must be a power of two integer greater than or equal to 4.") + if not isinstance(constellation_points, int) or not is_power_of_four(constellation_points): + raise ValueError("number of constellation points must be a power of four.") - points = make_constellation(m) + points = make_constellation(constellation_points) constellation = gr.gr_constellation(points) super(qam_mod, self).__init__(constellation, samples_per_symbol, excess_bw, verbose, log) + def add_options(parser): + """ + Adds QAM modulation-specific options to the standard parser + """ + parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, + help="set the number of constellation points (must be a power of 4) [default=%default]") + generic_mod.add_options(parser) + add_options=staticmethod(add_options) # ///////////////////////////////////////////////////////////////////////////// # QAM demodulator @@ -186,13 +195,13 @@ class qam_mod(generic_mod): class qam_demod(generic_demod): - def __init__(self, m, + def __init__(self, constellation_points=_def_constellation_points, samples_per_symbol=_def_samples_per_symbol, excess_bw=_def_excess_bw, freq_alpha=_def_freq_alpha, timing_alpha=_def_timing_alpha, timing_max_dev=_def_timing_max_dev, - costas_alpha=_def_costas_alpha, + phase_alpha=_def_phase_alpha, verbose=_def_verbose, log=_def_log): @@ -214,25 +223,33 @@ class qam_demod(generic_demod): @type timing_alpha: float @param timing_max_dev: timing loop maximum rate deviations @type timing_max_dev: float - @param costas_alpha: loop filter gain in costas loop - @type costas_alphas: float + @param phase_alpha: loop filter gain in phase loop + @type phase_alphas: float @param verbose: Print information about modulator? @type verbose: bool @param debug: Print modualtion data to files? @type debug: bool """ - points = make_constellation(m) + points = make_constellation(constellation_points) constellation = gr.gr_constellation(points) super(qam_demod, self).__init__(constellation, samples_per_symbol, excess_bw, freq_alpha, timing_alpha, - timing_max_dev, costas_alpha, verbose, + timing_max_dev, phase_alpha, verbose, log) - + + def add_options(parser): + """ + Adds QAM demodulation-specific options to the standard parser + """ + parser.add_option("", "--constellation-points", type="int", default=_def_constellation_points, + help="set the number of constellation points (must be a power of 4) [default=%default]") + generic_demod.add_options(parser) + add_options=staticmethod(add_options) + # # Add these to the mod/demod registry # -# NOT READY TO BE USED YET -- ENABLE AT YOUR OWN RISK -#modulation_utils.add_type_1_mod('qam16', qam16_mod) -#modulation_utils.add_type_1_demod('qam16', qam16_demod) +modulation_utils2.add_type_1_mod('qam', qam_mod) +modulation_utils2.add_type_1_demod('qam', qam_demod) diff --git a/gnuradio-examples/python/digital/simple_qam.py b/gnuradio-examples/python/digital/simple_qam.py index dee57baeb..947d7faad 100644 --- a/gnuradio-examples/python/digital/simple_qam.py +++ b/gnuradio-examples/python/digital/simple_qam.py @@ -2,18 +2,20 @@ from gnuradio import gr, blks2, packet_utils # Some constants -NOISE_VOLTAGE = 0 -FREQUENCY_OFFSET = 0 +NOISE_VOLTAGE = 0.1 +FREQUENCY_OFFSET = 0.0000 TIMING_OFFSET = 1.0 SAMPLES_PER_SYMBOL = 2 GAIN = 1.0 SW_DECIM = 1 BAND_MIDPOINT = 1.0 BAND_WIDTH = 0.5 +FREQ_ALPHA = 0.005 +EXCESS_BW = 0.35 # Modulation/Demodulation methods -modulator = blks2.qam_mod(4, SAMPLES_PER_SYMBOL) -demodulator = blks2.qam_demod(4, SAMPLES_PER_SYMBOL) +modulator = blks2.qam_mod(16, SAMPLES_PER_SYMBOL) +demodulator = blks2.qam_demod(16, SAMPLES_PER_SYMBOL, freq_alpha=FREQ_ALPHA) #Transmission Blocks packet_transmitter = blks2.mod_pkts(modulator, access_code=None, msgq_limit=4, @@ -41,6 +43,11 @@ sender = packet_transmitter.send_pkt # Some some packets (The second will not be recieved because it gets cut off # before it can finish. I think this occurs during modulation.) + +# Send some large messages to start off with to let things lock. +for i in range(0, int(20.0/SAMPLES_PER_SYMBOL)): + sender('a'*4000) + sender('hello1') sender('hello2') sender('hello3') @@ -48,6 +55,11 @@ sender('hello4') sender('hello5') sender('hello6') sender('hello7') +sender('hello8') +sender('hello9') +sender('hello10') +sender('hello11') +sender('hello12') sender('world') sender(eof=True) -- cgit From 493cd2e48eee4850f2ceef20c9dd487b93ea6b9e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sat, 1 Jan 2011 15:31:55 -0700 Subject: Worked on generic demodulation. --- gnuradio-core/src/lib/general/Makefile.am | 9 +- gnuradio-core/src/lib/general/general.i | 2 + gnuradio-core/src/lib/general/gr_constellation.cc | 127 +++++++++++++++++++++ gnuradio-core/src/lib/general/gr_constellation.h | 108 ++++++++++++++++++ gnuradio-core/src/lib/general/gr_constellation.i | 62 ++++++++++ .../lib/general/gr_constellation_receiver_cb.cc | 51 ++------- .../src/lib/general/gr_constellation_receiver_cb.h | 33 +----- .../src/lib/general/gr_constellation_receiver_cb.i | 15 +-- .../python/gnuradio/blks2impl/generic_mod_demod.py | 8 +- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 49 +++----- 10 files changed, 339 insertions(+), 125 deletions(-) create mode 100644 gnuradio-core/src/lib/general/gr_constellation.cc create mode 100644 gnuradio-core/src/lib/general/gr_constellation.h create mode 100644 gnuradio-core/src/lib/general/gr_constellation.i diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index daa3c446e..861c82c28 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -53,7 +53,9 @@ libgeneral_la_SOURCES = \ gr_complex_to_xxx.cc \ gr_conjugate_cc.cc \ gr_copy.cc \ + gr_constellation.cc \ gr_constellation_decoder_cb.cc \ + gr_constellation_receiver_cb.cc \ gr_correlate_access_code_bb.cc \ gr_costas_loop_cc.cc \ gr_count_bits.cc \ @@ -100,7 +102,6 @@ libgeneral_la_SOURCES = \ gr_math.cc \ gr_misc.cc \ gr_mpsk_receiver_cc.cc \ - gr_constellation_receiver_cb.cc \ gr_nlog10_ff.cc \ gr_nop.cc \ gr_null_sink.cc \ @@ -207,7 +208,9 @@ grinclude_HEADERS = \ gr_complex_to_interleaved_short.h \ gr_complex_to_xxx.h \ gr_conjugate_cc.h \ + gr_constellation.h \ gr_constellation_decoder_cb.h \ + gr_constellation_receiver_cb.h \ gr_copy.h \ gr_correlate_access_code_bb.h \ gr_costas_loop_cc.h \ @@ -257,7 +260,6 @@ grinclude_HEADERS = \ gr_map_bb.h \ gr_math.h \ gr_misc.h \ - gr_constellation_receiver_cb.h \ gr_nco.h \ gr_nlog10_ff.h \ gr_nop.h \ @@ -378,7 +380,9 @@ swiginclude_HEADERS = \ gr_complex_to_interleaved_short.i \ gr_complex_to_xxx.i \ gr_conjugate_cc.i \ + gr_constellation.i \ gr_constellation_decoder_cb.i \ + gr_constellation_receiver_cb.i \ gr_copy.i \ gr_correlate_access_code_bb.i \ gr_costas_loop_cc.i \ @@ -419,7 +423,6 @@ swiginclude_HEADERS = \ gr_lms_dfe_cc.i \ gr_lms_dfe_ff.i \ gr_map_bb.i \ - gr_constellation_receiver_cb.i \ gr_nlog10_ff.i \ gr_nop.i \ gr_null_sink.i \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index f758211cc..47cc3b7fa 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -70,6 +70,7 @@ #include #include #include +#include #include #include #include @@ -192,6 +193,7 @@ %include "gr_throttle.i" %include "gr_mpsk_receiver_cc.i" %include "gr_constellation_receiver_cb.i" +%include "gr_constellation.i" %include "gr_stream_mux.i" %include "gr_stream_to_streams.i" %include "gr_streams_to_stream.i" diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc new file mode 100644 index 000000000..03589dee8 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -0,0 +1,127 @@ +/* -*- c++ -*- */ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include + +gr_constellation_sptr +gr_make_constellation(std::vector constellation) +{ + return gr_constellation_sptr(new gr_constellation (constellation)); + } + +// Base Constellation Class + +gr_constellation::gr_constellation (std::vector constellation) { + d_constellation = constellation; +} + + +unsigned int get_closest_point(std::vector constellation, gr_complex sample) { + + unsigned int table_size = constellation.size(); + unsigned int min_index = 0; + float min_euclid_dist; + float euclid_dist; + + min_euclid_dist = norm(sample - constellation[0]); + min_index = 0; + for (unsigned int j = 1; j < table_size; j++){ + euclid_dist = norm(sample - constellation[j]); + if (euclid_dist < min_euclid_dist){ + min_euclid_dist = euclid_dist; + min_index = j; + } + } + return min_index; +} + +// Chooses points base on shortest distance. +// Inefficient. +unsigned int gr_constellation::decision_maker(gr_complex sample) +{ + unsigned int min_index; + min_index = get_closest_point(d_constellation, sample); + return min_index; +} + +gr_constellation_sector_sptr +gr_make_constellation_sector(std::vector constellation, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) +{ + return gr_constellation_sector_sptr(new gr_constellation_sector (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); + } + +gr_constellation_sector::gr_constellation_sector (std::vector constellation, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) : + gr_constellation(constellation), + n_sectors(real_sectors * imag_sectors), + n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), + d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) +{ + find_sector_values(); +} + +unsigned int gr_constellation_sector::decision_maker (gr_complex sample) { + unsigned int sector; + sector = get_sector(sample); + return sector_values[sector]; +} + +unsigned int gr_constellation_sector::get_sector (gr_complex sample) { + int real_sector, imag_sector; + unsigned int sector; + real_sector = int(real(sample)/d_width_real_sectors + n_real_sectors/2.0); + if (real_sector < 0) real_sector = 0; + if (real_sector >= n_real_sectors) real_sector = n_real_sectors-1; + imag_sector = int(imag(sample)/d_width_imag_sectors + n_imag_sectors/2.0); + if (imag_sector < 0) imag_sector = 0; + if (imag_sector >= n_imag_sectors) imag_sector = n_imag_sectors-1; + sector = real_sector * n_imag_sectors + imag_sector; + return sector; +} + +unsigned int gr_constellation_sector::calc_sector_value (unsigned int sector) { + unsigned int real_sector, imag_sector; + gr_complex sector_center; + unsigned int closest_point; + real_sector = float(sector)/n_imag_sectors; + imag_sector = sector - real_sector * n_imag_sectors; + sector_center = gr_complex((real_sector + 0.5 - n_real_sectors/2.0) * d_width_real_sectors, + (imag_sector + 0.5 - n_imag_sectors/2.0) * d_width_imag_sectors); + closest_point = get_closest_point(d_constellation, sector_center); + return closest_point; +} + + +void gr_constellation_sector::find_sector_values () { + unsigned int i; + sector_values.clear(); + for (i=0; i +#include +#include +#include + +class gr_constellation; +typedef boost::shared_ptr gr_constellation_sptr; + +// public constructor +gr_constellation_sptr + gr_make_constellation (std::vector constellation); + +class gr_constellation : public boost::enable_shared_from_this +{ + public: + + gr_constellation (std::vector constellation); + + //! Returns the set of points in this constellation. + std::vector points() { return d_constellation;} + + //! Returns the constellation point that matches best. + //! Also calculates the phase error. + virtual unsigned int decision_maker (gr_complex sample); + + unsigned int bits_per_symbol () { + return floor(log(d_constellation.size())/log(2)); + } + + gr_constellation_sptr base() { + return shared_from_this(); + } + + protected: + + std::vector d_constellation; + + private: + friend gr_constellation_sptr + gr_make_constellation (std::vector constellation); +}; + +class gr_constellation_sector; +typedef boost::shared_ptr gr_constellation_sector_sptr; + +// public constructor +gr_constellation_sector_sptr +gr_make_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + +class gr_constellation_sector : public gr_constellation +{ + public: + + gr_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + + unsigned int decision_maker (gr_complex sample); + + protected: + + virtual unsigned int get_sector (gr_complex sample); + + virtual unsigned int calc_sector_value (unsigned int sector); + + void find_sector_values (); + + private: + + std::vector sector_values; + unsigned int n_sectors; + unsigned int n_real_sectors; + unsigned int n_imag_sectors; + float d_width_real_sectors; + float d_width_imag_sectors; + + friend gr_constellation_sector_sptr + gr_make_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i new file mode 100644 index 000000000..bdc5436f2 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -0,0 +1,62 @@ +/* -*- c++ -*- */ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +%template(gr_complex_vector) std::vector; +%template(unsigned_int_vector) std::vector; + +class gr_constellation; +typedef boost::shared_ptr gr_constellation_sptr; +%template(gr_constellation_sptr) boost::shared_ptr; +%rename(constellation) gr_make_constellation; +gr_constellation_sptr gr_make_constellation(std::vector constellation); +%ignore gr_constellation; + +class gr_constellation +{ +public: + gr_constellation (std::vector constellation); + std::vector points(); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); + gr_constellation_sptr base (); +}; + +class gr_constellation_sector; +typedef boost::shared_ptr gr_constellation_sector_sptr; +%template(gr_constellation_sector_sptr) boost::shared_ptr; +%rename(constellation_sector) gr_make_constellation_sector; +gr_constellation_sector_sptr gr_make_constellation_sector(std::vector constellation_sector, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); +%ignore gr_constellation_sector; + +class gr_constellation_sector : public gr_constellation +{ +public: + gr_constellation_sector (std::vector constellation, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + std::vector points (); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); + gr_constellation_sptr base (); +}; diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc index 93af6d078..6520b66b2 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -26,12 +26,11 @@ #include #include +#include #include #include #include #include -// For debugging -#include #define M_TWOPI (2*M_PI) @@ -41,7 +40,7 @@ // Public constructor gr_constellation_receiver_cb_sptr -gr_make_constellation_receiver_cb(gr_constellation constell, +gr_make_constellation_receiver_cb(gr_constellation_sptr constell, float alpha, float beta, float fmin, float fmax) { @@ -49,10 +48,10 @@ gr_make_constellation_receiver_cb(gr_constellation constell, alpha, beta, fmin, fmax)); } - + static int ios[] = {sizeof(char), sizeof(float), sizeof(float), sizeof(float)}; static std::vector iosig(ios, ios+sizeof(ios)/sizeof(int)); -gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation constellation, +gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation_sptr constellation, float alpha, float beta, float fmin, float fmax) : gr_block ("constellation_receiver_cb", @@ -61,12 +60,12 @@ gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation con d_constellation(constellation), d_alpha(alpha), d_beta(beta), d_freq(0), d_max_freq(fmax), d_min_freq(fmin), d_phase(0), d_current_const_point(0) -{} +{ +} void gr_constellation_receiver_cb::phase_error_tracking(float phase_error) { - d_freq += d_beta*phase_error; // adjust frequency based on error d_phase += d_freq + d_alpha*phase_error; // adjust phase based on error @@ -82,7 +81,7 @@ gr_constellation_receiver_cb::phase_error_tracking(float phase_error) #if VERBOSE_COSTAS printf("cl: phase_error: %f phase: %f freq: %f sample: %f+j%f constellation: %f+j%f\n", phase_error, d_phase, d_freq, sample.real(), sample.imag(), - d_constellation.constellation()[d_current_const_point].real(), d_constellation.constellation()[d_current_const_point].imag()); + d_constellation->points()[d_current_const_point].real(), d_constellation->points()[d_current_const_point].imag()); #endif } @@ -112,9 +111,8 @@ gr_constellation_receiver_cb::general_work (int noutput_items, sample = in[i]; nco = gr_expj(d_phase); // get the NCO value for derotating the current sample sample = nco*sample; // get the downconverted symbol - sym_value = d_constellation.decision_maker(sample); - phase_error = -arg(sample*conj(d_constellation.constellation()[sym_value])); - //std::cout << "sym_value: " << sym_value << " sample: " << sample << "phase_error: " << phase_error << std::endl; + sym_value = d_constellation->decision_maker(sample); + phase_error = -arg(sample*conj(d_constellation->points()[sym_value])); phase_error_tracking(phase_error); // corrects phase and frequency offsets out[i] = sym_value; if(output_items.size() == 4) { @@ -125,38 +123,7 @@ gr_constellation_receiver_cb::general_work (int noutput_items, i++; } - #if 0 - printf("ninput_items: %d noutput_items: %d consuming: %d returning: %d\n", - ninput_items[0], noutput_items, i, i); - #endif - consume_each(i); return i; } -// Base Constellation Class - -gr_constellation::gr_constellation (std::vector constellation) { - d_constellation = constellation; -} - -// Chooses points base on shortest distance. -// Inefficient. -unsigned int gr_constellation::decision_maker(gr_complex sample) -{ - unsigned int table_size = constellation().size(); - unsigned int min_index = 0; - float min_euclid_dist; - float euclid_dist; - - min_euclid_dist = norm(sample - constellation()[0]); - min_index = 0; - for (unsigned int j = 1; j < table_size; j++){ - euclid_dist = norm(sample - constellation()[j]); - if (euclid_dist < min_euclid_dist){ - min_euclid_dist = euclid_dist; - min_index = j; - } - } - return min_index; -} diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h index ba38bdad6..d40d77fff 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h @@ -24,40 +24,17 @@ #define INCLUDED_GR_CONSTELLATION_RECEIVER_CB_H #include +#include #include #include #include -class gr_constellation -{ - public: - - gr_constellation (std::vector constellation); - - //! Returns the set of points in this constellation. - std::vector constellation() { return d_constellation;} - - //! Returns the constellation point that matches best. - //! Also calculates the phase error. - unsigned int decision_maker (gr_complex sample); - - unsigned int bits_per_symbol () { - return floor(log(d_constellation.size())/log(2)); - } - - private: - - std::vector d_constellation; -}; - -class gri_mmse_fir_interpolator_cc; - class gr_constellation_receiver_cb; typedef boost::shared_ptr gr_constellation_receiver_cb_sptr; // public constructor gr_constellation_receiver_cb_sptr -gr_make_constellation_receiver_cb (gr_constellation constellation, +gr_make_constellation_receiver_cb (gr_constellation_sptr constellation, float alpha, float beta, float fmin, float fmax); @@ -136,7 +113,7 @@ protected: * The constructor also chooses which phase detector and decision maker to use in the work loop based on the * value of M. */ - gr_constellation_receiver_cb (gr_constellation constellation, + gr_constellation_receiver_cb (gr_constellation_sptr constellation, float alpha, float beta, float fmin, float fmax); @@ -151,7 +128,7 @@ protected: float d_freq, d_max_freq, d_min_freq; float d_phase; - gr_constellation d_constellation; + gr_constellation_sptr d_constellation; unsigned int d_current_const_point; //! delay line length. @@ -164,7 +141,7 @@ protected: unsigned int d_dl_idx; friend gr_constellation_receiver_cb_sptr - gr_make_constellation_receiver_cb (gr_constellation constell, + gr_make_constellation_receiver_cb (gr_constellation_sptr constell, float alpha, float beta, float fmin, float fmax); }; diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i index b48322f45..2298d5099 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i @@ -22,24 +22,13 @@ GR_SWIG_BLOCK_MAGIC(gr,constellation_receiver_cb); -%template(gr_complex_vector) std::vector; - -class gr_constellation -{ -public: - gr_constellation (std::vector constellation); - std::vector constellation(); - unsigned int decision_maker (gr_complex sample); - unsigned int bits_per_symbol (); -}; - -gr_constellation_receiver_cb_sptr gr_make_constellation_receiver_cb (gr_constellation constellation, +gr_constellation_receiver_cb_sptr gr_make_constellation_receiver_cb (gr_constellation_sptr constellation, float alpha, float beta, float fmin, float fmax); class gr_constellation_receiver_cb : public gr_block { private: - gr_constellation_receiver_cb (gr_contellation constellation, + gr_constellation_receiver_cb (gr_contellation_sptr constellation, float alpha, float beta, float fmin, float fmax); public: diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index 69e11fcb0..60a3fc777 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -22,7 +22,7 @@ # See gnuradio-examples/python/digital for examples """ -differential BPSK modulation and demodulation. +Generic modulation and demodulation. """ from gnuradio import gr, gru, modulation_utils2 @@ -79,7 +79,7 @@ class generic_mod(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_char), # Input signature gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature - self._constellation = constellation + self._constellation = constellation.base() self._samples_per_symbol = samples_per_symbol self._excess_bw = excess_bw @@ -96,7 +96,7 @@ class generic_mod(gr.hier_block2): self.diffenc = gr.diff_encoder_bb(arity) - self.chunks2symbols = gr.chunks_to_symbols_bc(self._constellation.constellation()) + self.chunks2symbols = gr.chunks_to_symbols_bc(self._constellation.points()) # pulse shaping filter self.rrc_taps = gr.firdes.root_raised_cosine( @@ -208,7 +208,7 @@ class generic_demod(gr.hier_block2): gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature(1, 1, gr.sizeof_char)) # Output signature - self._constellation = constellation + self._constellation = constellation.base() self._samples_per_symbol = samples_per_symbol self._excess_bw = excess_bw self._phase_alpha = phase_alpha diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 9da7ca58e..22d80503b 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -32,19 +32,6 @@ from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod # default values (used in __init__ and add_options) _def_constellation_points = 16 -_def_samples_per_symbol = 2 -_def_excess_bw = 0.35 -_def_verbose = False -_def_log = False - -# Frequency correction -_def_freq_alpha = 0.010 -# Symbol timing recovery -_def_timing_alpha = 0.100 -_def_timing_beta = 0.010 -_def_timing_max_dev = 1.5 -# Fine frequency / Phase correction -_def_phase_alpha = 0.1 def is_power_of_four(x): v = log(x)/log(4) @@ -146,11 +133,7 @@ def make_constellation(m): class qam_mod(generic_mod): - def __init__(self, constellation_points=_def_constellation_points, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - verbose=_def_verbose, - log=_def_log): + def __init__(self, constellation_points=_def_constellation_points, *args, **kwargs): """ Hierarchical block for RRC-filtered QAM modulation. @@ -174,10 +157,13 @@ class qam_mod(generic_mod): raise ValueError("number of constellation points must be a power of four.") points = make_constellation(constellation_points) - constellation = gr.gr_constellation(points) + side = int(sqrt(constellation_points)) + assert(side * side == constellation_points) + width = 2.0/(side-1) + constellation = gr.constellation_sector(points, side, side, width, width) + #constellation = gr.constellation(points) - super(qam_mod, self).__init__(constellation, samples_per_symbol, - excess_bw, verbose, log) + super(qam_mod, self).__init__(constellation, *args, **kwargs) def add_options(parser): """ @@ -195,15 +181,7 @@ class qam_mod(generic_mod): class qam_demod(generic_demod): - def __init__(self, constellation_points=_def_constellation_points, - samples_per_symbol=_def_samples_per_symbol, - excess_bw=_def_excess_bw, - freq_alpha=_def_freq_alpha, - timing_alpha=_def_timing_alpha, - timing_max_dev=_def_timing_max_dev, - phase_alpha=_def_phase_alpha, - verbose=_def_verbose, - log=_def_log): + def __init__(self, constellation_points=_def_constellation_points, *args, **kwargs): """ Hierarchical block for RRC-filtered QAM modulation. @@ -232,12 +210,13 @@ class qam_demod(generic_demod): """ points = make_constellation(constellation_points) - constellation = gr.gr_constellation(points) + side = int(sqrt(constellation_points)) + assert(side * side == constellation_points) + width = 2.0/(side-1) + constellation = gr.constellation_sector(points, side, side, width, width) + #constellation = gr.constellation(points) - super(qam_demod, self).__init__(constellation, samples_per_symbol, - excess_bw, freq_alpha, timing_alpha, - timing_max_dev, phase_alpha, verbose, - log) + super(qam_demod, self).__init__(constellation, *args, **kwargs) def add_options(parser): """ -- cgit From 016dc56eb54860e98fe5ba2a99b12adfb74c7c83 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sat, 1 Jan 2011 15:33:58 -0700 Subject: Changed pky.py so that is possible to skip modulation/demodulation steps. --- gnuradio-core/src/python/gnuradio/blks2impl/pkt.py | 33 +++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py b/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py index 32109b84f..aa720d1a5 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/pkt.py @@ -34,7 +34,8 @@ class mod_pkts(gr.hier_block2): Send packets by calling send_pkt """ - def __init__(self, modulator, access_code=None, msgq_limit=2, pad_for_usrp=True, use_whitener_offset=False): + def __init__(self, modulator, access_code=None, msgq_limit=2, pad_for_usrp=True, use_whitener_offset=False, + modulate=True): """ Hierarchical block for sending packets @@ -49,13 +50,18 @@ class mod_pkts(gr.hier_block2): @type msgq_limit: int @param pad_for_usrp: If true, packets are padded such that they end up a multiple of 128 samples @param use_whitener_offset: If true, start of whitener XOR string is incremented each packet + @param modulate: If false, no modulation will be performed. See gmsk_mod for remaining parameters """ + if modulate: + output_size = gr.sizeof_gr_complex + else: + output_size = gr.sizeof_char gr.hier_block2.__init__(self, "mod_pkts", gr.io_signature(0, 0, 0), # Input signature - gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + gr.io_signature(1, 1, output_size)) # Output signature self._modulator = modulator self._pad_for_usrp = pad_for_usrp @@ -70,7 +76,10 @@ class mod_pkts(gr.hier_block2): # accepts messages from the outside world self._pkt_input = gr.message_source(gr.sizeof_char, msgq_limit) - self.connect(self._pkt_input, self._modulator, self) + if modulate: + self.connect(self._pkt_input, self._modulator, self) + else: + self.connect(self._pkt_input, self) def send_pkt(self, payload='', eof=False): """ @@ -106,13 +115,15 @@ class demod_pkts(gr.hier_block2): app via the callback. """ - def __init__(self, demodulator, access_code=None, callback=None, threshold=-1): + def __init__(self, demodulator, access_code=None, callback=None, threshold=-1, demodulate=True): """ Hierarchical block for demodulating and deframing packets. The input is the complex modulated signal at baseband. Demodulated packets are sent to the handler. + If demodulator is None it is assumed the input is already demodulated. + @param demodulator: instance of demodulator class (gr_block or hier_block2) @type demodulator: complex baseband in @param access_code: AKA sync vector @@ -123,9 +134,14 @@ class demod_pkts(gr.hier_block2): @type threshold: int """ + if demodulator is not None: + input_size = gr.sizeof_gr_complex + else: + input_size = gr.sizeof_char + gr.hier_block2.__init__(self, "demod_pkts", - gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature - gr.io_signature(0, 0, 0)) # Output signature + gr.io_signature(1, 1, input_size), # Input signature + gr.io_signature(0, 0, 0)) # Output signature self._demodulator = demodulator if access_code is None: @@ -141,7 +157,10 @@ class demod_pkts(gr.hier_block2): self.correlator = gr.correlate_access_code_bb(access_code, threshold) self.framer_sink = gr.framer_sink_1(self._rcvd_pktq) - self.connect(self, self._demodulator, self.correlator, self.framer_sink) + if self._demodulator is not None: + self.connect(self, self._demodulator, self.correlator, self.framer_sink) + else: + self.connect(self, self.correlator, self.framer_sink) if callback is not None: self._watcher = _queue_watcher_thread(self._rcvd_pktq, callback) -- cgit From 1ec42d6fa313c6d3eeefae783a74a8600da3b76e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Fri, 14 Jan 2011 23:30:35 -0700 Subject: Tidied QAM modulation. --- .../python/gnuradio/blks2impl/generic_mod_demod.py | 10 +- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 113 ++++----------------- .../src/python/gnuradio/utils/Makefile.am | 1 + .../src/python/gnuradio/utils/gray_code.py | 44 ++++++++ 4 files changed, 75 insertions(+), 93 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/utils/gray_code.py diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index 60a3fc777..90dcac971 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -45,6 +45,8 @@ _def_timing_beta = 0.010 _def_timing_max_dev = 1.5 # Fine frequency / Phase correction _def_phase_alpha = 0.1 +# Number of points in constellation +_def_constellation_points = 16 # ///////////////////////////////////////////////////////////////////////////// # Generic modulator @@ -128,8 +130,10 @@ class generic_mod(gr.hier_block2): def add_options(parser): """ - Adds generic modulation-specific options to the standard parser + Adds generic modulation options to the standard parser """ + parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, + help="set the number of constellation points (must be a power of 4 for QAM) [default=%default]") parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, help="set RRC excess bandwith factor [default=%default]") add_options=staticmethod(add_options) @@ -320,8 +324,10 @@ class generic_demod(gr.hier_block2): def add_options(parser): """ - Adds generic demodulation-specific options to the standard parser + Adds generic demodulation options to the standard parser """ + parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, + help="set the number of constellation points (must be a power of 4 for QAM) [default=%default]") parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, help="set RRC excess bandwith factor [default=%default]") parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 22d80503b..b6096d2cb 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -24,13 +24,12 @@ QAM modulation and demodulation. """ from math import pi, sqrt, log -from itertools import islice from gnuradio import gr, gru, modulation_utils2 from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod +from gnuradio.utils.gray_code import gray_code - -# default values (used in __init__ and add_options) +# Default number of points in constellation. _def_constellation_points = 16 def is_power_of_four(x): @@ -48,31 +47,6 @@ def get_bits(x, n, k): # Remove all bits bigger than n+k-1 return v % pow(2, k) -def gray_codes(): - """ Generates gray codes.""" - gcs = [0, 1] - yield 0 - yield 1 - # The last power of two passed through. - lp2 = 2 - # The next power of two that will be passed through. - np2 = 4 - i = 2 - while True: - if i == lp2: - # if i is a power of two then gray number is of form 1100000... - result = i + i/2 - else: - # if not we take advantage of the symmetry of all but the last bit - # around a power of two. - result = gcs[2*lp2-1-i] + lp2 - gcs.append(result) - yield result - i += 1 - if i == np2: - lp2 = i - np2 = i*2 - def make_constellation(m): """ Create a constellation with m possible symbols where m must be @@ -90,7 +64,7 @@ def make_constellation(m): # The quadrant has 'side' points along each side of a quadrant. side = int(sqrtm/2) # Number rows and columns using gray codes. - gcs = list(islice(gray_codes(), side)) + gcs = gray_code(side) # Get inverse gray codes. i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) # The distance between points is found. @@ -125,7 +99,21 @@ def make_constellation(m): const_map.append(get_c(x, y, quad)) return const_map - + + +# ///////////////////////////////////////////////////////////////////////////// +# QAM constellation +# ///////////////////////////////////////////////////////////////////////////// + +def qam_constellation(constellation_points=_def_constellation_points): + """ + Creates a QAM constellation object. + """ + points = make_constellation(constellation_points) + side = int(sqrt(constellation_points)) + width = 2.0/(side-1) + constellation = gr.constellation_sector(points, side, side, width, width) + return constellation # ///////////////////////////////////////////////////////////////////////////// # QAM modulator @@ -141,39 +129,14 @@ class qam_mod(generic_mod): The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband. - @param m: Number of constellation points. Must be a power of four. - @type m: integer - @param samples_per_symbol: samples per baud >= 2 - @type samples_per_symbol: integer - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param verbose: Print information about modulator? - @type verbose: bool - @param log: Log modulation data to files? - @type log: bool + See generic_mod block for list of parameters. """ if not isinstance(constellation_points, int) or not is_power_of_four(constellation_points): raise ValueError("number of constellation points must be a power of four.") - - points = make_constellation(constellation_points) - side = int(sqrt(constellation_points)) - assert(side * side == constellation_points) - width = 2.0/(side-1) - constellation = gr.constellation_sector(points, side, side, width, width) - #constellation = gr.constellation(points) - + constellation = qam_constellation(constellation_points) super(qam_mod, self).__init__(constellation, *args, **kwargs) - def add_options(parser): - """ - Adds QAM modulation-specific options to the standard parser - """ - parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, - help="set the number of constellation points (must be a power of 4) [default=%default]") - generic_mod.add_options(parser) - add_options=staticmethod(add_options) - # ///////////////////////////////////////////////////////////////////////////// # QAM demodulator # @@ -189,44 +152,12 @@ class qam_demod(generic_demod): The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband. - @param m: Number of constellation points. Must be a power of four. - @type m: integer - @param samples_per_symbol: samples per symbol >= 2 - @type samples_per_symbol: float - @param excess_bw: Root-raised cosine filter excess bandwidth - @type excess_bw: float - @param freq_alpha: loop filter gain for frequency recovery - @type freq_alpha: float - @param timing_alpha: loop alpha gain for timing recovery - @type timing_alpha: float - @param timing_max_dev: timing loop maximum rate deviations - @type timing_max_dev: float - @param phase_alpha: loop filter gain in phase loop - @type phase_alphas: float - @param verbose: Print information about modulator? - @type verbose: bool - @param debug: Print modualtion data to files? - @type debug: bool + See generic_demod block for list of parameters. """ - points = make_constellation(constellation_points) - side = int(sqrt(constellation_points)) - assert(side * side == constellation_points) - width = 2.0/(side-1) - constellation = gr.constellation_sector(points, side, side, width, width) - #constellation = gr.constellation(points) - + constellation = qam_constellation(constellation_points) super(qam_demod, self).__init__(constellation, *args, **kwargs) - def add_options(parser): - """ - Adds QAM demodulation-specific options to the standard parser - """ - parser.add_option("", "--constellation-points", type="int", default=_def_constellation_points, - help="set the number of constellation points (must be a power of 4) [default=%default]") - generic_demod.add_options(parser) - add_options=staticmethod(add_options) - # # Add these to the mod/demod registry # diff --git a/gnuradio-core/src/python/gnuradio/utils/Makefile.am b/gnuradio-core/src/python/gnuradio/utils/Makefile.am index ed6958669..4c8e46891 100644 --- a/gnuradio-core/src/python/gnuradio/utils/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/utils/Makefile.am @@ -29,6 +29,7 @@ TESTS = \ nobase_utilspython_PYTHON = \ __init__.py \ + gray_code.py \ doxyxml/__init__.py \ doxyxml/base.py \ doxyxml/doxyindex.py \ diff --git a/gnuradio-core/src/python/gnuradio/utils/gray_code.py b/gnuradio-core/src/python/gnuradio/utils/gray_code.py new file mode 100644 index 000000000..af8b8cd14 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/gray_code.py @@ -0,0 +1,44 @@ + +class GrayCodeGenerator(object): + """ + Generates and caches gray codes. + """ + + def __init__(self): + self.gcs = [0, 1] + # The last power of two passed through. + self.lp2 = 2 + # The next power of two that will be passed through. + self.np2 = 4 + # Curent index + self.i = 2 + + def get_gray_code(self, length): + """ + Returns a list of gray code of given length. + """ + if len(self.gcs) < length: + self.generate_new_gray_code(length) + return self.gcs[:length] + + def generate_new_gray_code(self, length): + """ + Generates new gray code and places into cache. + """ + while len(self.gcs) < length: + if self.i == self.lp2: + # if i is a power of two then gray number is of form 1100000... + result = self.i + self.i/2 + else: + # if not we take advantage of the symmetry of all but the last bit + # around a power of two. + result = self.gcs[2*self.lp2-1-self.i] + self.lp2 + self.gcs.append(result) + self.i += 1 + if self.i == self.np2: + self.lp2 = self.i + self.np2 = self.i*2 + +_gray_code_generator = GrayCodeGenerator() + +gray_code = _gray_code_generator.get_gray_code -- cgit From c23d8a22a8b7859e83d95bd0b439229876c2d5b0 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 20 Jan 2011 14:21:07 -0700 Subject: Added support for PSK to generic modulation. --- gnuradio-core/src/lib/general/gr_constellation.cc | 96 ++++++++++++----- gnuradio-core/src/lib/general/gr_constellation.h | 115 +++++++++++++++++--- gnuradio-core/src/lib/general/gr_constellation.i | 42 ++++++-- .../src/python/gnuradio/blks2impl/Makefile.am | 1 + .../python/gnuradio/blks2impl/generic_mod_demod.py | 119 ++++++++++++++------- .../src/python/gnuradio/blks2impl/psk2.py | 100 +++++++++++++++++ gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 92 ++++++++++++---- .../src/python/gnuradio/modulation_utils2.py | 20 ++++ .../src/python/gnuradio/utils/gray_code.py | 25 +++-- 9 files changed, 495 insertions(+), 115 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/psk2.py diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 03589dee8..8b98a5731 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -24,20 +24,25 @@ #include #include #include +#include +#include +#include + +#define M_TWOPI (2*M_PI) gr_constellation_sptr gr_make_constellation(std::vector constellation) { return gr_constellation_sptr(new gr_constellation (constellation)); - } +} // Base Constellation Class -gr_constellation::gr_constellation (std::vector constellation) { - d_constellation = constellation; +gr_constellation::gr_constellation (std::vector constellation) : + d_constellation(constellation) +{ } - unsigned int get_closest_point(std::vector constellation, gr_complex sample) { unsigned int table_size = constellation.size(); @@ -66,23 +71,11 @@ unsigned int gr_constellation::decision_maker(gr_complex sample) return min_index; } -gr_constellation_sector_sptr -gr_make_constellation_sector(std::vector constellation, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) -{ - return gr_constellation_sector_sptr(new gr_constellation_sector (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); - } - gr_constellation_sector::gr_constellation_sector (std::vector constellation, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) : + unsigned int n_sectors) : gr_constellation(constellation), - n_sectors(real_sectors * imag_sectors), - n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), - d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) + n_sectors(n_sectors) { - find_sector_values(); } unsigned int gr_constellation_sector::decision_maker (gr_complex sample) { @@ -91,7 +84,33 @@ unsigned int gr_constellation_sector::decision_maker (gr_complex sample) { return sector_values[sector]; } -unsigned int gr_constellation_sector::get_sector (gr_complex sample) { +void gr_constellation_sector::find_sector_values () { + unsigned int i; + sector_values.clear(); + for (i=0; i constellation, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) +{ + return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); + } + +gr_constellation_rect::gr_constellation_rect (std::vector constellation, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) : + gr_constellation_sector(constellation, real_sectors * imag_sectors), + n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), + d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) +{ + find_sector_values(); +} + +unsigned int gr_constellation_rect::get_sector (gr_complex sample) { int real_sector, imag_sector; unsigned int sector; real_sector = int(real(sample)/d_width_real_sectors + n_real_sectors/2.0); @@ -104,7 +123,7 @@ unsigned int gr_constellation_sector::get_sector (gr_complex sample) { return sector; } -unsigned int gr_constellation_sector::calc_sector_value (unsigned int sector) { +unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { unsigned int real_sector, imag_sector; gr_complex sector_center; unsigned int closest_point; @@ -117,11 +136,36 @@ unsigned int gr_constellation_sector::calc_sector_value (unsigned int sector) { } -void gr_constellation_sector::find_sector_values () { - unsigned int i; - sector_values.clear(); - for (i=0; i constellation, unsigned int n_sectors) +{ + return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, n_sectors)); } +gr_constellation_psk::gr_constellation_psk (std::vector constellation, + unsigned int n_sectors) : + gr_constellation_sector(constellation, n_sectors) +{ + find_sector_values(); +} + +unsigned int gr_constellation_psk::get_sector (gr_complex sample) { + float phase = arg(sample); + float width = M_TWOPI / n_sectors; + int sector = floor(phase/width + 0.5); + unsigned int u_sector; + if (sector < 0) sector += n_sectors; + u_sector = sector; + // std::cout << phase << " " << width << " " << sector << std::endl; + return sector; +} + +unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { + float phase = sector * M_TWOPI / n_sectors; + gr_complex sector_center = gr_complex(cos(phase), sin(phase)); + unsigned int closest_point = get_closest_point(d_constellation, sector_center); + // std::cout << phase << " " << sector_center << " " << closest_point << std::endl; + return closest_point; +} + + diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 92ae3c5e2..d7f7b09b4 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -28,6 +28,12 @@ #include #include +/************************************************************/ +/* gr_constellation */ +/* */ +/* Decision maker uses nearest-point method. */ +/************************************************************/ + class gr_constellation; typedef boost::shared_ptr gr_constellation_sptr; @@ -36,6 +42,7 @@ gr_constellation_sptr gr_make_constellation (std::vector constellation); class gr_constellation : public boost::enable_shared_from_this +//class gr_constellation { public: @@ -53,6 +60,7 @@ class gr_constellation : public boost::enable_shared_from_this } gr_constellation_sptr base() { + //return gr_constellation_sptr(this); return shared_from_this(); } @@ -65,44 +73,119 @@ class gr_constellation : public boost::enable_shared_from_this gr_make_constellation (std::vector constellation); }; -class gr_constellation_sector; -typedef boost::shared_ptr gr_constellation_sector_sptr; - -// public constructor -gr_constellation_sector_sptr -gr_make_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); +/************************************************************/ +/* gr_constellation_sector */ +/* */ +/* An abstract class. */ +/* Constellation space is divided into sectors. */ +/* Each sector is associated with the nearest constellation */ +/* point. */ +/************************************************************/ class gr_constellation_sector : public gr_constellation { public: - gr_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); + gr_constellation_sector (std::vector constellation, + unsigned int n_sectors); unsigned int decision_maker (gr_complex sample); - protected: + // protected: - virtual unsigned int get_sector (gr_complex sample); + virtual unsigned int get_sector (gr_complex sample) = 0; - virtual unsigned int calc_sector_value (unsigned int sector); + virtual unsigned int calc_sector_value (unsigned int sector) = 0; void find_sector_values (); - private: + unsigned int n_sectors; + + // private: std::vector sector_values; - unsigned int n_sectors; + +}; + +/************************************************************/ +/* gr_constellation_rect */ +/* */ +/* Constellation space is divided into rectangular sectors. */ +/* Each sector is associated with the nearest constellation */ +/* point. */ +/* Works well for square QAM. */ +/* Works for any generic constellation provided sectors are */ +/* not too large. */ +/************************************************************/ + +class gr_constellation_rect; +typedef boost::shared_ptr gr_constellation_rect_sptr; + +// public constructor +gr_constellation_rect_sptr +gr_make_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + +class gr_constellation_rect : public gr_constellation_sector +{ + public: + + gr_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + + // protected: + + unsigned int get_sector (gr_complex sample); + + unsigned int calc_sector_value (unsigned int sector); + + // private: + unsigned int n_real_sectors; unsigned int n_imag_sectors; float d_width_real_sectors; float d_width_imag_sectors; - friend gr_constellation_sector_sptr - gr_make_constellation_sector (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, + friend gr_constellation_rect_sptr + gr_make_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); }; +/************************************************************/ +/* gr_constellation_psk */ +/* */ +/* Constellation space is divided into pie slices sectors. */ +/* Each slice is associated with the nearest constellation */ +/* point. */ +/* Works well for PSK but nothing else. */ +/* Assumes that there is a constellation point at 1. */ +/************************************************************/ + +class gr_constellation_psk; +typedef boost::shared_ptr gr_constellation_psk_sptr; + +// public constructor +gr_constellation_psk_sptr +gr_make_constellation_psk (std::vector constellation, unsigned int n_sectors); + +class gr_constellation_psk : public gr_constellation_sector +{ + public: + + gr_constellation_psk (std::vector constellation, unsigned int n_sectors); + + // protected: + + unsigned int get_sector (gr_complex sample); + + unsigned int calc_sector_value (unsigned int sector); + + // private: + + friend gr_constellation_psk_sptr + gr_make_constellation_psk (std::vector constellation, unsigned int n_sectors); + +}; + #endif diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index bdc5436f2..2d15b8b1e 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -40,19 +40,19 @@ public: gr_constellation_sptr base (); }; -class gr_constellation_sector; -typedef boost::shared_ptr gr_constellation_sector_sptr; -%template(gr_constellation_sector_sptr) boost::shared_ptr; -%rename(constellation_sector) gr_make_constellation_sector; -gr_constellation_sector_sptr gr_make_constellation_sector(std::vector constellation_sector, +class gr_constellation_rect; +typedef boost::shared_ptr gr_constellation_rect_sptr; +%template(gr_constellation_rect_sptr) boost::shared_ptr; +%rename(constellation_rect) gr_make_constellation_rect; +gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); -%ignore gr_constellation_sector; +%ignore gr_constellation_rect; -class gr_constellation_sector : public gr_constellation +class gr_constellation_rect : public gr_constellation_sector { public: - gr_constellation_sector (std::vector constellation, + gr_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); std::vector points (); @@ -60,3 +60,29 @@ public: unsigned int bits_per_symbol (); gr_constellation_sptr base (); }; + +class gr_constellation_psk; +typedef boost::shared_ptr gr_constellation_psk_sptr; +%template(gr_constellation_psk_sptr) boost::shared_ptr; +%rename(constellation_psk) gr_make_constellation_psk; +gr_constellation_psk_sptr gr_make_constellation_psk(std::vector constellation, + unsigned int n_sectors); +%ignore gr_constellation_psk; + +class gr_constellation_psk : public gr_constellation_sector +{ +public: + gr_constellation_psk (std::vector constellation, + unsigned int n_sectors); + std::vector points (); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); + + gr_constellation_sptr base (); + + unsigned int get_sector (gr_complex sample); + unsigned int calc_sector_value (unsigned int sector); + void find_sector_values (); + unsigned int n_sectors; + std::vector sector_values; +}; diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index 45d0c628c..f7e92442f 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -57,6 +57,7 @@ grblkspython_PYTHON = \ pfb_interpolator.py \ pkt.py \ psk.py \ + psk2.py \ qam.py \ rational_resampler.py \ standard_squelch.py \ diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index 90dcac971..933de9113 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -25,11 +25,9 @@ Generic modulation and demodulation. """ -from gnuradio import gr, gru, modulation_utils2 -from math import pi, sqrt -import psk -import cmath -from pprint import pprint +from gnuradio import gr +from gnuradio.modulation_utils2 import extract_kwargs_from_options_for_class +from gnuradio.utils.gray_code import gray_code, inverse_gray_code # default values (used in __init__ and add_options) _def_samples_per_symbol = 2 @@ -47,6 +45,27 @@ _def_timing_max_dev = 1.5 _def_phase_alpha = 0.1 # Number of points in constellation _def_constellation_points = 16 +# Whether differential coding is used. +_def_differential = True +_def_gray_coded = True + +def add_common_options(parser): + """ + Sets options common to both modulator and demodulator. + """ + parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, + help="set the number of constellation points (must be a power of 2 (power of 4 for QAM) [default=%default]") + parser.add_option("", "--differential", action="store_true", dest="differential", default=True, + help="use differential encoding [default=%default]") + parser.add_option("", "--not-differential", action="store_false", dest="differential", + help="do not use differential encoding [default=%default]") + parser.add_option("", "--gray-coded", action="store_true", dest="gray_coded", default=True, + help="use gray code [default=%default]") + parser.add_option("", "--not-gray-coded", action="store_false", dest="gray_coded", + help="do not use gray code [default=%default]") + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default]") + # ///////////////////////////////////////////////////////////////////////////// # Generic modulator @@ -55,6 +74,8 @@ _def_constellation_points = 16 class generic_mod(gr.hier_block2): def __init__(self, constellation, + differential=_def_differential, + gray_coded=_def_gray_coded, samples_per_symbol=_def_samples_per_symbol, excess_bw=_def_excess_bw, verbose=_def_verbose, @@ -84,6 +105,8 @@ class generic_mod(gr.hier_block2): self._constellation = constellation.base() self._samples_per_symbol = samples_per_symbol self._excess_bw = excess_bw + self._differential = differential + self._gray_coded = gray_coded if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) @@ -96,7 +119,11 @@ class generic_mod(gr.hier_block2): self.bytes2chunks = \ gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - self.diffenc = gr.diff_encoder_bb(arity) + if gray_coded: + self.symbol_mapper = gr.map_bb(gray_code(arity)) + + if differential: + self.diffenc = gr.diff_encoder_bb(arity) self.chunks2symbols = gr.chunks_to_symbols_bc(self._constellation.points()) @@ -112,8 +139,13 @@ class generic_mod(gr.hier_block2): self.rrc_taps) # Connect - self.connect(self, self.bytes2chunks, self.diffenc, - self.chunks2symbols, self.rrc_filter, self) + blocks = [self, self.bytes2chunks] + if gray_coded: + blocks.append(self.symbol_mapper) + if differential: + blocks.append(self.diffenc) + blocks += [self.chunks2symbols, self.rrc_filter, self] + self.connect(*blocks) if verbose: self._print_verbage() @@ -132,19 +164,15 @@ class generic_mod(gr.hier_block2): """ Adds generic modulation options to the standard parser """ - parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, - help="set the number of constellation points (must be a power of 4 for QAM) [default=%default]") - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default]") + add_common_options(parser) add_options=staticmethod(add_options) - def extract_kwargs_from_options(options): + def extract_kwargs_from_options(cls, options): """ Given command line options, create dictionary suitable for passing to __init__ """ - return modulation_utils2.extract_kwargs_from_options( - generic_mod.__init__, ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + return extract_kwargs_from_options_for_class(cls, options) + extract_kwargs_from_options=classmethod(extract_kwargs_from_options) def _print_verbage(self): @@ -156,8 +184,12 @@ class generic_mod(gr.hier_block2): print "Modulation logging turned on." self.connect(self.bytes2chunks, gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) - self.connect(self.diffenc, - gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + if self._gray_coded: + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) + if self._differential: + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) self.connect(self.chunks2symbols, gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) self.connect(self.rrc_filter, @@ -175,6 +207,8 @@ class generic_demod(gr.hier_block2): def __init__(self, constellation, samples_per_symbol=_def_samples_per_symbol, + differential=_def_differential, + gray_coded=_def_gray_coded, excess_bw=_def_excess_bw, freq_alpha=_def_freq_alpha, timing_alpha=_def_timing_alpha, @@ -221,7 +255,9 @@ class generic_demod(gr.hier_block2): self._timing_alpha = timing_alpha self._timing_beta = _def_timing_beta self._timing_max_dev=timing_max_dev - + self._differential = differential + self._gray_coded = gray_coded + if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) @@ -255,9 +291,13 @@ class generic_demod(gr.hier_block2): self._constellation, self._phase_alpha, self._phase_beta, fmin, fmax) - + # Do differential decoding based on phase change of symbols - self.diffdec = gr.diff_decoder_bb(arity) + if differential: + self.diffdec = gr.diff_decoder_bb(arity) + + if gray_coded: + self.symbol_mapper = gr.map_bb(inverse_gray_code(arity)) # unpack the k bit vector into a stream of bits self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) @@ -269,8 +309,13 @@ class generic_demod(gr.hier_block2): self._setup_logging() # Connect and Initialize base class - self.connect(self, self.agc, self.freq_recov, self.time_recov, self.receiver, - self.diffdec, self.unpack, self) + blocks = [self, self.agc, self.freq_recov, self.time_recov, self.receiver] + if differential: + blocks.append(self.diffdec) + if gray_coded: + blocks.append(self.symbol_mapper) + blocks += [self.unpack, self] + self.connect(*blocks) def samples_per_symbol(self): return self._samples_per_symbol @@ -317,8 +362,12 @@ class generic_demod(gr.hier_block2): gr.file_sink(gr.sizeof_float, "rx_receiver_phase.dat")) self.connect((self.receiver, 3), gr.file_sink(gr.sizeof_float, "rx_receiver_freq.dat")) - self.connect(self.diffdec, - gr.file_sink(gr.sizeof_char, "rx_diffdec.dat")) + if self._differential: + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_char, "rx_diffdec.dat")) + if self._gray_coded: + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) self.connect(self.unpack, gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) @@ -326,10 +375,9 @@ class generic_demod(gr.hier_block2): """ Adds generic demodulation options to the standard parser """ - parser.add_option("-p", "--constellation-points", type="int", default=_def_constellation_points, - help="set the number of constellation points (must be a power of 4 for QAM) [default=%default]") - parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, - help="set RRC excess bandwith factor [default=%default]") + # Add options shared with modulator. + add_common_options(parser) + # Add options specific to demodulator. parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, help="set frequency lock loop alpha gain value [default=%default]") parser.add_option("", "--phase-alpha", type="float", default=_def_phase_alpha, @@ -342,15 +390,10 @@ class generic_demod(gr.hier_block2): help="set timing symbol sync loop maximum deviation [default=%default]") add_options=staticmethod(add_options) - def extract_kwargs_from_options(options): + def extract_kwargs_from_options(cls, options): """ Given command line options, create dictionary suitable for passing to __init__ """ - return modulation_utils2.extract_kwargs_from_options( - generic_demod.__init__, ('self',), options) - extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) -## -# Add these to the mod/demod registry -# -#modulation_utils2.add_type_1_mod('generic', generic_mod) -#modulation_utils2.add_type_1_demod('generic', generic_demod) + return extract_kwargs_from_options_for_class(cls, options) + extract_kwargs_from_options=classmethod(extract_kwargs_from_options) + diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py new file mode 100644 index 000000000..4fd2c77fe --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py @@ -0,0 +1,100 @@ +# +# Copyright 2005,2006 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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. +# + +""" +PSK modulation and demodulation. +""" + +from math import pi, log +from cmath import exp + +from gnuradio import gr, modulation_utils2 +from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod + +# Default number of points in constellation. +_def_constellation_points = 4 +# Whether differential coding is used. +_def_differential = True + +# ///////////////////////////////////////////////////////////////////////////// +# PSK constellation +# ///////////////////////////////////////////////////////////////////////////// + +def psk_constellation(m=_def_constellation_points): + """ + Creates a PSK constellation object. + """ + k = log(m) / log(2.0) + if (k != int(k)): + raise StandardError('Number of constellation points must be a power of two.') + points = [exp(2*pi*(0+1j)*i/m) for i in range(0,m)] + constellation = gr.constellation_psk(points, m) + return constellation + +# ///////////////////////////////////////////////////////////////////////////// +# PSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class psk_mod(generic_mod): + + def __init__(self, constellation_points=_def_constellation_points, + *args, **kwargs): + + """ + Hierarchical block for RRC-filtered PSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + See generic_mod block for list of parameters. + """ + + constellation = psk_constellation(constellation_points) + super(psk_mod, self).__init__(constellation, *args, **kwargs) + +# ///////////////////////////////////////////////////////////////////////////// +# PSK demodulator +# +# ///////////////////////////////////////////////////////////////////////////// + +class psk_demod(generic_demod): + + def __init__(self, constellation_points=_def_constellation_points, + *args, **kwargs): + + """ + Hierarchical block for RRC-filtered PSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + See generic_demod block for list of parameters. + """ + + constellation = psk_constellation(constellation_points) + super(psk_demod, self).__init__(constellation, *args, **kwargs) + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('psk', psk_mod) +modulation_utils2.add_type_1_demod('psk', psk_demod) +modulation_utils2.add_type_1_constellation('psk', psk_constellation) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index b6096d2cb..220a3f62f 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -25,12 +25,17 @@ QAM modulation and demodulation. from math import pi, sqrt, log -from gnuradio import gr, gru, modulation_utils2 +from gnuradio import gr, modulation_utils2 from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod from gnuradio.utils.gray_code import gray_code # Default number of points in constellation. _def_constellation_points = 16 +# Whether the quadrant bits are coded differentially. +_def_differential = True +# Whether gray coding is used. If differential is True then gray +# coding is used within but not between each quadrant. +_def_gray_coded = True def is_power_of_four(x): v = log(x)/log(4) @@ -47,13 +52,16 @@ def get_bits(x, n, k): # Remove all bits bigger than n+k-1 return v % pow(2, k) -def make_constellation(m): +def make_differential_constellation(m, gray_coded=_def_gray_coded): """ Create a constellation with m possible symbols where m must be a power of 4. Points are laid out in a square grid. + Bits referring to the quadrant are differentilly encoded, + remaining bits are gray coded. + """ sqrtm = pow(m, 0.5) if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): @@ -63,10 +71,13 @@ def make_constellation(m): # First create a constellation for one quadrant containing m/4 points. # The quadrant has 'side' points along each side of a quadrant. side = int(sqrtm/2) - # Number rows and columns using gray codes. - gcs = gray_code(side) - # Get inverse gray codes. - i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + if gray_coded: + # Number rows and columns using gray codes. + gcs = gray_code(side) + # Get inverse gray codes. + i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + else: + i_gcs = dict([(i, i) for i in range(0, side)]) # The distance between points is found. step = 1/(side-0.5) @@ -100,19 +111,51 @@ def make_constellation(m): return const_map +def make_not_differential_constellation(m, gray_coded=_def_gray_coded): + side = pow(m, 0.5) + if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): + raise ValueError("m must be a power of 4 integer.") + # Each symbol holds k bits. + k = int(log(m) / log(2.0)) + if gray_coded: + # Number rows and columns using gray codes. + gcs = gray_code(side) + # Get inverse gray codes. + i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + else: + i_gcs = dict([(i, i) for i in range(0, m)]) + # The distance between points is found. + step = 2/(side-1) + + gc_to_x = [-1 + i_gcs[gc]*step for gc in range(0, side)] + + # First k/2 bits determine x position. + # Following k/2 bits determine y position. + const_map = [] + for i in range(m): + y = gc_to_x(get_bits(i, 0, k/2)) + x = gc_to_x(get_bits(i, k/2, k/2)) + const_map.append(complex(x,y)) + + return const_map # ///////////////////////////////////////////////////////////////////////////// # QAM constellation # ///////////////////////////////////////////////////////////////////////////// -def qam_constellation(constellation_points=_def_constellation_points): +def qam_constellation(constellation_points=_def_constellation_points, + differential=_def_differential, + gray_coded=_def_gray_coded,): """ Creates a QAM constellation object. """ - points = make_constellation(constellation_points) + if differential: + points = make_differential_constellation(constellation_points, gray_coded) + else: + points = make_not_differential_constellation(constellation_points, gray_coded) side = int(sqrt(constellation_points)) width = 2.0/(side-1) - constellation = gr.constellation_sector(points, side, side, width, width) + constellation = gr.constellation_rect(points, side, side, width, width) return constellation # ///////////////////////////////////////////////////////////////////////////// @@ -121,7 +164,10 @@ def qam_constellation(constellation_points=_def_constellation_points): class qam_mod(generic_mod): - def __init__(self, constellation_points=_def_constellation_points, *args, **kwargs): + def __init__(self, constellation_points=_def_constellation_points, + differential=_def_differential, + gray_coded=_def_gray_coded, + *args, **kwargs): """ Hierarchical block for RRC-filtered QAM modulation. @@ -132,10 +178,11 @@ class qam_mod(generic_mod): See generic_mod block for list of parameters. """ - if not isinstance(constellation_points, int) or not is_power_of_four(constellation_points): - raise ValueError("number of constellation points must be a power of four.") - constellation = qam_constellation(constellation_points) - super(qam_mod, self).__init__(constellation, *args, **kwargs) + constellation = qam_constellation(constellation_points, differential, gray_coded) + # We take care of the gray coding in the constellation generation so it doesn't + # need to be done in the block. + super(qam_mod, self).__init__(constellation, differential=differential, + gray_coded=False, *args, **kwargs) # ///////////////////////////////////////////////////////////////////////////// # QAM demodulator @@ -144,7 +191,10 @@ class qam_mod(generic_mod): class qam_demod(generic_demod): - def __init__(self, constellation_points=_def_constellation_points, *args, **kwargs): + def __init__(self, constellation_points=_def_constellation_points, + differential=_def_differential, + gray_coded=_def_gray_coded, + *args, **kwargs): """ Hierarchical block for RRC-filtered QAM modulation. @@ -154,12 +204,18 @@ class qam_demod(generic_demod): See generic_demod block for list of parameters. """ - - constellation = qam_constellation(constellation_points) - super(qam_demod, self).__init__(constellation, *args, **kwargs) + print(args) + print(kwargs) + constellation = qam_constellation(constellation_points, differential, gray_coded) + # We take care of the gray coding in the constellation generation so it doesn't + # need to be done in the block. + super(qam_demod, self).__init__(constellation, differential=differential, + gray_coded=False, + *args, **kwargs) # # Add these to the mod/demod registry # modulation_utils2.add_type_1_mod('qam', qam_mod) modulation_utils2.add_type_1_demod('qam', qam_demod) +modulation_utils2.add_type_1_constellation('qam', qam_constellation) diff --git a/gnuradio-core/src/python/gnuradio/modulation_utils2.py b/gnuradio-core/src/python/gnuradio/modulation_utils2.py index c5dba3e79..f30055f4a 100644 --- a/gnuradio-core/src/python/gnuradio/modulation_utils2.py +++ b/gnuradio-core/src/python/gnuradio/modulation_utils2.py @@ -47,6 +47,15 @@ def type_1_demods(): def add_type_1_demod(name, demod_class): _type_1_demodulators[name] = demod_class +# Also record the constellation making functions of the modulations +_type_1_constellations = {} + +def type_1_constellations(): + return _type_1_constellations + +def add_type_1_constellation(name, constellation): + _type_1_constellations[name] = constellation + def extract_kwargs_from_options(function, excluded_args, options): """ @@ -79,3 +88,14 @@ def extract_kwargs_from_options(function, excluded_args, options): if getattr(options, kw) is not None: d[kw] = getattr(options, kw) return d + +def extract_kwargs_from_options_for_class(cls, options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + d = extract_kwargs_from_options( + cls.__init__, ('self',), options) + for base in cls.__bases__: + if hasattr(base, 'extract_kwargs_from_options'): + d.update(base.extract_kwargs_from_options(options)) + return d diff --git a/gnuradio-core/src/python/gnuradio/utils/gray_code.py b/gnuradio-core/src/python/gnuradio/utils/gray_code.py index af8b8cd14..7d3e0fcb8 100644 --- a/gnuradio-core/src/python/gnuradio/utils/gray_code.py +++ b/gnuradio-core/src/python/gnuradio/utils/gray_code.py @@ -29,16 +29,23 @@ class GrayCodeGenerator(object): if self.i == self.lp2: # if i is a power of two then gray number is of form 1100000... result = self.i + self.i/2 - else: - # if not we take advantage of the symmetry of all but the last bit - # around a power of two. - result = self.gcs[2*self.lp2-1-self.i] + self.lp2 - self.gcs.append(result) - self.i += 1 - if self.i == self.np2: - self.lp2 = self.i - self.np2 = self.i*2 + else: + # if not we take advantage of the symmetry of all but the last bit + # around a power of two. + result = self.gcs[2*self.lp2-1-self.i] + self.lp2 + self.gcs.append(result) + self.i += 1 + if self.i == self.np2: + self.lp2 = self.i + self.np2 = self.i*2 _gray_code_generator = GrayCodeGenerator() gray_code = _gray_code_generator.get_gray_code + +def inverse_gray_code(length): + gc = enumerate(gray_code(length)) + igc = [(b, a) for (a, b) in gc] + igc.sort() + return [a for (b, a) in igc] + -- cgit From 19f4afaa4e3871e4a709e2774393bba6b6f6759a Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 23 Jan 2011 21:43:42 -0700 Subject: Fixed minor bug in fsm.cc for fsms with 1 state. --- gr-trellis/src/lib/fsm.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gr-trellis/src/lib/fsm.cc b/gr-trellis/src/lib/fsm.cc index 5950b56b9..889a3918b 100644 --- a/gr-trellis/src/lib/fsm.cc +++ b/gr-trellis/src/lib/fsm.cc @@ -417,7 +417,7 @@ void fsm::generate_TM() done = find_es(s); attempts ++; } - if (done == false) { + if (done == false and d_S > 1) { //throw std::runtime_error ("fsm::generate_TM(): FSM appears to be disconnected\n"); printf("fsm::generate_TM(): FSM appears to be disconnected\n"); printf("state %d cannot be reached from all other states\n",s); -- cgit From 7323d193b541e009666b2f5a7ea5b8cd05646a8a Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 27 Jan 2011 12:06:14 -0700 Subject: Minor typo in comments. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 9a6cde9a2..fc80d2961 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -47,7 +47,7 @@ class gr_fir_ccf; * derivative of the filtered signal, which in turn maximizes the SNR and * minimizes ISI. * - * This approach works by setting up two filterbanks; one filterbanke contains the + * This approach works by setting up two filterbanks; one filterbank contains the * signal's pulse shaping matched filter (such as a root raised cosine filter), * where each branch of the filterbank contains a different phase of the filter. * The second filterbank contains the derivatives of the filters in the first -- cgit From f6547e103e6cae44ff2a81b0f83675ccc897f2e9 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Thu, 27 Jan 2011 12:36:31 -0700 Subject: Minor changes to a benchmark example in gnuradio-examples/python/digital. --- .../python/digital/benchmark_qt_loopback2.py | 25 ++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py index 02ae4b25f..a36f4fbd4 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback2.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback2.py @@ -20,11 +20,11 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gru, modulation_utils2 +from gnuradio import gr, modulation_utils2 from gnuradio import eng_notation from gnuradio.eng_option import eng_option from optparse import OptionParser -import random, time, struct, sys, os, math +import struct, sys, math from threading import Thread @@ -319,6 +319,13 @@ class my_top_block(gr.top_block): # Connect components self.connect(self.txpath, self.throttle, self.rxpath) + if options.verbose: + self._print_verbage() + + if options.log: + self._setup_logging() + + # System Parameters @@ -396,6 +403,15 @@ class my_top_block(gr.top_block): self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_freq/10.0) #self.rxpath.packet_receiver._demodulator.freq_recov.set_beta(self._gain_fre_beta) + def _print_verbage(self): + print "\nChannel:" + print "SNR: %d" % self.snr() + print "Noise voltage: %.2e" % self.get_noise_voltage(self.snr()) + print "Frequency offset: %.2e" % self.frequency_offset() + print "Timing offset: %.2e" % self.timing_offset() + + def _setup_logging(self): + pass # ///////////////////////////////////////////////////////////////////////////// # Thread to handle the packet sending procedure @@ -466,7 +482,7 @@ def main(): channel_grp = parser.add_option_group("Channel") parser.add_option("-m", "--modulation", type="choice", choices=mods.keys(), - default='dbpsk2', + default='psk', help="Select modulation from: %s [default=%%default]" % (', '.join(mods.keys()),)) @@ -512,6 +528,7 @@ def main(): tb = my_top_block(mods[options.modulation], demods[options.modulation], rx_callback, options) + tb.start() packet_sender = th_send(send_pkt, options.megabytes, options.size) @@ -527,7 +544,7 @@ def main(): packet_sender.join(1) except KeyboardInterrupt: packet_sender.stop() - + if __name__ == '__main__': try: -- cgit From 44ad2b33d0b86f0ffe95d025fefa2c774cf80c85 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 30 Jan 2011 13:36:24 -0700 Subject: Fixed Makefiles to generate swig_doc.i --- Makefile.swig.gen.t | 2 +- gnuradio-core/src/lib/swig/Makefile.am | 3 +- gnuradio-core/src/lib/swig/Makefile.swig.gen | 12 +- gnuradio-core/src/lib/swig/swig_doc.i | 2778 ++++++++++++++++++++++---- gr-atsc/src/lib/Makefile.swig.gen | 2 +- gr-audio-alsa/src/Makefile.swig.gen | 2 +- gr-audio-oss/src/Makefile.swig.gen | 2 +- gr-cvsd-vocoder/src/lib/Makefile.swig.gen | 2 +- gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen | 2 +- gr-msdd6000/src/Makefile.swig.gen | 4 +- gr-noaa/swig/Makefile.swig.gen | 2 +- gr-pager/swig/Makefile.swig.gen | 2 +- gr-qtgui/src/lib/Makefile.swig.gen | 2 +- gr-radio-astronomy/src/lib/Makefile.swig.gen | 2 +- gr-trellis/src/lib/Makefile.swig.gen | 2 +- gr-usrp/src/Makefile.swig.gen | 2 +- gr-usrp2/src/Makefile.swig.gen | 2 +- gr-video-sdl/src/Makefile.swig.gen | 2 +- usrp/host/swig/Makefile.swig.gen | 2 +- 19 files changed, 2441 insertions(+), 386 deletions(-) diff --git a/Makefile.swig.gen.t b/Makefile.swig.gen.t index 4d37e0e21..a3c1e289d 100644 --- a/Makefile.swig.gen.t +++ b/Makefile.swig.gen.t @@ -105,7 +105,7 @@ _@NAME@_la_CXXFLAGS = \ $(@NAME@_la_swig_cxxflags) python/@NAME@.cc: @NAME@.py -@NAME@.py: @NAME@.i +@NAME@.py: @NAME@.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/@NAME@.d diff --git a/gnuradio-core/src/lib/swig/Makefile.am b/gnuradio-core/src/lib/swig/Makefile.am index f8e7640ae..8eaceb6fa 100644 --- a/gnuradio-core/src/lib/swig/Makefile.am +++ b/gnuradio-core/src/lib/swig/Makefile.am @@ -45,7 +45,8 @@ TOP_SWIG_IFILES = \ swiginclude_HEADERS = \ gnuradio.i \ gr_swig_block_magic.i \ - gr_shared_ptr.i + gr_shared_ptr.i \ + swig_doc.i # SWIG headers that get installed in ${prefix}/include/gnuradio/swig/... nobase_swiginclude_HEADERS = \ diff --git a/gnuradio-core/src/lib/swig/Makefile.swig.gen b/gnuradio-core/src/lib/swig/Makefile.swig.gen index 0c3247565..349ad17d8 100644 --- a/gnuradio-core/src/lib/swig/Makefile.swig.gen +++ b/gnuradio-core/src/lib/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _gnuradio_core_runtime_la_CXXFLAGS = \ $(gnuradio_core_runtime_la_swig_cxxflags) python/gnuradio_core_runtime.cc: gnuradio_core_runtime.py -gnuradio_core_runtime.py: gnuradio_core_runtime.i +gnuradio_core_runtime.py: gnuradio_core_runtime.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_runtime.d @@ -250,7 +250,7 @@ _gnuradio_core_general_la_CXXFLAGS = \ $(gnuradio_core_general_la_swig_cxxflags) python/gnuradio_core_general.cc: gnuradio_core_general.py -gnuradio_core_general.py: gnuradio_core_general.i +gnuradio_core_general.py: gnuradio_core_general.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_general.d @@ -395,7 +395,7 @@ _gnuradio_core_gengen_la_CXXFLAGS = \ $(gnuradio_core_gengen_la_swig_cxxflags) python/gnuradio_core_gengen.cc: gnuradio_core_gengen.py -gnuradio_core_gengen.py: gnuradio_core_gengen.i +gnuradio_core_gengen.py: gnuradio_core_gengen.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_gengen.d @@ -540,7 +540,7 @@ _gnuradio_core_filter_la_CXXFLAGS = \ $(gnuradio_core_filter_la_swig_cxxflags) python/gnuradio_core_filter.cc: gnuradio_core_filter.py -gnuradio_core_filter.py: gnuradio_core_filter.i +gnuradio_core_filter.py: gnuradio_core_filter.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_filter.d @@ -685,7 +685,7 @@ _gnuradio_core_io_la_CXXFLAGS = \ $(gnuradio_core_io_la_swig_cxxflags) python/gnuradio_core_io.cc: gnuradio_core_io.py -gnuradio_core_io.py: gnuradio_core_io.i +gnuradio_core_io.py: gnuradio_core_io.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_io.d @@ -830,7 +830,7 @@ _gnuradio_core_hier_la_CXXFLAGS = \ $(gnuradio_core_hier_la_swig_cxxflags) python/gnuradio_core_hier.cc: gnuradio_core_hier.py -gnuradio_core_hier.py: gnuradio_core_hier.i +gnuradio_core_hier.py: gnuradio_core_hier.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gnuradio_core_hier.d diff --git a/gnuradio-core/src/lib/swig/swig_doc.i b/gnuradio-core/src/lib/swig/swig_doc.i index e74f762f7..ed8242766 100644 --- a/gnuradio-core/src/lib/swig/swig_doc.i +++ b/gnuradio-core/src/lib/swig/swig_doc.i @@ -1270,6 +1270,82 @@ bitwise boolean and across all input streams. Params: (NONE)" +%feature("docstring") gr_annotator_1to1 "1-to-1 stream annotator testing block. FOR TESTING PURPOSES ONLY. + +This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the 1-to-1 policy. + +It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. + +This block is only meant for testing and showing how to use the tags." + +%feature("docstring") gr_annotator_1to1::~gr_annotator_1to1 " + +Params: (NONE)" + +%feature("docstring") gr_annotator_1to1::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_annotator_1to1::data " + +Params: (NONE)" + +%feature("docstring") gr_annotator_1to1::gr_annotator_1to1 " + +Params: (when, sizeof_stream_item)" + +%feature("docstring") gr_make_annotator_1to1 "Creates a annotator_1to1 block. + +1-to-1 stream annotator testing block. FOR TESTING PURPOSES ONLY. + +This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the 1-to-1 policy. + +It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. + +This block is only meant for testing and showing how to use the tags. + +Params: (when, sizeof_stream_item)" + +%feature("docstring") gr_annotator_alltoall "All-to-all stream annotator testing block. FOR TESTING PURPOSES ONLY. + +This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the all-to-all policy. + +It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. + +This block is only meant for testing and showing how to use the tags." + +%feature("docstring") gr_annotator_alltoall::~gr_annotator_alltoall " + +Params: (NONE)" + +%feature("docstring") gr_annotator_alltoall::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_annotator_alltoall::data " + +Params: (NONE)" + +%feature("docstring") gr_annotator_alltoall::gr_annotator_alltoall " + +Params: (when, sizeof_stream_item)" + +%feature("docstring") gr_make_annotator_alltoall "Creates a annotator_alltoall block. + +All-to-all stream annotator testing block. FOR TESTING PURPOSES ONLY. + +This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the all-to-all policy. + +It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. + +This block is only meant for testing and showing how to use the tags. + +Params: (when, sizeof_stream_item)" + %feature("docstring") gr_argmax_fs::gr_argmax_fs " @@ -1476,6 +1552,28 @@ Params: (how_many_items)" Params: (msg)" +%feature("docstring") gr_block_detail::nitems_read " + +Params: (which_input)" + +%feature("docstring") gr_block_detail::nitems_written " + +Params: (which_output)" + +%feature("docstring") gr_block_detail::add_item_tag "Adds a new tag to the given output stream. + +This takes the input parameters and builds a PMT tuple from it. It then calls gr_buffer::add_item_tag(pmt::pmt_t t), which appends the tag onto its deque. + +Params: (which_output, abs_offset, key, value, srcid)" + +%feature("docstring") gr_block_detail::get_tags_in_range "Given a [start,end), returns a vector of all tags in the range. + +Pass-through function to gr_buffer_reader to get a vector of tags in given range. Range of counts is from start to end-1. + +Tags are tuples of: (item count, source id, key, value) + +Params: (v, which_input, abs_start, abs_end)" + %feature("docstring") gr_block_detail::gr_block_detail " Params: (ninputs, noutputs)" @@ -1536,6 +1634,26 @@ Params: (index)" Params: (NONE)" +%feature("docstring") gr_buffer::nitems_written " + +Params: (NONE)" + +%feature("docstring") gr_buffer::add_item_tag "Adds a new tag to the buffer. + +Params: (tag)" + +%feature("docstring") gr_buffer::prune_tags "Removes all tags before from buffer. + +Params: (max_time)" + +%feature("docstring") gr_buffer::get_tags_begin " + +Params: (NONE)" + +%feature("docstring") gr_buffer::get_tags_end " + +Params: (NONE)" + %feature("docstring") gr_buffer::index_add " Params: (a, b)" @@ -1567,6 +1685,28 @@ Single writer, multiple reader fifo. Params: (nitems, sizeof_item, link)" +%feature("docstring") gr_burst_tagger "output[i] = input[i]" + +%feature("docstring") gr_burst_tagger::gr_burst_tagger " + +Params: (itemsize)" + +%feature("docstring") gr_burst_tagger::~gr_burst_tagger " + +Params: (NONE)" + +%feature("docstring") gr_burst_tagger::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_burst_tagger "Creates a burst_tagger block. + +output[i] = input[i] + +Params: (itemsize)" + %feature("docstring") gr_bytes_to_syms "Convert stream of bytes to stream of +/- 1 symbols input: stream of bytes; output: stream of float. @@ -2355,6 +2495,34 @@ output = complex conjugate of input Params: (NONE)" + + +%feature("docstring") gr_constellation::gr_constellation " + +Params: (constellation)" + +%feature("docstring") gr_constellation::points "Returns the set of points in this constellation. + +Params: (NONE)" + +%feature("docstring") gr_constellation::decision_maker "Returns the constellation point that matches best. Also calculates the phase error. + +Params: (sample)" + +%feature("docstring") gr_constellation::bits_per_symbol " + +Params: (NONE)" + +%feature("docstring") gr_constellation::base " + +Params: (NONE)" + +%feature("docstring") gr_make_constellation "Creates a constellation block. + + + +Params: (constellation)" + %feature("docstring") gr_constellation_decoder_cb "Constellation Decoder." %feature("docstring") gr_constellation_decoder_cb::gr_constellation_decoder_cb " @@ -2381,6 +2549,128 @@ Constellation Decoder. Params: (sym_position, sym_value_out)" + + +%feature("docstring") gr_constellation_psk::gr_constellation_psk " + +Params: (constellation, n_sectors)" + +%feature("docstring") gr_constellation_psk::get_sector " + +Params: (sample)" + +%feature("docstring") gr_constellation_psk::calc_sector_value " + +Params: (sector)" + +%feature("docstring") gr_make_constellation_psk "Creates a constellation_psk block. + + + +Params: (constellation, n_sectors)" + +%feature("docstring") gr_constellation_receiver_cb "This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. + +This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. + +The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. + +The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: + +G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + +This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise." + +%feature("docstring") gr_constellation_receiver_cb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_constellation_receiver_cb::alpha "(CL) Returns the value for alpha (the phase gain term) + +Params: (NONE)" + +%feature("docstring") gr_constellation_receiver_cb::beta "(CL) Returns the value of beta (the frequency gain term) + +Params: (NONE)" + +%feature("docstring") gr_constellation_receiver_cb::freq "(CL) Returns the current value of the frequency of the NCO in the Costas loop + +Params: (NONE)" + +%feature("docstring") gr_constellation_receiver_cb::phase "(CL) Returns the current value of the phase of the NCO in the Costal loop + +Params: (NONE)" + +%feature("docstring") gr_constellation_receiver_cb::set_alpha "(CL) Sets the value for alpha (the phase gain term) + +Params: (alpha)" + +%feature("docstring") gr_constellation_receiver_cb::set_beta "(CL) Setss the value of beta (the frequency gain term) + +Params: (beta)" + +%feature("docstring") gr_constellation_receiver_cb::set_freq "(CL) Sets the current value of the frequency of the NCO in the Costas loop + +Params: (freq)" + +%feature("docstring") gr_constellation_receiver_cb::set_phase "(CL) Setss the current value of the phase of the NCO in the Costal loop + +Params: (phase)" + +%feature("docstring") gr_constellation_receiver_cb::gr_constellation_receiver_cb "Constructor to synchronize incoming M-PSK symbols. + +The constructor also chooses which phase detector and decision maker to use in the work loop based on the value of M. + +Params: (constellation, alpha, beta, fmin, fmax)" + +%feature("docstring") gr_constellation_receiver_cb::phase_error_tracking " + +Params: (phase_error)" + +%feature("docstring") gr_constellation_receiver_cb::__attribute__ "delay line plus some length for overflow protection + +Params: ()" + +%feature("docstring") gr_make_constellation_receiver_cb "Creates a constellation_receiver_cb block. + +This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. + +This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. + +The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. + +The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: + +G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller + algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. + +This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise. + +Params: (constellation, alpha, beta, fmin, fmax)" + + + +%feature("docstring") gr_constellation_rect::gr_constellation_rect " + +Params: (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)" + +%feature("docstring") gr_constellation_rect::get_sector " + +Params: (sample)" + +%feature("docstring") gr_constellation_rect::calc_sector_value " + +Params: (sector)" + +%feature("docstring") gr_make_constellation_rect "Creates a constellation_rect block. + + + +Params: (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)" + %feature("docstring") gr_copy "output[i] = input[i] When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor." @@ -4219,6 +4509,14 @@ The user must override work to define the signal processing code Params: (noutput_items, input_items, output_items)" +%feature("docstring") gr_goertzel_fc::set_freq " + +Params: (freq)" + +%feature("docstring") gr_goertzel_fc::set_rate " + +Params: (rate)" + %feature("docstring") gr_make_goertzel_fc "Creates a goertzel_fc block. Goertzel single-bin DFT calculation. @@ -4301,6 +4599,10 @@ Params: (NONE)" Params: (NONE)" +%feature("docstring") gr_hier_block2::to_hier_block2 " + +Params: (NONE)" + %feature("docstring") gr_make_hier_block2 "Creates a hier_block2 block. Hierarchical container class for gr_block's and gr_hier_block2's. @@ -5937,18 +6239,52 @@ random number source Params: (type, ampl, seed)" +%feature("docstring") gr_nonrecursive_convolutional_encoder_bb "Peforms nonrecursive convolutional encoding. ??? + +More detailed description goes here." + +%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::gr_nonrecursive_convolutional_encoder_bb "Constructor to perform nonrecursive convolutional encoding. + +Params: (generator_coeffs)" + +%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::generate_partab " + +Params: (NONE)" + +%feature("docstring") gr_make_nonrecursive_convolutional_encoder_bb "Creates a nonrecursive_convolutional_encoder_bb block. + +Peforms nonrecursive convolutional encoding. ??? + +More detailed description goes here. + +Params: (generator_coeffs)" + %feature("docstring") gr_nop "Does nothing. Used for testing only." %feature("docstring") gr_nop::gr_nop " Params: (sizeof_stream_item)" +%feature("docstring") gr_nop::count_received_msgs " + +Params: (msg)" + %feature("docstring") gr_nop::general_work "compute output items from input items general_work must call consume or consume_each to indicate how many items were consumed on each input stream. Params: (noutput_items, ninput_items, input_items, output_items)" +%feature("docstring") gr_nop::nmsgs_received " + +Params: (NONE)" + %feature("docstring") gr_make_nop "Creates a nop block. Does nothing. Used for testing only. @@ -6895,6 +7231,10 @@ Params: (NONE)" Params: (NONE)" +%feature("docstring") gr_pfb_arb_resampler_ccf::set_rate " + +Params: (rate)" + %feature("docstring") gr_pfb_arb_resampler_ccf::general_work "compute output items from input items general_work must call consume or consume_each to indicate how many items were consumed on each input stream. @@ -7001,13 +7341,13 @@ Params: (numchans, taps, oversample_rate)" This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. -This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. +This approach works by setting up two filterbanks; one filterbank contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. -The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. +The clock sync block needs to know the number of samples per symbol (sps), because it only returns a single point representing the symbol. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. @@ -7077,13 +7417,13 @@ Timing synchronizer using polyphase filterbanks. This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. -This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. +This approach works by setting up two filterbanks; one filterbank contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. -The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. +The clock sync block needs to know the number of samples per symbol (sps), because it only returns a single point representing the symbol. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. @@ -8729,41 +9069,101 @@ inverse of gr_simple_framer (more or less) Params: (payload_bytesize)" -%feature("docstring") gr_simple_framer "add sync field, seq number and command field to payload" +%feature("docstring") gr_simple_correlator_bb "Inverse of simple_framer. Takes a stream of bits from gr_correlate_access_code_bb and returns a stream of items of size payload_bytesize. -%feature("docstring") gr_simple_framer::gr_simple_framer " +input: stream of bits from gr_correlate_access_code_bb output: steam of items of size payload_bytesize. -Params: (payload_bytesize)" +The framer expects a fixed length header of 1 byte giving the packet number. -%feature("docstring") gr_simple_framer::forecast "Estimate input requirements given output request. +The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code." -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. +%feature("docstring") gr_simple_correlator_bb::gr_simple_correlator_bb " -Params: (noutput_items, ninput_items_required)" +Params: (target_queue)" -%feature("docstring") gr_simple_framer::general_work "compute output items from input items +%feature("docstring") gr_simple_correlator_bb::enter_search " -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. +Params: (NONE)" -Params: (noutput_items, ninput_items, input_items, output_items)" +%feature("docstring") gr_simple_correlator_bb::enter_have_sync " -%feature("docstring") gr_make_simple_framer "Creates a simple_framer block. +Params: (NONE)" -add sync field, seq number and command field to payload +%feature("docstring") gr_simple_correlator_bb::enter_have_header " -Params: (payload_bytesize)" +Params: (seq)" -%feature("docstring") gr_simple_squelch_cc "simple squelch block based on average signal power and threshold in dB." +%feature("docstring") gr_simple_correlator_bb::header_ok " -%feature("docstring") gr_simple_squelch_cc::gr_simple_squelch_cc " +Params: (NONE)" -Params: (threshold_db, alpha)" +%feature("docstring") gr_simple_correlator_bb::header_payload " -%feature("docstring") gr_simple_squelch_cc::~gr_simple_squelch_cc " +Params: (seq)" + +%feature("docstring") gr_simple_correlator_bb::~gr_simple_correlator_bb " Params: (NONE)" -%feature("docstring") gr_simple_squelch_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you +%feature("docstring") gr_simple_correlator_bb::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_simple_correlator_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_simple_correlator_bb "Creates a simple_correlator_bb block. + +Inverse of simple_framer. Takes a stream of bits from gr_correlate_access_code_bb and returns a stream of items of size payload_bytesize. + +input: stream of bits from gr_correlate_access_code_bb output: steam of items of size payload_bytesize. + +The framer expects a fixed length header of 1 byte giving the packet number. + +The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code. + +Params: (target_queue)" + +%feature("docstring") gr_simple_framer "add sync field, seq number and command field to payload" + +%feature("docstring") gr_simple_framer::gr_simple_framer " + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_framer::forecast "Estimate input requirements given output request. + +Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. + +Params: (noutput_items, ninput_items_required)" + +%feature("docstring") gr_simple_framer::general_work "compute output items from input items + +general_work must call consume or consume_each to indicate how many items were consumed on each input stream. + +Params: (noutput_items, ninput_items, input_items, output_items)" + +%feature("docstring") gr_make_simple_framer "Creates a simple_framer block. + +add sync field, seq number and command field to payload + +Params: (payload_bytesize)" + +%feature("docstring") gr_simple_squelch_cc "simple squelch block based on average signal power and threshold in dB." + +%feature("docstring") gr_simple_squelch_cc::gr_simple_squelch_cc " + +Params: (threshold_db, alpha)" + +%feature("docstring") gr_simple_squelch_cc::~gr_simple_squelch_cc " + +Params: (NONE)" + +%feature("docstring") gr_simple_squelch_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you The user must override work to define the signal processing code @@ -9189,6 +9589,28 @@ Subtract across all input streams. Params: (vlen)" +%feature("docstring") gr_tagged_file_sink "Write stream to file descriptor." + +%feature("docstring") gr_tagged_file_sink::gr_tagged_file_sink " + +Params: (itemsize, samp_rate)" + +%feature("docstring") gr_tagged_file_sink::~gr_tagged_file_sink " + +Params: (NONE)" + +%feature("docstring") gr_tagged_file_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you + +The user must override work to define the signal processing code + +Params: (noutput_items, input_items, output_items)" + +%feature("docstring") gr_make_tagged_file_sink "Creates a tagged_file_sink block. + +Write stream to file descriptor. + +Params: (itemsize, samp_rate)" + %feature("docstring") gr_test "Test class for testing runtime system (setting up buffers and such.) This block does not do any usefull actual data processing. It just exposes setting all standard block parameters using the contructor or public methods. @@ -9415,6 +9837,10 @@ Params: (NONE)" Params: (NONE)" +%feature("docstring") gr_top_block::to_top_block " + +Params: (NONE)" + %feature("docstring") gr_make_top_block "Creates a top_block block. Top-level hierarchical block representing a flowgraph. @@ -11927,6 +12353,14 @@ output: 1 stream of short. Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" +%feature("docstring") aadvarky_enough " + +Params: (aad)" + +%feature("docstring") main " + +Params: (NONE)" + %feature("docstring") audio_alsa_make_sink "make an alsa audio sink. Params: (sampling_rate, device_name, ok_to_block)" @@ -12035,6 +12469,54 @@ Params: (input, taps, n_2_complex_blocks, result)" Params: (input, taps, n_2_complex_blocks, result)" +%feature("docstring") complex_vec_test0 " + +Params: (NONE)" + +%feature("docstring") complex_vec_test1 " + +Params: (input)" + +%feature("docstring") complex_scalar_test0 " + +Params: (NONE)" + +%feature("docstring") complex_scalar_test1 " + +Params: (input)" + +%feature("docstring") int_vec_test0 " + +Params: (NONE)" + +%feature("docstring") int_vec_test1 " + +Params: (input)" + +%feature("docstring") float_vec_test0 " + +Params: (NONE)" + +%feature("docstring") float_vec_test1 " + +Params: (input)" + +%feature("docstring") getopt " + +Params: (argc, argv, optstring)" + +%feature("docstring") usleep " + +Params: (usec)" + +%feature("docstring") nanosleep " + +Params: (req, rem)" + +%feature("docstring") gettimeofday " + +Params: (tv, tz)" + %feature("docstring") create_atsci_equalizer_nop " Params: (NONE)" @@ -12095,6 +12577,10 @@ Params: (str)" Params: (NONE)" +%feature("docstring") dotprod_ccf_armv7_a " + +Params: (a, b, res, n)" + %feature("docstring") dotprod_fff_altivec " Params: (a, b, n)" @@ -12305,6 +12791,22 @@ Params: (ea)" Params: (p)" +%feature("docstring") __get_cpuid_max " + +Params: (__ext, __sig)" + +%feature("docstring") __get_cpuid " + +Params: (__level, __eax, __ebx, __ecx, __edx)" + +%feature("docstring") __get_cpuid_max " + +Params: (__ext, __sig)" + +%feature("docstring") __get_cpuid " + +Params: (__level, __eax, __ebx, __ecx, __edx)" + %feature("docstring") gcp_fft_1d_r2_submit "Submit a job that computes the forward or inverse FFT. Returns a shared_ptr to a job descriptor which should be passed to wait_job*. Throws an exception in the event of a problem. This uses the FFTW conventions for scaling. That is, neither the forward nor inverse are scaled by 1/fft_length. @@ -12499,18 +13001,6 @@ Params: (NONE)" Params: (x)" -%feature("docstring") gr_gcd " - -Params: (m, n)" - -%feature("docstring") gr_isnan " - -Params: (value)" - -%feature("docstring") gr_signbit " - -Params: (x)" - %feature("docstring") gr_fast_atan2f "Fast arc tangent using table lookup and linear interpolation. This function calculates the angle of the vector (x,y) based on a table lookup and linear interpolation. The table uses a 256 point table covering -45 to +45 degrees and uses symetry to determine the final angle value in the range of -180 to 180 degrees. Note that this function uses the small angle approximation for values close to zero. This routine calculates the arc tangent with an average error of +/- 0.045 degrees. @@ -12614,17 +13104,17 @@ Params: (x, sin, cos)" Params: (x, sin, cos)" -%feature("docstring") gr_tmp_path "return directory portion of pathname used for temporary files. +%feature("docstring") gr_tmp_path "directory to create temporary files Params: (NONE)" -%feature("docstring") ensure_unittest_path " +%feature("docstring") gr_appdata_path "directory to store application data -Params: (grpath, path)" +Params: (NONE)" %feature("docstring") get_unittest_path " -Params: (filename, fullpath, pathsize)" +Params: (filename)" %feature("docstring") gri_add_const_ss "Low-level, high-speed add_const_ss primitive. @@ -12840,6 +13330,14 @@ Params: (which_pp)" Params: (which)" +%feature("docstring") make_psk " + +Params: (gr_constell)" + +%feature("docstring") make_qam " + +Params: (gr_constell)" + %feature("docstring") SWAP " Params: (a, b)" @@ -12912,6 +13410,22 @@ Params: (s, result)" Params: (O, D, TABLE, in, metric, type)" +%feature("docstring") uhd_make_multi_usrp_sink " + +Params: (device_addr, io_type, num_channels)" + +%feature("docstring") uhd_make_multi_usrp_source " + +Params: (device_addr, io_type, num_channels)" + +%feature("docstring") uhd_make_single_usrp_sink " + +Params: (device_addr, io_type, num_channels)" + +%feature("docstring") uhd_make_single_usrp_source " + +Params: (device_addr, io_type, num_channels)" + %feature("docstring") operator<< " Params: (os, x)" @@ -13252,261 +13766,1395 @@ Params: (symbols, mettab, state0, state1)" Params: (state, outbuf)" +%feature("docstring") volk_16s_add_quad_aligned16 " +Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes)" -%feature("docstring") _1200_common::_1200_common " +%feature("docstring") volk_16s_add_quad_aligned16_manual " -Params: (NONE)" +Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes, arch)" -%feature("docstring") _1200_common::~_1200_common " +%feature("docstring") volk_16s_branch_4_state_8_aligned16 " -Params: (NONE)" +Params: (target, src0, permuters, cntl2, cntl3, scalars)" -%feature("docstring") _1200_common::freq_min " +%feature("docstring") volk_16s_branch_4_state_8_aligned16_manual " -Params: (NONE)" +Params: (target, src0, permuters, cntl2, cntl3, scalars, arch)" -%feature("docstring") _1200_common::freq_max " +%feature("docstring") volk_16sc_deinterleave_16s_aligned16 " -Params: (NONE)" +Params: (iBuffer, qBuffer, complexVector, num_points)" +%feature("docstring") volk_16sc_deinterleave_16s_aligned16_manual " +Params: (iBuffer, qBuffer, complexVector, num_points, arch)" -%feature("docstring") _1800_common::_1800_common " +%feature("docstring") volk_16sc_deinterleave_32f_aligned16 " -Params: (NONE)" +Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" -%feature("docstring") _1800_common::~_1800_common " +%feature("docstring") volk_16sc_deinterleave_32f_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, qBuffer, complexVector, scalar, num_points, arch)" -%feature("docstring") _1800_common::freq_min " +%feature("docstring") volk_16sc_deinterleave_real_16s_aligned16 " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points)" -%feature("docstring") _1800_common::freq_max " +%feature("docstring") volk_16sc_deinterleave_real_16s_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points, arch)" +%feature("docstring") volk_16sc_deinterleave_real_32f_aligned16 " +Params: (iBuffer, complexVector, scalar, num_points)" -%feature("docstring") _2200_common::_2200_common " +%feature("docstring") volk_16sc_deinterleave_real_32f_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, complexVector, scalar, num_points, arch)" -%feature("docstring") _2200_common::~_2200_common " +%feature("docstring") volk_16sc_deinterleave_real_8s_aligned16 " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points)" -%feature("docstring") _2200_common::freq_min " +%feature("docstring") volk_16sc_deinterleave_real_8s_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points, arch)" -%feature("docstring") _2200_common::freq_max " +%feature("docstring") volk_16sc_magnitude_16s_aligned16 " -Params: (NONE)" +Params: (magnitudeVector, complexVector, num_points)" +%feature("docstring") volk_16sc_magnitude_16s_aligned16_manual " +Params: (magnitudeVector, complexVector, num_points, arch)" -%feature("docstring") _2400_common::_2400_common " +%feature("docstring") volk_16sc_magnitude_32f_aligned16 " -Params: (NONE)" +Params: (magnitudeVector, complexVector, scalar, num_points)" -%feature("docstring") _2400_common::~_2400_common " +%feature("docstring") volk_16sc_magnitude_32f_aligned16_manual " -Params: (NONE)" +Params: (magnitudeVector, complexVector, scalar, num_points, arch)" -%feature("docstring") _2400_common::freq_min " +%feature("docstring") volk_16s_convert_32f_aligned16 " -Params: (NONE)" +Params: (outputVector, inputVector, scalar, num_points)" -%feature("docstring") _2400_common::freq_max " +%feature("docstring") volk_16s_convert_32f_aligned16_manual " -Params: (NONE)" +Params: (outputVector, inputVector, scalar, num_points, arch)" +%feature("docstring") volk_16s_convert_32f_unaligned16 " +Params: (outputVector, inputVector, scalar, num_points)" -%feature("docstring") _400_common::_400_common " +%feature("docstring") volk_16s_convert_32f_unaligned16_manual " -Params: (NONE)" +Params: (outputVector, inputVector, scalar, num_points, arch)" -%feature("docstring") _400_common::~_400_common " +%feature("docstring") volk_16s_convert_8s_aligned16 " -Params: (NONE)" +Params: (outputVector, inputVector, num_points)" -%feature("docstring") _400_common::freq_min " +%feature("docstring") volk_16s_convert_8s_aligned16_manual " -Params: (NONE)" +Params: (outputVector, inputVector, num_points, arch)" -%feature("docstring") _400_common::freq_max " +%feature("docstring") volk_16s_convert_8s_unaligned16 " -Params: (NONE)" +Params: (outputVector, inputVector, num_points)" +%feature("docstring") volk_16s_convert_8s_unaligned16_manual " +Params: (outputVector, inputVector, num_points, arch)" -%feature("docstring") _400_rx::_400_rx " +%feature("docstring") volk_16s_max_star_aligned16 " -Params: (NONE)" +Params: (target, src0, num_bytes)" -%feature("docstring") _400_rx::~_400_rx " +%feature("docstring") volk_16s_max_star_aligned16_manual " -Params: (NONE)" +Params: (target, src0, num_bytes, arch)" +%feature("docstring") volk_16s_max_star_horizontal_aligned16 " +Params: (target, src0, num_bytes)" -%feature("docstring") _400_tx::_400_tx " +%feature("docstring") volk_16s_max_star_horizontal_aligned16_manual " -Params: (NONE)" +Params: (target, src0, num_bytes, arch)" -%feature("docstring") _400_tx::~_400_tx " +%feature("docstring") volk_16s_permute_and_scalar_add_aligned16 " -Params: (NONE)" +Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes)" +%feature("docstring") volk_16s_permute_and_scalar_add_aligned16_manual " +Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes, arch)" -%feature("docstring") _900_common::_900_common " +%feature("docstring") volk_16s_quad_max_star_aligned16 " -Params: (NONE)" +Params: (target, src0, src1, src2, src3, num_bytes)" -%feature("docstring") _900_common::~_900_common " +%feature("docstring") volk_16s_quad_max_star_aligned16_manual " -Params: (NONE)" +Params: (target, src0, src1, src2, src3, num_bytes, arch)" -%feature("docstring") _900_common::freq_min " +%feature("docstring") volk_16u_byteswap_aligned16 " -Params: (NONE)" +Params: (intsToSwap, num_points)" -%feature("docstring") _900_common::freq_max " +%feature("docstring") volk_16u_byteswap_aligned16_manual " -Params: (NONE)" +Params: (intsToSwap, num_points, arch)" +%feature("docstring") volk_32f_accumulator_aligned16 " +Params: (result, inputBuffer, num_points)" -%feature("docstring") _AD4360_common::_AD4360_common " +%feature("docstring") volk_32f_accumulator_aligned16_manual " -Params: (NONE)" +Params: (result, inputBuffer, num_points, arch)" -%feature("docstring") _AD4360_common::~_AD4360_common " +%feature("docstring") volk_32f_add_aligned16 " -Params: (NONE)" +Params: (cVector, aVector, bVector, num_points)" -%feature("docstring") _AD4360_common::freq_min " +%feature("docstring") volk_32f_add_aligned16_manual " -Params: (NONE)" +Params: (cVector, aVector, bVector, num_points, arch)" -%feature("docstring") _AD4360_common::freq_max " +%feature("docstring") volk_32fc_32f_multiply_aligned16 " -Params: (NONE)" +Params: (cVector, aVector, bVector, num_points)" -%feature("docstring") _AD4360_common::_compute_regs " +%feature("docstring") volk_32fc_32f_multiply_aligned16_manual " -Params: (refclk_freq, freq, retR, retcontrol, retN, retfreq)" +Params: (cVector, aVector, bVector, num_points, arch)" -%feature("docstring") _AD4360_common::_compute_control_reg " +%feature("docstring") volk_32fc_32f_power_32fc_aligned16 " -Params: (NONE)" +Params: (cVector, aVector, power, num_points)" -%feature("docstring") _AD4360_common::_refclk_divisor " +%feature("docstring") volk_32fc_32f_power_32fc_aligned16_manual " -Params: (NONE)" +Params: (cVector, aVector, power, num_points, arch)" -%feature("docstring") _AD4360_common::_prescaler " +%feature("docstring") volk_32f_calc_spectral_noise_floor_aligned16 " -Params: (NONE)" +Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points)" -%feature("docstring") _AD4360_common::R_DIV " +%feature("docstring") volk_32f_calc_spectral_noise_floor_aligned16_manual " -Params: (div)" +Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points, arch)" +%feature("docstring") volk_32fc_atan2_32f_aligned16 " +Params: (outputVector, inputVector, normalizeFactor, num_points)" -%feature("docstring") _ADF410X_common::_ADF410X_common " +%feature("docstring") volk_32fc_atan2_32f_aligned16_manual " -Params: (NONE)" +Params: (outputVector, inputVector, normalizeFactor, num_points, arch)" -%feature("docstring") _ADF410X_common::~_ADF410X_common " +%feature("docstring") volk_32fc_conjugate_dot_prod_aligned16 " -Params: (NONE)" +Params: (result, input, taps, num_bytes)" -%feature("docstring") _ADF410X_common::_compute_regs " +%feature("docstring") volk_32fc_conjugate_dot_prod_aligned16_manual " -Params: (freq, retR, retcontrol, retN, retfreq)" +Params: (result, input, taps, num_bytes, arch)" -%feature("docstring") _ADF410X_common::_write_all " +%feature("docstring") volk_32fc_conjugate_dot_prod_unaligned " -Params: (R, N, control)" +Params: (result, input, taps, num_bytes)" -%feature("docstring") _ADF410X_common::_write_R " +%feature("docstring") volk_32fc_conjugate_dot_prod_unaligned_manual " -Params: (R)" +Params: (result, input, taps, num_bytes, arch)" -%feature("docstring") _ADF410X_common::_write_N " +%feature("docstring") volk_32fc_deinterleave_32f_aligned16 " -Params: (N)" +Params: (iBuffer, qBuffer, complexVector, num_points)" -%feature("docstring") _ADF410X_common::_write_func " +%feature("docstring") volk_32fc_deinterleave_32f_aligned16_manual " -Params: (func)" +Params: (iBuffer, qBuffer, complexVector, num_points, arch)" -%feature("docstring") _ADF410X_common::_write_init " +%feature("docstring") volk_32fc_deinterleave_64f_aligned16 " -Params: (init)" +Params: (iBuffer, qBuffer, complexVector, num_points)" -%feature("docstring") _ADF410X_common::_prescaler " +%feature("docstring") volk_32fc_deinterleave_64f_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, qBuffer, complexVector, num_points, arch)" -%feature("docstring") _ADF410X_common::_write_it " +%feature("docstring") volk_32fc_deinterleave_real_16s_aligned16 " -Params: (v)" +Params: (iBuffer, complexVector, scalar, num_points)" -%feature("docstring") _ADF410X_common::_refclk_freq " +%feature("docstring") volk_32fc_deinterleave_real_16s_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, complexVector, scalar, num_points, arch)" -%feature("docstring") _ADF410X_common::_rx_write_io " +%feature("docstring") volk_32fc_deinterleave_real_32f_aligned16 " -Params: (value, mask)" +Params: (iBuffer, complexVector, num_points)" -%feature("docstring") _ADF410X_common::_lock_detect " +%feature("docstring") volk_32fc_deinterleave_real_32f_aligned16_manual " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points, arch)" -%feature("docstring") _ADF410X_common::usrp " +%feature("docstring") volk_32fc_deinterleave_real_64f_aligned16 " -Params: (NONE)" +Params: (iBuffer, complexVector, num_points)" +%feature("docstring") volk_32fc_deinterleave_real_64f_aligned16_manual " +Params: (iBuffer, complexVector, num_points, arch)" -%feature("docstring") _lo_common::_lo_common " +%feature("docstring") volk_32fc_dot_prod_aligned16 " -Params: (NONE)" +Params: (result, input, taps, num_bytes)" -%feature("docstring") _lo_common::~_lo_common " +%feature("docstring") volk_32fc_dot_prod_aligned16_manual " -Params: (NONE)" +Params: (result, input, taps, num_bytes, arch)" -%feature("docstring") _lo_common::freq_min " +%feature("docstring") volk_32fc_index_max_aligned16 " -Params: (NONE)" +Params: (target, src0, num_bytes)" -%feature("docstring") _lo_common::freq_max " +%feature("docstring") volk_32fc_index_max_aligned16_manual " -Params: (NONE)" +Params: (target, src0, num_bytes, arch)" -%feature("docstring") _lo_common::set_divider " +%feature("docstring") volk_32fc_magnitude_16s_aligned16 " -Params: (main_or_aux, divisor)" +Params: (magnitudeVector, complexVector, scalar, num_points)" -%feature("docstring") _lo_common::set_freq " +%feature("docstring") volk_32fc_magnitude_16s_aligned16_manual " -Params: (freq)" +Params: (magnitudeVector, complexVector, scalar, num_points, arch)" +%feature("docstring") volk_32fc_magnitude_32f_aligned16 " +Params: (magnitudeVector, complexVector, num_points)" -%feature("docstring") adf4350::adf4350 " +%feature("docstring") volk_32fc_magnitude_32f_aligned16_manual " -Params: (NONE)" +Params: (magnitudeVector, complexVector, num_points, arch)" + +%feature("docstring") volk_32fc_multiply_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32fc_multiply_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_convert_16s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_16s_aligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32f_convert_16s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_16s_unaligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32f_convert_32s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_32s_aligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32f_convert_32s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_32s_unaligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32f_convert_64f_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_32f_convert_64f_aligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_32f_convert_64f_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_32f_convert_64f_unaligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_32f_convert_8s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_8s_aligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32f_convert_8s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32f_convert_8s_unaligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32fc_power_spectral_density_32f_aligned16 " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points)" + +%feature("docstring") volk_32fc_power_spectral_density_32f_aligned16_manual " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points, arch)" + +%feature("docstring") volk_32fc_power_spectrum_32f_aligned16 " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points)" + +%feature("docstring") volk_32fc_power_spectrum_32f_aligned16_manual " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points, arch)" + +%feature("docstring") volk_32fc_square_dist_aligned16 " + +Params: (target, src0, points, num_bytes)" + +%feature("docstring") volk_32fc_square_dist_aligned16_manual " + +Params: (target, src0, points, num_bytes, arch)" + +%feature("docstring") volk_32fc_square_dist_scalar_mult_aligned16 " + +Params: (target, src0, points, scalar, num_bytes)" + +%feature("docstring") volk_32fc_square_dist_scalar_mult_aligned16_manual " + +Params: (target, src0, points, scalar, num_bytes, arch)" + +%feature("docstring") volk_32f_divide_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32f_divide_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_dot_prod_aligned16 " + +Params: (result, input, taps, num_points)" + +%feature("docstring") volk_32f_dot_prod_aligned16_manual " + +Params: (result, input, taps, num_points, arch)" + +%feature("docstring") volk_32f_dot_prod_unaligned16 " + +Params: (result, input, taps, num_points)" + +%feature("docstring") volk_32f_dot_prod_unaligned16_manual " + +Params: (result, input, taps, num_points, arch)" + +%feature("docstring") volk_32f_fm_detect_aligned16 " + +Params: (outputVector, inputVector, bound, saveValue, num_points)" + +%feature("docstring") volk_32f_fm_detect_aligned16_manual " + +Params: (outputVector, inputVector, bound, saveValue, num_points, arch)" + +%feature("docstring") volk_32f_index_max_aligned16 " + +Params: (target, src0, num_points)" + +%feature("docstring") volk_32f_index_max_aligned16_manual " + +Params: (target, src0, num_points, arch)" + +%feature("docstring") volk_32f_interleave_16sc_aligned16 " + +Params: (complexVector, iBuffer, qBuffer, scalar, num_points)" + +%feature("docstring") volk_32f_interleave_16sc_aligned16_manual " + +Params: (complexVector, iBuffer, qBuffer, scalar, num_points, arch)" + +%feature("docstring") volk_32f_interleave_32fc_aligned16 " + +Params: (complexVector, iBuffer, qBuffer, num_points)" + +%feature("docstring") volk_32f_interleave_32fc_aligned16_manual " + +Params: (complexVector, iBuffer, qBuffer, num_points, arch)" + +%feature("docstring") volk_32f_max_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32f_max_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_min_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32f_min_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_multiply_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32f_multiply_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_normalize_aligned16 " + +Params: (vecBuffer, scalar, num_points)" + +%feature("docstring") volk_32f_normalize_aligned16_manual " + +Params: (vecBuffer, scalar, num_points, arch)" + +%feature("docstring") volk_32f_power_aligned16 " + +Params: (cVector, aVector, power, num_points)" + +%feature("docstring") volk_32f_power_aligned16_manual " + +Params: (cVector, aVector, power, num_points, arch)" + +%feature("docstring") volk_32f_sqrt_aligned16 " + +Params: (cVector, aVector, num_points)" + +%feature("docstring") volk_32f_sqrt_aligned16_manual " + +Params: (cVector, aVector, num_points, arch)" + +%feature("docstring") volk_32f_stddev_aligned16 " + +Params: (stddev, inputBuffer, mean, num_points)" + +%feature("docstring") volk_32f_stddev_aligned16_manual " + +Params: (stddev, inputBuffer, mean, num_points, arch)" + +%feature("docstring") volk_32f_stddev_and_mean_aligned16 " + +Params: (stddev, mean, inputBuffer, num_points)" + +%feature("docstring") volk_32f_stddev_and_mean_aligned16_manual " + +Params: (stddev, mean, inputBuffer, num_points, arch)" + +%feature("docstring") volk_32f_subtract_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32f_subtract_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32f_sum_of_poly_aligned16 " + +Params: (target, src0, center_point_array, cutoff, num_bytes)" + +%feature("docstring") volk_32f_sum_of_poly_aligned16_manual " + +Params: (target, src0, center_point_array, cutoff, num_bytes, arch)" + +%feature("docstring") volk_32s_and_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32s_and_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32s_convert_32f_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32s_convert_32f_aligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32s_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_32s_convert_32f_unaligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_32s_or_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_32s_or_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_32u_byteswap_aligned16 " + +Params: (intsToSwap, num_points)" + +%feature("docstring") volk_32u_byteswap_aligned16_manual " + +Params: (intsToSwap, num_points, arch)" + +%feature("docstring") volk_32u_popcnt_aligned16 " + +Params: (ret, value)" + +%feature("docstring") volk_32u_popcnt_aligned16_manual " + +Params: (ret, value, arch)" + +%feature("docstring") volk_64f_convert_32f_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_64f_convert_32f_aligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_64f_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_64f_convert_32f_unaligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_64f_max_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_64f_max_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_64f_min_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_64f_min_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_64u_byteswap_aligned16 " + +Params: (intsToSwap, num_points)" + +%feature("docstring") volk_64u_byteswap_aligned16_manual " + +Params: (intsToSwap, num_points, arch)" + +%feature("docstring") volk_64u_popcnt_aligned16 " + +Params: (ret, value)" + +%feature("docstring") volk_64u_popcnt_aligned16_manual " + +Params: (ret, value, arch)" + +%feature("docstring") volk_8sc_deinterleave_16s_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, num_points)" + +%feature("docstring") volk_8sc_deinterleave_16s_aligned16_manual " + +Params: (iBuffer, qBuffer, complexVector, num_points, arch)" + +%feature("docstring") volk_8sc_deinterleave_32f_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" + +%feature("docstring") volk_8sc_deinterleave_32f_aligned16_manual " + +Params: (iBuffer, qBuffer, complexVector, scalar, num_points, arch)" + +%feature("docstring") volk_8sc_deinterleave_real_16s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") volk_8sc_deinterleave_real_16s_aligned16_manual " + +Params: (iBuffer, complexVector, num_points, arch)" + +%feature("docstring") volk_8sc_deinterleave_real_32f_aligned16 " + +Params: (iBuffer, complexVector, scalar, num_points)" + +%feature("docstring") volk_8sc_deinterleave_real_32f_aligned16_manual " + +Params: (iBuffer, complexVector, scalar, num_points, arch)" + +%feature("docstring") volk_8sc_deinterleave_real_8s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") volk_8sc_deinterleave_real_8s_aligned16_manual " + +Params: (iBuffer, complexVector, num_points, arch)" + +%feature("docstring") volk_8sc_multiply_conjugate_16sc_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") volk_8sc_multiply_conjugate_16sc_aligned16_manual " + +Params: (cVector, aVector, bVector, num_points, arch)" + +%feature("docstring") volk_8sc_multiply_conjugate_32fc_aligned16 " + +Params: (cVector, aVector, bVector, scalar, num_points)" + +%feature("docstring") volk_8sc_multiply_conjugate_32fc_aligned16_manual " + +Params: (cVector, aVector, bVector, scalar, num_points, arch)" + +%feature("docstring") volk_8s_convert_16s_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_8s_convert_16s_aligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_8s_convert_16s_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") volk_8s_convert_16s_unaligned16_manual " + +Params: (outputVector, inputVector, num_points, arch)" + +%feature("docstring") volk_8s_convert_32f_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_8s_convert_32f_aligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") volk_8s_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_8s_convert_32f_unaligned16_manual " + +Params: (outputVector, inputVector, scalar, num_points, arch)" + +%feature("docstring") lv_creal " + +Params: (x)" + +%feature("docstring") lv_cimag " + +Params: (x)" + +%feature("docstring") lv_conj " + +Params: (x)" + +%feature("docstring") lv_cpow " + +Params: (x, y)" + +%feature("docstring") lv_32fc_init " + +Params: (x, y)" + +%feature("docstring") volk_cpu_init " + +Params: (NONE)" + +%feature("docstring") volk_get_lvarch " + +Params: (NONE)" + +%feature("docstring") volk_environment_init " + +Params: (NONE)" + +%feature("docstring") default_acquire_volk_16s_add_quad_aligned16 " + +Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes)" + +%feature("docstring") default_acquire_volk_16s_branch_4_state_8_aligned16 " + +Params: (target, src0, permuters, cntl2, cntl3, scalars)" + +%feature("docstring") default_acquire_volk_16sc_deinterleave_16s_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_16sc_deinterleave_32f_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_16sc_deinterleave_real_16s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_16sc_deinterleave_real_32f_aligned16 " + +Params: (iBuffer, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_16sc_deinterleave_real_8s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_16sc_magnitude_16s_aligned16 " + +Params: (magnitudeVector, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_16sc_magnitude_32f_aligned16 " + +Params: (magnitudeVector, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_16s_convert_32f_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_16s_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_16s_convert_8s_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_16s_convert_8s_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_16s_max_star_aligned16 " + +Params: (target, src0, num_bytes)" + +%feature("docstring") default_acquire_volk_16s_max_star_horizontal_aligned16 " + +Params: (target, src0, num_bytes)" + +%feature("docstring") default_acquire_volk_16s_permute_and_scalar_add_aligned16 " + +Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes)" + +%feature("docstring") default_acquire_volk_16s_quad_max_star_aligned16 " + +Params: (target, src0, src1, src2, src3, num_bytes)" + +%feature("docstring") default_acquire_volk_16u_byteswap_aligned16 " + +Params: (intsToSwap, num_points)" + +%feature("docstring") default_acquire_volk_32f_accumulator_aligned16 " + +Params: (result, inputBuffer, num_points)" + +%feature("docstring") default_acquire_volk_32f_add_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_32f_multiply_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_32f_power_32fc_aligned16 " + +Params: (cVector, aVector, power, num_points)" + +%feature("docstring") default_acquire_volk_32f_calc_spectral_noise_floor_aligned16 " + +Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points)" + +%feature("docstring") default_acquire_volk_32fc_atan2_32f_aligned16 " + +Params: (outputVector, inputVector, normalizeFactor, num_points)" + +%feature("docstring") default_acquire_volk_32fc_conjugate_dot_prod_aligned16 " + +Params: (result, input, taps, num_bytes)" + +%feature("docstring") default_acquire_volk_32fc_conjugate_dot_prod_unaligned " + +Params: (result, input, taps, num_bytes)" + +%feature("docstring") default_acquire_volk_32fc_deinterleave_32f_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_deinterleave_64f_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_deinterleave_real_16s_aligned16 " + +Params: (iBuffer, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32fc_deinterleave_real_32f_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_deinterleave_real_64f_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_dot_prod_aligned16 " + +Params: (result, input, taps, num_bytes)" + +%feature("docstring") default_acquire_volk_32fc_index_max_aligned16 " + +Params: (target, src0, num_bytes)" + +%feature("docstring") default_acquire_volk_32fc_magnitude_16s_aligned16 " + +Params: (magnitudeVector, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32fc_magnitude_32f_aligned16 " + +Params: (magnitudeVector, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_32fc_multiply_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_16s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_16s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_32s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_32s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_64f_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_64f_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_8s_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_convert_8s_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32fc_power_spectral_density_32f_aligned16 " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points)" + +%feature("docstring") default_acquire_volk_32fc_power_spectrum_32f_aligned16 " + +Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points)" + +%feature("docstring") default_acquire_volk_32fc_square_dist_aligned16 " + +Params: (target, src0, points, num_bytes)" + +%feature("docstring") default_acquire_volk_32fc_square_dist_scalar_mult_aligned16 " + +Params: (target, src0, points, scalar, num_bytes)" + +%feature("docstring") default_acquire_volk_32f_divide_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_dot_prod_aligned16 " + +Params: (result, input, taps, num_points)" + +%feature("docstring") default_acquire_volk_32f_dot_prod_unaligned16 " + +Params: (result, input, taps, num_points)" + +%feature("docstring") default_acquire_volk_32f_fm_detect_aligned16 " + +Params: (outputVector, inputVector, bound, saveValue, num_points)" + +%feature("docstring") default_acquire_volk_32f_index_max_aligned16 " + +Params: (target, src0, num_points)" + +%feature("docstring") default_acquire_volk_32f_interleave_16sc_aligned16 " + +Params: (complexVector, iBuffer, qBuffer, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_interleave_32fc_aligned16 " + +Params: (complexVector, iBuffer, qBuffer, num_points)" + +%feature("docstring") default_acquire_volk_32f_max_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_min_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_multiply_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_normalize_aligned16 " + +Params: (vecBuffer, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32f_power_aligned16 " + +Params: (cVector, aVector, power, num_points)" + +%feature("docstring") default_acquire_volk_32f_sqrt_aligned16 " + +Params: (cVector, aVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_stddev_aligned16 " + +Params: (stddev, inputBuffer, mean, num_points)" + +%feature("docstring") default_acquire_volk_32f_stddev_and_mean_aligned16 " + +Params: (stddev, mean, inputBuffer, num_points)" + +%feature("docstring") default_acquire_volk_32f_subtract_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32f_sum_of_poly_aligned16 " + +Params: (target, src0, center_point_array, cutoff, num_bytes)" + +%feature("docstring") default_acquire_volk_32s_and_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32s_convert_32f_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32s_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_32s_or_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_32u_byteswap_aligned16 " + +Params: (intsToSwap, num_points)" + +%feature("docstring") default_acquire_volk_32u_popcnt_aligned16 " + +Params: (ret, value)" + +%feature("docstring") default_acquire_volk_64f_convert_32f_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_64f_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_64f_max_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_64f_min_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_64u_byteswap_aligned16 " + +Params: (intsToSwap, num_points)" + +%feature("docstring") default_acquire_volk_64u_popcnt_aligned16 " + +Params: (ret, value)" + +%feature("docstring") default_acquire_volk_8sc_deinterleave_16s_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_8sc_deinterleave_32f_aligned16 " + +Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_8sc_deinterleave_real_16s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_8sc_deinterleave_real_32f_aligned16 " + +Params: (iBuffer, complexVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_8sc_deinterleave_real_8s_aligned16 " + +Params: (iBuffer, complexVector, num_points)" + +%feature("docstring") default_acquire_volk_8sc_multiply_conjugate_16sc_aligned16 " + +Params: (cVector, aVector, bVector, num_points)" + +%feature("docstring") default_acquire_volk_8sc_multiply_conjugate_32fc_aligned16 " + +Params: (cVector, aVector, bVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_8s_convert_16s_aligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_8s_convert_16s_unaligned16 " + +Params: (outputVector, inputVector, num_points)" + +%feature("docstring") default_acquire_volk_8s_convert_32f_aligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") default_acquire_volk_8s_convert_32f_unaligned16 " + +Params: (outputVector, inputVector, scalar, num_points)" + +%feature("docstring") volk_rank_archs " + +Params: (arch_defs, arch)" + +%feature("docstring") get_volk_runtime " + +Params: (NONE)" + +%feature("docstring") volk_runtime_init " + +Params: (NONE)" + +%feature("docstring") scm_xyzzy_init " + +Params: ()" + +%feature("docstring") xyzzy_init " + +Params: (filename)" + +%feature("docstring") xyzzy_file_exists " + +Params: (filename)" + +%feature("docstring") xyzzy_open_file " + +Params: (filename)" + + + +%feature("docstring") _1200_common::_1200_common " + +Params: (NONE)" + +%feature("docstring") _1200_common::~_1200_common " + +Params: (NONE)" + +%feature("docstring") _1200_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _1200_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _1800_common::_1800_common " + +Params: (NONE)" + +%feature("docstring") _1800_common::~_1800_common " + +Params: (NONE)" + +%feature("docstring") _1800_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _1800_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _2200_common::_2200_common " + +Params: (NONE)" + +%feature("docstring") _2200_common::~_2200_common " + +Params: (NONE)" + +%feature("docstring") _2200_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _2200_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _2400_common::_2400_common " + +Params: (NONE)" + +%feature("docstring") _2400_common::~_2400_common " + +Params: (NONE)" + +%feature("docstring") _2400_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _2400_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _400_common::_400_common " + +Params: (NONE)" + +%feature("docstring") _400_common::~_400_common " + +Params: (NONE)" + +%feature("docstring") _400_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _400_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _400_rx::_400_rx " + +Params: (NONE)" + +%feature("docstring") _400_rx::~_400_rx " + +Params: (NONE)" + + + +%feature("docstring") _400_tx::_400_tx " + +Params: (NONE)" + +%feature("docstring") _400_tx::~_400_tx " + +Params: (NONE)" + + + +%feature("docstring") _900_common::_900_common " + +Params: (NONE)" + +%feature("docstring") _900_common::~_900_common " + +Params: (NONE)" + +%feature("docstring") _900_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _900_common::freq_max " + +Params: (NONE)" + + + +%feature("docstring") _AD4360_common::_AD4360_common " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::~_AD4360_common " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::freq_max " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_compute_regs " + +Params: (refclk_freq, freq, retR, retcontrol, retN, retfreq)" + +%feature("docstring") _AD4360_common::_compute_control_reg " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_refclk_divisor " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::_prescaler " + +Params: (NONE)" + +%feature("docstring") _AD4360_common::R_DIV " + +Params: (div)" + + + +%feature("docstring") _ADF410X_common::_ADF410X_common " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::~_ADF410X_common " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_compute_regs " + +Params: (freq, retR, retcontrol, retN, retfreq)" + +%feature("docstring") _ADF410X_common::_write_all " + +Params: (R, N, control)" + +%feature("docstring") _ADF410X_common::_write_R " + +Params: (R)" + +%feature("docstring") _ADF410X_common::_write_N " + +Params: (N)" + +%feature("docstring") _ADF410X_common::_write_func " + +Params: (func)" + +%feature("docstring") _ADF410X_common::_write_init " + +Params: (init)" + +%feature("docstring") _ADF410X_common::_prescaler " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_write_it " + +Params: (v)" + +%feature("docstring") _ADF410X_common::_refclk_freq " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::_rx_write_io " + +Params: (value, mask)" + +%feature("docstring") _ADF410X_common::_lock_detect " + +Params: (NONE)" + +%feature("docstring") _ADF410X_common::usrp " + +Params: (NONE)" + + + +%feature("docstring") _lo_common::_lo_common " + +Params: (NONE)" + +%feature("docstring") _lo_common::~_lo_common " + +Params: (NONE)" + +%feature("docstring") _lo_common::freq_min " + +Params: (NONE)" + +%feature("docstring") _lo_common::freq_max " + +Params: (NONE)" + +%feature("docstring") _lo_common::set_divider " + +Params: (main_or_aux, divisor)" + +%feature("docstring") _lo_common::set_freq " + +Params: (freq)" + +%feature("docstring") Aadvark "Models the mammal Aadvark. + +Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. + +This line is uninformative and is only to test line breaks in the comments." + +%feature("docstring") Aadvark::print "Outputs the vital aadvark statistics. + +Params: (NONE)" + +%feature("docstring") Aadvark::Aadvark " + +Params: (aaness)" + +%feature("docstring") Aadvark::get_aadvarkness " + +Params: (NONE)" + + + +%feature("docstring") adf4350::adf4350 " + +Params: (NONE)" %feature("docstring") adf4350::~adf4350 " @@ -14914,18 +16562,18 @@ Params: (NONE)" %feature("docstring") std::multimap::const_iterator "STL iterator class." +%feature("docstring") std::set::const_iterator "STL iterator class." + %feature("docstring") std::multiset::const_iterator "STL iterator class." %feature("docstring") std::vector::const_iterator "STL iterator class." -%feature("docstring") std::set::const_iterator "STL iterator class." - %feature("docstring") std::basic_string::const_reverse_iterator "STL iterator class." -%feature("docstring") std::wstring::const_reverse_iterator "STL iterator class." - %feature("docstring") std::string::const_reverse_iterator "STL iterator class." +%feature("docstring") std::wstring::const_reverse_iterator "STL iterator class." + %feature("docstring") std::deque::const_reverse_iterator "STL iterator class." %feature("docstring") std::list::const_reverse_iterator "STL iterator class." @@ -17536,6 +19184,10 @@ Params: (s)" Basic blocks are the bare abstraction of an entity that has a name, a set of inputs and outputs, and a message queue. These are never instantiated directly; rather, this is the abstract parent class of both gr_hier_block, which is a recursive container, and gr_block, which implements actual signal processing functions." +%feature("docstring") gr_basic_block::dispatch_msg " + +Params: (msg)" + %feature("docstring") gr_basic_block::gr_basic_block "Protected constructor prevents instantiation by non-derived classes. Params: (name, input_signature, output_signature)" @@ -17576,7 +19228,7 @@ Params: (NONE)" Params: (NONE)" -%feature("docstring") gr_basic_block::basic_block " +%feature("docstring") gr_basic_block::to_basic_block " Params: (NONE)" @@ -17586,11 +19238,19 @@ This function is called by the runtime system whenever the topology changes. Mos Params: (ninputs, noutputs)" -%feature("docstring") gr_basic_block::handle_msg "Block message handler. +%feature("docstring") gr_basic_block::set_msg_handler "Set the callback that is fired when messages are available. -This function is called by the runtime system whenever there are messages in its queue. Blocks should override this to receive messages; the default behavior is to drop them on the floor. +can be any kind of function pointer or function object that has the signature: -Params: (msg)" +(You may want to use boost::bind to massage your callable into the correct form. See gr_nop.{h,cc} for an example that sets up a class method as the callback.) + +Blocks that desire to handle messages must call this method in their constructors to register the handler that will be invoked when messages are available. + +If the block inherits from gr_block, the runtime system will ensure that msg_handler is called in a thread-safe manner, such that work and msg_handler will never be called concurrently. This allows msg_handler to update state variables without having to worry about thread-safety issues with work, general_work or another invocation of msg_handler. + +If the block inherits from gr_hier_block2, the runtime system will ensure that no reentrant calls are made to msg_handler. + +Params: (msg_handler)" %feature("docstring") gr_block "The abstract base class for all 'terminal' processing blocks. @@ -17688,6 +19348,22 @@ Params: (ninput)" Params: (noutput)" +%feature("docstring") gr_block::nitems_read "Return the number of items read on input stream which_input. + +Params: (which_input)" + +%feature("docstring") gr_block::nitems_written "Return the number of items written on output stream which_output. + +Params: (which_output)" + +%feature("docstring") gr_block::tag_propagation_policy "Asks for the policy used by the scheduler to moved tags downstream. + +Params: (NONE)" + +%feature("docstring") gr_block::set_tag_propagation_policy "Set the policy by the scheduler to determine how tags are moved downstream. + +Params: (p)" + %feature("docstring") gr_block::detail " Params: (NONE)" @@ -17704,6 +19380,18 @@ Params: (name, input_signature, output_signature)" Params: (fixed_rate)" +%feature("docstring") gr_block::add_item_tag "Adds a new tag onto the given output buffer. + +Params: (which_output, abs_offset, key, value, srcid)" + +%feature("docstring") gr_block::get_tags_in_range "Given a [start,end), returns a vector of all tags in the range. + +Range of counts is from start to end-1. + +Tags are tuples of: (item count, source id, key, value) + +Params: (v, which_input, abs_start, abs_end)" + %feature("docstring") gr_block_executor "Manage the execution of a single block." %feature("docstring") gr_block_executor::gr_block_executor " @@ -17758,10 +19446,22 @@ Params: (NONE)" Params: (NONE)" +%feature("docstring") gr_buffer_reader::nitems_read " + +Params: (NONE)" + %feature("docstring") gr_buffer_reader::link "Return the block that reads via this reader. Params: (NONE)" +%feature("docstring") gr_buffer_reader::get_tags_in_range "Given a [start,end), returns a vector all tags in the range. + +Get a vector of tags in given range. Range of counts is from start to end-1. + +Tags are tuples of: (item count, source id, key, value) + +Params: (v, abs_start, abs_end)" + %feature("docstring") gr_buffer_reader::gr_buffer_reader "constructor is private. Use gr_buffer::add_reader to create instances Params: (buffer, read_index, link)" @@ -17788,6 +19488,28 @@ Params: (data, nbytes)" Params: (NONE)" + + +%feature("docstring") gr_constellation_sector::gr_constellation_sector " + +Params: (constellation, n_sectors)" + +%feature("docstring") gr_constellation_sector::decision_maker "Returns the constellation point that matches best. Also calculates the phase error. + +Params: (sample)" + +%feature("docstring") gr_constellation_sector::get_sector " + +Params: (sample)" + +%feature("docstring") gr_constellation_sector::calc_sector_value " + +Params: (sector)" + +%feature("docstring") gr_constellation_sector::find_sector_values " + +Params: (NONE)" + %feature("docstring") gr_edge "Class representing a connection between to graph endpoints." %feature("docstring") gr_edge::gr_edge " @@ -18192,6 +19914,26 @@ Params: (NONE)" Params: (NONE)" +%feature("docstring") gr_fir_ccf_armv7_a "armv7_a using NEON coprocessor version of gr_fir_ccf" + +%feature("docstring") gr_fir_ccf_armv7_a::gr_fir_ccf_armv7_a " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_armv7_a::~gr_fir_ccf_armv7_a " + +Params: (NONE)" + +%feature("docstring") gr_fir_ccf_armv7_a::set_taps "install as the current taps. + +Params: (taps)" + +%feature("docstring") gr_fir_ccf_armv7_a::filter "compute a single output value. + +must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. + +Params: (input)" + %feature("docstring") gr_fir_ccf_generic "Concrete class for generic implementation of FIR with gr_complex input, gr_complex output and float taps. The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" @@ -20806,7 +22548,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_ccc::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -20848,7 +22590,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_ccf::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -20890,7 +22632,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_fcc::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -20932,7 +22674,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_fff::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -20974,7 +22716,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_fsf::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -21016,7 +22758,7 @@ Params: (NONE)" %feature("docstring") gri_fir_filter_with_buffer_scc::filter "compute a single output value. -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. +is a single input value of the filter type Params: (input)" @@ -21070,6 +22812,10 @@ Params: (degree)" Params: (NONE)" +%feature("docstring") gri_goertzel::gri_setparms " + +Params: (rate, len, freq)" + %feature("docstring") gri_goertzel::batch " Params: (in)" @@ -21791,26 +23537,26 @@ Params: (input)" %feature("docstring") std::istringstream "STL class." +%feature("docstring") std::basic_string::iterator "STL iterator class." + %feature("docstring") std::multimap::iterator "STL iterator class." +%feature("docstring") std::wstring::iterator "STL iterator class." + +%feature("docstring") std::set::iterator "STL iterator class." + %feature("docstring") std::map::iterator "STL iterator class." %feature("docstring") std::deque::iterator "STL iterator class." -%feature("docstring") std::multiset::iterator "STL iterator class." - %feature("docstring") std::list::iterator "STL iterator class." -%feature("docstring") std::set::iterator "STL iterator class." - -%feature("docstring") std::basic_string::iterator "STL iterator class." +%feature("docstring") std::multiset::iterator "STL iterator class." %feature("docstring") std::string::iterator "STL iterator class." %feature("docstring") std::vector::iterator "STL iterator class." -%feature("docstring") std::wstring::iterator "STL iterator class." - %feature("docstring") std::length_error "STL class." %feature("docstring") std::list "STL class." @@ -22533,49 +24279,11 @@ Params: (NONE)" %feature("docstring") pmt::pmt_bool::pmt_bool " -Params: (NONE)" - -%feature("docstring") pmt::pmt_bool::is_bool " - -Params: (NONE)" - - - -%feature("docstring") pmt_c32vector::pmt_c32vector " - -Params: (k, fill)" - -%feature("docstring") pmt_c32vector::is_c32vector " - -Params: (NONE)" - -%feature("docstring") pmt_c32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_c32vector::ref " - -Params: (k)" - -%feature("docstring") pmt_c32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_c32vector::elements " - -Params: (len)" - -%feature("docstring") pmt_c32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_c32vector::uniform_elements " - -Params: (len)" +Params: (NONE)" -%feature("docstring") pmt_c32vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_bool::is_bool " -Params: (len)" +Params: (NONE)" @@ -22617,39 +24325,39 @@ Params: (len)" -%feature("docstring") pmt_c64vector::pmt_c64vector " +%feature("docstring") pmt_c32vector::pmt_c32vector " Params: (k, fill)" -%feature("docstring") pmt_c64vector::is_c64vector " +%feature("docstring") pmt_c32vector::is_c32vector " Params: (NONE)" -%feature("docstring") pmt_c64vector::length " +%feature("docstring") pmt_c32vector::length " Params: (NONE)" -%feature("docstring") pmt_c64vector::ref " +%feature("docstring") pmt_c32vector::ref " Params: (k)" -%feature("docstring") pmt_c64vector::set " +%feature("docstring") pmt_c32vector::set " Params: (k, x)" -%feature("docstring") pmt_c64vector::elements " +%feature("docstring") pmt_c32vector::elements " Params: (len)" -%feature("docstring") pmt_c64vector::writable_elements " +%feature("docstring") pmt_c32vector::writable_elements " Params: (len)" -%feature("docstring") pmt_c64vector::uniform_elements " +%feature("docstring") pmt_c32vector::uniform_elements " Params: (len)" -%feature("docstring") pmt_c64vector::uniform_writable_elements " +%feature("docstring") pmt_c32vector::uniform_writable_elements " Params: (len)" @@ -22693,6 +24401,44 @@ Params: (len)" +%feature("docstring") pmt_c64vector::pmt_c64vector " + +Params: (k, fill)" + +%feature("docstring") pmt_c64vector::is_c64vector " + +Params: (NONE)" + +%feature("docstring") pmt_c64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt_c64vector::ref " + +Params: (k)" + +%feature("docstring") pmt_c64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt_c64vector::elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt_c64vector::uniform_writable_elements " + +Params: (len)" + + + %feature("docstring") pmt::pmt_complex::pmt_complex " Params: (value)" @@ -22793,77 +24539,77 @@ Params: (len)" -%feature("docstring") pmt::pmt_f64vector::pmt_f64vector " +%feature("docstring") pmt_f64vector::pmt_f64vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_f64vector::is_f64vector " +%feature("docstring") pmt_f64vector::is_f64vector " Params: (NONE)" -%feature("docstring") pmt::pmt_f64vector::length " +%feature("docstring") pmt_f64vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_f64vector::ref " +%feature("docstring") pmt_f64vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_f64vector::set " +%feature("docstring") pmt_f64vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_f64vector::elements " +%feature("docstring") pmt_f64vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_f64vector::writable_elements " +%feature("docstring") pmt_f64vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_f64vector::uniform_elements " +%feature("docstring") pmt_f64vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_f64vector::uniform_writable_elements " +%feature("docstring") pmt_f64vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt_f64vector::pmt_f64vector " +%feature("docstring") pmt::pmt_f64vector::pmt_f64vector " Params: (k, fill)" -%feature("docstring") pmt_f64vector::is_f64vector " +%feature("docstring") pmt::pmt_f64vector::is_f64vector " Params: (NONE)" -%feature("docstring") pmt_f64vector::length " +%feature("docstring") pmt::pmt_f64vector::length " Params: (NONE)" -%feature("docstring") pmt_f64vector::ref " +%feature("docstring") pmt::pmt_f64vector::ref " Params: (k)" -%feature("docstring") pmt_f64vector::set " +%feature("docstring") pmt::pmt_f64vector::set " Params: (k, x)" -%feature("docstring") pmt_f64vector::elements " +%feature("docstring") pmt::pmt_f64vector::elements " Params: (len)" -%feature("docstring") pmt_f64vector::writable_elements " +%feature("docstring") pmt::pmt_f64vector::writable_elements " Params: (len)" -%feature("docstring") pmt_f64vector::uniform_elements " +%feature("docstring") pmt::pmt_f64vector::uniform_elements " Params: (len)" -%feature("docstring") pmt_f64vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_f64vector::uniform_writable_elements " Params: (len)" @@ -23049,229 +24795,229 @@ Params: (len)" -%feature("docstring") pmt::pmt_s32vector::pmt_s32vector " +%feature("docstring") pmt_s32vector::pmt_s32vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_s32vector::is_s32vector " +%feature("docstring") pmt_s32vector::is_s32vector " Params: (NONE)" -%feature("docstring") pmt::pmt_s32vector::length " +%feature("docstring") pmt_s32vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_s32vector::ref " +%feature("docstring") pmt_s32vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_s32vector::set " +%feature("docstring") pmt_s32vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_s32vector::elements " +%feature("docstring") pmt_s32vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_s32vector::writable_elements " +%feature("docstring") pmt_s32vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_s32vector::uniform_elements " +%feature("docstring") pmt_s32vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_s32vector::uniform_writable_elements " +%feature("docstring") pmt_s32vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt_s32vector::pmt_s32vector " +%feature("docstring") pmt::pmt_s32vector::pmt_s32vector " Params: (k, fill)" -%feature("docstring") pmt_s32vector::is_s32vector " +%feature("docstring") pmt::pmt_s32vector::is_s32vector " Params: (NONE)" -%feature("docstring") pmt_s32vector::length " +%feature("docstring") pmt::pmt_s32vector::length " Params: (NONE)" -%feature("docstring") pmt_s32vector::ref " +%feature("docstring") pmt::pmt_s32vector::ref " Params: (k)" -%feature("docstring") pmt_s32vector::set " +%feature("docstring") pmt::pmt_s32vector::set " Params: (k, x)" -%feature("docstring") pmt_s32vector::elements " +%feature("docstring") pmt::pmt_s32vector::elements " Params: (len)" -%feature("docstring") pmt_s32vector::writable_elements " +%feature("docstring") pmt::pmt_s32vector::writable_elements " Params: (len)" -%feature("docstring") pmt_s32vector::uniform_elements " +%feature("docstring") pmt::pmt_s32vector::uniform_elements " Params: (len)" -%feature("docstring") pmt_s32vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_s32vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt_s64vector::pmt_s64vector " +%feature("docstring") pmt::pmt_s64vector::pmt_s64vector " Params: (k, fill)" -%feature("docstring") pmt_s64vector::is_s64vector " +%feature("docstring") pmt::pmt_s64vector::is_s64vector " Params: (NONE)" -%feature("docstring") pmt_s64vector::length " +%feature("docstring") pmt::pmt_s64vector::length " Params: (NONE)" -%feature("docstring") pmt_s64vector::ref " +%feature("docstring") pmt::pmt_s64vector::ref " Params: (k)" -%feature("docstring") pmt_s64vector::set " +%feature("docstring") pmt::pmt_s64vector::set " Params: (k, x)" -%feature("docstring") pmt_s64vector::elements " +%feature("docstring") pmt::pmt_s64vector::elements " Params: (len)" -%feature("docstring") pmt_s64vector::writable_elements " +%feature("docstring") pmt::pmt_s64vector::writable_elements " Params: (len)" -%feature("docstring") pmt_s64vector::uniform_elements " +%feature("docstring") pmt::pmt_s64vector::uniform_elements " Params: (len)" -%feature("docstring") pmt_s64vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_s64vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_s64vector::pmt_s64vector " +%feature("docstring") pmt_s64vector::pmt_s64vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_s64vector::is_s64vector " +%feature("docstring") pmt_s64vector::is_s64vector " Params: (NONE)" -%feature("docstring") pmt::pmt_s64vector::length " +%feature("docstring") pmt_s64vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_s64vector::ref " +%feature("docstring") pmt_s64vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_s64vector::set " +%feature("docstring") pmt_s64vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_s64vector::elements " +%feature("docstring") pmt_s64vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_s64vector::writable_elements " +%feature("docstring") pmt_s64vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_s64vector::uniform_elements " +%feature("docstring") pmt_s64vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_s64vector::uniform_writable_elements " +%feature("docstring") pmt_s64vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_s8vector::pmt_s8vector " +%feature("docstring") pmt_s8vector::pmt_s8vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_s8vector::is_s8vector " +%feature("docstring") pmt_s8vector::is_s8vector " Params: (NONE)" -%feature("docstring") pmt::pmt_s8vector::length " +%feature("docstring") pmt_s8vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_s8vector::ref " +%feature("docstring") pmt_s8vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_s8vector::set " +%feature("docstring") pmt_s8vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_s8vector::elements " +%feature("docstring") pmt_s8vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_s8vector::writable_elements " +%feature("docstring") pmt_s8vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_s8vector::uniform_elements " +%feature("docstring") pmt_s8vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_s8vector::uniform_writable_elements " +%feature("docstring") pmt_s8vector::uniform_writable_elements " Params: (len)" -%feature("docstring") pmt_s8vector::pmt_s8vector " +%feature("docstring") pmt::pmt_s8vector::pmt_s8vector " Params: (k, fill)" -%feature("docstring") pmt_s8vector::is_s8vector " +%feature("docstring") pmt::pmt_s8vector::is_s8vector " Params: (NONE)" -%feature("docstring") pmt_s8vector::length " +%feature("docstring") pmt::pmt_s8vector::length " Params: (NONE)" -%feature("docstring") pmt_s8vector::ref " +%feature("docstring") pmt::pmt_s8vector::ref " Params: (k)" -%feature("docstring") pmt_s8vector::set " +%feature("docstring") pmt::pmt_s8vector::set " Params: (k, x)" -%feature("docstring") pmt_s8vector::elements " +%feature("docstring") pmt::pmt_s8vector::elements " Params: (len)" -%feature("docstring") pmt_s8vector::writable_elements " +%feature("docstring") pmt::pmt_s8vector::writable_elements " Params: (len)" -%feature("docstring") pmt_s8vector::uniform_elements " +%feature("docstring") pmt::pmt_s8vector::uniform_elements " Params: (len)" -%feature("docstring") pmt_s8vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_s8vector::uniform_writable_elements " Params: (len)" @@ -23325,44 +25071,6 @@ Params: (k, v)" -%feature("docstring") pmt_u16vector::pmt_u16vector " - -Params: (k, fill)" - -%feature("docstring") pmt_u16vector::is_u16vector " - -Params: (NONE)" - -%feature("docstring") pmt_u16vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_u16vector::ref " - -Params: (k)" - -%feature("docstring") pmt_u16vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_u16vector::elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::uniform_writable_elements " - -Params: (len)" - - - %feature("docstring") pmt::pmt_u16vector::pmt_u16vector " Params: (k, fill)" @@ -23401,39 +25109,39 @@ Params: (len)" -%feature("docstring") pmt::pmt_u32vector::pmt_u32vector " +%feature("docstring") pmt_u16vector::pmt_u16vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_u32vector::is_u32vector " +%feature("docstring") pmt_u16vector::is_u16vector " Params: (NONE)" -%feature("docstring") pmt::pmt_u32vector::length " +%feature("docstring") pmt_u16vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_u32vector::ref " +%feature("docstring") pmt_u16vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_u32vector::set " +%feature("docstring") pmt_u16vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_u32vector::elements " +%feature("docstring") pmt_u16vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_u32vector::writable_elements " +%feature("docstring") pmt_u16vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_u32vector::uniform_elements " +%feature("docstring") pmt_u16vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_u32vector::uniform_writable_elements " +%feature("docstring") pmt_u16vector::uniform_writable_elements " Params: (len)" @@ -23477,39 +25185,39 @@ Params: (len)" -%feature("docstring") pmt::pmt_u64vector::pmt_u64vector " +%feature("docstring") pmt::pmt_u32vector::pmt_u32vector " Params: (k, fill)" -%feature("docstring") pmt::pmt_u64vector::is_u64vector " +%feature("docstring") pmt::pmt_u32vector::is_u32vector " Params: (NONE)" -%feature("docstring") pmt::pmt_u64vector::length " +%feature("docstring") pmt::pmt_u32vector::length " Params: (NONE)" -%feature("docstring") pmt::pmt_u64vector::ref " +%feature("docstring") pmt::pmt_u32vector::ref " Params: (k)" -%feature("docstring") pmt::pmt_u64vector::set " +%feature("docstring") pmt::pmt_u32vector::set " Params: (k, x)" -%feature("docstring") pmt::pmt_u64vector::elements " +%feature("docstring") pmt::pmt_u32vector::elements " Params: (len)" -%feature("docstring") pmt::pmt_u64vector::writable_elements " +%feature("docstring") pmt::pmt_u32vector::writable_elements " Params: (len)" -%feature("docstring") pmt::pmt_u64vector::uniform_elements " +%feature("docstring") pmt::pmt_u32vector::uniform_elements " Params: (len)" -%feature("docstring") pmt::pmt_u64vector::uniform_writable_elements " +%feature("docstring") pmt::pmt_u32vector::uniform_writable_elements " Params: (len)" @@ -23553,6 +25261,44 @@ Params: (len)" +%feature("docstring") pmt::pmt_u64vector::pmt_u64vector " + +Params: (k, fill)" + +%feature("docstring") pmt::pmt_u64vector::is_u64vector " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u64vector::length " + +Params: (NONE)" + +%feature("docstring") pmt::pmt_u64vector::ref " + +Params: (k)" + +%feature("docstring") pmt::pmt_u64vector::set " + +Params: (k, x)" + +%feature("docstring") pmt::pmt_u64vector::elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::writable_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::uniform_elements " + +Params: (len)" + +%feature("docstring") pmt::pmt_u64vector::uniform_writable_elements " + +Params: (len)" + + + %feature("docstring") pmt_u8vector::pmt_u8vector " Params: (k, fill)" @@ -23777,6 +25523,18 @@ Params: (NONE)" %feature("docstring") std::priority_queue "STL class." + + +%feature("docstring") psk::psk " + +Params: (gr_constell)" + + + +%feature("docstring") qam::qam " + +Params: (gr_constell)" + %feature("docstring") sssr::quad_filter "quad filter (used to compute timing error)" %feature("docstring") sssr::quad_filter::quad_filter " @@ -23795,25 +25553,25 @@ Params: (sample)" %feature("docstring") std::range_error "STL class." -%feature("docstring") std::multiset::reverse_iterator "STL iterator class." +%feature("docstring") std::wstring::reverse_iterator "STL iterator class." -%feature("docstring") std::basic_string::reverse_iterator "STL iterator class." +%feature("docstring") std::multimap::reverse_iterator "STL iterator class." -%feature("docstring") std::string::reverse_iterator "STL iterator class." +%feature("docstring") std::vector::reverse_iterator "STL iterator class." -%feature("docstring") std::map::reverse_iterator "STL iterator class." +%feature("docstring") std::deque::reverse_iterator "STL iterator class." -%feature("docstring") std::list::reverse_iterator "STL iterator class." +%feature("docstring") std::multiset::reverse_iterator "STL iterator class." -%feature("docstring") std::wstring::reverse_iterator "STL iterator class." +%feature("docstring") std::basic_string::reverse_iterator "STL iterator class." %feature("docstring") std::set::reverse_iterator "STL iterator class." -%feature("docstring") std::deque::reverse_iterator "STL iterator class." +%feature("docstring") std::map::reverse_iterator "STL iterator class." -%feature("docstring") std::multimap::reverse_iterator "STL iterator class." +%feature("docstring") std::list::reverse_iterator "STL iterator class." -%feature("docstring") std::vector::reverse_iterator "STL iterator class." +%feature("docstring") std::string::reverse_iterator "STL iterator class." @@ -24156,6 +25914,302 @@ Params: (NONE)" Params: (baseband, dxc, residual, inverted)" + + +%feature("docstring") uhd_multi_usrp_sink::uhd_multi_usrp_sink "Set the IO signature for this block. + +Params: (sig)" + +%feature("docstring") uhd_multi_usrp_sink::set_subdev_spec "Set the subdevice specification. + +Params: (spec, mboard)" + +%feature("docstring") uhd_multi_usrp_sink::set_samp_rate "Set the sample rate for the usrp device. + +Params: (rate)" + +%feature("docstring") uhd_multi_usrp_sink::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. + +Params: ()" + +%feature("docstring") uhd_multi_usrp_sink::set_center_freq "Tune the usrp device to the desired center frequency. + +Params: (tune_request, chan)" + +%feature("docstring") uhd_multi_usrp_sink::get_freq_range "Get the tunable frequency range. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_sink::set_gain "Set the gain for the dboard. + +Params: (gain, chan)" + +%feature("docstring") uhd_multi_usrp_sink::get_gain "Get the actual dboard gain setting. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_sink::get_gain_range "Get the settable gain range. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_sink::set_antenna "Set the antenna to use. + +Params: (ant, chan)" + +%feature("docstring") uhd_multi_usrp_sink::get_antenna "Get the antenna in use. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_sink::get_antennas "Get a list of possible antennas. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_sink::set_bandwidth "Set the subdevice bandpass filter. + +Params: (bandwidth, chan)" + +%feature("docstring") uhd_multi_usrp_sink::set_clock_config "Set the clock configuration. + +Params: (clock_config, mboard)" + +%feature("docstring") uhd_multi_usrp_sink::get_time_now "Get the current time registers. + +Params: ()" + +%feature("docstring") uhd_multi_usrp_sink::set_time_next_pps "Set the time registers at the next pps. + +Params: (time_spec)" + +%feature("docstring") uhd_multi_usrp_sink::set_time_unknown_pps "Sync the time registers with an unknown pps edge. + +Params: (time_spec)" + +%feature("docstring") uhd_multi_usrp_sink::get_device "Get access to the underlying uhd device object. + +Params: ()" + + + +%feature("docstring") uhd_multi_usrp_source::uhd_multi_usrp_source "Set the IO signature for this block. + +Params: (sig)" + +%feature("docstring") uhd_multi_usrp_source::set_subdev_spec "Set the subdevice specification. + +Params: (spec, mboard)" + +%feature("docstring") uhd_multi_usrp_source::set_samp_rate "Set the sample rate for the usrp device. + +Params: (rate)" + +%feature("docstring") uhd_multi_usrp_source::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. + +Params: ()" + +%feature("docstring") uhd_multi_usrp_source::set_center_freq "Tune the usrp device to the desired center frequency. + +Params: (tune_request, chan)" + +%feature("docstring") uhd_multi_usrp_source::get_freq_range "Get the tunable frequency range. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_source::set_gain "Set the gain for the dboard. + +Params: (gain, chan)" + +%feature("docstring") uhd_multi_usrp_source::get_gain "Get the actual dboard gain setting. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_source::get_gain_range "Get the settable gain range. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_source::set_antenna "Set the antenna to use. + +Params: (ant, chan)" + +%feature("docstring") uhd_multi_usrp_source::get_antenna "Get the antenna in use. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_source::get_antennas "Get a list of possible antennas. + +Params: (chan)" + +%feature("docstring") uhd_multi_usrp_source::set_bandwidth "Set the subdevice bandpass filter. + +Params: (bandwidth, chan)" + +%feature("docstring") uhd_multi_usrp_source::set_clock_config "Set the clock configuration. + +Params: (clock_config, mboard)" + +%feature("docstring") uhd_multi_usrp_source::get_time_now "Get the current time registers. + +Params: ()" + +%feature("docstring") uhd_multi_usrp_source::set_time_next_pps "Set the time registers at the next pps. + +Params: (time_spec)" + +%feature("docstring") uhd_multi_usrp_source::set_time_unknown_pps "Sync the time registers with an unknown pps edge. + +Params: (time_spec)" + +%feature("docstring") uhd_multi_usrp_source::get_device "Get access to the underlying uhd device object. + +Params: ()" + + + +%feature("docstring") uhd_single_usrp_sink::uhd_single_usrp_sink "Set the IO signature for this block. + +Params: (sig)" + +%feature("docstring") uhd_single_usrp_sink::set_subdev_spec "Set the subdevice specification. + +Params: (spec)" + +%feature("docstring") uhd_single_usrp_sink::set_samp_rate "Set the sample rate for the usrp device. + +Params: (rate)" + +%feature("docstring") uhd_single_usrp_sink::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. + +Params: ()" + +%feature("docstring") uhd_single_usrp_sink::set_center_freq "Tune the usrp device to the desired center frequency. + +Params: (tune_request, chan)" + +%feature("docstring") uhd_single_usrp_sink::get_freq_range "Get the tunable frequency range. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_sink::set_gain "Set the gain for the dboard. + +Params: (gain, chan)" + +%feature("docstring") uhd_single_usrp_sink::get_gain "Get the actual dboard gain setting. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_sink::get_gain_range "Get the settable gain range. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_sink::set_antenna "Set the antenna to use. + +Params: (ant, chan)" + +%feature("docstring") uhd_single_usrp_sink::get_antenna "Get the antenna in use. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_sink::get_antennas "Get a list of possible antennas. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_sink::set_bandwidth "Set the subdevice bandpass filter. + +Params: (bandwidth, chan)" + +%feature("docstring") uhd_single_usrp_sink::set_clock_config "Set the clock configuration. + +Params: (clock_config)" + +%feature("docstring") uhd_single_usrp_sink::get_time_now "Get the current time registers. + +Params: ()" + +%feature("docstring") uhd_single_usrp_sink::set_time_now "Set the time registers asap. + +Params: (time_spec)" + +%feature("docstring") uhd_single_usrp_sink::set_time_next_pps "Set the time registers at the next pps. + +Params: (time_spec)" + +%feature("docstring") uhd_single_usrp_sink::get_device "Get access to the underlying uhd device object. + +Params: ()" + + + +%feature("docstring") uhd_single_usrp_source::uhd_single_usrp_source "Set the IO signature for this block. + +Params: (sig)" + +%feature("docstring") uhd_single_usrp_source::set_subdev_spec "Set the subdevice specification. + +Params: (spec)" + +%feature("docstring") uhd_single_usrp_source::set_samp_rate "Set the sample rate for the usrp device. + +Params: (rate)" + +%feature("docstring") uhd_single_usrp_source::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. + +Params: ()" + +%feature("docstring") uhd_single_usrp_source::set_center_freq "Tune the usrp device to the desired center frequency. + +Params: (tune_request, chan)" + +%feature("docstring") uhd_single_usrp_source::get_freq_range "Get the tunable frequency range. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_source::set_gain "Set the gain for the dboard. + +Params: (gain, chan)" + +%feature("docstring") uhd_single_usrp_source::get_gain "Get the actual dboard gain setting. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_source::get_gain_range "Get the settable gain range. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_source::set_antenna "Set the antenna to use. + +Params: (ant, chan)" + +%feature("docstring") uhd_single_usrp_source::get_antenna "Get the antenna in use. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_source::get_antennas "Get a list of possible antennas. + +Params: (chan)" + +%feature("docstring") uhd_single_usrp_source::set_bandwidth "Set the subdevice bandpass filter. + +Params: (bandwidth, chan)" + +%feature("docstring") uhd_single_usrp_source::set_clock_config "Set the clock configuration. + +Params: (clock_config)" + +%feature("docstring") uhd_single_usrp_source::get_time_now "Get the current time registers. + +Params: ()" + +%feature("docstring") uhd_single_usrp_source::set_time_now "Set the time registers asap. + +Params: (time_spec)" + +%feature("docstring") uhd_single_usrp_source::set_time_next_pps "Set the time registers at the next pps. + +Params: (time_spec)" + +%feature("docstring") uhd_single_usrp_source::get_device "Get access to the underlying uhd device object. + +Params: ()" + %feature("docstring") std::underflow_error "STL class." %feature("docstring") usrp2::usrp2 "standard C++ interface to USRP2" @@ -24896,7 +26950,7 @@ Params: (candidates)" Params: (NONE)" -%feature("docstring") usrp_basic::init_db "One time call, made only only from usrp_standard_*make after shared_ptr is created. +%feature("docstring") usrp_basic::init_db " Params: (u)" diff --git a/gr-atsc/src/lib/Makefile.swig.gen b/gr-atsc/src/lib/Makefile.swig.gen index 7dbb98b46..526f6c3f5 100644 --- a/gr-atsc/src/lib/Makefile.swig.gen +++ b/gr-atsc/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _atsc_la_CXXFLAGS = \ $(atsc_la_swig_cxxflags) python/atsc.cc: atsc.py -atsc.py: atsc.i +atsc.py: atsc.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/atsc.d diff --git a/gr-audio-alsa/src/Makefile.swig.gen b/gr-audio-alsa/src/Makefile.swig.gen index c231a4784..e3f8b7240 100644 --- a/gr-audio-alsa/src/Makefile.swig.gen +++ b/gr-audio-alsa/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _audio_alsa_la_CXXFLAGS = \ $(audio_alsa_la_swig_cxxflags) python/audio_alsa.cc: audio_alsa.py -audio_alsa.py: audio_alsa.i +audio_alsa.py: audio_alsa.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/audio_alsa.d diff --git a/gr-audio-oss/src/Makefile.swig.gen b/gr-audio-oss/src/Makefile.swig.gen index ecb03acce..b23861197 100644 --- a/gr-audio-oss/src/Makefile.swig.gen +++ b/gr-audio-oss/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _audio_oss_la_CXXFLAGS = \ $(audio_oss_la_swig_cxxflags) python/audio_oss.cc: audio_oss.py -audio_oss.py: audio_oss.i +audio_oss.py: audio_oss.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/audio_oss.d diff --git a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen index e23427a0f..fd3eeb0d6 100644 --- a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen +++ b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _cvsd_vocoder_la_CXXFLAGS = \ $(cvsd_vocoder_la_swig_cxxflags) python/cvsd_vocoder.cc: cvsd_vocoder.py -cvsd_vocoder.py: cvsd_vocoder.i +cvsd_vocoder.py: cvsd_vocoder.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/cvsd_vocoder.d diff --git a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen index 77776abd8..2bf234bc5 100644 --- a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen +++ b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _gsm_full_rate_la_CXXFLAGS = \ $(gsm_full_rate_la_swig_cxxflags) python/gsm_full_rate.cc: gsm_full_rate.py -gsm_full_rate.py: gsm_full_rate.i +gsm_full_rate.py: gsm_full_rate.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/gsm_full_rate.d diff --git a/gr-msdd6000/src/Makefile.swig.gen b/gr-msdd6000/src/Makefile.swig.gen index dbf137334..4f932f43c 100644 --- a/gr-msdd6000/src/Makefile.swig.gen +++ b/gr-msdd6000/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _msdd_la_CXXFLAGS = \ $(msdd_la_swig_cxxflags) python/msdd.cc: msdd.py -msdd.py: msdd.i +msdd.py: msdd.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/msdd.d @@ -250,7 +250,7 @@ _msdd_rs_la_CXXFLAGS = \ $(msdd_rs_la_swig_cxxflags) python/msdd_rs.cc: msdd_rs.py -msdd_rs.py: msdd_rs.i +msdd_rs.py: msdd_rs.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/msdd_rs.d diff --git a/gr-noaa/swig/Makefile.swig.gen b/gr-noaa/swig/Makefile.swig.gen index f5e778811..f56ec5000 100644 --- a/gr-noaa/swig/Makefile.swig.gen +++ b/gr-noaa/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _noaa_swig_la_CXXFLAGS = \ $(noaa_swig_la_swig_cxxflags) python/noaa_swig.cc: noaa_swig.py -noaa_swig.py: noaa_swig.i +noaa_swig.py: noaa_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/noaa_swig.d diff --git a/gr-pager/swig/Makefile.swig.gen b/gr-pager/swig/Makefile.swig.gen index 70d215384..f85a0f36c 100644 --- a/gr-pager/swig/Makefile.swig.gen +++ b/gr-pager/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _pager_swig_la_CXXFLAGS = \ $(pager_swig_la_swig_cxxflags) python/pager_swig.cc: pager_swig.py -pager_swig.py: pager_swig.i +pager_swig.py: pager_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/pager_swig.d diff --git a/gr-qtgui/src/lib/Makefile.swig.gen b/gr-qtgui/src/lib/Makefile.swig.gen index 9c4c0b58c..f64fe4334 100644 --- a/gr-qtgui/src/lib/Makefile.swig.gen +++ b/gr-qtgui/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _qtgui_la_CXXFLAGS = \ $(qtgui_la_swig_cxxflags) python/qtgui.cc: qtgui.py -qtgui.py: qtgui.i +qtgui.py: qtgui.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/qtgui.d diff --git a/gr-radio-astronomy/src/lib/Makefile.swig.gen b/gr-radio-astronomy/src/lib/Makefile.swig.gen index d560e3919..6720f3b38 100644 --- a/gr-radio-astronomy/src/lib/Makefile.swig.gen +++ b/gr-radio-astronomy/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _ra_la_CXXFLAGS = \ $(ra_la_swig_cxxflags) python/ra.cc: ra.py -ra.py: ra.i +ra.py: ra.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/ra.d diff --git a/gr-trellis/src/lib/Makefile.swig.gen b/gr-trellis/src/lib/Makefile.swig.gen index 784c146cf..6f57642f2 100644 --- a/gr-trellis/src/lib/Makefile.swig.gen +++ b/gr-trellis/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _trellis_la_CXXFLAGS = \ $(trellis_la_swig_cxxflags) python/trellis.cc: trellis.py -trellis.py: trellis.i +trellis.py: trellis.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/trellis.d diff --git a/gr-usrp/src/Makefile.swig.gen b/gr-usrp/src/Makefile.swig.gen index c122d6dd9..f001b3824 100644 --- a/gr-usrp/src/Makefile.swig.gen +++ b/gr-usrp/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp_swig_la_CXXFLAGS = \ $(usrp_swig_la_swig_cxxflags) python/usrp_swig.cc: usrp_swig.py -usrp_swig.py: usrp_swig.i +usrp_swig.py: usrp_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/usrp_swig.d diff --git a/gr-usrp2/src/Makefile.swig.gen b/gr-usrp2/src/Makefile.swig.gen index d791ae2fa..ff451289d 100644 --- a/gr-usrp2/src/Makefile.swig.gen +++ b/gr-usrp2/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp2_swig_la_CXXFLAGS = \ $(usrp2_swig_la_swig_cxxflags) python/usrp2_swig.cc: usrp2_swig.py -usrp2_swig.py: usrp2_swig.i +usrp2_swig.py: usrp2_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/usrp2_swig.d diff --git a/gr-video-sdl/src/Makefile.swig.gen b/gr-video-sdl/src/Makefile.swig.gen index d69203f79..217a55593 100644 --- a/gr-video-sdl/src/Makefile.swig.gen +++ b/gr-video-sdl/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _video_sdl_la_CXXFLAGS = \ $(video_sdl_la_swig_cxxflags) python/video_sdl.cc: video_sdl.py -video_sdl.py: video_sdl.i +video_sdl.py: video_sdl.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/video_sdl.d diff --git a/usrp/host/swig/Makefile.swig.gen b/usrp/host/swig/Makefile.swig.gen index b4cc97caa..080a7c75a 100644 --- a/usrp/host/swig/Makefile.swig.gen +++ b/usrp/host/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp_prims_la_CXXFLAGS = \ $(usrp_prims_la_swig_cxxflags) python/usrp_prims.cc: usrp_prims.py -usrp_prims.py: usrp_prims.i +usrp_prims.py: usrp_prims.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i # Include the python dependencies for this file -include python/usrp_prims.d -- cgit From 0e8c354254481d57af568af9250a8e9ea4f6904d Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 30 Jan 2011 21:33:24 -0700 Subject: Modified python level OFDM to use constellation object. --- .../src/python/gnuradio/blks2impl/ofdm.py | 75 +++++++++------------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py index 2663f7cf8..7e01e67b4 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py @@ -21,12 +21,26 @@ # import math -from gnuradio import gr, ofdm_packet_utils +from gnuradio import gr, ofdm_packet_utils, modulation_utils2 import gnuradio.gr.gr_threading as _threading import psk, qam from gnuradio.blks2impl.ofdm_receiver import ofdm_receiver +def _add_common_options(normal, expert): + """ + Adds OFDM-specific options to the Options Parser that are common + both to the modulator and demodulator. + """ + mods_list = ", ".join(modulation_utils2.type_1_mods().keys()) + normal.add_option("-m", "--modulation", type="string", default="psk", + help="set modulation type (" + mods_list + ") [default=%default]") + expert.add_option("", "--fft-length", type="intx", default=512, + help="set the number of FFT bins [default=%default]") + expert.add_option("", "--occupied-tones", type="intx", default=200, + help="set the number of occupied FFT bins [default=%default]") + expert.add_option("", "--cp-length", type="intx", default=128, + help="set the number of bits in the cyclic prefix [default=%default]") # ///////////////////////////////////////////////////////////////////////////// # mod/demod with packets as i/o @@ -61,6 +75,8 @@ class ofdm_mod(gr.hier_block2): self._fft_length = options.fft_length self._occupied_tones = options.occupied_tones self._cp_length = options.cp_length + + arity = options.constellation_points win = [] #[1 for i in range(self._fft_length)] @@ -82,19 +98,9 @@ class ofdm_mod(gr.hier_block2): symbol_length = options.fft_length + options.cp_length - mods = {"bpsk": 2, "qpsk": 4, "8psk": 8, "qam8": 8, "qam16": 16, "qam64": 64, "qam256": 256} - arity = mods[self._modulation] - - rot = 1 - if self._modulation == "qpsk": - rot = (0.707+0.707j) - - if(self._modulation.find("psk") >= 0): - rotated_const = map(lambda pt: pt * rot, psk.gray_constellation[arity]) - elif(self._modulation.find("qam") >= 0): - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - #print rotated_const - self._pkt_input = gr.ofdm_mapper_bcv(rotated_const, msgq_limit, + const = modulation_utils2.type_1_constellations()[self._modulation](arity).points() + + self._pkt_input = gr.ofdm_mapper_bcv(const, msgq_limit, options.occupied_tones, options.fft_length) self.preambles = gr.ofdm_insert_preamble(self._fft_length, padded_preambles) @@ -140,14 +146,10 @@ class ofdm_mod(gr.hier_block2): """ Adds OFDM-specific options to the Options Parser """ - normal.add_option("-m", "--modulation", type="string", default="bpsk", - help="set modulation type (bpsk, qpsk, 8psk, qam{16,64}) [default=%default]") - expert.add_option("", "--fft-length", type="intx", default=512, - help="set the number of FFT bins [default=%default]") - expert.add_option("", "--occupied-tones", type="intx", default=200, - help="set the number of occupied FFT bins [default=%default]") - expert.add_option("", "--cp-length", type="intx", default=128, - help="set the number of bits in the cyclic prefix [default=%default]") + _add_common_options(normal, expert) + for mod in modulation_utils2.type_1_mods().values(): + mod.add_options(expert) + # Make a static method to call before instantiation add_options = staticmethod(add_options) @@ -196,6 +198,9 @@ class ofdm_demod(gr.hier_block2): self._cp_length = options.cp_length self._snr = options.snr + arity = options.constellation_points + print("con points is %s" % options.constellation_points) + # Use freq domain to get doubled-up known symbol for correlation in time domain zeros_on_left = int(math.ceil((self._fft_length - self._occupied_tones)/2.0)) ksfreq = known_symbols_4512_3[0:self._occupied_tones] @@ -211,22 +216,11 @@ class ofdm_demod(gr.hier_block2): self._occupied_tones, self._snr, preambles, options.log) - mods = {"bpsk": 2, "qpsk": 4, "8psk": 8, "qam8": 8, "qam16": 16, "qam64": 64, "qam256": 256} - arity = mods[self._modulation] - - rot = 1 - if self._modulation == "qpsk": - rot = (0.707+0.707j) - - if(self._modulation.find("psk") >= 0): - rotated_const = map(lambda pt: pt * rot, psk.gray_constellation[arity]) - elif(self._modulation.find("qam") >= 0): - rotated_const = map(lambda pt: pt * rot, qam.constellation[arity]) - #print rotated_const + constell = modulation_utils2.type_1_constellations()[self._modulation](arity).points() phgain = 0.25 frgain = phgain*phgain / 4.0 - self.ofdm_demod = gr.ofdm_frame_sink(rotated_const, range(arity), + self.ofdm_demod = gr.ofdm_frame_sink(constell, range(arity), self._rcvd_pktq, self._occupied_tones, phgain, frgain) @@ -253,14 +247,9 @@ class ofdm_demod(gr.hier_block2): """ Adds OFDM-specific options to the Options Parser """ - normal.add_option("-m", "--modulation", type="string", default="bpsk", - help="set modulation type (bpsk or qpsk) [default=%default]") - expert.add_option("", "--fft-length", type="intx", default=512, - help="set the number of FFT bins [default=%default]") - expert.add_option("", "--occupied-tones", type="intx", default=200, - help="set the number of occupied FFT bins [default=%default]") - expert.add_option("", "--cp-length", type="intx", default=128, - help="set the number of bits in the cyclic prefix [default=%default]") + _add_common_options(normal, expert) + for demod in modulation_utils2.type_1_demods().values(): + demod.add_options(expert) # Make a static method to call before instantiation add_options = staticmethod(add_options) -- cgit From 8f81162fbd94c708e71caf2f402588db4d1d82c6 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 30 Jan 2011 21:58:09 -0700 Subject: Added ofdm_frame_sink2. Like ofdm_frame_sink but uses constellation object. --- gnuradio-core/src/lib/general/Makefile.am | 3 + gnuradio-core/src/lib/general/general.i | 2 + .../src/lib/general/gr_ofdm_frame_sink2.cc | 371 +++++++++++++++++++++ .../src/lib/general/gr_ofdm_frame_sink2.h | 120 +++++++ .../src/lib/general/gr_ofdm_frame_sink2.i | 39 +++ .../src/python/gnuradio/blks2impl/ofdm.py | 4 +- 6 files changed, 537 insertions(+), 2 deletions(-) create mode 100644 gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc create mode 100644 gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h create mode 100644 gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index fad2536bf..e5ea49640 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -113,6 +113,7 @@ libgeneral_la_SOURCES = \ gr_ofdm_demapper_vcb.cc \ gr_ofdm_mapper_bcv.cc \ gr_ofdm_frame_sink.cc \ + gr_ofdm_frame_sink2.cc \ gr_ofdm_insert_preamble.cc \ gr_ofdm_sampler.cc \ gr_pa_2x2_phase_combiner.cc \ @@ -276,6 +277,7 @@ grinclude_HEADERS = \ gr_ofdm_demapper_vcb.h \ gr_ofdm_mapper_bcv.h \ gr_ofdm_frame_sink.h \ + gr_ofdm_frame_sink2.h \ gr_ofdm_insert_preamble.h \ gr_ofdm_sampler.h \ gr_pa_2x2_phase_combiner.h \ @@ -441,6 +443,7 @@ swiginclude_HEADERS = \ gr_ofdm_demapper_vcb.i \ gr_ofdm_mapper_bcv.i \ gr_ofdm_frame_sink.i \ + gr_ofdm_frame_sink2.i \ gr_ofdm_insert_preamble.i \ gr_ofdm_sampler.i \ gr_pa_2x2_phase_combiner.i \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index 7e845cb21..aa7d95ff2 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -99,6 +99,7 @@ #include #include #include +#include #include #include #include @@ -226,6 +227,7 @@ %include "gr_ofdm_cyclic_prefixer.i" %include "gr_ofdm_mapper_bcv.i" %include "gr_ofdm_frame_sink.i" +%include "gr_ofdm_frame_sink2.i" %include "gr_ofdm_insert_preamble.i" %include "gr_ofdm_sampler.i" %include "gr_regenerate_bb.i" diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc new file mode 100644 index 000000000..8d104e7be --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc @@ -0,0 +1,371 @@ +/* -*- c++ -*- */ +/* + * Copyright 2007,2008,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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VERBOSE 0 + +inline void +gr_ofdm_frame_sink2::enter_search() +{ + if (VERBOSE) + fprintf(stderr, "@ enter_search\n"); + + d_state = STATE_SYNC_SEARCH; + +} + +inline void +gr_ofdm_frame_sink2::enter_have_sync() +{ + if (VERBOSE) + fprintf(stderr, "@ enter_have_sync\n"); + + d_state = STATE_HAVE_SYNC; + + // clear state of demapper + d_byte_offset = 0; + d_partial_byte = 0; + + d_header = 0; + d_headerbytelen_cnt = 0; + + // Resetting PLL + d_freq = 0.0; + d_phase = 0.0; + fill(d_dfe.begin(), d_dfe.end(), gr_complex(1.0,0.0)); +} + +inline void +gr_ofdm_frame_sink2::enter_have_header() +{ + d_state = STATE_HAVE_HEADER; + + // header consists of two 16-bit shorts in network byte order + // payload length is lower 12 bits + // whitener offset is upper 4 bits + d_packetlen = (d_header >> 16) & 0x0fff; + d_packet_whitener_offset = (d_header >> 28) & 0x000f; + d_packetlen_cnt = 0; + + if (VERBOSE) + fprintf(stderr, "@ enter_have_header (payload_len = %d) (offset = %d)\n", + d_packetlen, d_packet_whitener_offset); +} + + +unsigned int gr_ofdm_frame_sink2::demapper(const gr_complex *in, + unsigned char *out) +{ + unsigned int i=0, bytes_produced=0; + gr_complex carrier; + + carrier=gr_expj(d_phase); + + gr_complex accum_error = 0.0; + //while(i < d_occupied_carriers) { + while(i < d_subcarrier_map.size()) { + if(d_nresid > 0) { + d_partial_byte |= d_resid; + d_byte_offset += d_nresid; + d_nresid = 0; + d_resid = 0; + } + + //while((d_byte_offset < 8) && (i < d_occupied_carriers)) { + while((d_byte_offset < 8) && (i < d_subcarrier_map.size())) { + //gr_complex sigrot = in[i]*carrier*d_dfe[i]; + gr_complex sigrot = in[d_subcarrier_map[i]]*carrier*d_dfe[i]; + + if(d_derotated_output != NULL){ + d_derotated_output[i] = sigrot; + } + + unsigned char bits = d_constell->decision_maker(sigrot); + + gr_complex closest_sym = d_constell->points()[bits]; + + accum_error += sigrot * conj(closest_sym); + + // FIX THE FOLLOWING STATEMENT + if (norm(sigrot)> 0.001) d_dfe[i] += d_eq_gain*(closest_sym/sigrot-d_dfe[i]); + + i++; + + if((8 - d_byte_offset) >= d_nbits) { + d_partial_byte |= bits << (d_byte_offset); + d_byte_offset += d_nbits; + } + else { + d_nresid = d_nbits-(8-d_byte_offset); + int mask = ((1<<(8-d_byte_offset))-1); + d_partial_byte |= (bits & mask) << d_byte_offset; + d_resid = bits >> (8-d_byte_offset); + d_byte_offset += (d_nbits - d_nresid); + } + //printf("demod symbol: %.4f + j%.4f bits: %x partial_byte: %x byte_offset: %d resid: %x nresid: %d\n", + // in[i-1].real(), in[i-1].imag(), bits, d_partial_byte, d_byte_offset, d_resid, d_nresid); + } + + if(d_byte_offset == 8) { + //printf("demod byte: %x \n\n", d_partial_byte); + out[bytes_produced++] = d_partial_byte; + d_byte_offset = 0; + d_partial_byte = 0; + } + } + //std::cerr << "accum_error " << accum_error << std::endl; + + float angle = arg(accum_error); + + d_freq = d_freq - d_freq_gain*angle; + d_phase = d_phase + d_freq - d_phase_gain*angle; + if (d_phase >= 2*M_PI) d_phase -= 2*M_PI; + if (d_phase <0) d_phase += 2*M_PI; + + //if(VERBOSE) + // std::cerr << angle << "\t" << d_freq << "\t" << d_phase << "\t" << std::endl; + + return bytes_produced; +} + + +gr_ofdm_frame_sink2_sptr +gr_make_ofdm_frame_sink2(gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_carriers, + float phase_gain, float freq_gain) +{ + return gnuradio::get_initial_sptr(new gr_ofdm_frame_sink2(constell, + target_queue, occupied_carriers, + phase_gain, freq_gain)); +} + + +gr_ofdm_frame_sink2::gr_ofdm_frame_sink2(gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_carriers, + float phase_gain, float freq_gain) + : gr_sync_block ("ofdm_frame_sink2", + gr_make_io_signature2 (2, 2, sizeof(gr_complex)*occupied_carriers, sizeof(char)), + gr_make_io_signature (1, 1, sizeof(gr_complex)*occupied_carriers)), + d_constell(constell), + d_target_queue(target_queue), d_occupied_carriers(occupied_carriers), + d_byte_offset(0), d_partial_byte(0), + d_resid(0), d_nresid(0),d_phase(0),d_freq(0),d_phase_gain(phase_gain),d_freq_gain(freq_gain), + d_eq_gain(0.05) +{ + std::string carriers = "FE7F"; + + // A bit hacky to fill out carriers to occupied_carriers length + int diff = (d_occupied_carriers - 4*carriers.length()); + while(diff > 7) { + carriers.insert(0, "f"); + carriers.insert(carriers.length(), "f"); + diff -= 8; + } + + // if there's extras left to be processed + // divide remaining to put on either side of current map + // all of this is done to stick with the concept of a carrier map string that + // can be later passed by the user, even though it'd be cleaner to just do this + // on the carrier map itself + int diff_left=0; + int diff_right=0; + + // dictionary to convert from integers to ascii hex representation + char abc[16] = {'0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + if(diff > 0) { + char c[2] = {0,0}; + + diff_left = (int)ceil((float)diff/2.0f); // number of carriers to put on the left side + c[0] = abc[(1 << diff_left) - 1]; // convert to bits and move to ASCI integer + carriers.insert(0, c); + + diff_right = diff - diff_left; // number of carriers to put on the right side + c[0] = abc[0xF^((1 << diff_right) - 1)]; // convert to bits and move to ASCI integer + carriers.insert(carriers.length(), c); + } + + // It seemed like such a good idea at the time... + // because we are only dealing with the occupied_carriers + // at this point, the diff_left in the following compensates + // for any offset from the 0th carrier introduced + unsigned int i,j,k; + for(i = 0; i < (d_occupied_carriers/4)+diff_left; i++) { + char c = carriers[i]; + for(j = 0; j < 4; j++) { + k = (strtol(&c, NULL, 16) >> (3-j)) & 0x1; + if(k) { + d_subcarrier_map.push_back(4*i + j - diff_left); + } + } + } + + // make sure we stay in the limit currently imposed by the occupied_carriers + if(d_subcarrier_map.size() > d_occupied_carriers) { + throw std::invalid_argument("gr_ofdm_mapper_bcv: subcarriers allocated exceeds size of occupied carriers"); + } + + d_bytes_out = new unsigned char[d_occupied_carriers]; + d_dfe.resize(occupied_carriers); + fill(d_dfe.begin(), d_dfe.end(), gr_complex(1.0,0.0)); + + d_nbits = d_constell->bits_per_symbol(); + + enter_search(); +} + +gr_ofdm_frame_sink2::~gr_ofdm_frame_sink2 () +{ + delete [] d_bytes_out; +} + + +int +gr_ofdm_frame_sink2::work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + const gr_complex *in = (const gr_complex *) input_items[0]; + const char *sig = (const char *) input_items[1]; + unsigned int j = 0; + unsigned int bytes=0; + + // If the output is connected, send it the derotated symbols + if(output_items.size() >= 1) + d_derotated_output = (gr_complex *)output_items[0]; + else + d_derotated_output = NULL; + + if (VERBOSE) + fprintf(stderr,">>> Entering state machine\n"); + + switch(d_state) { + + case STATE_SYNC_SEARCH: // Look for flag indicating beginning of pkt + if (VERBOSE) + fprintf(stderr,"SYNC Search, noutput=%d\n", noutput_items); + + if (sig[0]) { // Found it, set up for header decode + enter_have_sync(); + } + break; + + case STATE_HAVE_SYNC: + // only demod after getting the preamble signal; otherwise, the + // equalizer taps will screw with the PLL performance + bytes = demapper(&in[0], d_bytes_out); + + if (VERBOSE) { + if(sig[0]) + printf("ERROR -- Found SYNC in HAVE_SYNC\n"); + fprintf(stderr,"Header Search bitcnt=%d, header=0x%08x\n", + d_headerbytelen_cnt, d_header); + } + + j = 0; + while(j < bytes) { + d_header = (d_header << 8) | (d_bytes_out[j] & 0xFF); + j++; + + if (++d_headerbytelen_cnt == HEADERBYTELEN) { + + if (VERBOSE) + fprintf(stderr, "got header: 0x%08x\n", d_header); + + // we have a full header, check to see if it has been received properly + if (header_ok()){ + enter_have_header(); + + if (VERBOSE) + printf("\nPacket Length: %d\n", d_packetlen); + + while((j < bytes) && (d_packetlen_cnt < d_packetlen)) { + d_packet[d_packetlen_cnt++] = d_bytes_out[j++]; + } + + if(d_packetlen_cnt == d_packetlen) { + gr_message_sptr msg = + gr_make_message(0, d_packet_whitener_offset, 0, d_packetlen); + memcpy(msg->msg(), d_packet, d_packetlen_cnt); + d_target_queue->insert_tail(msg); // send it + msg.reset(); // free it up + + enter_search(); + } + } + else { + enter_search(); // bad header + } + } + } + break; + + case STATE_HAVE_HEADER: + bytes = demapper(&in[0], d_bytes_out); + + if (VERBOSE) { + if(sig[0]) + printf("ERROR -- Found SYNC in HAVE_HEADER at %d, length of %d\n", d_packetlen_cnt, d_packetlen); + fprintf(stderr,"Packet Build\n"); + } + + j = 0; + while(j < bytes) { + d_packet[d_packetlen_cnt++] = d_bytes_out[j++]; + + if (d_packetlen_cnt == d_packetlen){ // packet is filled + // build a message + // NOTE: passing header field as arg1 is not scalable + gr_message_sptr msg = + gr_make_message(0, d_packet_whitener_offset, 0, d_packetlen_cnt); + memcpy(msg->msg(), d_packet, d_packetlen_cnt); + + d_target_queue->insert_tail(msg); // send it + msg.reset(); // free it up + + enter_search(); + break; + } + } + break; + + default: + assert(0); + + } // switch + + return 1; +} diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h new file mode 100644 index 000000000..647ce7958 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h @@ -0,0 +1,120 @@ +/* -*- c++ -*- */ +/* + * Copyright 2007 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. + */ + +#ifndef INCLUDED_GR_OFDM_FRAME_SINK2_H +#define INCLUDED_GR_OFDM_FRAME_SINK2_H + +#include +#include +#include + +class gr_ofdm_frame_sink2; +typedef boost::shared_ptr gr_ofdm_frame_sink2_sptr; + +gr_ofdm_frame_sink2_sptr +gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_tones, + float phase_gain=0.25, float freq_gain=0.25*0.25/4.0); + +/*! + * \brief Takes an OFDM symbol in, demaps it into bits of 0's and 1's, packs + * them into packets, and sends to to a message queue sink. + * \ingroup sink_blk + * \ingroup ofdm_blk + * + * NOTE: The mod input parameter simply chooses a pre-defined demapper/slicer. Eventually, + * we want to be able to pass in a reference to an object to do the demapping and slicing + * for a given modulation type. + */ +class gr_ofdm_frame_sink2 : public gr_sync_block +{ + friend gr_ofdm_frame_sink2_sptr + gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_tones, + float phase_gain, float freq_gain); + + private: + enum state_t {STATE_SYNC_SEARCH, STATE_HAVE_SYNC, STATE_HAVE_HEADER}; + + static const int MAX_PKT_LEN = 4096; + static const int HEADERBYTELEN = 4; + + gr_msg_queue_sptr d_target_queue; // where to send the packet when received + state_t d_state; + unsigned int d_header; // header bits + int d_headerbytelen_cnt; // how many so far + + unsigned char *d_bytes_out; // hold the current bytes produced by the demapper + + unsigned int d_occupied_carriers; + unsigned int d_byte_offset; + unsigned int d_partial_byte; + + unsigned char d_packet[MAX_PKT_LEN]; // assembled payload + int d_packetlen; // length of packet + int d_packet_whitener_offset; // offset into whitener string to use + int d_packetlen_cnt; // how many so far + + gr_complex * d_derotated_output; // Pointer to output stream to send deroated symbols out + + gr_constellation_sptr d_constell; + std::vector d_dfe; + unsigned int d_nbits; + + unsigned char d_resid; + unsigned int d_nresid; + float d_phase; + float d_freq; + float d_phase_gain; + float d_freq_gain; + float d_eq_gain; + + std::vector d_subcarrier_map; + + protected: + gr_ofdm_frame_sink2(gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_tones, + float phase_gain, float freq_gain); + + void enter_search(); + void enter_have_sync(); + void enter_have_header(); + + bool header_ok() + { + // confirm that two copies of header info are identical + return ((d_header >> 16) ^ (d_header & 0xffff)) == 0; + } + + unsigned char slicer(const gr_complex x); + unsigned int demapper(const gr_complex *in, + unsigned char *out); + + public: + ~gr_ofdm_frame_sink2(); + + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif /* INCLUDED_GR_OFDM_FRAME_SINK2_H */ diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i new file mode 100644 index 000000000..24d4b32bd --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i @@ -0,0 +1,39 @@ +/* -*- c++ -*- */ +/* + * Copyright 2007 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. + */ + +GR_SWIG_BLOCK_MAGIC(gr,ofdm_frame_sink2); + +gr_ofdm_frame_sink2_sptr +gr_make_ofdm_frame_sink2(gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_tones, + float phase_gain=0.25, float freq_gain=0.25*0.25/4); + +class gr_ofdm_frame_sink2 : public gr_sync_block +{ + protected: + gr_ofdm_frame_sink2(gr_constellation_sptr constell, + gr_msg_queue_sptr target_queue, unsigned int occupied_tones, + float phase_gain, float freq_gain); + + public: + ~gr_ofdm_frame_sink2(); +}; diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py index 7e01e67b4..997df0bdf 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py @@ -216,11 +216,11 @@ class ofdm_demod(gr.hier_block2): self._occupied_tones, self._snr, preambles, options.log) - constell = modulation_utils2.type_1_constellations()[self._modulation](arity).points() + constell = modulation_utils2.type_1_constellations()[self._modulation](arity) phgain = 0.25 frgain = phgain*phgain / 4.0 - self.ofdm_demod = gr.ofdm_frame_sink(constell, range(arity), + self.ofdm_demod = gr.ofdm_frame_sink2(constell.base(), self._rcvd_pktq, self._occupied_tones, phgain, frgain) -- cgit From f2196f9ca883114d2c39beb59489387a43b8bff7 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Mon, 31 Jan 2011 22:30:15 -0700 Subject: Added BPSK constellation object. --- gnuradio-core/src/lib/general/gr_constellation.cc | 21 +++++ gnuradio-core/src/lib/general/gr_constellation.h | 43 ++++++++-- gnuradio-core/src/lib/general/gr_constellation.i | 23 +++-- .../src/python/gnuradio/blks2impl/Makefile.am | 1 + .../src/python/gnuradio/blks2impl/bpsk.py | 98 ++++++++++++++++++++++ 5 files changed, 171 insertions(+), 15 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 8b98a5731..477532e5c 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -43,6 +43,10 @@ gr_constellation::gr_constellation (std::vector constellation) : { } +gr_constellation::gr_constellation () +{ +} + unsigned int get_closest_point(std::vector constellation, gr_complex sample) { unsigned int table_size = constellation.size(); @@ -169,3 +173,20 @@ unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { } +gr_constellation_bpsk_sptr +gr_make_constellation_bpsk() +{ + return gr_constellation_bpsk_sptr(new gr_constellation_bpsk ()); +} + +gr_constellation_bpsk::gr_constellation_bpsk () +{ + d_constellation.resize(2); + d_constellation[0] = gr_complex(-1, 0); + d_constellation[1] = gr_complex(1, 0); +} + +unsigned int gr_constellation_bpsk::decision_maker(gr_complex sample) +{ + return (real(sample) > 0); +} diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index d7f7b09b4..fcc947ca6 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -42,12 +42,12 @@ gr_constellation_sptr gr_make_constellation (std::vector constellation); class gr_constellation : public boost::enable_shared_from_this -//class gr_constellation { public: gr_constellation (std::vector constellation); - + gr_constellation (); + //! Returns the set of points in this constellation. std::vector points() { return d_constellation;} @@ -60,7 +60,6 @@ class gr_constellation : public boost::enable_shared_from_this } gr_constellation_sptr base() { - //return gr_constellation_sptr(this); return shared_from_this(); } @@ -91,7 +90,7 @@ class gr_constellation_sector : public gr_constellation unsigned int decision_maker (gr_complex sample); - // protected: + protected: virtual unsigned int get_sector (gr_complex sample) = 0; @@ -101,7 +100,7 @@ class gr_constellation_sector : public gr_constellation unsigned int n_sectors; - // private: + private: std::vector sector_values; @@ -133,13 +132,13 @@ class gr_constellation_rect : public gr_constellation_sector gr_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); - // protected: + protected: unsigned int get_sector (gr_complex sample); unsigned int calc_sector_value (unsigned int sector); - // private: + private: unsigned int n_real_sectors; unsigned int n_imag_sectors; @@ -175,17 +174,43 @@ class gr_constellation_psk : public gr_constellation_sector gr_constellation_psk (std::vector constellation, unsigned int n_sectors); - // protected: + protected: unsigned int get_sector (gr_complex sample); unsigned int calc_sector_value (unsigned int sector); - // private: + private: friend gr_constellation_psk_sptr gr_make_constellation_psk (std::vector constellation, unsigned int n_sectors); }; +/************************************************************/ +/* gr_constellation_bpsk */ +/* */ +/* Only works for BPSK. */ +/* */ +/************************************************************/ + +class gr_constellation_bpsk; +typedef boost::shared_ptr gr_constellation_bpsk_sptr; + +// public constructor +gr_constellation_bpsk_sptr +gr_make_constellation_bpsk (); + +class gr_constellation_bpsk : public gr_constellation +{ + public: + + gr_constellation_bpsk (); + unsigned int decision_maker (gr_complex sample); + + friend gr_constellation_bpsk_sptr + gr_make_constellation_bpsk (); + +}; + #endif diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index 2d15b8b1e..a34aade9f 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -77,12 +77,23 @@ public: std::vector points (); unsigned int decision_maker (gr_complex sample); unsigned int bits_per_symbol (); - gr_constellation_sptr base (); +}; + +class gr_constellation_bpsk; +typedef boost::shared_ptr gr_constellation_bpsk_sptr; +%template(gr_constellation_bpsk_sptr) boost::shared_ptr; +%rename(constellation_bpsk) gr_make_constellation_bpsk; +gr_constellation_bpsk_sptr gr_make_constellation_bpsk(); +%ignore gr_constellation_bpsk; - unsigned int get_sector (gr_complex sample); - unsigned int calc_sector_value (unsigned int sector); - void find_sector_values (); - unsigned int n_sectors; - std::vector sector_values; +class gr_constellation_bpsk : public gr_constellation +{ +public: + gr_constellation_bpsk (); + std::vector points(); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); + gr_constellation_sptr base (); }; + diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index f7e92442f..2a7f59176 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -29,6 +29,7 @@ grblkspythondir = $(grpythondir)/blks2impl grblkspython_PYTHON = \ __init__.py \ am_demod.py \ + bpsk.py \ channel_model.py \ dbpsk.py \ dbpsk2.py \ diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py new file mode 100644 index 000000000..222178abb --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py @@ -0,0 +1,98 @@ +# +# Copyright 2005,2006 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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. +# + +""" +BPSK modulation and demodulation. +""" + +from math import pi, log +from cmath import exp + +from gnuradio import gr, modulation_utils2 +from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod + +# Default number of points in constellation. +_def_constellation_points = 2 +# Whether differential coding is used. +_def_differential = True + +# ///////////////////////////////////////////////////////////////////////////// +# BPSK constellation +# ///////////////////////////////////////////////////////////////////////////// + +def bpsk_constellation(m=_def_constellation_points): + if m != _def_constellation_points: + raise ValueError("BPSK can only have 2 constellation points.") + return gr.constellation_bpsk() + +# ///////////////////////////////////////////////////////////////////////////// +# BPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class bpsk_mod(generic_mod): + + def __init__(self, constellation_points=_def_constellation_points, + *args, **kwargs): + + """ + Hierarchical block for RRC-filtered BPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + See generic_mod block for list of parameters. + """ + + constellation = gr.constellation_bpsk() + if constellation_points != 2: + raise ValueError('Number of constellation points must be 2 for BPSK.') + super(bpsk_mod, self).__init__(constellation, *args, **kwargs) + +# ///////////////////////////////////////////////////////////////////////////// +# BPSK demodulator +# +# ///////////////////////////////////////////////////////////////////////////// + +class bpsk_demod(generic_demod): + + def __init__(self, constellation_points=_def_constellation_points, + *args, **kwargs): + + """ + Hierarchical block for RRC-filtered BPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + See generic_demod block for list of parameters. + """ + + constellation = gr.constellation_bpsk() + if constellation_points != 2: + raise ValueError('Number of constellation points must be 2 for BPSK.') + super(bpsk_demod, self).__init__(constellation, *args, **kwargs) + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('bpsk', bpsk_mod) +modulation_utils2.add_type_1_demod('bpsk', bpsk_demod) +modulation_utils2.add_type_1_constellation('bpsk', bpsk_constellation) -- cgit From c72e8c84f565cf3be61780515fa6f7f3dfd73218 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Mon, 31 Jan 2011 22:30:34 -0700 Subject: Tidied qam.py --- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 220a3f62f..20ca6ee89 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -204,8 +204,6 @@ class qam_demod(generic_demod): See generic_demod block for list of parameters. """ - print(args) - print(kwargs) constellation = qam_constellation(constellation_points, differential, gray_coded) # We take care of the gray coding in the constellation generation so it doesn't # need to be done in the block. -- cgit From 2e7d6f638181231bad0a8fd2fa6fb72cf6ad1f7c Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Mon, 31 Jan 2011 23:25:36 -0700 Subject: Added QPSK constellation object. --- gnuradio-core/src/lib/general/gr_constellation.cc | 25 +++++++++++++++++++++ gnuradio-core/src/lib/general/gr_constellation.h | 26 ++++++++++++++++++++++ gnuradio-core/src/lib/general/gr_constellation.i | 17 ++++++++++++++ .../src/python/gnuradio/blks2impl/Makefile.am | 1 + .../src/python/gnuradio/blks2impl/ofdm.py | 6 ++--- 5 files changed, 72 insertions(+), 3 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 477532e5c..403394eaa 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -29,6 +29,7 @@ #include #define M_TWOPI (2*M_PI) +#define SQRT_TWO 0.707107 gr_constellation_sptr gr_make_constellation(std::vector constellation) @@ -190,3 +191,27 @@ unsigned int gr_constellation_bpsk::decision_maker(gr_complex sample) { return (real(sample) > 0); } + + +gr_constellation_qpsk_sptr +gr_make_constellation_qpsk() +{ + return gr_constellation_qpsk_sptr(new gr_constellation_qpsk ()); +} + +gr_constellation_qpsk::gr_constellation_qpsk () +{ + d_constellation.resize(4); + // Gray-coded + d_constellation[0] = gr_complex(-SQRT_TWO, -SQRT_TWO); + d_constellation[1] = gr_complex(SQRT_TWO, -SQRT_TWO); + d_constellation[2] = gr_complex(-SQRT_TWO, SQRT_TWO); + d_constellation[3] = gr_complex(SQRT_TWO, SQRT_TWO); +} + +unsigned int gr_constellation_qpsk::decision_maker(gr_complex sample) +{ + // Real component determines small bit. + // Imag component determines big bit. + return 2*(imag(sample)>0) + (real(sample)>0); +} diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index fcc947ca6..8ba22d59a 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -213,4 +213,30 @@ class gr_constellation_bpsk : public gr_constellation }; +/************************************************************/ +/* gr_constellation_qpsk */ +/* */ +/* Only works for QPSK. */ +/* */ +/************************************************************/ + +class gr_constellation_qpsk; +typedef boost::shared_ptr gr_constellation_qpsk_sptr; + +// public constructor +gr_constellation_qpsk_sptr +gr_make_constellation_qpsk (); + +class gr_constellation_qpsk : public gr_constellation +{ + public: + + gr_constellation_qpsk (); + unsigned int decision_maker (gr_complex sample); + + friend gr_constellation_qpsk_sptr + gr_make_constellation_qpsk (); + +}; + #endif diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index a34aade9f..6620721ea 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -97,3 +97,20 @@ public: gr_constellation_sptr base (); }; +class gr_constellation_qpsk; +typedef boost::shared_ptr gr_constellation_qpsk_sptr; +%template(gr_constellation_qpsk_sptr) boost::shared_ptr; +%rename(constellation_qpsk) gr_make_constellation_qpsk; +gr_constellation_qpsk_sptr gr_make_constellation_qpsk(); +%ignore gr_constellation_qpsk; + +class gr_constellation_qpsk : public gr_constellation +{ +public: + gr_constellation_qpsk (); + std::vector points(); + unsigned int decision_maker (gr_complex sample); + unsigned int bits_per_symbol (); + gr_constellation_sptr base (); +}; + diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am index 2a7f59176..6a2e7d5f7 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/blks2impl/Makefile.am @@ -60,6 +60,7 @@ grblkspython_PYTHON = \ psk.py \ psk2.py \ qam.py \ + qpsk.py \ rational_resampler.py \ standard_squelch.py \ stream_to_vector_decimator.py \ diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py index 997df0bdf..3b1cd12ac 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py @@ -32,7 +32,7 @@ def _add_common_options(normal, expert): Adds OFDM-specific options to the Options Parser that are common both to the modulator and demodulator. """ - mods_list = ", ".join(modulation_utils2.type_1_mods().keys()) + mods_list = ", ".join(modulation_utils2.type_1_constellations().keys()) normal.add_option("-m", "--modulation", type="string", default="psk", help="set modulation type (" + mods_list + ") [default=%default]") expert.add_option("", "--fft-length", type="intx", default=512, @@ -248,8 +248,8 @@ class ofdm_demod(gr.hier_block2): Adds OFDM-specific options to the Options Parser """ _add_common_options(normal, expert) - for demod in modulation_utils2.type_1_demods().values(): - demod.add_options(expert) + for mod in modulation_utils2.type_1_mods().values(): + mod.add_options(expert) # Make a static method to call before instantiation add_options = staticmethod(add_options) -- cgit From f450ed2d99672832eb8ca10af4c3be9a1dc81a96 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Tue, 1 Feb 2011 13:02:42 -0700 Subject: Forgot to add qpsk.py in last commit. --- .../src/python/gnuradio/blks2impl/qpsk.py | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py new file mode 100644 index 000000000..f62ae232c --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py @@ -0,0 +1,79 @@ +# +# Copyright 2005,2006 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 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. +# + +""" +QPSK modulation. + +Demodulation is not included since the generic_mod_demod +doesn't work for non-differential encodings. +""" + +from gnuradio import gr, modulation_utils2 +from gnuradio.blks2impl.generic_mod_demod import generic_mod + + +# Default number of points in constellation. +_def_constellation_points = 4 +# Whether differential coding is used. +_def_differential = False +_def_gray_coded = True + +# ///////////////////////////////////////////////////////////////////////////// +# QPSK constellation +# ///////////////////////////////////////////////////////////////////////////// + +def qpsk_constellation(m=_def_constellation_points): + if m != _def_constellation_points: + raise ValueError("QPSK can only have 4 constellation points.") + return gr.constellation_qpsk() + +# ///////////////////////////////////////////////////////////////////////////// +# QPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class qpsk_mod(generic_mod): + + def __init__(self, constellation_points=_def_constellation_points, + differential=_def_differential, + gray_coded=_def_gray_coded, + *args, **kwargs): + + """ + Hierarchical block for RRC-filtered QPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + See generic_mod block for list of parameters. + """ + + constellation = gr.constellation_qpsk() + if constellation_points != 4: + raise ValueError("QPSK can only have 4 constellation points.") + if differential or not gray_coded: + raise ValueError("This QPSK mod/demod works only for gray-coded, non-differential.") + super(qpsk_mod, self).__init__(constellation, differential, gray_coded, *args, **kwargs) + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('qpsk', qpsk_mod) +modulation_utils2.add_type_1_constellation('qpsk', qpsk_constellation) -- cgit From 4b42ab554e45e4326466976028ed25123746205f Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 6 Feb 2011 14:02:44 -0700 Subject: Added trellis_constellation_metrics_cf. It is equivalent to trellis_metrics_c but it uses the constellation object's calc_metric method. This method is also added here. trellis_metric_type.h is moved to gr_metric_type since constellation object is now dependent on it. --- gnuradio-core/src/lib/general/Makefile.am | 1 + gnuradio-core/src/lib/general/gr_constellation.cc | 42 +++++++++++ gnuradio-core/src/lib/general/gr_constellation.h | 11 +++ gnuradio-core/src/lib/general/gr_constellation.i | 3 + gnuradio-core/src/lib/general/gr_metric_type.h | 31 ++++++++ gr-trellis/src/lib/Makefile.am | 4 +- gr-trellis/src/lib/trellis.i | 12 ++- gr-trellis/src/lib/trellis_calc_metric.h | 2 +- .../src/lib/trellis_constellation_metrics_cf.cc | 85 ++++++++++++++++++++++ .../src/lib/trellis_constellation_metrics_cf.h | 60 +++++++++++++++ .../src/lib/trellis_constellation_metrics_cf.i | 33 +++++++++ gr-trellis/src/lib/trellis_metric_type.h | 31 -------- 12 files changed, 281 insertions(+), 34 deletions(-) create mode 100644 gnuradio-core/src/lib/general/gr_metric_type.h create mode 100644 gr-trellis/src/lib/trellis_constellation_metrics_cf.cc create mode 100644 gr-trellis/src/lib/trellis_constellation_metrics_cf.h create mode 100644 gr-trellis/src/lib/trellis_constellation_metrics_cf.i delete mode 100644 gr-trellis/src/lib/trellis_metric_type.h diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index e5ea49640..0830f5d2e 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -266,6 +266,7 @@ grinclude_HEADERS = \ gr_log2_const.h \ gr_map_bb.h \ gr_math.h \ + gr_metric_type.h \ gr_misc.h \ gr_nco.h \ gr_nlog10_ff.h \ diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 403394eaa..8f5624668 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -22,11 +22,14 @@ #include #include +#include #include #include #include #include #include +#include +#include #define M_TWOPI (2*M_PI) #define SQRT_TWO 0.707107 @@ -76,6 +79,45 @@ unsigned int gr_constellation::decision_maker(gr_complex sample) return min_index; } +void gr_constellation::calc_metric(gr_complex sample, float *metric, trellis_metric_type_t type) { + switch (type){ + case TRELLIS_EUCLIDEAN: + calc_euclidean_metric(sample, metric); + break; + case TRELLIS_HARD_SYMBOL: + calc_hard_symbol_metric(sample, metric); + break; + case TRELLIS_HARD_BIT: + throw std::runtime_error ("Invalid metric type (not yet implemented)."); + break; + default: + throw std::runtime_error ("Invalid metric type."); + } +} + +void gr_constellation::calc_euclidean_metric(gr_complex sample, float *metric) { + for (int o=0; o constellation, unsigned int n_sectors) : gr_constellation(constellation), diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 8ba22d59a..6908f43f1 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -27,6 +27,7 @@ #include #include #include +#include /************************************************************/ /* gr_constellation */ @@ -55,9 +56,19 @@ class gr_constellation : public boost::enable_shared_from_this //! Also calculates the phase error. virtual unsigned int decision_maker (gr_complex sample); + //! Calculates metrics for all points in the constellation. + //! For use with the viterbi algorithm. + void calc_metric(gr_complex sample, float *metric, trellis_metric_type_t type); + void calc_euclidean_metric(gr_complex sample, float *metric); + void calc_hard_symbol_metric(gr_complex sample, float *metric); + unsigned int bits_per_symbol () { return floor(log(d_constellation.size())/log(2)); } + + unsigned int arity () { + return d_constellation.size(); + } gr_constellation_sptr base() { return shared_from_this(); diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index 6620721ea..d00c62f90 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -23,6 +23,9 @@ %template(gr_complex_vector) std::vector; %template(unsigned_int_vector) std::vector; +// Make sure metric types get SWIGed. +%include gr_metric_type.h + class gr_constellation; typedef boost::shared_ptr gr_constellation_sptr; %template(gr_constellation_sptr) boost::shared_ptr; diff --git a/gnuradio-core/src/lib/general/gr_metric_type.h b/gnuradio-core/src/lib/general/gr_metric_type.h new file mode 100644 index 000000000..74c93b55e --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_metric_type.h @@ -0,0 +1,31 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004 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. + */ + +#ifndef INCLUDED_GR_METRIC_TYPE_H +#define INCLUDED_GR_METRIC_TYPE_H + +typedef enum { + TRELLIS_EUCLIDEAN = 200, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT +} trellis_metric_type_t; + +#endif + diff --git a/gr-trellis/src/lib/Makefile.am b/gr-trellis/src/lib/Makefile.am index 08e75291a..d6926f2a0 100644 --- a/gr-trellis/src/lib/Makefile.am +++ b/gr-trellis/src/lib/Makefile.am @@ -66,12 +66,12 @@ grinclude_HEADERS = \ quicksort_index.h \ base.h \ interleaver.h \ - trellis_metric_type.h \ trellis_calc_metric.h \ trellis_permutation.h \ trellis_siso_type.h \ trellis_siso_f.h \ trellis_siso_combined_f.h \ + trellis_constellation_metrics_cf.h \ $(GENERATED_H) lib_LTLIBRARIES = libgnuradio-trellis.la @@ -85,6 +85,7 @@ libgnuradio_trellis_la_SOURCES = \ trellis_permutation.cc \ trellis_siso_f.cc \ trellis_siso_combined_f.cc \ + trellis_constellation_metrics_cf.cc \ $(GENERATED_CC) libgnuradio_trellis_la_LIBADD = \ @@ -119,6 +120,7 @@ trellis_swiginclude_headers = \ trellis_permutation.i \ trellis_siso_f.i \ trellis_siso_combined_f.i \ + trellis_constellation_metrics_cf.i \ trellis_generated.i # Do creation and inclusion of other Makefiles last diff --git a/gr-trellis/src/lib/trellis.i b/gr-trellis/src/lib/trellis.i index d035cea54..fe74c8d9f 100644 --- a/gr-trellis/src/lib/trellis.i +++ b/gr-trellis/src/lib/trellis.i @@ -28,8 +28,11 @@ #include "trellis_permutation.h" #include "trellis_siso_f.h" #include "trellis_siso_combined_f.h" +#include "trellis_constellation_metrics_cf.h" +#include "gr_constellation.h" %} + // ---------------------------------------------------------------- %include "fsm.i" @@ -38,12 +41,19 @@ %include "trellis_siso_f.i" %include "trellis_siso_combined_f.i" -%include "trellis_metric_type.h" %include "trellis_siso_type.h" +%include "trellis_constellation_metrics_cf.i" %include "trellis_generated.i" +%import "gr_metric_type.h" +%import "gr_constellation.i" + +%pythoncode %{ + from gnuradio.gr import TRELLIS_EUCLIDEAN, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT + %} + #if SWIGGUILE %scheme %{ (load-extension-global "libguile-gnuradio-trellis" "scm_init_gnuradio_trellis_module") diff --git a/gr-trellis/src/lib/trellis_calc_metric.h b/gr-trellis/src/lib/trellis_calc_metric.h index fabf4e145..b9eacb086 100644 --- a/gr-trellis/src/lib/trellis_calc_metric.h +++ b/gr-trellis/src/lib/trellis_calc_metric.h @@ -25,7 +25,7 @@ #include #include -#include +#include template diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc new file mode 100644 index 000000000..73e848259 --- /dev/null +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc @@ -0,0 +1,85 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,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. + */ + +// WARNING: this file is machine generated. Edits will be over written + +#ifndef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + + + +trellis_constellation_metrics_cf_sptr +trellis_make_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE) +{ + return gnuradio::get_initial_sptr (new trellis_constellation_metrics_cf (constellation, TYPE)); +} + + + +trellis_constellation_metrics_cf::trellis_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE) + : gr_block ("constellation_metrics_cf", + gr_make_io_signature (1, -1, sizeof (gr_complex)), + gr_make_io_signature (1, -1, sizeof (float))), + d_constellation (constellation), + d_TYPE (TYPE), + d_O (constellation->arity()) +{ + set_relative_rate (d_O); + set_output_multiple (d_O); +} + +void +trellis_constellation_metrics_cf::forecast (int noutput_items, gr_vector_int &ninput_items_required) +{ + assert (noutput_items % d_O == 0); + int input_required = noutput_items / d_O; + ninput_items_required[0] = input_required; +} + + + +int +trellis_constellation_metrics_cf::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + + assert (noutput_items % d_O == 0); + + const gr_complex *in = (gr_complex *) input_items[0]; + float *out = (float *) output_items[0]; + + for (int i = 0; i < noutput_items / d_O ; i++){ + d_constellation->calc_metric(in[i], &(out[i*d_O]), d_TYPE); + } + + consume_each (noutput_items / d_O); + return noutput_items; +} diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.h b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h new file mode 100644 index 000000000..a50e92841 --- /dev/null +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004, 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. + */ + +#ifndef INCLUDED_TRELLIS_CONSTELLATION_METRICS_CF_H +#define INCLUDED_TRELLIS_CONSTELLATION_METRICS_CF_H + +#include +#include +#include + +class trellis_constellation_metrics_cf; +typedef boost::shared_ptr trellis_constellation_metrics_cf_sptr; + +trellis_constellation_metrics_cf_sptr trellis_make_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); + +/*! + * \brief Evaluate metrics for use by the Viterbi algorithm. + * \ingroup coding_blk + */ +class trellis_constellation_metrics_cf : public gr_block +{ + public: + void forecast (int noutput_items, + gr_vector_int &ninput_items_required); + int general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + protected: + trellis_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); + + private: + gr_constellation_sptr d_constellation; + trellis_metric_type_t d_TYPE; + unsigned int d_O; + friend trellis_constellation_metrics_cf_sptr trellis_make_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); + +}; + + +#endif diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.i b/gr-trellis/src/lib/trellis_constellation_metrics_cf.i new file mode 100644 index 000000000..b4a5bbbb7 --- /dev/null +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.i @@ -0,0 +1,33 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004 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. + */ + +// WARNING: this file is machine generated. Edits will be over written + +GR_SWIG_BLOCK_MAGIC(trellis,constellation_metrics_cf); + +trellis_constellation_metrics_cf_sptr trellis_make_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); + +class trellis_constellation_metrics_cf : public gr_block +{ +private: + trellis_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); +}; diff --git a/gr-trellis/src/lib/trellis_metric_type.h b/gr-trellis/src/lib/trellis_metric_type.h deleted file mode 100644 index a1040f108..000000000 --- a/gr-trellis/src/lib/trellis_metric_type.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004 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. - */ - -#ifndef INCLUDED_TRELLIS_METRIC_TYPE_H -#define INCLUDED_TRELLIS_METRIC_TYPE_H - -typedef enum { - TRELLIS_EUCLIDEAN = 200, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT -} trellis_metric_type_t; - -#endif - -- cgit From d10b330e60e62ff031785d96ec98c455c5c562eb Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 6 Feb 2011 16:39:26 -0700 Subject: Added comments to fsm.h --- gr-trellis/src/lib/fsm.h | 100 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 2 deletions(-) diff --git a/gr-trellis/src/lib/fsm.h b/gr-trellis/src/lib/fsm.h index 0a90b2cd3..e5f717af0 100644 --- a/gr-trellis/src/lib/fsm.h +++ b/gr-trellis/src/lib/fsm.h @@ -27,31 +27,114 @@ #include /*! - * \brief FSM class + * \brief Finite State Machine Specification class. + * + * An instance of this class represents a finite state machine specification (FSMS) + * rather than the FSM itself. It particular the state of the FSM + * is not stored within an instance of this class. */ class fsm { private: + // Input alphabet cardinality. int d_I; + // Number of states. int d_S; + // Output alphabet cardinality. int d_O; + // NS means Next State. + // next_state = d_NS[current_state * d_I + input_symbol] std::vector d_NS; + // OS means Output Symbol. + // output_symbol = d_OS[current_state * d_I + input_symbol] std::vector d_OS; + // PS means Previous State. std::vector< std::vector > d_PS; + // PI means Previous Input Symbol. + // d_PS[current_state][k] and d_PI[current_state][k], is a pair of the form + // (previous_state, previous_input_symbol) that could have produced the + // current state. std::vector< std::vector > d_PI; - std::vector d_TMi; + // TM means Termination matrix. + // d_TMl[s*d_S+es] is the shortest number of steps to get from state s to + // state es. std::vector d_TMl; + // d_TMi[s*d_S+es] is the input symbol required to set off on the shortest + // path from state s to es. + std::vector d_TMi; void generate_PS_PI (); void generate_TM (); bool find_es(int es); public: + /*! + * \brief Constructor to create an uninitialized FSMS. + */ fsm(); + /*! + * \brief Constructor to copy an FSMS. + */ fsm(const fsm &FSM); + /*! + * \brief Constructor to to create an FSMS. + * + * \param I The number of possible input symbols. + * \param S The number of possible FSM states. + * \param O The number of possible output symbols. + * \param NS A mapping from (current state, input symbol) to next state. + * next_state = NS[current_state * I + input_symbol] + * \param OS A mapping from (current state, input symbol) to output symbol. + * output_symbol = OS[current_state * I + input_symbol] + * + */ fsm(int I, int S, int O, const std::vector &NS, const std::vector &OS); + /*! + * \brief Constructor to create an FSMS from file contents. + * + * \param name filename + * + */ fsm(const char *name); + /*! + * \brief Creates an FSMS from the generator matrix of a (n, k) binary convolutional code. + * + * \param k ??? + * \param n ??? + * \param G ??? + * + */ fsm(int k, int n, const std::vector &G); + /*! + * \brief Creates an FSMS describing ISI. + * + * \param mod_size modulation size + * \param ch_lenth channel length + * + */ fsm(int mod_size, int ch_length); + /*! + * \brief Creates an FSMS describing the trellis for a CPM. + * + * \param P ???? h=K/P (relatively prime) + * \param M alphabet size + * \param L pulse duration + * + * This FSM is based on the paper by B. Rimoldi + * "A decomposition approach to CPM", IEEE Trans. Info Theory, March 1988 + * See also my own notes at http://www.eecs.umich.edu/~anastas/docs/cpm.pdf + */ fsm(int P, int M, int L); + /*! + * \brief Creates an FSMS describing the joint trellis of two FSMs. + * + * \param fsm1 first FSMS + * \param fsm2 second FSMS + */ fsm(const fsm &FSM1, const fsm &FSM2); + /*! + * \brief Creates an FSMS representing n stages through the originial FSM (AKA radix-n FSM). + * + * \param original FSMS + * \param n Number of stages. + */ fsm(const fsm &FSM, int n); int I () const { return d_I; } int S () const { return d_S; } @@ -62,7 +145,20 @@ public: const std::vector< std::vector > & PI () const { return d_PI; } const std::vector & TMi () const { return d_TMi; } const std::vector & TMl () const { return d_TMl; } + /*! + * \brief Creates an svg image of the trellis representation. + * + * \param filename filename + * \param number_stages ???? + * + */ void write_trellis_svg(std::string filename ,int number_stages); + /*! + * \brief Write the FSMS to a file. + * + * \param filename filename + * + */ void write_fsm_txt(std::string filename); }; -- cgit From 765c9f6e947d6dd765d1f33f3d4668f0c69486ee Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 6 Feb 2011 16:42:36 -0700 Subject: Added tests to qa_trellis.py. --- gr-trellis/src/python/qa_trellis.py | 119 +++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 28 deletions(-) diff --git a/gr-trellis/src/python/qa_trellis.py b/gr-trellis/src/python/qa_trellis.py index cfeefea06..ba415e6c9 100755 --- a/gr-trellis/src/python/qa_trellis.py +++ b/gr-trellis/src/python/qa_trellis.py @@ -20,46 +20,45 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr, gr_unittest +import math + + +from gnuradio import gr, gr_unittest, blks2 +# It's pretty ugly that we can't import trellis from gnuradio in this test +# but because it runs on the non-installed python code it's all a mess. import trellis -class test_trellis (gr_unittest.TestCase): +fsm_args = {"awgn1o2_4": (2, 4, 4, + (0, 2, 0, 2, 1, 3, 1, 3), + (0, 3, 3, 0, 1, 2, 2, 1), + ), + "rep2": (2, 1, 4, (0, 0), (0, 3)), + "nothing": (2, 1, 2, (0, 0), (0, 1)), + } - def setUp (self): - self.tb = gr.top_block () +constells = {2: blks2.bpsk_constellation(), + 4: blks2.qpsk_constellation(), + } - def tearDown (self): - self.tb = None +class test_trellis (gr_unittest.TestCase): def test_001_fsm (self): - I = 2 - S = 4 - O = 4 - NS = (0, 2, 0, 2, 1, 3, 1, 3) - OS = (0, 3, 3, 0, 1, 2, 2, 1) - f = trellis.fsm(I,S,O,NS,OS) - self.assertEqual((I,S,O,NS,OS),(f.I(),f.S(),f.O(),f.NS(),f.OS())) + f = trellis.fsm(*fsm_args["awgn1o2_4"]) + self.assertEqual(fsm_args["awgn1o2_4"],(f.I(),f.S(),f.O(),f.NS(),f.OS())) def test_002_fsm (self): - I = 2 - S = 4 - O = 4 - NS = (0, 2, 0, 2, 1, 3, 1, 3) - OS = (0, 3, 3, 0, 1, 2, 2, 1) - f = trellis.fsm(I,S,O,NS,OS) + f = trellis.fsm(*fsm_args["awgn1o2_4"]) g = trellis.fsm(f) self.assertEqual((g.I(),g.S(),g.O(),g.NS(),g.OS()),(f.I(),f.S(),f.O(),f.NS(),f.OS())) def test_003_fsm (self): - I = 2 - S = 4 - O = 4 - NS = (0, 2, 0, 2, 1, 3, 1, 3) - OS = (0, 3, 3, 0, 1, 2, 2, 1) - #f = trellis.fsm("awgn1o2_4.fsm") - #self.assertEqual((I,S,O,NS,OS),(f.I(),f.S(),f.O(),f.NS(),f.OS())) - # temporary fix so that make distcheck does not fail on this - self.assertEqual(0,0) + f = trellis.fsm("awgn1o2_4.fsm") + self.assertEqual(fsm_args["awgn1o2_4"],(f.I(),f.S(),f.O(),f.NS(),f.OS())) + + def test_004_fsm(self): + """ Test to make sure fsm works with a single state fsm.""" + # Just checking that it initializes properly. + f = trellis.fsm(*fsm_args["rep2"]) def test_001_interleaver (self): K = 5 @@ -68,5 +67,69 @@ class test_trellis (gr_unittest.TestCase): i = trellis.interleaver(K,IN) self.assertEqual((K,IN,DIN),(i.K(),i.INTER(),i.DEINTER())) + def test_001_viterbi(self): + """ + Runs some coding/decoding tests with a few different FSM + specs. + """ + for name, args in fsm_args.items(): + constellation = constells[args[2]] + fsms = trellis.fsm(*args) + noise = 0.1 + tb = trellis_tb(constellation, fsms, noise) + tb.run() + # Make sure all packets succesfully transmitted. + self.assertEqual(tb.dst.ntotal(), tb.dst.nright()) + + +class trellis_tb(gr.top_block): + """ + A simple top block for use testing gr-trellis. + """ + def __init__(self, constellation, f, N0=0.25, seed=-666L): + """ + constellation - a constellation object used for modulation. + f - a finite state machine specification used for coding. + N0 - noise level + seed - random seed + """ + super(trellis_tb, self).__init__() + # packet size in bits (make it multiple of 16 so it can be packed in a short) + packet_size = 1024*16 + # bits per FSM input symbol + bitspersymbol = int(round(math.log(f.I())/math.log(2))) # bits per FSM input symbol + # packet size in trellis steps + K = packet_size/bitspersymbol + + # TX + src = gr.lfsr_32k_source_s() + # packet size in shorts + src_head = gr.head (gr.sizeof_short, packet_size/16) + # unpack shorts to symbols compatible with the FSM input cardinality + s2fsmi = gr.packed_to_unpacked_ss(bitspersymbol, gr.GR_MSB_FIRST) + # initial FSM state = 0 + enc = trellis.encoder_ss(f, 0) + mod = gr.chunks_to_symbols_sc(constellation.points(), 1) + + # CHANNEL + add = gr.add_cc() + noise = gr.noise_source_c(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) + + # RX + # data preprocessing to generate metrics for Viterbi + metrics = trellis.constellation_metrics_cf(constellation.base(), trellis.TRELLIS_EUCLIDEAN) + # Put -1 if the Initial/Final states are not set. + va = trellis.viterbi_s(f, K, 0, -1) + # pack FSM input symbols to shorts + fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol, gr.GR_MSB_FIRST) + # check the output + self.dst = gr.check_lfsr_32k_s() + + self.connect (src, src_head, s2fsmi, enc, mod) + self.connect (mod, (add, 0)) + self.connect (noise, (add, 1)) + self.connect (add, metrics, va, fsmi2s, self.dst) + + if __name__ == '__main__': gr_unittest.run(test_trellis, "test_trellis.xml") -- cgit From e4df34e785651787930b2b2fcd4c9fbdeac5d8fc Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Wed, 9 Feb 2011 14:19:40 -0700 Subject: Changed constellation objects so that codings besides gray code can be used. --- gnuradio-core/src/lib/general/gr_constellation.cc | 36 ++++++++++++------ gnuradio-core/src/lib/general/gr_constellation.h | 33 ++++++++++++----- gnuradio-core/src/lib/general/gr_constellation.i | 43 ++++++++++------------ .../python/gnuradio/blks2impl/generic_mod_demod.py | 32 +++++++--------- .../src/python/gnuradio/blks2impl/psk2.py | 35 ++++++++++++++---- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 31 ++++++++++------ .../src/python/gnuradio/utils/Makefile.am | 1 + .../src/python/gnuradio/utils/gray_code.py | 6 --- .../src/python/gnuradio/utils/mod_codes.py | 11 ++++++ 9 files changed, 142 insertions(+), 86 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/utils/mod_codes.py diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 8f5624668..e3b4c14e7 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -35,19 +35,27 @@ #define SQRT_TWO 0.707107 gr_constellation_sptr -gr_make_constellation(std::vector constellation) +gr_make_constellation(std::vector constellation, std::vector pre_diff_code) { - return gr_constellation_sptr(new gr_constellation (constellation)); + return gr_constellation_sptr(new gr_constellation (constellation, pre_diff_code)); } // Base Constellation Class -gr_constellation::gr_constellation (std::vector constellation) : - d_constellation(constellation) +gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code) : + d_constellation(constellation), + d_pre_diff_code(pre_diff_code) { + if (pre_diff_code.size() == 0) + d_apply_pre_diff_code = false; + else if (pre_diff_code.size() != constellation.size()) + throw std::runtime_error ("The constellation and pre-diff code must be of the same length."); + else + d_apply_pre_diff_code = true; } -gr_constellation::gr_constellation () +gr_constellation::gr_constellation () : + d_apply_pre_diff_code(false) { } @@ -119,8 +127,9 @@ void gr_constellation::calc_hard_symbol_metric(gr_complex sample, float *metric) } gr_constellation_sector::gr_constellation_sector (std::vector constellation, + std::vector pre_diff_code, unsigned int n_sectors) : - gr_constellation(constellation), + gr_constellation(constellation, pre_diff_code), n_sectors(n_sectors) { } @@ -141,16 +150,18 @@ void gr_constellation_sector::find_sector_values () { gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, + std::vector pre_diff_code, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) { - return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); + return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); } gr_constellation_rect::gr_constellation_rect (std::vector constellation, + std::vector pre_diff_code, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) : - gr_constellation_sector(constellation, real_sectors * imag_sectors), + gr_constellation_sector(constellation, pre_diff_code, real_sectors * imag_sectors), n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) { @@ -184,14 +195,17 @@ unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { gr_constellation_psk_sptr -gr_make_constellation_psk(std::vector constellation, unsigned int n_sectors) +gr_make_constellation_psk(std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors) { - return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, n_sectors)); + return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, n_sectors)); } gr_constellation_psk::gr_constellation_psk (std::vector constellation, + std::vector pre_diff_code, unsigned int n_sectors) : - gr_constellation_sector(constellation, n_sectors) + gr_constellation_sector(constellation, pre_diff_code, n_sectors) { find_sector_values(); } diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 6908f43f1..440e32e57 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -40,17 +40,21 @@ typedef boost::shared_ptr gr_constellation_sptr; // public constructor gr_constellation_sptr - gr_make_constellation (std::vector constellation); +gr_make_constellation (std::vector constellation, std::vector pre_diff_code); class gr_constellation : public boost::enable_shared_from_this { public: - gr_constellation (std::vector constellation); + gr_constellation (std::vector constellation, std::vector pre_diff_code); gr_constellation (); //! Returns the set of points in this constellation. std::vector points() { return d_constellation;} + //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding) + bool apply_pre_diff_code() { return d_apply_pre_diff_code;} + //! Returns the encoding to apply before differential encoding. + std::vector pre_diff_code() { return d_pre_diff_code;} //! Returns the constellation point that matches best. //! Also calculates the phase error. @@ -77,6 +81,8 @@ class gr_constellation : public boost::enable_shared_from_this protected: std::vector d_constellation; + std::vector d_pre_diff_code; + bool d_apply_pre_diff_code; private: friend gr_constellation_sptr @@ -97,6 +103,7 @@ class gr_constellation_sector : public gr_constellation public: gr_constellation_sector (std::vector constellation, + std::vector pre_diff_code, unsigned int n_sectors); unsigned int decision_maker (gr_complex sample); @@ -133,15 +140,17 @@ typedef boost::shared_ptr gr_constellation_rect_sptr; // public constructor gr_constellation_rect_sptr -gr_make_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, +gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); class gr_constellation_rect : public gr_constellation_sector { public: - gr_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); + gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); protected: @@ -157,8 +166,9 @@ class gr_constellation_rect : public gr_constellation_sector float d_width_imag_sectors; friend gr_constellation_rect_sptr - gr_make_constellation_rect (std::vector constellation, unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); + gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); }; @@ -177,13 +187,15 @@ typedef boost::shared_ptr gr_constellation_psk_sptr; // public constructor gr_constellation_psk_sptr -gr_make_constellation_psk (std::vector constellation, unsigned int n_sectors); +gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); class gr_constellation_psk : public gr_constellation_sector { public: - gr_constellation_psk (std::vector constellation, unsigned int n_sectors); + gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); protected: @@ -194,7 +206,8 @@ class gr_constellation_psk : public gr_constellation_sector private: friend gr_constellation_psk_sptr - gr_make_constellation_psk (std::vector constellation, unsigned int n_sectors); + gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); }; diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index d00c62f90..762289c57 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -30,17 +30,26 @@ class gr_constellation; typedef boost::shared_ptr gr_constellation_sptr; %template(gr_constellation_sptr) boost::shared_ptr; %rename(constellation) gr_make_constellation; -gr_constellation_sptr gr_make_constellation(std::vector constellation); +gr_constellation_sptr gr_make_constellation(std::vector constellation, + std::vector pre_diff_code); %ignore gr_constellation; class gr_constellation { public: - gr_constellation (std::vector constellation); + gr_constellation (std::vector constellation, + std::vector pre_diff_code); std::vector points(); unsigned int decision_maker (gr_complex sample); unsigned int bits_per_symbol (); + unsigned int arity (); gr_constellation_sptr base (); + bool apply_pre_diff_code(); + std::vector pre_diff_code(); +}; + +class gr_constellation_sector: public gr_constellation +{ }; class gr_constellation_rect; @@ -48,20 +57,18 @@ typedef boost::shared_ptr gr_constellation_rect_sptr; %template(gr_constellation_rect_sptr) boost::shared_ptr; %rename(constellation_rect) gr_make_constellation_rect; gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); + std::vector pre_diff_code, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); %ignore gr_constellation_rect; class gr_constellation_rect : public gr_constellation_sector { public: gr_constellation_rect (std::vector constellation, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); - std::vector points (); - unsigned int decision_maker (gr_complex sample); - unsigned int bits_per_symbol (); - gr_constellation_sptr base (); + std::vector pre_diff_code, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); }; class gr_constellation_psk; @@ -69,18 +76,16 @@ typedef boost::shared_ptr gr_constellation_psk_sptr; %template(gr_constellation_psk_sptr) boost::shared_ptr; %rename(constellation_psk) gr_make_constellation_psk; gr_constellation_psk_sptr gr_make_constellation_psk(std::vector constellation, + std::vector pre_diff_code, unsigned int n_sectors); %ignore gr_constellation_psk; class gr_constellation_psk : public gr_constellation_sector { public: - gr_constellation_psk (std::vector constellation, + gr_constellation_psk (std::vector constellation, + std::vector pre_diff_code, unsigned int n_sectors); - std::vector points (); - unsigned int decision_maker (gr_complex sample); - unsigned int bits_per_symbol (); - gr_constellation_sptr base (); }; class gr_constellation_bpsk; @@ -94,10 +99,6 @@ class gr_constellation_bpsk : public gr_constellation { public: gr_constellation_bpsk (); - std::vector points(); - unsigned int decision_maker (gr_complex sample); - unsigned int bits_per_symbol (); - gr_constellation_sptr base (); }; class gr_constellation_qpsk; @@ -111,9 +112,5 @@ class gr_constellation_qpsk : public gr_constellation { public: gr_constellation_qpsk (); - std::vector points(); - unsigned int decision_maker (gr_complex sample); - unsigned int bits_per_symbol (); - gr_constellation_sptr base (); }; diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index 933de9113..b88ff72a0 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -27,7 +27,7 @@ Generic modulation and demodulation. from gnuradio import gr from gnuradio.modulation_utils2 import extract_kwargs_from_options_for_class -from gnuradio.utils.gray_code import gray_code, inverse_gray_code +from gnuradio.utils import mod_codes # default values (used in __init__ and add_options) _def_samples_per_symbol = 2 @@ -47,7 +47,6 @@ _def_phase_alpha = 0.1 _def_constellation_points = 16 # Whether differential coding is used. _def_differential = True -_def_gray_coded = True def add_common_options(parser): """ @@ -59,10 +58,10 @@ def add_common_options(parser): help="use differential encoding [default=%default]") parser.add_option("", "--not-differential", action="store_false", dest="differential", help="do not use differential encoding [default=%default]") - parser.add_option("", "--gray-coded", action="store_true", dest="gray_coded", default=True, - help="use gray code [default=%default]") - parser.add_option("", "--not-gray-coded", action="store_false", dest="gray_coded", - help="do not use gray code [default=%default]") + parser.add_option("", "--mod-code", type="choice", choices=mod_codes.codes, + default=mod_codes.NO_CODE, + help="Select modulation code from: %s [default=%%default]" + % (', '.join(mod_codes.codes),)) parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, help="set RRC excess bandwith factor [default=%default]") @@ -75,7 +74,6 @@ class generic_mod(gr.hier_block2): def __init__(self, constellation, differential=_def_differential, - gray_coded=_def_gray_coded, samples_per_symbol=_def_samples_per_symbol, excess_bw=_def_excess_bw, verbose=_def_verbose, @@ -106,7 +104,6 @@ class generic_mod(gr.hier_block2): self._samples_per_symbol = samples_per_symbol self._excess_bw = excess_bw self._differential = differential - self._gray_coded = gray_coded if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) @@ -119,8 +116,8 @@ class generic_mod(gr.hier_block2): self.bytes2chunks = \ gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) - if gray_coded: - self.symbol_mapper = gr.map_bb(gray_code(arity)) + if self._constellation.apply_pre_diff_code(): + self.symbol_mapper = gr.map_bb(self._constellation.pre_diff_code()) if differential: self.diffenc = gr.diff_encoder_bb(arity) @@ -140,7 +137,7 @@ class generic_mod(gr.hier_block2): # Connect blocks = [self, self.bytes2chunks] - if gray_coded: + if self._constellation.apply_pre_diff_code(): blocks.append(self.symbol_mapper) if differential: blocks.append(self.diffenc) @@ -184,7 +181,7 @@ class generic_mod(gr.hier_block2): print "Modulation logging turned on." self.connect(self.bytes2chunks, gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) - if self._gray_coded: + if self._constellation.apply_pre_diff_code(): self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "tx_symbol_mapper.dat")) if self._differential: @@ -208,7 +205,6 @@ class generic_demod(gr.hier_block2): def __init__(self, constellation, samples_per_symbol=_def_samples_per_symbol, differential=_def_differential, - gray_coded=_def_gray_coded, excess_bw=_def_excess_bw, freq_alpha=_def_freq_alpha, timing_alpha=_def_timing_alpha, @@ -256,7 +252,6 @@ class generic_demod(gr.hier_block2): self._timing_beta = _def_timing_beta self._timing_max_dev=timing_max_dev self._differential = differential - self._gray_coded = gray_coded if not isinstance(self._samples_per_symbol, int) or self._samples_per_symbol < 2: raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) @@ -296,8 +291,9 @@ class generic_demod(gr.hier_block2): if differential: self.diffdec = gr.diff_decoder_bb(arity) - if gray_coded: - self.symbol_mapper = gr.map_bb(inverse_gray_code(arity)) + if self._constellation.apply_pre_diff_code(): + self.symbol_mapper = gr.map_bb( + mod_codes.invert_code(self._constellation.pre_diff_code())) # unpack the k bit vector into a stream of bits self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) @@ -312,7 +308,7 @@ class generic_demod(gr.hier_block2): blocks = [self, self.agc, self.freq_recov, self.time_recov, self.receiver] if differential: blocks.append(self.diffdec) - if gray_coded: + if self._constellation.apply_pre_diff_code(): blocks.append(self.symbol_mapper) blocks += [self.unpack, self] self.connect(*blocks) @@ -365,7 +361,7 @@ class generic_demod(gr.hier_block2): if self._differential: self.connect(self.diffdec, gr.file_sink(gr.sizeof_char, "rx_diffdec.dat")) - if self._gray_coded: + if self._constellation.apply_pre_diff_code(): self.connect(self.symbol_mapper, gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) self.connect(self.unpack, diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py index 4fd2c77fe..95f25e75a 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py @@ -28,17 +28,32 @@ from cmath import exp from gnuradio import gr, modulation_utils2 from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod +from gnuradio.utils import mod_codes, gray_code # Default number of points in constellation. _def_constellation_points = 4 -# Whether differential coding is used. -_def_differential = True - +# The default encoding (e.g. gray-code, set-partition) +_def_mod_code = mod_codes.GRAY_CODE + +def create_encodings(mod_code, arity): + post_diff_code = None + if mod_code not in mod_codes.codes: + raise ValueError('That modulation code does not exist.') + if mod_code == mod_codes.GRAY_CODE: + pre_diff_code = gray_code.gray_code(arity) + elif mod_code == mod_codes.SET_PARTITION_CODE: + pre_diff_code = set_partition_code.set_partition_code(arity) + elif mod_code == mod_codes.NO_CODE: + pre_diff_code = [] + else: + raise ValueError('That modulation code is not implemented for this constellation.') + return (pre_diff_code, post_diff_code) + # ///////////////////////////////////////////////////////////////////////////// # PSK constellation # ///////////////////////////////////////////////////////////////////////////// -def psk_constellation(m=_def_constellation_points): +def psk_constellation(m=_def_constellation_points, mod_code=_def_mod_code): """ Creates a PSK constellation object. """ @@ -46,7 +61,11 @@ def psk_constellation(m=_def_constellation_points): if (k != int(k)): raise StandardError('Number of constellation points must be a power of two.') points = [exp(2*pi*(0+1j)*i/m) for i in range(0,m)] - constellation = gr.constellation_psk(points, m) + pre_diff_code, post_diff_code = create_encodings(mod_code, m) + if post_diff_code is not None: + inverse_post_diff_code = mod_codes.invert_code(post_diff_code) + points = [points[x] for x in inverse_post_diff_code] + constellation = gr.constellation_psk(points, pre_diff_code, m) return constellation # ///////////////////////////////////////////////////////////////////////////// @@ -56,6 +75,7 @@ def psk_constellation(m=_def_constellation_points): class psk_mod(generic_mod): def __init__(self, constellation_points=_def_constellation_points, + mod_code=_def_mod_code, *args, **kwargs): """ @@ -67,7 +87,7 @@ class psk_mod(generic_mod): See generic_mod block for list of parameters. """ - constellation = psk_constellation(constellation_points) + constellation = psk_constellation(constellation_points, mod_code) super(psk_mod, self).__init__(constellation, *args, **kwargs) # ///////////////////////////////////////////////////////////////////////////// @@ -78,6 +98,7 @@ class psk_mod(generic_mod): class psk_demod(generic_demod): def __init__(self, constellation_points=_def_constellation_points, + mod_code=_def_mod_code, *args, **kwargs): """ @@ -89,7 +110,7 @@ class psk_demod(generic_demod): See generic_demod block for list of parameters. """ - constellation = psk_constellation(constellation_points) + constellation = psk_constellation(constellation_points, mod_code) super(psk_demod, self).__init__(constellation, *args, **kwargs) # diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 20ca6ee89..143f6e108 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -28,6 +28,7 @@ from math import pi, sqrt, log from gnuradio import gr, modulation_utils2 from gnuradio.blks2impl.generic_mod_demod import generic_mod, generic_demod from gnuradio.utils.gray_code import gray_code +from gnuradio.utils import mod_codes # Default number of points in constellation. _def_constellation_points = 16 @@ -35,7 +36,7 @@ _def_constellation_points = 16 _def_differential = True # Whether gray coding is used. If differential is True then gray # coding is used within but not between each quadrant. -_def_gray_coded = True +_def_mod_code = mod_codes.NO_CODE def is_power_of_four(x): v = log(x)/log(4) @@ -52,7 +53,7 @@ def get_bits(x, n, k): # Remove all bits bigger than n+k-1 return v % pow(2, k) -def make_differential_constellation(m, gray_coded=_def_gray_coded): +def make_differential_constellation(m, gray_coded): """ Create a constellation with m possible symbols where m must be a power of 4. @@ -111,7 +112,7 @@ def make_differential_constellation(m, gray_coded=_def_gray_coded): return const_map -def make_not_differential_constellation(m, gray_coded=_def_gray_coded): +def make_not_differential_constellation(m, gray_coded): side = pow(m, 0.5) if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): raise ValueError("m must be a power of 4 integer.") @@ -145,17 +146,26 @@ def make_not_differential_constellation(m, gray_coded=_def_gray_coded): def qam_constellation(constellation_points=_def_constellation_points, differential=_def_differential, - gray_coded=_def_gray_coded,): + mod_code=_def_mod_code): """ Creates a QAM constellation object. """ + if mod_code == mod_codes.GRAY_CODE: + gray_coded = True + elif mod_code == mod_codes.NO_CODE: + gray_coded = False + else: + raise ValueError("Mod code is not implemented for QAM") if differential: points = make_differential_constellation(constellation_points, gray_coded) else: points = make_not_differential_constellation(constellation_points, gray_coded) side = int(sqrt(constellation_points)) width = 2.0/(side-1) - constellation = gr.constellation_rect(points, side, side, width, width) + # No pre-diff code + # Should add one so that we can gray-code the quadrant bits too. + pre_diff_code = [] + constellation = gr.constellation_rect(points, pre_diff_code, side, side, width, width) return constellation # ///////////////////////////////////////////////////////////////////////////// @@ -166,7 +176,7 @@ class qam_mod(generic_mod): def __init__(self, constellation_points=_def_constellation_points, differential=_def_differential, - gray_coded=_def_gray_coded, + mod_code=_def_mod_code, *args, **kwargs): """ @@ -178,11 +188,11 @@ class qam_mod(generic_mod): See generic_mod block for list of parameters. """ - constellation = qam_constellation(constellation_points, differential, gray_coded) + constellation = qam_constellation(constellation_points, differential, mod_code) # We take care of the gray coding in the constellation generation so it doesn't # need to be done in the block. super(qam_mod, self).__init__(constellation, differential=differential, - gray_coded=False, *args, **kwargs) + *args, **kwargs) # ///////////////////////////////////////////////////////////////////////////// # QAM demodulator @@ -193,7 +203,7 @@ class qam_demod(generic_demod): def __init__(self, constellation_points=_def_constellation_points, differential=_def_differential, - gray_coded=_def_gray_coded, + mod_code=_def_mod_code, *args, **kwargs): """ @@ -204,11 +214,10 @@ class qam_demod(generic_demod): See generic_demod block for list of parameters. """ - constellation = qam_constellation(constellation_points, differential, gray_coded) + constellation = qam_constellation(constellation_points, differential, mod_code) # We take care of the gray coding in the constellation generation so it doesn't # need to be done in the block. super(qam_demod, self).__init__(constellation, differential=differential, - gray_coded=False, *args, **kwargs) # diff --git a/gnuradio-core/src/python/gnuradio/utils/Makefile.am b/gnuradio-core/src/python/gnuradio/utils/Makefile.am index 4c8e46891..c0ac613b9 100644 --- a/gnuradio-core/src/python/gnuradio/utils/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/utils/Makefile.am @@ -30,6 +30,7 @@ TESTS = \ nobase_utilspython_PYTHON = \ __init__.py \ gray_code.py \ + mod_codes.py \ doxyxml/__init__.py \ doxyxml/base.py \ doxyxml/doxyindex.py \ diff --git a/gnuradio-core/src/python/gnuradio/utils/gray_code.py b/gnuradio-core/src/python/gnuradio/utils/gray_code.py index 7d3e0fcb8..70cb9d7e2 100644 --- a/gnuradio-core/src/python/gnuradio/utils/gray_code.py +++ b/gnuradio-core/src/python/gnuradio/utils/gray_code.py @@ -43,9 +43,3 @@ _gray_code_generator = GrayCodeGenerator() gray_code = _gray_code_generator.get_gray_code -def inverse_gray_code(length): - gc = enumerate(gray_code(length)) - igc = [(b, a) for (a, b) in gc] - igc.sort() - return [a for (b, a) in igc] - diff --git a/gnuradio-core/src/python/gnuradio/utils/mod_codes.py b/gnuradio-core/src/python/gnuradio/utils/mod_codes.py new file mode 100644 index 000000000..db3dc252d --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/mod_codes.py @@ -0,0 +1,11 @@ +GRAY_CODE = 'gray' +SET_PARTITION_CODE = 'set-partition' +NO_CODE = 'none' + +codes = (GRAY_CODE, SET_PARTITION_CODE, NO_CODE) + +def invert_code(code): + c = enumerate(code) + ic = [(b, a) for (a, b) in c] + ic.sort() + return [a for (b, a) in ic] -- cgit From 0c7d7678defe24eb2a20ef6726c9aa57cf012d38 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 13 Feb 2011 19:39:50 -0700 Subject: Added gr_constellation_decoder2_cb block. --- gnuradio-core/src/lib/general/Makefile.am | 3 ++ gnuradio-core/src/lib/general/general.i | 2 + .../lib/general/gr_constellation_decoder2_cb.cc | 63 ++++++++++++++++++++++ .../src/lib/general/gr_constellation_decoder2_cb.h | 61 +++++++++++++++++++++ .../src/lib/general/gr_constellation_decoder2_cb.i | 38 +++++++++++++ 5 files changed, 167 insertions(+) create mode 100644 gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc create mode 100644 gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h create mode 100644 gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.i diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index 0830f5d2e..8f895f364 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -58,6 +58,7 @@ libgeneral_la_SOURCES = \ gr_copy.cc \ gr_constellation.cc \ gr_constellation_decoder_cb.cc \ + gr_constellation_decoder2_cb.cc \ gr_constellation_receiver_cb.cc \ gr_correlate_access_code_bb.cc \ gr_costas_loop_cc.cc \ @@ -217,6 +218,7 @@ grinclude_HEADERS = \ gr_conjugate_cc.h \ gr_constellation.h \ gr_constellation_decoder_cb.h \ + gr_constellation_decoder2_cb.h \ gr_constellation_receiver_cb.h \ gr_copy.h \ gr_correlate_access_code_bb.h \ @@ -394,6 +396,7 @@ swiginclude_HEADERS = \ gr_conjugate_cc.i \ gr_constellation.i \ gr_constellation_decoder_cb.i \ + gr_constellation_decoder2_cb.i \ gr_constellation_receiver_cb.i \ gr_copy.i \ gr_correlate_access_code_bb.i \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index aa7d95ff2..dddda60af 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -114,6 +114,7 @@ #include #include #include +#include #include #include #include @@ -242,6 +243,7 @@ %include "gr_correlate_access_code_bb.i" %include "gr_diff_phasor_cc.i" %include "gr_constellation_decoder_cb.i" +%include "gr_constellation_decoder2_cb.i" %include "gr_binary_slicer_fb.i" %include "gr_diff_encoder_bb.i" %include "gr_diff_decoder_bb.i" diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc new file mode 100644 index 000000000..9116d4776 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc @@ -0,0 +1,63 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006, 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +gr_constellation_decoder2_cb_sptr +gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation) +{ + return gr_constellation_decoder2_cb_sptr + (new gr_constellation_decoder2_cb(constellation)); +} + +gr_constellation_decoder2_cb:: +gr_constellation_decoder2_cb (gr_constellation_sptr constellation) + : gr_sync_block ("constellation_decoder2_cb", + gr_make_io_signature (1, 1, sizeof (gr_complex)), + gr_make_io_signature (1, 1, sizeof (unsigned char))), + d_constellation(constellation) +{ +} + + +gr_constellation_decoder2_cb::~gr_constellation_decoder2_cb(){} + +int +gr_constellation_decoder2_cb::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + gr_complex const *in = (const gr_complex *) input_items[0]; + unsigned char *out = (unsigned char *) output_items[0]; + + for(int i = 0; i < noutput_items; i++){ + out[i] = d_constellation->decision_maker(in[i]); + } + + return noutput_items; +} diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h new file mode 100644 index 000000000..d72761927 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h @@ -0,0 +1,61 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006, 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. + */ + +#ifndef INCLUDED_GR_CONSTELLATION_DECODER2_CB_H +#define INCLUDED_GR_CONSTELLATION_DECODER2_CB_H + +#include +#include +#include + +class gr_constellation_decoder2_cb; +typedef boost::shared_ptr gr_constellation_decoder2_cb_sptr; + +gr_constellation_decoder2_cb_sptr +gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); + +/*! + * \brief Constellation Decoder + * \ingroup coding_blk + * + */ +class gr_constellation_decoder2_cb : public gr_sync_block +{ + + private: + gr_constellation_sptr d_constellation; + + friend gr_constellation_decoder2_cb_sptr + gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); + + gr_constellation_decoder2_cb (gr_constellation_sptr constellation); + + public: + + ~gr_constellation_decoder2_cb(); //destructor + + int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.i b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.i new file mode 100644 index 000000000..2865363d8 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.i @@ -0,0 +1,38 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006, 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. + */ + +GR_SWIG_BLOCK_MAGIC(gr,constellation_decoder2_cb) + +gr_constellation_decoder2_cb_sptr +gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); + +class gr_constellation_decoder2_cb : public gr_sync_block +{ + private: + gr_constellation_decoder2_cb (gr_constellation_sptr constellation); + + friend gr_constellation_decoder2_cb_sptr + gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); + + public: + ~gr_constellation_decoder2_cb(); +}; -- cgit From 6e09949418f7c7c0fe21b4bd69d2f4ff079ce941 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 13 Feb 2011 19:42:48 -0700 Subject: Added rotational symmetry info to gr_constellation. --- gnuradio-core/src/lib/general/gr_constellation.cc | 32 ++++++++++++++++------- gnuradio-core/src/lib/general/gr_constellation.h | 15 ++++++++--- gnuradio-core/src/lib/general/gr_constellation.i | 9 +++++-- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index e3b4c14e7..27590bf82 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -35,16 +35,19 @@ #define SQRT_TWO 0.707107 gr_constellation_sptr -gr_make_constellation(std::vector constellation, std::vector pre_diff_code) +gr_make_constellation(std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry) { - return gr_constellation_sptr(new gr_constellation (constellation, pre_diff_code)); + return gr_constellation_sptr(new gr_constellation (constellation, pre_diff_code, rotational_symmetry)); } // Base Constellation Class -gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code) : +gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry) : d_constellation(constellation), - d_pre_diff_code(pre_diff_code) + d_pre_diff_code(pre_diff_code), + d_rotational_symmetry(rotational_symmetry) { if (pre_diff_code.size() == 0) d_apply_pre_diff_code = false; @@ -55,7 +58,8 @@ gr_constellation::gr_constellation (std::vector constellation, std:: } gr_constellation::gr_constellation () : - d_apply_pre_diff_code(false) + d_apply_pre_diff_code(false), + d_rotational_symmetry(0) { } @@ -128,8 +132,9 @@ void gr_constellation::calc_hard_symbol_metric(gr_complex sample, float *metric) gr_constellation_sector::gr_constellation_sector (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int n_sectors) : - gr_constellation(constellation, pre_diff_code), + gr_constellation(constellation, pre_diff_code, rotational_symmetry), n_sectors(n_sectors) { } @@ -151,17 +156,21 @@ void gr_constellation_sector::find_sector_values () { gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) { - return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); + return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, rotational_symmetry, + real_sectors, imag_sectors, width_real_sectors, + width_imag_sectors)); } gr_constellation_rect::gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) : - gr_constellation_sector(constellation, pre_diff_code, real_sectors * imag_sectors), + gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, real_sectors * imag_sectors), n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) { @@ -199,13 +208,14 @@ gr_make_constellation_psk(std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors) { - return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, n_sectors)); + return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, + n_sectors)); } gr_constellation_psk::gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors) : - gr_constellation_sector(constellation, pre_diff_code, n_sectors) + gr_constellation_sector(constellation, pre_diff_code, constellation.size(), n_sectors) { find_sector_values(); } @@ -241,6 +251,7 @@ gr_constellation_bpsk::gr_constellation_bpsk () d_constellation.resize(2); d_constellation[0] = gr_complex(-1, 0); d_constellation[1] = gr_complex(1, 0); + d_rotational_symmetry = 2; } unsigned int gr_constellation_bpsk::decision_maker(gr_complex sample) @@ -263,6 +274,7 @@ gr_constellation_qpsk::gr_constellation_qpsk () d_constellation[1] = gr_complex(SQRT_TWO, -SQRT_TWO); d_constellation[2] = gr_complex(-SQRT_TWO, SQRT_TWO); d_constellation[3] = gr_complex(SQRT_TWO, SQRT_TWO); + d_rotational_symmetry = 4; } unsigned int gr_constellation_qpsk::decision_maker(gr_complex sample) diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 440e32e57..4083e5b5b 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -40,13 +40,15 @@ typedef boost::shared_ptr gr_constellation_sptr; // public constructor gr_constellation_sptr -gr_make_constellation (std::vector constellation, std::vector pre_diff_code); +gr_make_constellation (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry); class gr_constellation : public boost::enable_shared_from_this { public: - gr_constellation (std::vector constellation, std::vector pre_diff_code); + gr_constellation (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry); gr_constellation (); //! Returns the set of points in this constellation. @@ -55,7 +57,9 @@ class gr_constellation : public boost::enable_shared_from_this bool apply_pre_diff_code() { return d_apply_pre_diff_code;} //! Returns the encoding to apply before differential encoding. std::vector pre_diff_code() { return d_pre_diff_code;} - + //! Returns the order of rotational symmetry. + unsigned int rotational_symmetry() { return d_rotational_symmetry;} + //! Returns the constellation point that matches best. //! Also calculates the phase error. virtual unsigned int decision_maker (gr_complex sample); @@ -83,6 +87,7 @@ class gr_constellation : public boost::enable_shared_from_this std::vector d_constellation; std::vector d_pre_diff_code; bool d_apply_pre_diff_code; + unsigned int d_rotational_symmetry; private: friend gr_constellation_sptr @@ -104,6 +109,7 @@ class gr_constellation_sector : public gr_constellation gr_constellation_sector (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int n_sectors); unsigned int decision_maker (gr_complex sample); @@ -141,6 +147,7 @@ typedef boost::shared_ptr gr_constellation_rect_sptr; // public constructor gr_constellation_rect_sptr gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); @@ -149,6 +156,7 @@ class gr_constellation_rect : public gr_constellation_sector public: gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); @@ -167,6 +175,7 @@ class gr_constellation_rect : public gr_constellation_sector friend gr_constellation_rect_sptr gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index 762289c57..18d0cc92b 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -31,14 +31,16 @@ typedef boost::shared_ptr gr_constellation_sptr; %template(gr_constellation_sptr) boost::shared_ptr; %rename(constellation) gr_make_constellation; gr_constellation_sptr gr_make_constellation(std::vector constellation, - std::vector pre_diff_code); + std::vector pre_diff_code, + unsigned int rotational_symmetry); %ignore gr_constellation; class gr_constellation { public: gr_constellation (std::vector constellation, - std::vector pre_diff_code); + std::vector pre_diff_code, + unsigned int rotational_symmetry); std::vector points(); unsigned int decision_maker (gr_complex sample); unsigned int bits_per_symbol (); @@ -46,6 +48,7 @@ public: gr_constellation_sptr base (); bool apply_pre_diff_code(); std::vector pre_diff_code(); + unsigned int rotational_symmetry(); }; class gr_constellation_sector: public gr_constellation @@ -58,6 +61,7 @@ typedef boost::shared_ptr gr_constellation_rect_sptr; %rename(constellation_rect) gr_make_constellation_rect; gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); %ignore gr_constellation_rect; @@ -67,6 +71,7 @@ class gr_constellation_rect : public gr_constellation_sector public: gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); }; -- cgit From 7fea5a1532e2c9d65406745fa7a18cf5ea3395ad Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 13 Feb 2011 19:43:19 -0700 Subject: Fixing bugs in qam.py. --- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index 143f6e108..bdd27e9bb 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -113,7 +113,7 @@ def make_differential_constellation(m, gray_coded): return const_map def make_not_differential_constellation(m, gray_coded): - side = pow(m, 0.5) + side = int(pow(m, 0.5)) if (not isinstance(m, int) or m < 4 or not is_power_of_four(m)): raise ValueError("m must be a power of 4 integer.") # Each symbol holds k bits. @@ -122,22 +122,20 @@ def make_not_differential_constellation(m, gray_coded): # Number rows and columns using gray codes. gcs = gray_code(side) # Get inverse gray codes. - i_gcs = dict([(v, key) for key, v in enumerate(gcs)]) + i_gcs = mod_codes.invert_code(gcs) else: - i_gcs = dict([(i, i) for i in range(0, m)]) + i_gcs = range(0, side) # The distance between points is found. - step = 2/(side-1) + step = 2.0/(side-1) gc_to_x = [-1 + i_gcs[gc]*step for gc in range(0, side)] - # First k/2 bits determine x position. # Following k/2 bits determine y position. const_map = [] for i in range(m): - y = gc_to_x(get_bits(i, 0, k/2)) - x = gc_to_x(get_bits(i, k/2, k/2)) + y = gc_to_x[get_bits(i, 0, k/2)] + x = gc_to_x[get_bits(i, k/2, k/2)] const_map.append(complex(x,y)) - return const_map # ///////////////////////////////////////////////////////////////////////////// @@ -165,7 +163,7 @@ def qam_constellation(constellation_points=_def_constellation_points, # No pre-diff code # Should add one so that we can gray-code the quadrant bits too. pre_diff_code = [] - constellation = gr.constellation_rect(points, pre_diff_code, side, side, width, width) + constellation = gr.constellation_rect(points, pre_diff_code, 4, side, side, width, width) return constellation # ///////////////////////////////////////////////////////////////////////////// -- cgit From e10ea35d7a32c525145877f2ef39642fc68d8c3f Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 13 Feb 2011 19:44:41 -0700 Subject: Added constellation object unit test. --- gnuradio-core/src/python/gnuradio/gr/Makefile.am | 1 + .../src/python/gnuradio/gr/qa_constellation.py | 172 +++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_constellation.py diff --git a/gnuradio-core/src/python/gnuradio/gr/Makefile.am b/gnuradio-core/src/python/gnuradio/gr/Makefile.am index b8da9cf48..db2cc6eb3 100644 --- a/gnuradio-core/src/python/gnuradio/gr/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/gr/Makefile.am @@ -51,6 +51,7 @@ noinst_PYTHON = \ qa_classify.py \ qa_cma_equalizer.py \ qa_complex_to_xxx.py \ + qa_constellation.py \ qa_constellation_decoder_cb.py \ qa_copy.py \ qa_correlate_access_code.py \ diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py new file mode 100644 index 000000000..65d9006cb --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# +# Copyright 2004,2007,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. +# + +import random +from cmath import exp, pi, log + +from gnuradio import gr, gr_unittest, blks2 +from gnuradio.utils import mod_codes + +tested_mod_codes = (mod_codes.NO_CODE, mod_codes.GRAY_CODE) + +# A list of the constellations to test. +# Each constellation is given by a 3-tuple. +# First item is a function to generate the constellation +# Second item is a dictionary of arguments for function with lists of +# possible values. +# Third item is whether differential encoding should be tested. +# Fourth item is the name of the argument to constructor that specifices +# whether differential encoding is used. +tested_constellations = ( + (blks2.psk_constellation, + {'m': (2, 4, 8, 16, 32, 64), + 'mod_code': tested_mod_codes, }, + True, None), + (blks2.qam_constellation, + {'constellation_points': (4, 16, 64), + 'mod_code': tested_mod_codes, }, + True, 'differential'), + (blks2.bpsk_constellation, {}, True, None), + # No differential testing for qpsk because it is gray-coded. + # This is because soft decision making is simpler if we can assume + # gray coding. + (blks2.qpsk_constellation, {}, False, None), + ) + +class test_constellation (gr_unittest.TestCase): + + src_length = 256 + + def setUp(self): + # Generate a list of random bits. + self.src_data = tuple([random.randint(0,1) for i in range(0, self.src_length)]) + + def tearDown(self): + pass + + def test_hard_decision(self): + for constructor, poss_args, differential, diff_argname in tested_constellations: + if differential: + diff_poss = (True, False) + else: + diff_poss = (False,) + poss_args = [[argname, argvalues, 0] for argname, argvalues in poss_args.items()] + for current_diff in diff_poss: + # Add an index into args to keep track of current position in argvalues + while True: + current_args = dict([(argname, argvalues[argindex]) + for argname, argvalues, argindex in poss_args]) + if diff_argname is not None: + current_args[diff_argname] = current_diff + constellation = constructor(**current_args) + # If we're differentially encoding test for possible rotations + # Testing for every possible rotation seems a bit overkill + # but better safe than sorry. + if current_diff: + rs = constellation.rotational_symmetry() + rotations = [exp(i*2*pi*(0+1j)/rs) for i in range(0, rs)] + else: + rotations = [1] + for rotation in rotations: + src = gr.vector_source_b(self.src_data) + content = mod_demod(constellation, current_diff, rotation) + dst = gr.vector_sink_b() + self.tb = gr.top_block() + self.tb.connect(src, content, dst) + self.tb.run() + data = dst.data() + # Don't worry about cut off data for now. + first = constellation.bits_per_symbol() + self.assertEqual (self.src_data[first:len(data)], data[first:]) + # Move to next arg combination + for this_poss_arg in poss_args: + argname, argvalues, argindex = this_poss_arg + if argindex < len(argvalues) - 1: + this_poss_arg[2] += 1 + break + else: + this_poss_arg[2] = 0 + if sum([argindex for argname, argvalues, argindex in poss_args]) == 0: + break + + +class mod_demod(gr.hier_block2): + def __init__(self, constellation, differential, rotation): + if constellation.arity() > 256: + # If this becomes limiting some of the blocks should be generalised so that they can work + # with shorts and ints as well as chars. + raise ValueError("Constellation cannot contain more than 256 points.") + + gr.hier_block2.__init__(self, "mod_demod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_char)) # Output signature + + arity = constellation.arity() + + # TX + self.constellation = constellation + self.differential = differential + self.blocks = [self] + # We expect a stream of unpacked bits. + # First step is to pack them. + self.blocks.append( + gr.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)) + # Second step we unpack them such that we have k bits in each byte where + # each constellation symbol hold k bits. + self.blocks.append( + gr.packed_to_unpacked_bb(self.constellation.bits_per_symbol(), + gr.GR_MSB_FIRST)) + # Apply any pre-differential coding + # Gray-coding is done here if we're also using differential coding. + if self.constellation.apply_pre_diff_code(): + self.blocks.append(gr.map_bb(self.constellation.pre_diff_code())) + # Differential encoding. + if self.differential: + self.blocks.append(gr.diff_encoder_bb(arity)) + # Convert to constellation symbols. + self.blocks.append(gr.chunks_to_symbols_bc(self.constellation.points())) + + # CHANNEL + # Channel just consists of a rotation to check differential coding. + self.blocks.append(gr.multiply_const_cc(rotation)) + + # RX + # Convert the constellation symbols back to binary values. + self.blocks.append(gr.constellation_decoder2_cb(self.constellation.base())) + # Differential decoding. + if self.differential: + self.blocks.append(gr.diff_decoder_bb(arity)) + # Decode any pre-differential coding. + if self.constellation.apply_pre_diff_code(): + self.blocks.append(gr.map_bb( + mod_codes.invert_code(self.constellation.pre_diff_code()))) + # unpack the k bit vector into a stream of bits + self.blocks.append(gr.unpack_k_bits_bb( + self.constellation.bits_per_symbol())) + # connect to block output + self.blocks.append(self) + + self.connect(*self.blocks) + + +if __name__ == '__main__': + gr_unittest.run(test_constellation, "test_constellation.xml") -- cgit From 38fe2e1ba02029998f8feb46fccd0608eb181def Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 20 Feb 2011 09:13:55 -0700 Subject: Constellation objects accept n-dimensional points. (i.e. n complex numbers correspond to one symbol value.) --- gnuradio-core/src/lib/general/gr_constellation.cc | 183 +++++++++++++++------ gnuradio-core/src/lib/general/gr_constellation.h | 109 ++++++++---- gnuradio-core/src/lib/general/gr_constellation.i | 39 ++++- .../lib/general/gr_constellation_decoder2_cb.cc | 35 ++-- .../src/lib/general/gr_constellation_decoder2_cb.h | 17 +- .../lib/general/gr_constellation_receiver_cb.cc | 6 +- .../src/lib/general/gr_ofdm_frame_sink2.cc | 5 +- .../src/python/gnuradio/gr/qa_constellation.py | 34 +++- .../src/lib/trellis_constellation_metrics_cf.cc | 27 +-- .../src/lib/trellis_constellation_metrics_cf.h | 1 + 10 files changed, 334 insertions(+), 122 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 27590bf82..69b6e1bdc 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -34,20 +34,14 @@ #define M_TWOPI (2*M_PI) #define SQRT_TWO 0.707107 -gr_constellation_sptr -gr_make_constellation(std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry) -{ - return gr_constellation_sptr(new gr_constellation (constellation, pre_diff_code, rotational_symmetry)); -} - // Base Constellation Class gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry) : + unsigned int rotational_symmetry, unsigned int dimensionality) : d_constellation(constellation), d_pre_diff_code(pre_diff_code), - d_rotational_symmetry(rotational_symmetry) + d_rotational_symmetry(rotational_symmetry), + d_dimensionality(dimensionality) { if (pre_diff_code.size() == 0) d_apply_pre_diff_code = false; @@ -55,25 +49,48 @@ gr_constellation::gr_constellation (std::vector constellation, std:: throw std::runtime_error ("The constellation and pre-diff code must be of the same length."); else d_apply_pre_diff_code = true; + calc_arity(); } gr_constellation::gr_constellation () : d_apply_pre_diff_code(false), - d_rotational_symmetry(0) + d_rotational_symmetry(0), + d_dimensionality(1) { + calc_arity(); +} + +//! Returns the constellation points for a symbol value +void gr_constellation::map_to_points(unsigned int value, gr_complex *points) { + for (unsigned int i=0; i gr_constellation::map_to_points_v(unsigned int value) { + std::vector points_v; + points_v.resize(d_dimensionality); + map_to_points(value, &(points_v[0])); + return points_v; +} + +float gr_constellation::get_distance(unsigned int index, const gr_complex *sample) { + float dist = 0; + for (unsigned int i=0; i constellation, gr_complex sample) { +unsigned int gr_constellation::get_closest_point(const gr_complex *sample) { - unsigned int table_size = constellation.size(); unsigned int min_index = 0; float min_euclid_dist; float euclid_dist; - min_euclid_dist = norm(sample - constellation[0]); - min_index = 0; - for (unsigned int j = 1; j < table_size; j++){ - euclid_dist = norm(sample - constellation[j]); + min_euclid_dist = get_distance(0, sample); + min_index = 0; + for (unsigned int j = 1; j < d_arity; j++){ + euclid_dist = get_distance(j, sample); if (euclid_dist < min_euclid_dist){ min_euclid_dist = euclid_dist; min_index = j; @@ -82,16 +99,48 @@ unsigned int get_closest_point(std::vector constellation, gr_complex return min_index; } -// Chooses points base on shortest distance. -// Inefficient. -unsigned int gr_constellation::decision_maker(gr_complex sample) +unsigned int gr_constellation::decision_maker_pe(const gr_complex *sample, float *phase_error) { - unsigned int min_index; - min_index = get_closest_point(d_constellation, sample); - return min_index; + unsigned int index = decision_maker(sample); + *phase_error = 0; + for (unsigned int d=0; d gr_constellation::s_points () { + if (d_dimensionality != 1) + throw std::runtime_error ("s_points only works for dimensionality 1 constellations."); + else + return d_constellation; +} + +std::vector > gr_constellation::v_points () { + std::vector > vv_const; + vv_const.resize(d_arity); + for (unsigned int p=0; p v_const; + v_const.resize(d_dimensionality); + for (unsigned int d=0; d sample) { + assert(sample.size() == d_dimensionality); + return decision_maker (&(sample[0])); +} + +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality) +{ + return gr_constellation_calcdist_sptr(new gr_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, + dimensionality)); +} + +gr_constellation_calcdist::gr_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality) : + gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) +{} + +// Chooses points base on shortest distance. +// Inefficient. +unsigned int gr_constellation_calcdist::decision_maker(const gr_complex *sample) +{ + return get_closest_point(sample); +} + gr_constellation_sector::gr_constellation_sector (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, + unsigned int dimensionality, unsigned int n_sectors) : - gr_constellation(constellation, pre_diff_code, rotational_symmetry), + gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), n_sectors(n_sectors) { } -unsigned int gr_constellation_sector::decision_maker (gr_complex sample) { +unsigned int gr_constellation_sector::decision_maker (const gr_complex *sample) { unsigned int sector; sector = get_sector(sample); return sector_values[sector]; @@ -170,20 +251,20 @@ gr_constellation_rect::gr_constellation_rect (std::vector constellat unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) : - gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, real_sectors * imag_sectors), + gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) { find_sector_values(); } -unsigned int gr_constellation_rect::get_sector (gr_complex sample) { +unsigned int gr_constellation_rect::get_sector (const gr_complex *sample) { int real_sector, imag_sector; unsigned int sector; - real_sector = int(real(sample)/d_width_real_sectors + n_real_sectors/2.0); + real_sector = int(real(*sample)/d_width_real_sectors + n_real_sectors/2.0); if (real_sector < 0) real_sector = 0; if (real_sector >= n_real_sectors) real_sector = n_real_sectors-1; - imag_sector = int(imag(sample)/d_width_imag_sectors + n_imag_sectors/2.0); + imag_sector = int(imag(*sample)/d_width_imag_sectors + n_imag_sectors/2.0); if (imag_sector < 0) imag_sector = 0; if (imag_sector >= n_imag_sectors) imag_sector = n_imag_sectors-1; sector = real_sector * n_imag_sectors + imag_sector; @@ -198,7 +279,7 @@ unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { imag_sector = sector - real_sector * n_imag_sectors; sector_center = gr_complex((real_sector + 0.5 - n_real_sectors/2.0) * d_width_real_sectors, (imag_sector + 0.5 - n_imag_sectors/2.0) * d_width_imag_sectors); - closest_point = get_closest_point(d_constellation, sector_center); + closest_point = get_closest_point(§or_center); return closest_point; } @@ -215,27 +296,25 @@ gr_make_constellation_psk(std::vector constellation, gr_constellation_psk::gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors) : - gr_constellation_sector(constellation, pre_diff_code, constellation.size(), n_sectors) + gr_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) { find_sector_values(); } -unsigned int gr_constellation_psk::get_sector (gr_complex sample) { - float phase = arg(sample); +unsigned int gr_constellation_psk::get_sector (const gr_complex *sample) { + float phase = arg(*sample); float width = M_TWOPI / n_sectors; int sector = floor(phase/width + 0.5); unsigned int u_sector; if (sector < 0) sector += n_sectors; u_sector = sector; - // std::cout << phase << " " << width << " " << sector << std::endl; return sector; } unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { float phase = sector * M_TWOPI / n_sectors; gr_complex sector_center = gr_complex(cos(phase), sin(phase)); - unsigned int closest_point = get_closest_point(d_constellation, sector_center); - // std::cout << phase << " " << sector_center << " " << closest_point << std::endl; + unsigned int closest_point = get_closest_point(§or_center); return closest_point; } @@ -252,11 +331,13 @@ gr_constellation_bpsk::gr_constellation_bpsk () d_constellation[0] = gr_complex(-1, 0); d_constellation[1] = gr_complex(1, 0); d_rotational_symmetry = 2; + d_dimensionality = 1; + calc_arity(); } -unsigned int gr_constellation_bpsk::decision_maker(gr_complex sample) +unsigned int gr_constellation_bpsk::decision_maker(const gr_complex *sample) { - return (real(sample) > 0); + return (real(*sample) > 0); } @@ -275,11 +356,13 @@ gr_constellation_qpsk::gr_constellation_qpsk () d_constellation[2] = gr_complex(-SQRT_TWO, SQRT_TWO); d_constellation[3] = gr_complex(SQRT_TWO, SQRT_TWO); d_rotational_symmetry = 4; + d_dimensionality = 1; + calc_arity(); } -unsigned int gr_constellation_qpsk::decision_maker(gr_complex sample) +unsigned int gr_constellation_qpsk::decision_maker(const gr_complex *sample) { // Real component determines small bit. // Imag component determines big bit. - return 2*(imag(sample)>0) + (real(sample)>0); + return 2*(imag(*sample)>0) + (real(*sample)>0); } diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 4083e5b5b..4ae539572 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -32,50 +32,60 @@ /************************************************************/ /* gr_constellation */ /* */ -/* Decision maker uses nearest-point method. */ +/* Base class defining interface. */ /************************************************************/ class gr_constellation; typedef boost::shared_ptr gr_constellation_sptr; -// public constructor -gr_constellation_sptr -gr_make_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry); - class gr_constellation : public boost::enable_shared_from_this { - public: - +public: gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry); + unsigned int rotational_symmetry, unsigned int dimensionality); gr_constellation (); + //! Returns the constellation points for a symbol value + void map_to_points(unsigned int value, gr_complex *points); + std::vector map_to_points_v(unsigned int value); + + //! Returns the constellation point that matches best. + virtual unsigned int decision_maker (const gr_complex *sample) = 0; + //! Takes a vector rather than a pointer. Better for SWIG wrapping. + unsigned int decision_maker_v (std::vector sample); + //! Also calculates the phase error. + unsigned int decision_maker_pe (const gr_complex *sample, float *phase_error); + //! Calculates distance. + unsigned int decision_maker_e (const gr_complex *sample, float *error); + + //! Calculates metrics for all points in the constellation. + //! For use with the viterbi algorithm. + virtual void calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type); + virtual void calc_euclidean_metric(const gr_complex *sample, float *metric); + virtual void calc_hard_symbol_metric(const gr_complex *sample, float *metric); + //! Returns the set of points in this constellation. std::vector points() { return d_constellation;} + //! Returns the vector of points in this constellation. + //! Raise error if dimensionality is not one. + std::vector s_points(); + //! Returns a vector of vectors of points. + std::vector > v_points(); //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding) bool apply_pre_diff_code() { return d_apply_pre_diff_code;} //! Returns the encoding to apply before differential encoding. std::vector pre_diff_code() { return d_pre_diff_code;} //! Returns the order of rotational symmetry. unsigned int rotational_symmetry() { return d_rotational_symmetry;} + //! Returns the number of complex numbers in a single symbol. + unsigned int dimensionality() {return d_dimensionality;} - //! Returns the constellation point that matches best. - //! Also calculates the phase error. - virtual unsigned int decision_maker (gr_complex sample); - - //! Calculates metrics for all points in the constellation. - //! For use with the viterbi algorithm. - void calc_metric(gr_complex sample, float *metric, trellis_metric_type_t type); - void calc_euclidean_metric(gr_complex sample, float *metric); - void calc_hard_symbol_metric(gr_complex sample, float *metric); - unsigned int bits_per_symbol () { - return floor(log(d_constellation.size())/log(2)); + return floor(log(d_constellation.size())/d_dimensionality/log(2)); } unsigned int arity () { - return d_constellation.size(); + return d_arity; } gr_constellation_sptr base() { @@ -88,10 +98,46 @@ class gr_constellation : public boost::enable_shared_from_this std::vector d_pre_diff_code; bool d_apply_pre_diff_code; unsigned int d_rotational_symmetry; + unsigned int d_dimensionality; + unsigned int d_arity; + + float get_distance(unsigned int index, const gr_complex *sample); + unsigned int get_closest_point(const gr_complex *sample); + void calc_arity (); +}; + +/************************************************************/ +/* gr_constellation_calcdist */ +/* */ +/* Constellation which calculates the distance to each */ +/* point in the constellation for decision making. */ +/* Inefficient for large constellations. */ +/************************************************************/ + +class gr_constellation_calcdist; +typedef boost::shared_ptr gr_constellation_calcdist_sptr; + +// public constructor +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality); + + +class gr_constellation_calcdist : public gr_constellation +{ + public: + gr_constellation_calcdist (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); + unsigned int decision_maker (const gr_complex *sample); + // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); + // void calc_euclidean_metric(gr_complex *sample, float *metric); + // void calc_hard_symbol_metric(gr_complex *sample, float *metric); private: - friend gr_constellation_sptr - gr_make_constellation (std::vector constellation); + friend gr_constellation_calcdist_sptr + gr_make_constellation_calcdist (std::vector constellation); }; /************************************************************/ @@ -110,16 +156,15 @@ class gr_constellation_sector : public gr_constellation gr_constellation_sector (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, + unsigned int dimensionality, unsigned int n_sectors); - unsigned int decision_maker (gr_complex sample); + unsigned int decision_maker (const gr_complex *sample); protected: - virtual unsigned int get_sector (gr_complex sample) = 0; - + virtual unsigned int get_sector (const gr_complex *sample) = 0; virtual unsigned int calc_sector_value (unsigned int sector) = 0; - void find_sector_values (); unsigned int n_sectors; @@ -133,6 +178,8 @@ class gr_constellation_sector : public gr_constellation /************************************************************/ /* gr_constellation_rect */ /* */ +/* Only implemented for 1-(complex)dimensional */ +/* constellation. */ /* Constellation space is divided into rectangular sectors. */ /* Each sector is associated with the nearest constellation */ /* point. */ @@ -162,7 +209,7 @@ class gr_constellation_rect : public gr_constellation_sector protected: - unsigned int get_sector (gr_complex sample); + unsigned int get_sector (const gr_complex *sample); unsigned int calc_sector_value (unsigned int sector); @@ -208,7 +255,7 @@ class gr_constellation_psk : public gr_constellation_sector protected: - unsigned int get_sector (gr_complex sample); + unsigned int get_sector (const gr_complex *sample); unsigned int calc_sector_value (unsigned int sector); @@ -239,7 +286,7 @@ class gr_constellation_bpsk : public gr_constellation public: gr_constellation_bpsk (); - unsigned int decision_maker (gr_complex sample); + unsigned int decision_maker (const gr_complex *sample); friend gr_constellation_bpsk_sptr gr_make_constellation_bpsk (); @@ -265,7 +312,7 @@ class gr_constellation_qpsk : public gr_constellation public: gr_constellation_qpsk (); - unsigned int decision_maker (gr_complex sample); + unsigned int decision_maker (const gr_complex *sample); friend gr_constellation_qpsk_sptr gr_make_constellation_qpsk (); diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index 18d0cc92b..bc1724c3a 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -29,26 +29,51 @@ class gr_constellation; typedef boost::shared_ptr gr_constellation_sptr; %template(gr_constellation_sptr) boost::shared_ptr; -%rename(constellation) gr_make_constellation; -gr_constellation_sptr gr_make_constellation(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry); -%ignore gr_constellation; class gr_constellation { public: gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry); + unsigned int rotational_symmetry, + unsigned int dimensionality); std::vector points(); - unsigned int decision_maker (gr_complex sample); + std::vector s_points(); + std::vector > v_points(); + virtual unsigned int decision_maker (gr_complex *sample) = 0; + unsigned int decision_maker_v (std::vector sample); + // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); + // void calc_euclidean_metric(gr_complex *sample, float *metric); + // void calc_hard_symbol_metric(gr_complex *sample, float *metric); + std::vector map_to_points_v(unsigned int value); unsigned int bits_per_symbol (); unsigned int arity (); gr_constellation_sptr base (); bool apply_pre_diff_code(); std::vector pre_diff_code(); unsigned int rotational_symmetry(); + unsigned int dimensionality(); +}; + +class gr_constellation_calcdist; +typedef boost::shared_ptr gr_constellation_calcdist_sptr; +%template(gr_constellation_calcdist_sptr) boost::shared_ptr; +%rename(constellation_calcdist) gr_make_constellation_calcdist; +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); +%ignore gr_constellation_calcdist; + +class gr_constellation_calcdist: public gr_constellation +{ + public: + gr_constellation_calcdist (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); + unsigned int decision_maker (const gr_complex *sample); }; class gr_constellation_sector: public gr_constellation diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc index 9116d4776..a63c1d38a 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.cc @@ -27,6 +27,7 @@ #include #include #include +#include gr_constellation_decoder2_cb_sptr gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation) @@ -37,27 +38,41 @@ gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation) gr_constellation_decoder2_cb:: gr_constellation_decoder2_cb (gr_constellation_sptr constellation) - : gr_sync_block ("constellation_decoder2_cb", - gr_make_io_signature (1, 1, sizeof (gr_complex)), - gr_make_io_signature (1, 1, sizeof (unsigned char))), - d_constellation(constellation) + : gr_block ("constellation_decoder2_cb", + gr_make_io_signature (1, 1, sizeof (gr_complex)), + gr_make_io_signature (1, 1, sizeof (unsigned char))), + d_constellation(constellation), + d_dim(constellation->dimensionality()) { + set_relative_rate (1.0 / ((double) d_dim)); } +void +gr_constellation_decoder2_cb::forecast (int noutput_items, + gr_vector_int &ninput_items_required) +{ + unsigned int input_required = noutput_items * d_dim; + + unsigned ninputs = ninput_items_required.size(); + for (unsigned int i = 0; i < ninputs; i++) + ninput_items_required[i] = input_required; +} -gr_constellation_decoder2_cb::~gr_constellation_decoder2_cb(){} int -gr_constellation_decoder2_cb::work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) +gr_constellation_decoder2_cb:: +general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) { gr_complex const *in = (const gr_complex *) input_items[0]; unsigned char *out = (unsigned char *) output_items[0]; - + for(int i = 0; i < noutput_items; i++){ - out[i] = d_constellation->decision_maker(in[i]); + out[i] = d_constellation->decision_maker(&(in[i*d_dim])); } + consume_each (noutput_items * d_dim); return noutput_items; } diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h index d72761927..51891b636 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder2_cb.h @@ -23,7 +23,7 @@ #ifndef INCLUDED_GR_CONSTELLATION_DECODER2_CB_H #define INCLUDED_GR_CONSTELLATION_DECODER2_CB_H -#include +#include #include #include @@ -38,11 +38,12 @@ gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); * \ingroup coding_blk * */ -class gr_constellation_decoder2_cb : public gr_sync_block +class gr_constellation_decoder2_cb : public gr_block { private: gr_constellation_sptr d_constellation; + unsigned int d_dim; friend gr_constellation_decoder2_cb_sptr gr_make_constellation_decoder2_cb (gr_constellation_sptr constellation); @@ -51,11 +52,13 @@ class gr_constellation_decoder2_cb : public gr_sync_block public: - ~gr_constellation_decoder2_cb(); //destructor - - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); + void forecast (int noutput_items, + gr_vector_int &ninput_items_required); + + int general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); }; #endif diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc index 6520b66b2..dae70d931 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -61,6 +61,8 @@ gr_constellation_receiver_cb::gr_constellation_receiver_cb (gr_constellation_spt d_alpha(alpha), d_beta(beta), d_freq(0), d_max_freq(fmax), d_min_freq(fmin), d_phase(0), d_current_const_point(0) { + if (d_constellation->dimensionality() != 1) + throw std::runtime_error ("This receiver only works with constellations of dimension 1."); } void @@ -111,8 +113,8 @@ gr_constellation_receiver_cb::general_work (int noutput_items, sample = in[i]; nco = gr_expj(d_phase); // get the NCO value for derotating the current sample sample = nco*sample; // get the downconverted symbol - sym_value = d_constellation->decision_maker(sample); - phase_error = -arg(sample*conj(d_constellation->points()[sym_value])); + sym_value = d_constellation->decision_maker_pe(&sample, &phase_error); + // phase_error = -arg(sample*conj(d_constellation->points()[sym_value])); phase_error_tracking(phase_error); // corrects phase and frequency offsets out[i] = sym_value; if(output_items.size() == 4) { diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc index 8d104e7be..f0cb0fb0a 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc @@ -113,7 +113,7 @@ unsigned int gr_ofdm_frame_sink2::demapper(const gr_complex *in, d_derotated_output[i] = sigrot; } - unsigned char bits = d_constell->decision_maker(sigrot); + unsigned char bits = d_constell->decision_maker(&sigrot); gr_complex closest_sym = d_constell->points()[bits]; @@ -185,6 +185,9 @@ gr_ofdm_frame_sink2::gr_ofdm_frame_sink2(gr_constellation_sptr constell, d_resid(0), d_nresid(0),d_phase(0),d_freq(0),d_phase_gain(phase_gain),d_freq_gain(freq_gain), d_eq_gain(0.05) { + if (d_constell->dimensionality() != 1) + throw std::runtime_error ("This receiver only works with constellations of dimension 1."); + std::string carriers = "FE7F"; // A bit hacky to fill out carriers to occupied_carriers length diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py index 65d9006cb..054194789 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py @@ -22,6 +22,7 @@ import random from cmath import exp, pi, log +from itertools import product from gnuradio import gr, gr_unittest, blks2 from gnuradio.utils import mod_codes @@ -36,6 +37,27 @@ tested_mod_codes = (mod_codes.NO_CODE, mod_codes.GRAY_CODE) # Third item is whether differential encoding should be tested. # Fourth item is the name of the argument to constructor that specifices # whether differential encoding is used. + +def twod_constell(): + """ + + """ + points = ((1+0j), (0+1j), + (-1+0j), (0-1j)) + rot_sym = 2 + dim = 2 + return gr.constellation_calcdist(points, [], rot_sym, dim) + +def threed_constell(): + oned_points = ((1+0j), (0+1j), (-1+0j), (0-1j)) + points = [] + r4 = range(0, 4) + for ia, ib, ic in product(r4, r4, r4): + points += [oned_points[ia], oned_points[ib], oned_points[ic]] + rot_sym = 4 + dim = 3 + return gr.constellation_calcdist(points, [], rot_sym, dim) + tested_constellations = ( (blks2.psk_constellation, {'m': (2, 4, 8, 16, 32, 64), @@ -50,6 +72,8 @@ tested_constellations = ( # This is because soft decision making is simpler if we can assume # gray coding. (blks2.qpsk_constellation, {}, False, None), + (twod_constell, {}, True, None), + (threed_constell, {}, True, None), ) class test_constellation (gr_unittest.TestCase): @@ -85,7 +109,7 @@ class test_constellation (gr_unittest.TestCase): rs = constellation.rotational_symmetry() rotations = [exp(i*2*pi*(0+1j)/rs) for i in range(0, rs)] else: - rotations = [1] + rotations = [None] for rotation in rotations: src = gr.vector_source_b(self.src_data) content = mod_demod(constellation, current_diff, rotation) @@ -143,11 +167,11 @@ class mod_demod(gr.hier_block2): if self.differential: self.blocks.append(gr.diff_encoder_bb(arity)) # Convert to constellation symbols. - self.blocks.append(gr.chunks_to_symbols_bc(self.constellation.points())) - + self.blocks.append(gr.chunks_to_symbols_bc(self.constellation.points(), self.constellation.dimensionality())) # CHANNEL # Channel just consists of a rotation to check differential coding. - self.blocks.append(gr.multiply_const_cc(rotation)) + if rotation is not None: + self.blocks.append(gr.multiply_const_cc(rotation)) # RX # Convert the constellation symbols back to binary values. @@ -163,6 +187,8 @@ class mod_demod(gr.hier_block2): self.blocks.append(gr.unpack_k_bits_bb( self.constellation.bits_per_symbol())) # connect to block output + check_index = len(self.blocks) + self.blocks = self.blocks[:check_index] self.blocks.append(self) self.connect(*self.blocks) diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc index 73e848259..2d6f0ebf2 100644 --- a/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc @@ -48,18 +48,21 @@ trellis_constellation_metrics_cf::trellis_constellation_metrics_cf (gr_constella gr_make_io_signature (1, -1, sizeof (float))), d_constellation (constellation), d_TYPE (TYPE), - d_O (constellation->arity()) + d_O (constellation->arity()), + d_D (constellation->dimensionality()) { - set_relative_rate (d_O); - set_output_multiple (d_O); + set_relative_rate (1.0 * d_O / ((double) d_D)); + set_output_multiple ((int)d_O); } void trellis_constellation_metrics_cf::forecast (int noutput_items, gr_vector_int &ninput_items_required) { assert (noutput_items % d_O == 0); - int input_required = noutput_items / d_O; - ninput_items_required[0] = input_required; + unsigned int input_required = d_D * noutput_items / d_O; + unsigned int ninputs = ninput_items_required.size(); + for (unsigned int i = 0; i < ninputs; i++) + ninput_items_required[i] = input_required; } @@ -72,14 +75,18 @@ trellis_constellation_metrics_cf::general_work (int noutput_items, { assert (noutput_items % d_O == 0); + assert (input_items.size() == output_items.size()); + unsigned int nstreams = input_items.size(); - const gr_complex *in = (gr_complex *) input_items[0]; - float *out = (float *) output_items[0]; +for (unsigned int m=0;mcalc_metric(in[i], &(out[i*d_O]), d_TYPE); + for (unsigned int i = 0; i < noutput_items / d_O ; i++){ + d_constellation->calc_metric(&(in[i*d_D]), &(out[i*d_O]), d_TYPE); } +} - consume_each (noutput_items / d_O); + consume_each (d_D * noutput_items / d_O); return noutput_items; } diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.h b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h index a50e92841..eb24ad352 100644 --- a/gr-trellis/src/lib/trellis_constellation_metrics_cf.h +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h @@ -52,6 +52,7 @@ class trellis_constellation_metrics_cf : public gr_block gr_constellation_sptr d_constellation; trellis_metric_type_t d_TYPE; unsigned int d_O; + unsigned int d_D; friend trellis_constellation_metrics_cf_sptr trellis_make_constellation_metrics_cf (gr_constellation_sptr constellation, trellis_metric_type_t TYPE); }; -- cgit From af9c07be1d9594490dc5ecf69552fcf41ed2e100 Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 09:32:02 -0700 Subject: Added utility python sequence comparison scripts for use in testing. --- .../src/python/gnuradio/utils/Makefile.am | 1 + .../src/python/gnuradio/utils/alignment.py | 139 +++++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 gnuradio-core/src/python/gnuradio/utils/alignment.py diff --git a/gnuradio-core/src/python/gnuradio/utils/Makefile.am b/gnuradio-core/src/python/gnuradio/utils/Makefile.am index c0ac613b9..9191d8d5e 100644 --- a/gnuradio-core/src/python/gnuradio/utils/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/utils/Makefile.am @@ -31,6 +31,7 @@ nobase_utilspython_PYTHON = \ __init__.py \ gray_code.py \ mod_codes.py \ + alignment.py \ doxyxml/__init__.py \ doxyxml/base.py \ doxyxml/doxyindex.py \ diff --git a/gnuradio-core/src/python/gnuradio/utils/alignment.py b/gnuradio-core/src/python/gnuradio/utils/alignment.py new file mode 100644 index 000000000..d32365866 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/utils/alignment.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python +# +# Copyright 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. +# +""" +This module contains functions for aligning sequences. + +>>> import random +>>> random.seed(1234) +>>> ran_seq = [random.randint(0,1) for i in range(0, 100)] +>>> offset_seq = [0] * 20 + ran_seq +>>> correct, overlap, offset = align_sequences(ran_seq, offset_seq) +>>> print(correct, overlap, offset) +(1.0, 100, -20) +>>> offset_err_seq = [] +>>> for bit in offset_seq: +... if random.randint(0,4) == 4: +... offset_err_seq.append(random.randint(0,1)) +... else: +... offset_err_seq.append(bit) +>>> correct, overlap, offset = align_sequences(ran_seq, offset_err_seq) +>>> print(overlap, offset) +(100, -20) + +""" + +import random + +# DEFAULT PARAMETERS +# If the fraction of matching bits between two sequences is greater than +# this the sequences are assumed to be aligned. +def_correct_cutoff = 0.9 +# The maximum offset to test during sequence alignment. +def_max_offset = 500 +# The maximum number of samples to take from two sequences to check alignment. +def_num_samples = 1000 + +def compare_sequences(d1, d2, offset, sample_indices=None): + """ + Takes two binary sequences and an offset and returns the number of + matching entries and the number of compared entries. + d1 & d2 -- sequences + offset -- offset of d2 relative to d1 + sample_indices -- a list of indices to use for the comparison + """ + max_index = min(len(d1), len(d2)+offset) + if sample_indices is None: + sample_indices = range(0, max_index) + correct = 0 + total = 0 + for i in sample_indices: + if i >= max_index: + break + if d1[i] == d2[i-offset]: + correct += 1 + total += 1 + return (correct, total) + +def random_sample(size, num_samples=def_num_samples, seed=None): + """ + Returns a set of random integers between 0 and (size-1). + The set contains no more than num_samples integers. + """ + random.seed(seed) + if num_samples > size: + indices = set(range(0, size)) + else: + if num_samples > size/2: + num_samples = num_samples/2 + indices = set([]) + while len(indices) < num_samples: + index = random.randint(0, size-1) + indices.add(index) + indices = list(indices) + indices.sort() + return indices + +def align_sequences(d1, d2, + num_samples=def_num_samples, + max_offset=def_max_offset, + correct_cutoff=def_correct_cutoff, + seed=None, + indices=None): + """ + Takes two sequences and finds the offset and which the two sequences best + match. It returns the fraction correct, the number of entries compared, + the offset. + d1 & d2 -- sequences to compare + num_samples -- the maximum number of entries to compare + max_offset -- the maximum offset between the sequences that is checked + correct_cutoff -- If the fraction of bits correct is greater than this then + the offset is assumed to optimum. + seed -- a random number seed + indices -- an explicit list of the indices used to compare the two sequences + """ + max_overlap = max(len(d1), len(d2)) + if indices is None: + indices = random_sample(max_overlap, num_samples, seed) + max_frac_correct = 0 + best_offset = None + best_compared = None + best_correct = None + pos_range = range(0, min(len(d1), max_offset)) + neg_range = range(-1, -min(len(d2), max_offset), -1) + # Interleave the positive and negative offsets. + int_range = [item for items in zip(pos_range, neg_range) for item in items] + for offset in int_range: + correct, compared = compare_sequences(d1, d2, offset, indices) + frac_correct = 1.0*correct/compared + if frac_correct > max_frac_correct: + max_frac_correct = frac_correct + best_offset = offset + best_compared = compared + best_correct = correct + if frac_correct > correct_cutoff: + break + return max_frac_correct, best_compared, best_offset, indices + +if __name__ == "__main__": + import doctest + doctest.testmod() + -- cgit From aaabfd9202f1008f5902aac73ff811242fbb1f1b Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 09:32:29 -0700 Subject: Added testing module for constellation_receiver. --- .../src/python/gnuradio/gr/qa_constellation.py | 88 +++++++------ .../gnuradio/gr/qa_constellation_receiver.py | 144 +++++++++++++++++++++ 2 files changed, 190 insertions(+), 42 deletions(-) create mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py index 054194789..6ac3d95b6 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py @@ -58,7 +58,7 @@ def threed_constell(): dim = 3 return gr.constellation_calcdist(points, [], rot_sym, dim) -tested_constellations = ( +tested_constellation_info = ( (blks2.psk_constellation, {'m': (2, 4, 8, 16, 32, 64), 'mod_code': tested_mod_codes, }, @@ -76,6 +76,36 @@ tested_constellations = ( (threed_constell, {}, True, None), ) +def tested_constellations(): + """ + Generator to produce (constellation, differential) tuples for testing purposes. + """ + for constructor, poss_args, differential, diff_argname in tested_constellation_info: + if differential: + diff_poss = (True, False) + else: + diff_poss = (False,) + poss_args = [[argname, argvalues, 0] for argname, argvalues in poss_args.items()] + for current_diff in diff_poss: + # Add an index into args to keep track of current position in argvalues + while True: + current_args = dict([(argname, argvalues[argindex]) + for argname, argvalues, argindex in poss_args]) + if diff_argname is not None: + current_args[diff_argname] = current_diff + constellation = constructor(**current_args) + yield (constellation, current_diff) + for this_poss_arg in poss_args: + argname, argvalues, argindex = this_poss_arg + if argindex < len(argvalues) - 1: + this_poss_arg[2] += 1 + break + else: + this_poss_arg[2] = 0 + if sum([argindex for argname, argvalues, argindex in poss_args]) == 0: + break + + class test_constellation (gr_unittest.TestCase): src_length = 256 @@ -88,49 +118,23 @@ class test_constellation (gr_unittest.TestCase): pass def test_hard_decision(self): - for constructor, poss_args, differential, diff_argname in tested_constellations: + for constellation, differential in tested_constellations(): if differential: - diff_poss = (True, False) + rs = constellation.rotational_symmetry() + rotations = [exp(i*2*pi*(0+1j)/rs) for i in range(0, rs)] else: - diff_poss = (False,) - poss_args = [[argname, argvalues, 0] for argname, argvalues in poss_args.items()] - for current_diff in diff_poss: - # Add an index into args to keep track of current position in argvalues - while True: - current_args = dict([(argname, argvalues[argindex]) - for argname, argvalues, argindex in poss_args]) - if diff_argname is not None: - current_args[diff_argname] = current_diff - constellation = constructor(**current_args) - # If we're differentially encoding test for possible rotations - # Testing for every possible rotation seems a bit overkill - # but better safe than sorry. - if current_diff: - rs = constellation.rotational_symmetry() - rotations = [exp(i*2*pi*(0+1j)/rs) for i in range(0, rs)] - else: - rotations = [None] - for rotation in rotations: - src = gr.vector_source_b(self.src_data) - content = mod_demod(constellation, current_diff, rotation) - dst = gr.vector_sink_b() - self.tb = gr.top_block() - self.tb.connect(src, content, dst) - self.tb.run() - data = dst.data() - # Don't worry about cut off data for now. - first = constellation.bits_per_symbol() - self.assertEqual (self.src_data[first:len(data)], data[first:]) - # Move to next arg combination - for this_poss_arg in poss_args: - argname, argvalues, argindex = this_poss_arg - if argindex < len(argvalues) - 1: - this_poss_arg[2] += 1 - break - else: - this_poss_arg[2] = 0 - if sum([argindex for argname, argvalues, argindex in poss_args]) == 0: - break + rotations = [None] + for rotation in rotations: + src = gr.vector_source_b(self.src_data) + content = mod_demod(constellation, differential, rotation) + dst = gr.vector_sink_b() + self.tb = gr.top_block() + self.tb.connect(src, content, dst) + self.tb.run() + data = dst.data() + # Don't worry about cut off data for now. + first = constellation.bits_per_symbol() + self.assertEqual (self.src_data[first:len(data)], data[first:]) class mod_demod(gr.hier_block2): diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py new file mode 100644 index 000000000..8d7719739 --- /dev/null +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# +# Copyright 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. +# + +import random + +from gnuradio import gr, blks2, packet_utils, gr_unittest +from gnuradio.utils import mod_codes, alignment + +from qa_constellation import tested_constellations, twod_constell + +# Set a seed so that if errors turn up they are reproducible. +# 1234 fails +random.seed(1239) + +# TESTING PARAMETERS +# The number of symbols to test with. +# We need this many to let the frequency recovery block converge. +DATA_LENGTH = 200000 +# Test fails if fraction of output that is correct is less than this. +REQ_CORRECT = 0.8 + +# CHANNEL PARAMETERS +NOISE_VOLTAGE = 0.01 +FREQUENCY_OFFSET = 0.01 +TIMING_OFFSET = 1.0 + +# RECEIVER PARAMETERS +# Increased from normal default of 0.01 to speed things up. +FREQ_ALPHA = 0.02 +# Decreased from normal default of 0.1 is required for the constellations +# with smaller point separations. +PHASE_ALPHA = 0.02 + + +class test_constellation_receiver (gr_unittest.TestCase): + + # We ignore the first half of the output data since often it takes + # a while for the receiver to lock on. + ignore_fraction = 0.8 + seed = 1234 + max_data_length = DATA_LENGTH * 6 + max_num_samples = 1000 + + def test_basic(self): + """ + Tests a bunch of different constellations by using generic + modulation, a channel, and generic demodulation. The generic + demodulation uses constellation_receiver which is what + we're really trying to test. + """ + # Assumes not more than 64 points in a constellation + # Generates some random input data to use. + self.src_data = tuple( + [random.randint(0,1) for i in range(0, self.max_data_length)]) + # Generates some random indices to use for comparing input and + # output data (a full comparison is too slow in python). + self.indices = alignment.random_sample( + self.max_data_length, self.max_num_samples, self.seed) + + for constellation, differential in tested_constellations(): + # The constellation_receiver doesn't work for constellations + # of multple dimensions (i.e. multiple complex numbers to a + # single symbol). + # That is not implemented since the receiver has no way of + # knowing where the beginning of a symbol is. + # It also doesn't work for non-differential modulation. + if constellation.dimensionality() != 1 or not differential: + continue + data_length = DATA_LENGTH * constellation.bits_per_symbol() + tb = rec_test_tb(constellation, differential, + src_data=self.src_data[:data_length]) + tb.run() + data = tb.dst.data() + d1 = tb.src_data[:int(len(tb.src_data)*self.ignore_fraction)] + d2 = data[:int(len(data)*self.ignore_fraction)] + correct, overlap, offset, indices = alignment.align_sequences( + d1, d2, indices=self.indices) + print(constellation, constellation.arity(), differential, correct, overlap, offset) + self.assertTrue(correct > REQ_CORRECT) + + def single(self): + constellation = blks2.psk_constellation(64, mod_codes.NO_CODE) + tb = rec_test_tb(constellation, True, DATA_LENGTH) + tb.run() + data = tb.dst.data() + d1 = tb.src_data[:int(len(tb.src_data)*self.ignore_fraction)] + d2 = data[:int(len(data)*self.ignore_fraction)] + seed = random.randint(0, 256) + correct, overlap, offset, indices = alignment.align_sequences(d1, d2, seed=seed) + print(constellation, constellation.arity(), correct, overlap, offset) + + +class rec_test_tb (gr.top_block): + """ + Takes a constellation an runs a generic modulation, channel, + and generic demodulation. + """ + def __init__(self, constellation, differential, + data_length=None, src_data=None): + """ + constellation -- a constellation object + differential -- whether differential encoding is used + data_length -- the number of bits of data to use + src_data -- a list of the bits to use + """ + super(rec_test_tb, self).__init__() + # Transmission Blocks + if src_data is None: + self.src_data = tuple([random.randint(0,1) for i in range(0, data_length)]) + else: + self.src_data = src_data + packer = gr.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST) + src = gr.vector_source_b(self.src_data) + mod = blks2.generic_mod(constellation, differential=differential) + # Channel + channel = gr.channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET) + # Receiver Blocks + demod = blks2.generic_demod(constellation, differential=differential, log=True, + freq_alpha=FREQ_ALPHA, + phase_alpha=PHASE_ALPHA) + self.dst = gr.vector_sink_b() + self.connect(src, packer, mod, channel, demod, self.dst) + +if __name__ == '__main__': + gr_unittest.run(test_constellation_receiver, "test_constellation_receiver.xml") -- cgit From 315f45c234e2fa84fc83641c8404cc5fcdb8412e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 13:40:48 -0700 Subject: Removing docstring generation from this branch. --- Makefile.swig | 12 - Makefile.swig.gen.t | 2 +- gnuradio-core/src/lib/swig/Makefile.am | 3 +- gnuradio-core/src/lib/swig/Makefile.swig.gen | 12 +- gnuradio-core/src/lib/swig/gnuradio.i | 2 - gnuradio-core/src/lib/swig/swig_doc.i | 28346 ------------------- gnuradio-core/src/lib/swig/swig_doc.py | 195 - .../src/python/gnuradio/utils/Makefile.am | 11 +- .../src/python/gnuradio/utils/doxyxml/__init__.py | 62 - .../src/python/gnuradio/utils/doxyxml/base.py | 198 - .../src/python/gnuradio/utils/doxyxml/doxyindex.py | 216 - .../python/gnuradio/utils/doxyxml/example/Doxyfile | 1551 - .../gnuradio/utils/doxyxml/example/aadvark.cc | 29 - .../gnuradio/utils/doxyxml/example/aadvark.h | 23 - .../utils/doxyxml/example/xml/aadvark_8cc.xml | 88 - .../utils/doxyxml/example/xml/aadvark_8h.xml | 72 - .../utils/doxyxml/example/xml/classAadvark.xml | 86 - .../utils/doxyxml/example/xml/combine.xslt | 15 - .../utils/doxyxml/example/xml/compound.xsd | 814 - .../gnuradio/utils/doxyxml/example/xml/index.xml | 17 - .../gnuradio/utils/doxyxml/example/xml/index.xsd | 66 - .../gnuradio/utils/doxyxml/generated/__init__.py | 7 - .../gnuradio/utils/doxyxml/generated/compound.py | 503 - .../utils/doxyxml/generated/compoundsuper.py | 8342 ------ .../gnuradio/utils/doxyxml/generated/index.py | 77 - .../gnuradio/utils/doxyxml/generated/indexsuper.py | 523 - .../src/python/gnuradio/utils/doxyxml/text.py | 36 - gr-atsc/src/lib/Makefile.swig.gen | 2 +- gr-audio-alsa/src/Makefile.swig.gen | 2 +- gr-audio-oss/src/Makefile.swig.gen | 2 +- gr-cvsd-vocoder/src/lib/Makefile.swig.gen | 2 +- gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen | 2 +- gr-msdd6000/src/Makefile.swig.gen | 4 +- gr-noaa/swig/Makefile.swig.gen | 2 +- gr-pager/swig/Makefile.swig.gen | 2 +- gr-qtgui/src/lib/Makefile.swig.gen | 2 +- gr-radio-astronomy/src/lib/Makefile.swig.gen | 2 +- gr-trellis/src/lib/Makefile.swig.gen | 2 +- gr-usrp/src/Makefile.swig.gen | 2 +- gr-usrp2/src/Makefile.swig.gen | 2 +- gr-video-sdl/src/Makefile.swig.gen | 2 +- usrp/host/swig/Makefile.swig.gen | 2 +- 42 files changed, 25 insertions(+), 41315 deletions(-) delete mode 100644 gnuradio-core/src/lib/swig/swig_doc.i delete mode 100644 gnuradio-core/src/lib/swig/swig_doc.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py delete mode 100644 gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py diff --git a/Makefile.swig b/Makefile.swig index e659aea5c..87e918c35 100644 --- a/Makefile.swig +++ b/Makefile.swig @@ -98,18 +98,6 @@ STD_SWIG_CXX_FLAGS = @swig_CXXFLAGS@ swig_built_sources = -## Create the swig interface file swig_doc.i containing docstring information. - -$(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i: $(top_srcdir)/docs/doxygen/html/index.html - $(PYTHON) $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.py $(top_srcdir)/docs/doxygen/xml/ $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i - -## Make sure the doxygen docs are generated - -$(top_srcdir)/docs/doxygen/html/index.html: - $(MKDIR_P) $(top_srcdir)/docs/doxygen/html - $(MKDIR_P) $(top_srcdir)/docs/doxygen/xml - cd $(top_srcdir)/docs/doxygen; @DOXYGEN@ - # swig_all_built_sources contains swig_built_sources plus the .cc and .h files. # It contains the files to remove from the distribution and the files to # remove for make clean. diff --git a/Makefile.swig.gen.t b/Makefile.swig.gen.t index a3c1e289d..0410413ed 100644 --- a/Makefile.swig.gen.t +++ b/Makefile.swig.gen.t @@ -105,7 +105,7 @@ _@NAME@_la_CXXFLAGS = \ $(@NAME@_la_swig_cxxflags) python/@NAME@.cc: @NAME@.py -@NAME@.py: @NAME@.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +@NAME@.py: @NAME@.i # Include the python dependencies for this file -include python/@NAME@.d diff --git a/gnuradio-core/src/lib/swig/Makefile.am b/gnuradio-core/src/lib/swig/Makefile.am index 8eaceb6fa..d304a2123 100644 --- a/gnuradio-core/src/lib/swig/Makefile.am +++ b/gnuradio-core/src/lib/swig/Makefile.am @@ -45,8 +45,7 @@ TOP_SWIG_IFILES = \ swiginclude_HEADERS = \ gnuradio.i \ gr_swig_block_magic.i \ - gr_shared_ptr.i \ - swig_doc.i + gr_shared_ptr.i # SWIG headers that get installed in ${prefix}/include/gnuradio/swig/... nobase_swiginclude_HEADERS = \ diff --git a/gnuradio-core/src/lib/swig/Makefile.swig.gen b/gnuradio-core/src/lib/swig/Makefile.swig.gen index 349ad17d8..cede68817 100644 --- a/gnuradio-core/src/lib/swig/Makefile.swig.gen +++ b/gnuradio-core/src/lib/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _gnuradio_core_runtime_la_CXXFLAGS = \ $(gnuradio_core_runtime_la_swig_cxxflags) python/gnuradio_core_runtime.cc: gnuradio_core_runtime.py -gnuradio_core_runtime.py: gnuradio_core_runtime.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_runtime.py: gnuradio_core_runtime.i # Include the python dependencies for this file -include python/gnuradio_core_runtime.d @@ -250,7 +250,7 @@ _gnuradio_core_general_la_CXXFLAGS = \ $(gnuradio_core_general_la_swig_cxxflags) python/gnuradio_core_general.cc: gnuradio_core_general.py -gnuradio_core_general.py: gnuradio_core_general.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_general.py: gnuradio_core_general.i # Include the python dependencies for this file -include python/gnuradio_core_general.d @@ -395,7 +395,7 @@ _gnuradio_core_gengen_la_CXXFLAGS = \ $(gnuradio_core_gengen_la_swig_cxxflags) python/gnuradio_core_gengen.cc: gnuradio_core_gengen.py -gnuradio_core_gengen.py: gnuradio_core_gengen.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_gengen.py: gnuradio_core_gengen.i # Include the python dependencies for this file -include python/gnuradio_core_gengen.d @@ -540,7 +540,7 @@ _gnuradio_core_filter_la_CXXFLAGS = \ $(gnuradio_core_filter_la_swig_cxxflags) python/gnuradio_core_filter.cc: gnuradio_core_filter.py -gnuradio_core_filter.py: gnuradio_core_filter.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_filter.py: gnuradio_core_filter.i # Include the python dependencies for this file -include python/gnuradio_core_filter.d @@ -685,7 +685,7 @@ _gnuradio_core_io_la_CXXFLAGS = \ $(gnuradio_core_io_la_swig_cxxflags) python/gnuradio_core_io.cc: gnuradio_core_io.py -gnuradio_core_io.py: gnuradio_core_io.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_io.py: gnuradio_core_io.i # Include the python dependencies for this file -include python/gnuradio_core_io.d @@ -830,7 +830,7 @@ _gnuradio_core_hier_la_CXXFLAGS = \ $(gnuradio_core_hier_la_swig_cxxflags) python/gnuradio_core_hier.cc: gnuradio_core_hier.py -gnuradio_core_hier.py: gnuradio_core_hier.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gnuradio_core_hier.py: gnuradio_core_hier.i # Include the python dependencies for this file -include python/gnuradio_core_hier.d diff --git a/gnuradio-core/src/lib/swig/gnuradio.i b/gnuradio-core/src/lib/swig/gnuradio.i index c2e18c52a..ba8357c40 100644 --- a/gnuradio-core/src/lib/swig/gnuradio.i +++ b/gnuradio-core/src/lib/swig/gnuradio.i @@ -35,8 +35,6 @@ #include %} -%include - // %feature("autodoc","1"); #ifdef SWIGGUILE diff --git a/gnuradio-core/src/lib/swig/swig_doc.i b/gnuradio-core/src/lib/swig/swig_doc.i deleted file mode 100644 index ed8242766..000000000 --- a/gnuradio-core/src/lib/swig/swig_doc.i +++ /dev/null @@ -1,28346 +0,0 @@ -%feature("docstring") gr_py_msg_queue__insert_tail "Insert message at tail of queue. - -Block if queue if full. - -Params: (msg)" - -%feature("docstring") gr_py_msg_queue__delete_head "Delete message from head of queue and return it. Block if no message is available. - -Params: (NONE)" - -%feature("docstring") atsc_bit_timing_loop "ATSC BitTimingLoop3 - -This class accepts a single real input and produces two outputs, the raw symbol (float) and the tag (atsc_syminfo)." - -%feature("docstring") atsc_bit_timing_loop::atsc_bit_timing_loop " - -Params: (NONE)" - -%feature("docstring") atsc_bit_timing_loop::work " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_bit_timing_loop::reset " - -Params: (NONE)" - -%feature("docstring") atsc_bit_timing_loop::~atsc_bit_timing_loop " - -Params: (NONE)" - -%feature("docstring") atsc_bit_timing_loop::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") atsc_bit_timing_loop::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") atsc_bit_timing_loop::set_mu " - -Params: (a_mu)" - -%feature("docstring") atsc_bit_timing_loop::set_no_update " - -Params: (a_no_update)" - -%feature("docstring") atsc_bit_timing_loop::set_loop_filter_tap " - -Params: (tap)" - -%feature("docstring") atsc_bit_timing_loop::set_timing_rate " - -Params: (rate)" - -%feature("docstring") atsc_make_bit_timing_loop "Creates a bit_timing_loop block. - -ATSC BitTimingLoop3 - -This class accepts a single real input and produces two outputs, the raw symbol (float) and the tag (atsc_syminfo). - -Params: (NONE)" - -%feature("docstring") atsc_deinterleaver "Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded) - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded." - -%feature("docstring") atsc_deinterleaver::atsc_deinterleaver " - -Params: (NONE)" - -%feature("docstring") atsc_deinterleaver::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_deinterleaver::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_deinterleaver "Creates a deinterleaver block. - -Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded) - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded. - -Params: (NONE)" - -%feature("docstring") atsc_depad "depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char - -input: atsc_mpeg_packet; output: unsigned char" - -%feature("docstring") atsc_depad::atsc_depad " - -Params: (NONE)" - -%feature("docstring") atsc_depad::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_depad::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_depad "Creates a depad block. - -depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char - -input: atsc_mpeg_packet; output: unsigned char - -Params: (NONE)" - -%feature("docstring") atsc_derandomizer "\"dewhiten\" incoming mpeg transport stream packets - -input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet;" - -%feature("docstring") atsc_derandomizer::atsc_derandomizer " - -Params: (NONE)" - -%feature("docstring") atsc_derandomizer::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_derandomizer::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_derandomizer "Creates a derandomizer block. - -\"dewhiten\" incoming mpeg transport stream packets - -input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet; - -Params: (NONE)" - -%feature("docstring") atsc_ds_to_softds "Debug glue routine (atsc_data_segment --> atsc_soft_data_segment) - -input: atsc_data_segment; output: atsc_soft_data_segment." - -%feature("docstring") atsc_ds_to_softds::atsc_ds_to_softds " - -Params: (NONE)" - -%feature("docstring") atsc_ds_to_softds::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_ds_to_softds::map_to_soft_symbols " - -Params: (out, in)" - -%feature("docstring") atsc_ds_to_softds::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_ds_to_softds "Creates a ds_to_softds block. - -Debug glue routine (atsc_data_segment --> atsc_soft_data_segment) - -input: atsc_data_segment; output: atsc_soft_data_segment. - -Params: (NONE)" - -%feature("docstring") atsc_equalizer "ATSC equalizer (float,syminfo --> float,syminfo) - -first inputs are data samples, second inputs are tags. first outputs are equalized data samples, second outputs are tags." - -%feature("docstring") atsc_equalizer::atsc_equalizer " - -Params: (NONE)" - -%feature("docstring") atsc_equalizer::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") atsc_equalizer::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_equalizer::reset " - -Params: (NONE)" - -%feature("docstring") atsc_equalizer::~atsc_equalizer " - -Params: (NONE)" - -%feature("docstring") atsc_make_equalizer "Creates a equalizer block. - -ATSC equalizer (float,syminfo --> float,syminfo) - -first inputs are data samples, second inputs are tags. first outputs are equalized data samples, second outputs are tags. - -Params: (NONE)" - -%feature("docstring") atsc_field_sync_demux "ATSC Field Sync Demux. - -This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets" - -%feature("docstring") atsc_field_sync_demux::atsc_field_sync_demux " - -Params: (NONE)" - -%feature("docstring") atsc_field_sync_demux::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") atsc_field_sync_demux::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") atsc_field_sync_demux::work " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_field_sync_demux::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_field_sync_demux "Creates a field_sync_demux block. - -ATSC Field Sync Demux. - -This class accepts 1 stream of floats (data), and 1 stream of tags (syminfo). * It outputs one stream of atsc_soft_data_segment packets - -Params: (NONE)" - -%feature("docstring") atsc_field_sync_mux "Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment) - -input: atsc_data_segment; output: atsc_data_segment." - -%feature("docstring") atsc_field_sync_mux::atsc_field_sync_mux " - -Params: (NONE)" - -%feature("docstring") atsc_field_sync_mux::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") atsc_field_sync_mux::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_field_sync_mux::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_field_sync_mux "Creates a field_sync_mux block. - -Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment) - -input: atsc_data_segment; output: atsc_data_segment. - -Params: (NONE)" - -%feature("docstring") atsc_fpll "ATSC FPLL (2nd Version) - -A/D --> GrFIRfilterFFF ----> GrAtscFPLL ----> - -We use GrFIRfilterFFF to bandpass filter the signal of interest. - -This class accepts a single real input and produces a single real output" - -%feature("docstring") atsc_fpll::atsc_fpll " - -Params: (NONE)" - -%feature("docstring") atsc_fpll::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_fpll::reset " - -Params: (NONE)" - -%feature("docstring") atsc_fpll::initialize " - -Params: (NONE)" - -%feature("docstring") atsc_make_fpll "Creates a fpll block. - -ATSC FPLL (2nd Version) - -A/D --> GrFIRfilterFFF ----> GrAtscFPLL ----> - -We use GrFIRfilterFFF to bandpass filter the signal of interest. - -This class accepts a single real input and produces a single real output - -Params: (NONE)" - -%feature("docstring") atsc_fs_checker "ATSC field sync checker (float,syminfo --> float,syminfo) - -first output is delayed version of input. second output is set of tags, one-for-one with first output." - -%feature("docstring") atsc_fs_checker::atsc_fs_checker " - -Params: (NONE)" - -%feature("docstring") atsc_fs_checker::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_fs_checker::reset " - -Params: (NONE)" - -%feature("docstring") atsc_fs_checker::~atsc_fs_checker " - -Params: (NONE)" - -%feature("docstring") atsc_make_fs_checker "Creates a fs_checker block. - -ATSC field sync checker (float,syminfo --> float,syminfo) - -first output is delayed version of input. second output is set of tags, one-for-one with first output. - -Params: (NONE)" - -%feature("docstring") atsc_interleaver "Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)* - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded." - -%feature("docstring") atsc_interleaver::atsc_interleaver " - -Params: (NONE)" - -%feature("docstring") atsc_interleaver::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_interleaver::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_interleaver "Creates a interleaver block. - -Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)* - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded. - -Params: (NONE)" - -%feature("docstring") atsc_pad "pad mpeg ts packets from 188 byte char to to 256 byte atsc_mpeg_packet - -input: unsigned char; output: atsc_mpeg_packet" - -%feature("docstring") atsc_pad::atsc_pad " - -Params: (NONE)" - -%feature("docstring") atsc_pad::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") atsc_pad::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_pad::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_pad "Creates a pad block. - -pad mpeg ts packets from 188 byte char to to 256 byte atsc_mpeg_packet - -input: unsigned char; output: atsc_mpeg_packet - -Params: (NONE)" - -%feature("docstring") atsc_randomizer "\"Whiten\" incoming mpeg transport stream packets - -input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync" - -%feature("docstring") atsc_randomizer::atsc_randomizer " - -Params: (NONE)" - -%feature("docstring") atsc_randomizer::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_randomizer::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_randomizer "Creates a randomizer block. - -\"Whiten\" incoming mpeg transport stream packets - -input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync - -Params: (NONE)" - -%feature("docstring") atsc_rs_decoder "Reed-Solomon decoder for ATSC - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync." - -%feature("docstring") atsc_rs_decoder::atsc_rs_decoder " - -Params: (NONE)" - -%feature("docstring") atsc_rs_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_rs_decoder::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_rs_decoder "Creates a rs_decoder block. - -Reed-Solomon decoder for ATSC - -input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync. - -Params: (NONE)" - -%feature("docstring") atsc_rs_encoder "Reed-Solomon encoder for ATSC - -input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded." - -%feature("docstring") atsc_rs_encoder::atsc_rs_encoder " - -Params: (NONE)" - -%feature("docstring") atsc_rs_encoder::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_rs_encoder::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_rs_encoder "Creates a rs_encoder block. - -Reed-Solomon encoder for ATSC - -input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded. - -Params: (NONE)" - -%feature("docstring") atsc_trellis_encoder "ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment) - -input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment." - -%feature("docstring") atsc_trellis_encoder::atsc_trellis_encoder " - -Params: (NONE)" - -%feature("docstring") atsc_trellis_encoder::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_trellis_encoder::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_trellis_encoder "Creates a trellis_encoder block. - -ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment) - -input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment. - -Params: (NONE)" - -%feature("docstring") atsc_viterbi_decoder "ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded) - -input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded." - -%feature("docstring") atsc_viterbi_decoder::atsc_viterbi_decoder " - -Params: (NONE)" - -%feature("docstring") atsc_viterbi_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") atsc_viterbi_decoder::reset " - -Params: (NONE)" - -%feature("docstring") atsc_make_viterbi_decoder "Creates a viterbi_decoder block. - -ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded) - -input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded. - -Params: (NONE)" - -%feature("docstring") comedi_sink_s "sink using COMEDI - -The sink has one input stream of signed short integers. - -Input samples must be in the range [-32768,32767]." - -%feature("docstring") comedi_sink_s::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") comedi_sink_s::bail " - -Params: (msg, err)" - -%feature("docstring") comedi_sink_s::comedi_sink_s " - -Params: (sampling_freq, device_name)" - -%feature("docstring") comedi_sink_s::~comedi_sink_s " - -Params: (NONE)" - -%feature("docstring") comedi_sink_s::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") comedi_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") comedi_make_sink_s "Creates a sink_s block. - -sink using COMEDI - -The sink has one input stream of signed short integers. - -Input samples must be in the range [-32768,32767]. - -Params: (sampling_freq, device_name)" - -%feature("docstring") comedi_source_s "source using COMEDI - -The source has one to many input stream of signed short integers. - -Output samples will be in the range [-32768,32767]." - -%feature("docstring") comedi_source_s::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") comedi_source_s::bail " - -Params: (msg, err)" - -%feature("docstring") comedi_source_s::comedi_source_s " - -Params: (sampling_freq, device_name)" - -%feature("docstring") comedi_source_s::~comedi_source_s " - -Params: (NONE)" - -%feature("docstring") comedi_source_s::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") comedi_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") comedi_make_source_s "Creates a source_s block. - -source using COMEDI - -The source has one to many input stream of signed short integers. - -Output samples will be in the range [-32768,32767]. - -Params: (sampling_freq, device_name)" - -%feature("docstring") gcell_fft_vcc "Compute forward or reverse FFT. complex vector in / complex vector out. - -Concrete class that uses gcell to offload FFT to SPEs." - -%feature("docstring") gcell_fft_vcc::gcell_fft_vcc " - -Params: (fft_size, forward, window, shift)" - -%feature("docstring") gcell_fft_vcc::~gcell_fft_vcc " - -Params: (NONE)" - -%feature("docstring") gcell_fft_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gcell_make_fft_vcc "Creates a fft_vcc block. - -Compute forward or reverse FFT. complex vector in / complex vector out. - -Concrete class that uses gcell to offload FFT to SPEs. - -Params: (fft_size, forward, window, shift)" - -%feature("docstring") gr_add_cc "output = sum (input_0, input_1, ...) - -Add across all input streams." - -%feature("docstring") gr_add_cc::gr_add_cc " - -Params: (vlen)" - -%feature("docstring") gr_add_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_cc "Creates a add_cc block. - -output = sum (input_0, input_1, ...) - -Add across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_add_const_cc "output = input + constant" - -%feature("docstring") gr_add_const_cc::gr_add_const_cc " - -Params: (k)" - -%feature("docstring") gr_add_const_cc::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_cc::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_cc "Creates a add_const_cc block. - -output = input + constant - -Params: (k)" - -%feature("docstring") gr_add_const_ff "output = input + constant" - -%feature("docstring") gr_add_const_ff::gr_add_const_ff " - -Params: (k)" - -%feature("docstring") gr_add_const_ff::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_ff::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_ff "Creates a add_const_ff block. - -output = input + constant - -Params: (k)" - -%feature("docstring") gr_add_const_ii "output = input + constant" - -%feature("docstring") gr_add_const_ii::gr_add_const_ii " - -Params: (k)" - -%feature("docstring") gr_add_const_ii::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_ii::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_ii "Creates a add_const_ii block. - -output = input + constant - -Params: (k)" - -%feature("docstring") gr_add_const_sf "output = input + constant" - -%feature("docstring") gr_add_const_sf::gr_add_const_sf " - -Params: (k)" - -%feature("docstring") gr_add_const_sf::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_sf::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_sf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_sf "Creates a add_const_sf block. - -output = input + constant - -Params: (k)" - -%feature("docstring") gr_add_const_ss "output = input + constant" - -%feature("docstring") gr_add_const_ss::gr_add_const_ss " - -Params: (k)" - -%feature("docstring") gr_add_const_ss::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_ss::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_ss "Creates a add_const_ss block. - -output = input + constant - -Params: (k)" - -%feature("docstring") gr_add_const_vcc "output vector = input vector + constant vector" - -%feature("docstring") gr_add_const_vcc::gr_add_const_vcc " - -Params: (k)" - -%feature("docstring") gr_add_const_vcc::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_vcc::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_vcc "Creates a add_const_vcc block. - -output vector = input vector + constant vector - -Params: (k)" - -%feature("docstring") gr_add_const_vff "output vector = input vector + constant vector" - -%feature("docstring") gr_add_const_vff::gr_add_const_vff " - -Params: (k)" - -%feature("docstring") gr_add_const_vff::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_vff::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_vff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_vff "Creates a add_const_vff block. - -output vector = input vector + constant vector - -Params: (k)" - -%feature("docstring") gr_add_const_vii "output vector = input vector + constant vector" - -%feature("docstring") gr_add_const_vii::gr_add_const_vii " - -Params: (k)" - -%feature("docstring") gr_add_const_vii::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_vii::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_vii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_vii "Creates a add_const_vii block. - -output vector = input vector + constant vector - -Params: (k)" - -%feature("docstring") gr_add_const_vss "output vector = input vector + constant vector" - -%feature("docstring") gr_add_const_vss::gr_add_const_vss " - -Params: (k)" - -%feature("docstring") gr_add_const_vss::k " - -Params: (NONE)" - -%feature("docstring") gr_add_const_vss::set_k " - -Params: (k)" - -%feature("docstring") gr_add_const_vss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_const_vss "Creates a add_const_vss block. - -output vector = input vector + constant vector - -Params: (k)" - -%feature("docstring") gr_add_ff "output = sum (input_0, input_1, ...) - -Add across all input streams." - -%feature("docstring") gr_add_ff::gr_add_ff " - -Params: (vlen)" - -%feature("docstring") gr_add_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_ff "Creates a add_ff block. - -output = sum (input_0, input_1, ...) - -Add across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_add_ii "output = sum (input_0, input_1, ...) - -Add across all input streams." - -%feature("docstring") gr_add_ii::gr_add_ii " - -Params: (vlen)" - -%feature("docstring") gr_add_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_ii "Creates a add_ii block. - -output = sum (input_0, input_1, ...) - -Add across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_add_ss "output = sum (input_0, input_1, ...) - -Add across all input streams." - -%feature("docstring") gr_add_ss::gr_add_ss " - -Params: (vlen)" - -%feature("docstring") gr_add_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_add_ss "Creates a add_ss block. - -output = sum (input_0, input_1, ...) - -Add across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_additive_scrambler_bb "Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. - - -The scrambler works by XORing the incoming bit stream by the output of the LFSR. Optionally, after 'count' bits have been processed, the shift register is reset to the seed value. This allows processing fixed length vectors of samples." - -%feature("docstring") gr_additive_scrambler_bb::gr_additive_scrambler_bb " - -Params: (mask, seed, len, count)" - -%feature("docstring") gr_additive_scrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_additive_scrambler_bb "Creates a additive_scrambler_bb block. - -Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. - - -The scrambler works by XORing the incoming bit stream by the output of the LFSR. Optionally, after 'count' bits have been processed, the shift register is reset to the seed value. This allows processing fixed length vectors of samples. - -Params: (mask, seed, len, count)" - -%feature("docstring") gr_agc2_cc "high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used." - -%feature("docstring") gr_agc2_cc::gr_agc2_cc " - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc2_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_agc2_cc "Creates a agc2_cc block. - -high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used. - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc2_ff "high performance Automatic Gain Control class - -Power is approximated by absolute value" - -%feature("docstring") gr_agc2_ff::gr_agc2_ff " - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc2_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_agc2_ff "Creates a agc2_ff block. - -high performance Automatic Gain Control class - -Power is approximated by absolute value - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc_cc "high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used." - -%feature("docstring") gr_agc_cc::gr_agc_cc " - -Params: (rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_agc_cc "Creates a agc_cc block. - -high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used. - -Params: (rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc_ff "high performance Automatic Gain Control class - -Power is approximated by absolute value" - -%feature("docstring") gr_agc_ff::gr_agc_ff " - -Params: (rate, reference, gain, max_gain)" - -%feature("docstring") gr_agc_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_agc_ff "Creates a agc_ff block. - -high performance Automatic Gain Control class - -Power is approximated by absolute value - -Params: (rate, reference, gain, max_gain)" - - - -%feature("docstring") gr_align_on_samplenumbers_ss::gr_align_on_samplenumbers_ss " - -Params: (nchan, align_interval)" - -%feature("docstring") gr_align_on_samplenumbers_ss::~gr_align_on_samplenumbers_ss " - -Params: (NONE)" - -%feature("docstring") gr_align_on_samplenumbers_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_align_on_samplenumbers_ss::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_align_on_samplenumbers_ss::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_align_on_samplenumbers_ss "Creates a align_on_samplenumbers_ss block. - - - -Params: (nchan, align_interval)" - -%feature("docstring") gr_and_bb "output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams." - -%feature("docstring") gr_and_bb::gr_and_bb " - -Params: (NONE)" - -%feature("docstring") gr_and_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_bb "Creates a and_bb block. - -output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_and_const_bb "output_N = input_N & value - -bitwise boolean and of const to the data stream." - -%feature("docstring") gr_and_const_bb::gr_and_const_bb " - -Params: (k)" - -%feature("docstring") gr_and_const_bb::k " - -Params: (NONE)" - -%feature("docstring") gr_and_const_bb::set_k " - -Params: (k)" - -%feature("docstring") gr_and_const_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_const_bb "Creates a and_const_bb block. - -output_N = input_N & value - -bitwise boolean and of const to the data stream. - -Params: (k)" - -%feature("docstring") gr_and_const_ii "output_N = input_N & value - -bitwise boolean and of const to the data stream." - -%feature("docstring") gr_and_const_ii::gr_and_const_ii " - -Params: (k)" - -%feature("docstring") gr_and_const_ii::k " - -Params: (NONE)" - -%feature("docstring") gr_and_const_ii::set_k " - -Params: (k)" - -%feature("docstring") gr_and_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_const_ii "Creates a and_const_ii block. - -output_N = input_N & value - -bitwise boolean and of const to the data stream. - -Params: (k)" - -%feature("docstring") gr_and_const_ss "output_N = input_N & value - -bitwise boolean and of const to the data stream." - -%feature("docstring") gr_and_const_ss::gr_and_const_ss " - -Params: (k)" - -%feature("docstring") gr_and_const_ss::k " - -Params: (NONE)" - -%feature("docstring") gr_and_const_ss::set_k " - -Params: (k)" - -%feature("docstring") gr_and_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_const_ss "Creates a and_const_ss block. - -output_N = input_N & value - -bitwise boolean and of const to the data stream. - -Params: (k)" - -%feature("docstring") gr_and_ii "output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams." - -%feature("docstring") gr_and_ii::gr_and_ii " - -Params: (NONE)" - -%feature("docstring") gr_and_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_ii "Creates a and_ii block. - -output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_and_ss "output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams." - -%feature("docstring") gr_and_ss::gr_and_ss " - -Params: (NONE)" - -%feature("docstring") gr_and_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_and_ss "Creates a and_ss block. - -output = input_0 & input_1 & , ... & input_N) - -bitwise boolean and across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_annotator_1to1 "1-to-1 stream annotator testing block. FOR TESTING PURPOSES ONLY. - -This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the 1-to-1 policy. - -It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. - -This block is only meant for testing and showing how to use the tags." - -%feature("docstring") gr_annotator_1to1::~gr_annotator_1to1 " - -Params: (NONE)" - -%feature("docstring") gr_annotator_1to1::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_annotator_1to1::data " - -Params: (NONE)" - -%feature("docstring") gr_annotator_1to1::gr_annotator_1to1 " - -Params: (when, sizeof_stream_item)" - -%feature("docstring") gr_make_annotator_1to1 "Creates a annotator_1to1 block. - -1-to-1 stream annotator testing block. FOR TESTING PURPOSES ONLY. - -This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the 1-to-1 policy. - -It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. - -This block is only meant for testing and showing how to use the tags. - -Params: (when, sizeof_stream_item)" - -%feature("docstring") gr_annotator_alltoall "All-to-all stream annotator testing block. FOR TESTING PURPOSES ONLY. - -This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the all-to-all policy. - -It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. - -This block is only meant for testing and showing how to use the tags." - -%feature("docstring") gr_annotator_alltoall::~gr_annotator_alltoall " - -Params: (NONE)" - -%feature("docstring") gr_annotator_alltoall::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_annotator_alltoall::data " - -Params: (NONE)" - -%feature("docstring") gr_annotator_alltoall::gr_annotator_alltoall " - -Params: (when, sizeof_stream_item)" - -%feature("docstring") gr_make_annotator_alltoall "Creates a annotator_alltoall block. - -All-to-all stream annotator testing block. FOR TESTING PURPOSES ONLY. - -This block creates tags to be sent downstream every 10,000 items it sees. The tags contain the name and ID of the instantiated block, use \"seq\" as a key, and have a counter that increments by 1 for every tag produced that is used as the tag's value. The tags are propagated using the all-to-all policy. - -It also stores a copy of all tags it sees flow past it. These tags can be recalled externally with the data() member. - -This block is only meant for testing and showing how to use the tags. - -Params: (when, sizeof_stream_item)" - - - -%feature("docstring") gr_argmax_fs::gr_argmax_fs " - -Params: (vlen)" - -%feature("docstring") gr_argmax_fs::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_argmax_fs "Creates a argmax_fs block. - - - -Params: (vlen)" - - - -%feature("docstring") gr_argmax_is::gr_argmax_is " - -Params: (vlen)" - -%feature("docstring") gr_argmax_is::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_argmax_is "Creates a argmax_is block. - - - -Params: (vlen)" - - - -%feature("docstring") gr_argmax_ss::gr_argmax_ss " - -Params: (vlen)" - -%feature("docstring") gr_argmax_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_argmax_ss "Creates a argmax_ss block. - - - -Params: (vlen)" - -%feature("docstring") gr_bin_statistics_f "control scanning and record frequency domain statistics" - -%feature("docstring") gr_bin_statistics_f::gr_bin_statistics_f " - -Params: (vlen, msgq, tune, tune_delay, dwell_delay)" - -%feature("docstring") gr_bin_statistics_f::enter_init " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::enter_tune_delay " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::enter_dwell_delay " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::leave_dwell_delay " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::vlen " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::center_freq " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::msgq " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::reset_stats " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::accrue_stats " - -Params: (input)" - -%feature("docstring") gr_bin_statistics_f::send_stats " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::~gr_bin_statistics_f " - -Params: (NONE)" - -%feature("docstring") gr_bin_statistics_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_bin_statistics_f "Creates a bin_statistics_f block. - -control scanning and record frequency domain statistics - -Params: (vlen, msgq, tune, tune_delay, dwell_delay)" - -%feature("docstring") gr_binary_slicer_fb "slice float binary symbol outputting 1 bit output - -x < 0 --> 0 x >= 0 --> 1" - -%feature("docstring") gr_binary_slicer_fb::gr_binary_slicer_fb " - -Params: (NONE)" - -%feature("docstring") gr_binary_slicer_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_binary_slicer_fb "Creates a binary_slicer_fb block. - -slice float binary symbol outputting 1 bit output - -x < 0 --> 0 x >= 0 --> 1 - -Params: (NONE)" - -%feature("docstring") gr_block_detail "Implementation details to support the signal processing abstraction - -This class contains implementation detail that should be \"out of sight\" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything." - -%feature("docstring") gr_block_detail::~gr_block_detail " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::ninputs " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::noutputs " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::sink_p " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::source_p " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::set_done " - -Params: (done)" - -%feature("docstring") gr_block_detail::done " - -Params: (NONE)" - -%feature("docstring") gr_block_detail::set_input " - -Params: (which, reader)" - -%feature("docstring") gr_block_detail::input " - -Params: (which)" - -%feature("docstring") gr_block_detail::set_output " - -Params: (which, buffer)" - -%feature("docstring") gr_block_detail::output " - -Params: (which)" - -%feature("docstring") gr_block_detail::consume "Tell the scheduler of input stream were consumed. - -Params: (which_input, how_many_items)" - -%feature("docstring") gr_block_detail::consume_each "Tell the scheduler were consumed on each input stream. - -Params: (how_many_items)" - -%feature("docstring") gr_block_detail::produce "Tell the scheduler were produced on output stream . - -Params: (which_output, how_many_items)" - -%feature("docstring") gr_block_detail::produce_each "Tell the scheduler were produced on each output stream. - -Params: (how_many_items)" - -%feature("docstring") gr_block_detail::_post "Accept msg, place in queue, arrange for thread to be awakened if it's not already. - -Params: (msg)" - -%feature("docstring") gr_block_detail::nitems_read " - -Params: (which_input)" - -%feature("docstring") gr_block_detail::nitems_written " - -Params: (which_output)" - -%feature("docstring") gr_block_detail::add_item_tag "Adds a new tag to the given output stream. - -This takes the input parameters and builds a PMT tuple from it. It then calls gr_buffer::add_item_tag(pmt::pmt_t t), which appends the tag onto its deque. - -Params: (which_output, abs_offset, key, value, srcid)" - -%feature("docstring") gr_block_detail::get_tags_in_range "Given a [start,end), returns a vector of all tags in the range. - -Pass-through function to gr_buffer_reader to get a vector of tags in given range. Range of counts is from start to end-1. - -Tags are tuples of: (item count, source id, key, value) - -Params: (v, which_input, abs_start, abs_end)" - -%feature("docstring") gr_block_detail::gr_block_detail " - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_block_detail "Creates a block_detail block. - -Implementation details to support the signal processing abstraction - -This class contains implementation detail that should be \"out of sight\" of almost all users of GNU Radio. This decoupling also means that we can make changes to the guts without having to recompile everything. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_buffer "Single writer, multiple reader fifo." - -%feature("docstring") gr_buffer::~gr_buffer " - -Params: (NONE)" - -%feature("docstring") gr_buffer::space_available "return number of items worth of space available for writing - -Params: (NONE)" - -%feature("docstring") gr_buffer::bufsize "return size of this buffer in items - -Params: (NONE)" - -%feature("docstring") gr_buffer::write_pointer "return pointer to write buffer. - -The return value points at space that can hold at least space_available() items. - -Params: (NONE)" - -%feature("docstring") gr_buffer::update_write_pointer "tell buffer that we wrote into it - -Params: (nitems)" - -%feature("docstring") gr_buffer::set_done " - -Params: (done)" - -%feature("docstring") gr_buffer::done " - -Params: (NONE)" - -%feature("docstring") gr_buffer::link "Return the block that writes to this buffer. - -Params: (NONE)" - -%feature("docstring") gr_buffer::nreaders " - -Params: (NONE)" - -%feature("docstring") gr_buffer::reader " - -Params: (index)" - -%feature("docstring") gr_buffer::mutex " - -Params: (NONE)" - -%feature("docstring") gr_buffer::nitems_written " - -Params: (NONE)" - -%feature("docstring") gr_buffer::add_item_tag "Adds a new tag to the buffer. - -Params: (tag)" - -%feature("docstring") gr_buffer::prune_tags "Removes all tags before from buffer. - -Params: (max_time)" - -%feature("docstring") gr_buffer::get_tags_begin " - -Params: (NONE)" - -%feature("docstring") gr_buffer::get_tags_end " - -Params: (NONE)" - -%feature("docstring") gr_buffer::index_add " - -Params: (a, b)" - -%feature("docstring") gr_buffer::index_sub " - -Params: (a, b)" - -%feature("docstring") gr_buffer::allocate_buffer " - -Params: (nitems, sizeof_item)" - -%feature("docstring") gr_buffer::gr_buffer "constructor is private. Use gr_make_buffer to create instances. - -Allocate a buffer that holds at least of size . - - -The total size of the buffer will be rounded up to a system dependent boundary. This is typically the system page size, but under MS windows is 64KB. - -Params: (nitems, sizeof_item, link)" - -%feature("docstring") gr_buffer::drop_reader "disassociate from this buffer - -Params: (reader)" - -%feature("docstring") gr_make_buffer "Creates a buffer block. - -Single writer, multiple reader fifo. - -Params: (nitems, sizeof_item, link)" - -%feature("docstring") gr_burst_tagger "output[i] = input[i]" - -%feature("docstring") gr_burst_tagger::gr_burst_tagger " - -Params: (itemsize)" - -%feature("docstring") gr_burst_tagger::~gr_burst_tagger " - -Params: (NONE)" - -%feature("docstring") gr_burst_tagger::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_burst_tagger "Creates a burst_tagger block. - -output[i] = input[i] - -Params: (itemsize)" - -%feature("docstring") gr_bytes_to_syms "Convert stream of bytes to stream of +/- 1 symbols - -input: stream of bytes; output: stream of float. - -This block is deprecated. - -The combination of gr_packed_to_unpacked_bb followed by gr_chunks_to_symbols_bf or gr_chunks_to_symbols_bc handles the general case of mapping from a stream of bytes into arbitrary float or complex symbols." - -%feature("docstring") gr_bytes_to_syms::gr_bytes_to_syms " - -Params: (NONE)" - -%feature("docstring") gr_bytes_to_syms::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_bytes_to_syms "Creates a bytes_to_syms block. - -Convert stream of bytes to stream of +/- 1 symbols - -input: stream of bytes; output: stream of float. - -This block is deprecated. - -The combination of gr_packed_to_unpacked_bb followed by gr_chunks_to_symbols_bf or gr_chunks_to_symbols_bc handles the general case of mapping from a stream of bytes into arbitrary float or complex symbols. - -Params: (NONE)" - -%feature("docstring") gr_channel_model "channel simulator" - -%feature("docstring") gr_channel_model::gr_channel_model " - -Params: (noise_voltage, frequency_offset, epsilon, taps, noise_seed)" - -%feature("docstring") gr_channel_model::set_noise_voltage " - -Params: (noise_voltage)" - -%feature("docstring") gr_channel_model::set_frequency_offset " - -Params: (frequency_offset)" - -%feature("docstring") gr_channel_model::set_taps " - -Params: (taps)" - -%feature("docstring") gr_channel_model::set_timing_offset " - -Params: (epsilon)" - -%feature("docstring") gr_make_channel_model "Creates a channel_model block. - -channel simulator - -Params: (noise_voltage, frequency_offset, epsilon, taps, noise_seed)" - -%feature("docstring") gr_char_to_float "Convert stream of chars to a stream of float." - -%feature("docstring") gr_char_to_float::gr_char_to_float " - -Params: (NONE)" - -%feature("docstring") gr_char_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_char_to_float "Creates a char_to_float block. - -Convert stream of chars to a stream of float. - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s "sink that checks if its input stream consists of a counting sequence. - -This sink is typically used to test the USRP \"Counting Mode\" or \"Counting mode 32 bit\"." - -%feature("docstring") gr_check_counting_s::gr_check_counting_s " - -Params: (do_32bit)" - -%feature("docstring") gr_check_counting_s::enter_SEARCHING " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::enter_LOCKED " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::right " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::wrong " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::right_three_times " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::wrong_three_times " - -Params: (NONE)" - -%feature("docstring") gr_check_counting_s::log_error " - -Params: (expected, actual)" - -%feature("docstring") gr_check_counting_s::log_error_32bit " - -Params: (expected, actual)" - -%feature("docstring") gr_check_counting_s::check_32bit " - -Params: (noutput_items, in)" - -%feature("docstring") gr_check_counting_s::check_16bit " - -Params: (noutput_items, in)" - -%feature("docstring") gr_check_counting_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_check_counting_s "Creates a check_counting_s block. - -sink that checks if its input stream consists of a counting sequence. - -This sink is typically used to test the USRP \"Counting Mode\" or \"Counting mode 32 bit\". - -Params: (do_32bit)" - -%feature("docstring") gr_check_lfsr_32k_s "sink that checks if its input stream consists of a lfsr_32k sequence. - -This sink is typically used along with gr_lfsr_32k_source_s to test the USRP using its digital loopback mode." - -%feature("docstring") gr_check_lfsr_32k_s::gr_check_lfsr_32k_s " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::enter_SEARCHING " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH0 " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH1 " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::enter_MATCH2 " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::enter_LOCKED " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::right " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::wrong " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::right_three_times " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::wrong_three_times " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::log_error " - -Params: (expected, actual)" - -%feature("docstring") gr_check_lfsr_32k_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_check_lfsr_32k_s::ntotal " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::nright " - -Params: (NONE)" - -%feature("docstring") gr_check_lfsr_32k_s::runlength " - -Params: (NONE)" - -%feature("docstring") gr_make_check_lfsr_32k_s "Creates a check_lfsr_32k_s block. - -sink that checks if its input stream consists of a lfsr_32k sequence. - -This sink is typically used along with gr_lfsr_32k_source_s to test the USRP using its digital loopback mode. - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_bc "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of unsigned char; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_bc::gr_chunks_to_symbols_bc " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_bc::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_bc::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_bc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_bc::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_bc "Creates a chunks_to_symbols_bc block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of unsigned char; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_bf "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of unsigned char; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_bf::gr_chunks_to_symbols_bf " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_bf::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_bf::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_bf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_bf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_bf "Creates a chunks_to_symbols_bf block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of unsigned char; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_ic "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of int; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_ic::gr_chunks_to_symbols_ic " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_ic::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_ic::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_ic::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_ic::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_ic "Creates a chunks_to_symbols_ic block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of int; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_if "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of int; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_if::gr_chunks_to_symbols_if " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_if::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_if::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_if::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_if::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_if "Creates a chunks_to_symbols_if block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of int; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_sc "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of short; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_sc::gr_chunks_to_symbols_sc " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_sc::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_sc::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_sc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_sc::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_sc "Creates a chunks_to_symbols_sc block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of short; output: stream of gr_complex. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_sf "Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of short; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_chunks_to_symbols_sf::gr_chunks_to_symbols_sf " - -Params: (symbol_table, D)" - -%feature("docstring") gr_chunks_to_symbols_sf::D " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_sf::symbol_table " - -Params: (NONE)" - -%feature("docstring") gr_chunks_to_symbols_sf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_chunks_to_symbols_sf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_chunks_to_symbols_sf "Creates a chunks_to_symbols_sf block. - -Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in dimensions ( = 1 by default) - -input: stream of short; output: stream of float. - -out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1 - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_XY handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (symbol_table, D)" - -%feature("docstring") gr_clock_recovery_mm_cc "Mueller and M?ller (M&M) based clock recovery block with complex input, complex output. - -This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. The complex version here is based on: Modified Mueller and Muller clock recovery circuit Based: G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033." - -%feature("docstring") gr_clock_recovery_mm_cc::~gr_clock_recovery_mm_cc " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_cc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_clock_recovery_mm_cc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_clock_recovery_mm_cc::mu " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_cc::omega " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_cc::gain_mu " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_cc::gain_omega " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_cc::set_verbose " - -Params: (verbose)" - -%feature("docstring") gr_clock_recovery_mm_cc::set_gain_mu " - -Params: (gain_mu)" - -%feature("docstring") gr_clock_recovery_mm_cc::set_gain_omega " - -Params: (gain_omega)" - -%feature("docstring") gr_clock_recovery_mm_cc::set_mu " - -Params: (mu)" - -%feature("docstring") gr_clock_recovery_mm_cc::set_omega " - -Params: (omega)" - -%feature("docstring") gr_clock_recovery_mm_cc::gr_clock_recovery_mm_cc " - -Params: (omega, gain_omega, mu, gain_mu, omega_relative_limi)" - -%feature("docstring") gr_clock_recovery_mm_cc::slicer_0deg " - -Params: (sample)" - -%feature("docstring") gr_clock_recovery_mm_cc::slicer_45deg " - -Params: (sample)" - -%feature("docstring") gr_make_clock_recovery_mm_cc "Creates a clock_recovery_mm_cc block. - -Mueller and M?ller (M&M) based clock recovery block with complex input, complex output. - -This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. The complex version here is based on: Modified Mueller and Muller clock recovery circuit Based: G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. - -Params: (omega, gain_omega, mu, gain_mu, omega_relative_limi)" - -%feature("docstring") gr_clock_recovery_mm_ff "Mueller and M?ller (M&M) based clock recovery block with float input, float output. - -This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. - -See \"Digital Communication Receivers: Synchronization, Channel - Estimation and Signal Processing\" by Heinrich Meyr, Marc Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8." - -%feature("docstring") gr_clock_recovery_mm_ff::~gr_clock_recovery_mm_ff " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_ff::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_clock_recovery_mm_ff::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_clock_recovery_mm_ff::mu " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_ff::omega " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_ff::gain_mu " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_ff::gain_omega " - -Params: (NONE)" - -%feature("docstring") gr_clock_recovery_mm_ff::set_gain_mu " - -Params: (gain_mu)" - -%feature("docstring") gr_clock_recovery_mm_ff::set_gain_omega " - -Params: (gain_omega)" - -%feature("docstring") gr_clock_recovery_mm_ff::set_mu " - -Params: (mu)" - -%feature("docstring") gr_clock_recovery_mm_ff::set_omega " - -Params: (omega)" - -%feature("docstring") gr_clock_recovery_mm_ff::gr_clock_recovery_mm_ff " - -Params: (omega, gain_omega, mu, gain_mu, omega_relative_limit)" - -%feature("docstring") gr_make_clock_recovery_mm_ff "Creates a clock_recovery_mm_ff block. - -Mueller and M?ller (M&M) based clock recovery block with float input, float output. - -This implements the Mueller and M?ller (M&M) discrete-time error-tracking synchronizer. - -See \"Digital Communication Receivers: Synchronization, Channel - Estimation and Signal Processing\" by Heinrich Meyr, Marc Moeneclaey, & Stefan Fechtel. ISBN 0-471-50275-8. - -Params: (omega, gain_omega, mu, gain_mu, omega_relative_limit)" - -%feature("docstring") gr_cma_equalizer_cc "Implements constant modulus adaptive filter on complex stream." - -%feature("docstring") gr_cma_equalizer_cc::gr_cma_equalizer_cc " - -Params: (num_taps, modulus, mu)" - -%feature("docstring") gr_cma_equalizer_cc::error " - -Params: (out)" - -%feature("docstring") gr_cma_equalizer_cc::update_tap " - -Params: (tap, in)" - -%feature("docstring") gr_make_cma_equalizer_cc "Creates a cma_equalizer_cc block. - -Implements constant modulus adaptive filter on complex stream. - -Params: (num_taps, modulus, mu)" - -%feature("docstring") gr_complex_to_arg "complex in, angle out (float)" - -%feature("docstring") gr_complex_to_arg::gr_complex_to_arg " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_arg::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_arg "Creates a complex_to_arg block. - -complex in, angle out (float) - -Params: (vlen)" - -%feature("docstring") gr_complex_to_float "convert a stream of gr_complex to 1 or 2 streams of float" - -%feature("docstring") gr_complex_to_float::gr_complex_to_float " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_float "Creates a complex_to_float block. - -convert a stream of gr_complex to 1 or 2 streams of float - -Params: (vlen)" - -%feature("docstring") gr_complex_to_imag "complex in, imaginary out (float)" - -%feature("docstring") gr_complex_to_imag::gr_complex_to_imag " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_imag::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_imag "Creates a complex_to_imag block. - -complex in, imaginary out (float) - -Params: (vlen)" - -%feature("docstring") gr_complex_to_interleaved_short "Convert stream of complex to a stream of interleaved shorts." - -%feature("docstring") gr_complex_to_interleaved_short::gr_complex_to_interleaved_short " - -Params: (NONE)" - -%feature("docstring") gr_complex_to_interleaved_short::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_interleaved_short "Creates a complex_to_interleaved_short block. - -Convert stream of complex to a stream of interleaved shorts. - -Params: (NONE)" - -%feature("docstring") gr_complex_to_mag "complex in, magnitude out (float)" - -%feature("docstring") gr_complex_to_mag::gr_complex_to_mag " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_mag::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_mag "Creates a complex_to_mag block. - -complex in, magnitude out (float) - -Params: (vlen)" - -%feature("docstring") gr_complex_to_mag_squared "complex in, magnitude squared out (float)" - -%feature("docstring") gr_complex_to_mag_squared::gr_complex_to_mag_squared " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_mag_squared::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_mag_squared "Creates a complex_to_mag_squared block. - -complex in, magnitude squared out (float) - -Params: (vlen)" - -%feature("docstring") gr_complex_to_real "complex in, real out (float)" - -%feature("docstring") gr_complex_to_real::gr_complex_to_real " - -Params: (vlen)" - -%feature("docstring") gr_complex_to_real::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_complex_to_real "Creates a complex_to_real block. - -complex in, real out (float) - -Params: (vlen)" - -%feature("docstring") gr_conjugate_cc "output = complex conjugate of input" - -%feature("docstring") gr_conjugate_cc::gr_conjugate_cc " - -Params: (NONE)" - -%feature("docstring") gr_conjugate_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_conjugate_cc "Creates a conjugate_cc block. - -output = complex conjugate of input - -Params: (NONE)" - - - -%feature("docstring") gr_constellation::gr_constellation " - -Params: (constellation)" - -%feature("docstring") gr_constellation::points "Returns the set of points in this constellation. - -Params: (NONE)" - -%feature("docstring") gr_constellation::decision_maker "Returns the constellation point that matches best. Also calculates the phase error. - -Params: (sample)" - -%feature("docstring") gr_constellation::bits_per_symbol " - -Params: (NONE)" - -%feature("docstring") gr_constellation::base " - -Params: (NONE)" - -%feature("docstring") gr_make_constellation "Creates a constellation block. - - - -Params: (constellation)" - -%feature("docstring") gr_constellation_decoder_cb "Constellation Decoder." - -%feature("docstring") gr_constellation_decoder_cb::gr_constellation_decoder_cb " - -Params: (sym_position, sym_value_out)" - -%feature("docstring") gr_constellation_decoder_cb::set_constellation " - -Params: (sym_position, sym_value_out)" - -%feature("docstring") gr_constellation_decoder_cb::~gr_constellation_decoder_cb " - -Params: (NONE)" - -%feature("docstring") gr_constellation_decoder_cb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_constellation_decoder_cb "Creates a constellation_decoder_cb block. - -Constellation Decoder. - -Params: (sym_position, sym_value_out)" - - - -%feature("docstring") gr_constellation_psk::gr_constellation_psk " - -Params: (constellation, n_sectors)" - -%feature("docstring") gr_constellation_psk::get_sector " - -Params: (sample)" - -%feature("docstring") gr_constellation_psk::calc_sector_value " - -Params: (sector)" - -%feature("docstring") gr_make_constellation_psk "Creates a constellation_psk block. - - - -Params: (constellation, n_sectors)" - -%feature("docstring") gr_constellation_receiver_cb "This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. - -This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. - -The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. - -The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: - -G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. - -This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise." - -%feature("docstring") gr_constellation_receiver_cb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_constellation_receiver_cb::alpha "(CL) Returns the value for alpha (the phase gain term) - -Params: (NONE)" - -%feature("docstring") gr_constellation_receiver_cb::beta "(CL) Returns the value of beta (the frequency gain term) - -Params: (NONE)" - -%feature("docstring") gr_constellation_receiver_cb::freq "(CL) Returns the current value of the frequency of the NCO in the Costas loop - -Params: (NONE)" - -%feature("docstring") gr_constellation_receiver_cb::phase "(CL) Returns the current value of the phase of the NCO in the Costal loop - -Params: (NONE)" - -%feature("docstring") gr_constellation_receiver_cb::set_alpha "(CL) Sets the value for alpha (the phase gain term) - -Params: (alpha)" - -%feature("docstring") gr_constellation_receiver_cb::set_beta "(CL) Setss the value of beta (the frequency gain term) - -Params: (beta)" - -%feature("docstring") gr_constellation_receiver_cb::set_freq "(CL) Sets the current value of the frequency of the NCO in the Costas loop - -Params: (freq)" - -%feature("docstring") gr_constellation_receiver_cb::set_phase "(CL) Setss the current value of the phase of the NCO in the Costal loop - -Params: (phase)" - -%feature("docstring") gr_constellation_receiver_cb::gr_constellation_receiver_cb "Constructor to synchronize incoming M-PSK symbols. - -The constructor also chooses which phase detector and decision maker to use in the work loop based on the value of M. - -Params: (constellation, alpha, beta, fmin, fmax)" - -%feature("docstring") gr_constellation_receiver_cb::phase_error_tracking " - -Params: (phase_error)" - -%feature("docstring") gr_constellation_receiver_cb::__attribute__ "delay line plus some length for overflow protection - -Params: ()" - -%feature("docstring") gr_make_constellation_receiver_cb "Creates a constellation_receiver_cb block. - -This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. - -This block takes care of receiving generic modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. - -The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. - -The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: - -G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. - -This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise. - -Params: (constellation, alpha, beta, fmin, fmax)" - - - -%feature("docstring") gr_constellation_rect::gr_constellation_rect " - -Params: (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)" - -%feature("docstring") gr_constellation_rect::get_sector " - -Params: (sample)" - -%feature("docstring") gr_constellation_rect::calc_sector_value " - -Params: (sector)" - -%feature("docstring") gr_make_constellation_rect "Creates a constellation_rect block. - - - -Params: (constellation, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)" - -%feature("docstring") gr_copy "output[i] = input[i] - -When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor." - -%feature("docstring") gr_copy::gr_copy " - -Params: (itemsize)" - -%feature("docstring") gr_copy::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_copy::set_enabled " - -Params: (enable)" - -%feature("docstring") gr_copy::enabled " - -Params: (NONE)" - -%feature("docstring") gr_copy::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_copy "Creates a copy block. - -output[i] = input[i] - -When enabled (default), this block copies its input to its output. When disabled, this block drops its input on the floor. - -Params: (itemsize)" - -%feature("docstring") gr_correlate_access_code_bb "Examine input for specified access code, one bit at a time. - -input: stream of bits, 1 bit per input byte (data in LSB) output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit). - -Each output byte contains two valid bits, the data bit, and the flag bit. The LSB (bit 0) is the data bit, and is the original input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if the corresponding data bit is the first data bit following the access code. Otherwise the flag bit is 0." - -%feature("docstring") gr_correlate_access_code_bb::gr_correlate_access_code_bb " - -Params: (access_code, threshold)" - -%feature("docstring") gr_correlate_access_code_bb::~gr_correlate_access_code_bb " - -Params: (NONE)" - -%feature("docstring") gr_correlate_access_code_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_correlate_access_code_bb::set_access_code " - -Params: (access_code)" - -%feature("docstring") gr_make_correlate_access_code_bb "Creates a correlate_access_code_bb block. - -Examine input for specified access code, one bit at a time. - -input: stream of bits, 1 bit per input byte (data in LSB) output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit). - -Each output byte contains two valid bits, the data bit, and the flag bit. The LSB (bit 0) is the data bit, and is the original input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if the corresponding data bit is the first data bit following the access code. Otherwise the flag bit is 0. - -Params: (access_code, threshold)" - -%feature("docstring") gr_costas_loop_cc "Carrier tracking PLL for QPSK - -input: complex; output: complex -The Costas loop can have two output streams: stream 1 is the baseband I and Q; stream 2 is the normalized frequency of the loop. - -must be 2 or 4." - -%feature("docstring") gr_costas_loop_cc::gr_costas_loop_cc " - -Params: (alpha, beta, max_freq, min_freq, order)" - -%feature("docstring") gr_costas_loop_cc::phase_detector_4 "the phase detector circuit for fourth-order loops - -Params: (sample)" - -%feature("docstring") gr_costas_loop_cc::phase_detector_2 "the phase detector circuit for second-order loops - -Params: (sample)" - -%feature("docstring") gr_costas_loop_cc::set_alpha "set the first order gain - -Params: (alpha)" - -%feature("docstring") gr_costas_loop_cc::alpha "get the first order gain - -Params: (NONE)" - -%feature("docstring") gr_costas_loop_cc::set_beta "set the second order gain - -Params: (beta)" - -%feature("docstring") gr_costas_loop_cc::beta "get the second order gain - -Params: (NONE)" - -%feature("docstring") gr_costas_loop_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_costas_loop_cc::freq "returns the current NCO frequency in radians/sample - -Params: (NONE)" - -%feature("docstring") gr_make_costas_loop_cc "Creates a costas_loop_cc block. - -Carrier tracking PLL for QPSK - -input: complex; output: complex -The Costas loop can have two output streams: stream 1 is the baseband I and Q; stream 2 is the normalized frequency of the loop. - -must be 2 or 4. - -Params: (alpha, beta, max_freq, min_freq, order)" - -%feature("docstring") gr_cpfsk_bc "Perform continuous phase 2-level frequency shift keying modulation on an input stream of unpacked bits." - -%feature("docstring") gr_cpfsk_bc::gr_cpfsk_bc " - -Params: (k, ampl, samples_per_sym)" - -%feature("docstring") gr_cpfsk_bc::~gr_cpfsk_bc " - -Params: (NONE)" - -%feature("docstring") gr_cpfsk_bc::set_amplitude " - -Params: (amplitude)" - -%feature("docstring") gr_cpfsk_bc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_cpfsk_bc "Creates a cpfsk_bc block. - -Perform continuous phase 2-level frequency shift keying modulation on an input stream of unpacked bits. - -Params: (k, ampl, samples_per_sym)" - -%feature("docstring") gr_ctcss_squelch_ff "gate or zero output if ctcss tone not present" - -%feature("docstring") gr_ctcss_squelch_ff::gr_ctcss_squelch_ff " - -Params: (rate, freq, level, len, ramp, gate)" - -%feature("docstring") gr_ctcss_squelch_ff::find_tone " - -Params: (freq)" - -%feature("docstring") gr_ctcss_squelch_ff::update_state " - -Params: (in)" - -%feature("docstring") gr_ctcss_squelch_ff::mute " - -Params: (NONE)" - -%feature("docstring") gr_ctcss_squelch_ff::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_ctcss_squelch_ff::level " - -Params: (NONE)" - -%feature("docstring") gr_ctcss_squelch_ff::set_level " - -Params: (level)" - -%feature("docstring") gr_ctcss_squelch_ff::len " - -Params: (NONE)" - -%feature("docstring") gr_make_ctcss_squelch_ff "Creates a ctcss_squelch_ff block. - -gate or zero output if ctcss tone not present - -Params: (rate, freq, level, len, ramp, gate)" - -%feature("docstring") gr_decode_ccsds_27_fb "A rate 1/2, k=7 convolutional decoder for the CCSDS standard - -This block performs soft-decision convolutional decoding using the Viterbi algorithm. - -The input is a stream of (possibly noise corrupted) floating point values nominally spanning [-1.0, 1.0], representing the encoded channel symbols 0 (-1.0) and 1 (1.0), with erased symbols at 0.0. - -The output is MSB first packed bytes of decoded values. - -As a rate 1/2 code, there will be one output byte for every 16 input symbols. - -This block is designed for continuous data streaming, not packetized data. The first 32 bits out will be zeroes, with the output delayed four bytes from the corresponding inputs." - -%feature("docstring") gr_decode_ccsds_27_fb::gr_decode_ccsds_27_fb " - -Params: (NONE)" - -%feature("docstring") gr_decode_ccsds_27_fb::~gr_decode_ccsds_27_fb " - -Params: (NONE)" - -%feature("docstring") gr_decode_ccsds_27_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_decode_ccsds_27_fb "Creates a decode_ccsds_27_fb block. - -A rate 1/2, k=7 convolutional decoder for the CCSDS standard - -This block performs soft-decision convolutional decoding using the Viterbi algorithm. - -The input is a stream of (possibly noise corrupted) floating point values nominally spanning [-1.0, 1.0], representing the encoded channel symbols 0 (-1.0) and 1 (1.0), with erased symbols at 0.0. - -The output is MSB first packed bytes of decoded values. - -As a rate 1/2 code, there will be one output byte for every 16 input symbols. - -This block is designed for continuous data streaming, not packetized data. The first 32 bits out will be zeroes, with the output delayed four bytes from the corresponding inputs. - -Params: (NONE)" - -%feature("docstring") gr_deinterleave "deinterleave a single input into N outputs" - -%feature("docstring") gr_deinterleave::gr_deinterleave " - -Params: (itemsize)" - -%feature("docstring") gr_deinterleave::~gr_deinterleave " - -Params: (NONE)" - -%feature("docstring") gr_deinterleave::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_deinterleave::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_deinterleave "Creates a deinterleave block. - -deinterleave a single input into N outputs - -Params: (itemsize)" - -%feature("docstring") gr_delay "delay the input by a certain number of samples" - -%feature("docstring") gr_delay::gr_delay " - -Params: (itemsize, delay)" - -%feature("docstring") gr_delay::delay " - -Params: (NONE)" - -%feature("docstring") gr_delay::set_delay " - -Params: (delay)" - -%feature("docstring") gr_delay::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_delay "Creates a delay block. - -delay the input by a certain number of samples - -Params: (itemsize, delay)" - -%feature("docstring") gr_descrambler_bb "Descramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output." - -%feature("docstring") gr_descrambler_bb::gr_descrambler_bb " - -Params: (mask, seed, len)" - -%feature("docstring") gr_descrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_descrambler_bb "Creates a descrambler_bb block. - -Descramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. - -Params: (mask, seed, len)" - -%feature("docstring") gr_diff_decoder_bb "y[0] = (x[0] - x[-1]) % M - -Differential decoder" - -%feature("docstring") gr_diff_decoder_bb::gr_diff_decoder_bb " - -Params: (modulus)" - -%feature("docstring") gr_diff_decoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_diff_decoder_bb "Creates a diff_decoder_bb block. - -y[0] = (x[0] - x[-1]) % M - -Differential decoder - -Params: (modulus)" - -%feature("docstring") gr_diff_encoder_bb "y[0] = (x[0] + y[-1]) % M - -Differential encoder" - -%feature("docstring") gr_diff_encoder_bb::gr_diff_encoder_bb " - -Params: (modulus)" - -%feature("docstring") gr_diff_encoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_diff_encoder_bb "Creates a diff_encoder_bb block. - -y[0] = (x[0] + y[-1]) % M - -Differential encoder - -Params: (modulus)" - - - -%feature("docstring") gr_diff_phasor_cc::gr_diff_phasor_cc " - -Params: (NONE)" - -%feature("docstring") gr_diff_phasor_cc::~gr_diff_phasor_cc " - -Params: (NONE)" - -%feature("docstring") gr_diff_phasor_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_diff_phasor_cc "Creates a diff_phasor_cc block. - - - -Params: (NONE)" - -%feature("docstring") gr_dispatcher "invoke callbacks based on select." - -%feature("docstring") gr_dispatcher::gr_dispatcher " - -Params: (NONE)" - -%feature("docstring") gr_dispatcher::~gr_dispatcher " - -Params: (NONE)" - -%feature("docstring") gr_dispatcher::add_handler " - -Params: (handler)" - -%feature("docstring") gr_dispatcher::del_handler " - -Params: (handler)" - -%feature("docstring") gr_dispatcher::loop "Event dispatching loop. - -Enter a polling loop that only terminates after all gr_select_handlers have been removed. sets the timeout parameter to the select() call, measured in seconds. - -Params: (timeout)" - -%feature("docstring") gr_make_dispatcher "Creates a dispatcher block. - -invoke callbacks based on select. - -Params: (NONE)" - -%feature("docstring") gr_divide_cc "output = input_0 / input_1 / input_x ...) - -Divide across all input streams." - -%feature("docstring") gr_divide_cc::gr_divide_cc " - -Params: (vlen)" - -%feature("docstring") gr_divide_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_divide_cc "Creates a divide_cc block. - -output = input_0 / input_1 / input_x ...) - -Divide across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_divide_ff "output = input_0 / input_1 / input_x ...) - -Divide across all input streams." - -%feature("docstring") gr_divide_ff::gr_divide_ff " - -Params: (vlen)" - -%feature("docstring") gr_divide_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_divide_ff "Creates a divide_ff block. - -output = input_0 / input_1 / input_x ...) - -Divide across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_divide_ii "output = input_0 / input_1 / input_x ...) - -Divide across all input streams." - -%feature("docstring") gr_divide_ii::gr_divide_ii " - -Params: (vlen)" - -%feature("docstring") gr_divide_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_divide_ii "Creates a divide_ii block. - -output = input_0 / input_1 / input_x ...) - -Divide across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_divide_ss "output = input_0 / input_1 / input_x ...) - -Divide across all input streams." - -%feature("docstring") gr_divide_ss::gr_divide_ss " - -Params: (vlen)" - -%feature("docstring") gr_divide_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_divide_ss "Creates a divide_ss block. - -output = input_0 / input_1 / input_x ...) - -Divide across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_dpll_bb "Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's." - -%feature("docstring") gr_dpll_bb::gr_dpll_bb " - -Params: (period, gain)" - -%feature("docstring") gr_dpll_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_dpll_bb "Creates a dpll_bb block. - -Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. - -Params: (period, gain)" - -%feature("docstring") gr_encode_ccsds_27_bb "A rate 1/2, k=7 convolutional encoder for the CCSDS standard - -This block performs convolutional encoding using the CCSDS standard polynomial (\"Voyager\"). - -The input is an MSB first packed stream of bits. - -The output is a stream of symbols 0 or 1 representing the encoded data. - -As a rate 1/2 code, there will be 16 output symbols for every input byte. - -This block is designed for continuous data streaming, not packetized data. There is no provision to \"flush\" the encoder." - -%feature("docstring") gr_encode_ccsds_27_bb::gr_encode_ccsds_27_bb " - -Params: (NONE)" - -%feature("docstring") gr_encode_ccsds_27_bb::~gr_encode_ccsds_27_bb " - -Params: (NONE)" - -%feature("docstring") gr_encode_ccsds_27_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_encode_ccsds_27_bb "Creates a encode_ccsds_27_bb block. - -A rate 1/2, k=7 convolutional encoder for the CCSDS standard - -This block performs convolutional encoding using the CCSDS standard polynomial (\"Voyager\"). - -The input is an MSB first packed stream of bits. - -The output is a stream of symbols 0 or 1 representing the encoded data. - -As a rate 1/2 code, there will be 16 output symbols for every input byte. - -This block is designed for continuous data streaming, not packetized data. There is no provision to \"flush\" the encoder. - -Params: (NONE)" - -%feature("docstring") gr_fake_channel_decoder_pp "remove fake padding from packet - -input: stream of byte vectors; output: stream of byte vectors" - -%feature("docstring") gr_fake_channel_decoder_pp::gr_fake_channel_decoder_pp " - -Params: (input_vlen, output_vlen)" - -%feature("docstring") gr_fake_channel_decoder_pp::~gr_fake_channel_decoder_pp " - -Params: (NONE)" - -%feature("docstring") gr_fake_channel_decoder_pp::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fake_channel_decoder_pp "Creates a fake_channel_decoder_pp block. - -remove fake padding from packet - -input: stream of byte vectors; output: stream of byte vectors - -Params: (input_vlen, output_vlen)" - -%feature("docstring") gr_fake_channel_encoder_pp "pad packet with alternating 1,0 pattern. - -input: stream of byte vectors; output: stream of byte vectors" - -%feature("docstring") gr_fake_channel_encoder_pp::gr_fake_channel_encoder_pp " - -Params: (input_vlen, output_vlen)" - -%feature("docstring") gr_fake_channel_encoder_pp::~gr_fake_channel_encoder_pp " - -Params: (NONE)" - -%feature("docstring") gr_fake_channel_encoder_pp::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fake_channel_encoder_pp "Creates a fake_channel_encoder_pp block. - -pad packet with alternating 1,0 pattern. - -input: stream of byte vectors; output: stream of byte vectors - -Params: (input_vlen, output_vlen)" - -%feature("docstring") gr_feedforward_agc_cc "Non-causal AGC which computes required gain based on max absolute value over nsamples." - -%feature("docstring") gr_feedforward_agc_cc::gr_feedforward_agc_cc " - -Params: (nsamples, reference)" - -%feature("docstring") gr_feedforward_agc_cc::~gr_feedforward_agc_cc " - -Params: (NONE)" - -%feature("docstring") gr_feedforward_agc_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_feedforward_agc_cc "Creates a feedforward_agc_cc block. - -Non-causal AGC which computes required gain based on max absolute value over nsamples. - -Params: (nsamples, reference)" - -%feature("docstring") gr_fft_filter_ccc "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_fft_filter_ccc::gr_fft_filter_ccc "Construct a FFT filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fft_filter_ccc::~gr_fft_filter_ccc " - -Params: (NONE)" - -%feature("docstring") gr_fft_filter_ccc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fft_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fft_filter_ccc "Creates a fft_filter_ccc block. - -Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fft_filter_fff "Fast FFT filter with float input, float output and float taps." - -%feature("docstring") gr_fft_filter_fff::gr_fft_filter_fff "Construct a FFT filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fft_filter_fff::~gr_fft_filter_fff " - -Params: (NONE)" - -%feature("docstring") gr_fft_filter_fff::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fft_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fft_filter_fff "Creates a fft_filter_fff block. - -Fast FFT filter with float input, float output and float taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fft_vcc "Compute forward or reverse FFT. complex vector in / complex vector out. - -Abstract base class." - -%feature("docstring") gr_fft_vcc::gr_fft_vcc " - -Params: (name, fft_size, forward, window, shift)" - -%feature("docstring") gr_fft_vcc::~gr_fft_vcc " - -Params: (NONE)" - -%feature("docstring") gr_fft_vcc::set_window " - -Params: (window)" - -%feature("docstring") gr_make_fft_vcc "Creates a fft_vcc block. - -Compute forward or reverse FFT. complex vector in / complex vector out. - -Abstract base class. - -Params: (name, fft_size, forward, window, shift)" - -%feature("docstring") gr_fft_vcc_fftw "Compute forward or reverse FFT. complex vector in / complex vector out. - -Concrete class that uses FFTW." - -%feature("docstring") gr_fft_vcc_fftw::gr_fft_vcc_fftw " - -Params: (fft_size, forward, window, shift)" - -%feature("docstring") gr_fft_vcc_fftw::~gr_fft_vcc_fftw " - -Params: (NONE)" - -%feature("docstring") gr_fft_vcc_fftw::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fft_vcc_fftw "Creates a fft_vcc_fftw block. - -Compute forward or reverse FFT. complex vector in / complex vector out. - -Concrete class that uses FFTW. - -Params: (fft_size, forward, window, shift)" - -%feature("docstring") gr_fft_vfc "Compute forward FFT. float vector in / complex vector out." - -%feature("docstring") gr_fft_vfc::gr_fft_vfc " - -Params: (fft_size, forward, window)" - -%feature("docstring") gr_fft_vfc::~gr_fft_vfc " - -Params: (NONE)" - -%feature("docstring") gr_fft_vfc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_fft_vfc::set_window " - -Params: (window)" - -%feature("docstring") gr_make_fft_vfc "Creates a fft_vfc block. - -Compute forward FFT. float vector in / complex vector out. - -Params: (fft_size, forward, window)" - -%feature("docstring") gr_file_descriptor_sink "Write stream to file descriptor." - -%feature("docstring") gr_file_descriptor_sink::gr_file_descriptor_sink " - -Params: (itemsize, fd)" - -%feature("docstring") gr_file_descriptor_sink::~gr_file_descriptor_sink " - -Params: (NONE)" - -%feature("docstring") gr_file_descriptor_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_file_descriptor_sink "Creates a file_descriptor_sink block. - -Write stream to file descriptor. - -Params: (itemsize, fd)" - -%feature("docstring") gr_file_descriptor_source "Read stream from file descriptor." - -%feature("docstring") gr_file_descriptor_source::gr_file_descriptor_source " - -Params: (itemsize, fd, repeat)" - -%feature("docstring") gr_file_descriptor_source::read_items " - -Params: (buf, nitems)" - -%feature("docstring") gr_file_descriptor_source::handle_residue " - -Params: (buf, nbytes_read)" - -%feature("docstring") gr_file_descriptor_source::flush_residue " - -Params: (NONE)" - -%feature("docstring") gr_file_descriptor_source::~gr_file_descriptor_source " - -Params: (NONE)" - -%feature("docstring") gr_file_descriptor_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_file_descriptor_source "Creates a file_descriptor_source block. - -Read stream from file descriptor. - -Params: (itemsize, fd, repeat)" - -%feature("docstring") gr_file_sink "Write stream to file." - -%feature("docstring") gr_file_sink::gr_file_sink " - -Params: (itemsize, filename)" - -%feature("docstring") gr_file_sink::~gr_file_sink " - -Params: (NONE)" - -%feature("docstring") gr_file_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_file_sink "Creates a file_sink block. - -Write stream to file. - -Params: (itemsize, filename)" - -%feature("docstring") gr_file_source "Read stream from file." - -%feature("docstring") gr_file_source::gr_file_source " - -Params: (itemsize, filename, repeat)" - -%feature("docstring") gr_file_source::~gr_file_source " - -Params: (NONE)" - -%feature("docstring") gr_file_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_file_source::seek "seek file to relative to - -Params: (seek_point, whence)" - -%feature("docstring") gr_make_file_source "Creates a file_source block. - -Read stream from file. - -Params: (itemsize, filename, repeat)" - -%feature("docstring") gr_filter_delay_fc "Filter-Delay Combination Block. - -The block takes one or two float stream and outputs a complex stream. If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output. If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output. The delay in the real path accounts for the group delay introduced by the filter in the imaginary path. The filter taps needs to be calculated before initializing this block." - -%feature("docstring") gr_filter_delay_fc::~gr_filter_delay_fc " - -Params: (NONE)" - -%feature("docstring") gr_filter_delay_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_filter_delay_fc::gr_filter_delay_fc " - -Params: (taps)" - -%feature("docstring") gr_make_filter_delay_fc "Creates a filter_delay_fc block. - -Filter-Delay Combination Block. - -The block takes one or two float stream and outputs a complex stream. If only one float stream is input, the real output is a delayed version of this input and the imaginary output is the filtered output. If two floats are connected to the input, then the real output is the delayed version of the first input, and the imaginary output is the filtered output. The delay in the real path accounts for the group delay introduced by the filter in the imaginary path. The filter taps needs to be calculated before initializing this block. - -Params: (taps)" - -%feature("docstring") gr_fir_filter_ccc "FIR filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_fir_filter_ccc::gr_fir_filter_ccc "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_ccc::~gr_fir_filter_ccc " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_ccc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_ccc "Creates a fir_filter_ccc block. - -FIR filter with gr_complex input, gr_complex output and gr_complex taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_ccf "FIR filter with gr_complex input, gr_complex output and float taps." - -%feature("docstring") gr_fir_filter_ccf::gr_fir_filter_ccf "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_ccf::~gr_fir_filter_ccf " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_ccf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_ccf "Creates a fir_filter_ccf block. - -FIR filter with gr_complex input, gr_complex output and float taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fcc "FIR filter with float input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_fir_filter_fcc::gr_fir_filter_fcc "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fcc::~gr_fir_filter_fcc " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_fcc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_fcc "Creates a fir_filter_fcc block. - -FIR filter with float input, gr_complex output and gr_complex taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fff "FIR filter with float input, float output and float taps." - -%feature("docstring") gr_fir_filter_fff::gr_fir_filter_fff "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fff::~gr_fir_filter_fff " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_fff::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_fff "Creates a fir_filter_fff block. - -FIR filter with float input, float output and float taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fsf "FIR filter with float input, short output and float taps." - -%feature("docstring") gr_fir_filter_fsf::gr_fir_filter_fsf "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_fsf::~gr_fir_filter_fsf " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_fsf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_fsf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_fsf "Creates a fir_filter_fsf block. - -FIR filter with float input, short output and float taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_scc "FIR filter with short input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_fir_filter_scc::gr_fir_filter_scc "Construct a FIR filter with the given taps - -Params: (decimation, taps)" - -%feature("docstring") gr_fir_filter_scc::~gr_fir_filter_scc " - -Params: (NONE)" - -%feature("docstring") gr_fir_filter_scc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fir_filter_scc "Creates a fir_filter_scc block. - -FIR filter with short input, gr_complex output and gr_complex taps. - -Params: (decimation, taps)" - -%feature("docstring") gr_flat_flowgraph "Class specializing gr_flat_flowgraph that has all nodes as gr_blocks, with no hierarchy." - -%feature("docstring") gr_flat_flowgraph::~gr_flat_flowgraph " - -Params: (NONE)" - -%feature("docstring") gr_flat_flowgraph::setup_connections " - -Params: (NONE)" - -%feature("docstring") gr_flat_flowgraph::merge_connections " - -Params: (sfg)" - -%feature("docstring") gr_flat_flowgraph::dump " - -Params: (NONE)" - -%feature("docstring") gr_flat_flowgraph::make_block_vector "Make a vector of gr_block from a vector of gr_basic_block - -Params: (blocks)" - -%feature("docstring") gr_flat_flowgraph::gr_flat_flowgraph " - -Params: (NONE)" - -%feature("docstring") gr_flat_flowgraph::allocate_block_detail " - -Params: (block)" - -%feature("docstring") gr_flat_flowgraph::allocate_buffer " - -Params: (block, port)" - -%feature("docstring") gr_flat_flowgraph::connect_block_inputs " - -Params: (block)" - -%feature("docstring") gr_make_flat_flowgraph "Creates a flat_flowgraph block. - -Class specializing gr_flat_flowgraph that has all nodes as gr_blocks, with no hierarchy. - -Params: (NONE)" - -%feature("docstring") gr_fll_band_edge_cc "Frequency Lock Loop using band-edge filters. - -The frequency lock loop derives a band-edge filter that covers the upper and lower bandwidths of a digitally-modulated signal. The bandwidth range is determined by the excess bandwidth (e.g., rolloff factor) of the modulated signal. The placement in frequency of the band-edges is determined by the oversampling ratio (number of samples per symbol) and the excess bandwidth. The size of the filters should be fairly large so as to average over a number of symbols. - -The FLL works by filtering the upper and lower band edges into x_u(t) and x_l(t), respectively. These are combined to form cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining these to form the signal e(t) = Re{cc(t) \times ss(t)^*} (where ^* is the complex conjugate) provides an error signal at the DC term that is directly proportional to the carrier frequency. We then make a second-order loop using the error signal that is the running average of e(t). - -In theory, the band-edge filter is the derivative of the matched filter in frequency, (H_be(f) = \frac{H(f)}{df}. In practice, this comes down to a quarter sine wave at the point of the matched filter's rolloff (if it's a raised-cosine, the derivative of a cosine is a sine). Extend this sine by another quarter wave to make a half wave around the band-edges is equivalent in time to the sum of two sinc functions. The baseband filter fot the band edges is therefore derived from this sum of sincs. The band edge filters are then just the baseband signal modulated to the correct place in frequency. All of these calculations are done in the 'design_filter' function. - -Note: We use FIR filters here because the filters have to have a flat phase response over the entire frequency range to allow their comparisons to be valid." - -%feature("docstring") gr_fll_band_edge_cc::gr_fll_band_edge_cc "Build the FLL - -Params: (samps_per_sym, rolloff, filter_size, alpha, beta)" - -%feature("docstring") gr_fll_band_edge_cc::~gr_fll_band_edge_cc " - -Params: (NONE)" - -%feature("docstring") gr_fll_band_edge_cc::design_filter "Design the band-edge filter based on the number of samples per symbol, filter rolloff factor, and the filter size - -Params: (samps_per_sym, rolloff, filter_size)" - -%feature("docstring") gr_fll_band_edge_cc::set_alpha "Set the alpha gainvalue - -Params: (alpha)" - -%feature("docstring") gr_fll_band_edge_cc::set_beta "Set the beta gain value - -Params: (beta)" - -%feature("docstring") gr_fll_band_edge_cc::print_taps "Print the taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_fll_band_edge_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fll_band_edge_cc "Creates a fll_band_edge_cc block. - -Frequency Lock Loop using band-edge filters. - -The frequency lock loop derives a band-edge filter that covers the upper and lower bandwidths of a digitally-modulated signal. The bandwidth range is determined by the excess bandwidth (e.g., rolloff factor) of the modulated signal. The placement in frequency of the band-edges is determined by the oversampling ratio (number of samples per symbol) and the excess bandwidth. The size of the filters should be fairly large so as to average over a number of symbols. - -The FLL works by filtering the upper and lower band edges into x_u(t) and x_l(t), respectively. These are combined to form cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining these to form the signal e(t) = Re{cc(t) \times ss(t)^*} (where ^* is the complex conjugate) provides an error signal at the DC term that is directly proportional to the carrier frequency. We then make a second-order loop using the error signal that is the running average of e(t). - -In theory, the band-edge filter is the derivative of the matched filter in frequency, (H_be(f) = \frac{H(f)}{df}. In practice, this comes down to a quarter sine wave at the point of the matched filter's rolloff (if it's a raised-cosine, the derivative of a cosine is a sine). Extend this sine by another quarter wave to make a half wave around the band-edges is equivalent in time to the sum of two sinc functions. The baseband filter fot the band edges is therefore derived from this sum of sincs. The band edge filters are then just the baseband signal modulated to the correct place in frequency. All of these calculations are done in the 'design_filter' function. - -Note: We use FIR filters here because the filters have to have a flat phase response over the entire frequency range to allow their comparisons to be valid. - -Params: (samps_per_sym, rolloff, filter_size, alpha, beta)" - -%feature("docstring") gr_float_to_char "Convert stream of float to a stream of char." - -%feature("docstring") gr_float_to_char::gr_float_to_char " - -Params: (NONE)" - -%feature("docstring") gr_float_to_char::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_float_to_char "Creates a float_to_char block. - -Convert stream of float to a stream of char. - -Params: (NONE)" - -%feature("docstring") gr_float_to_complex "Convert 1 or 2 streams of float to a stream of gr_complex." - -%feature("docstring") gr_float_to_complex::gr_float_to_complex " - -Params: (vlen)" - -%feature("docstring") gr_float_to_complex::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_float_to_complex "Creates a float_to_complex block. - -Convert 1 or 2 streams of float to a stream of gr_complex. - -Params: (vlen)" - -%feature("docstring") gr_float_to_short "Convert stream of float to a stream of short." - -%feature("docstring") gr_float_to_short::gr_float_to_short " - -Params: (NONE)" - -%feature("docstring") gr_float_to_short::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_float_to_short "Creates a float_to_short block. - -Convert stream of float to a stream of short. - -Params: (NONE)" - -%feature("docstring") gr_float_to_uchar "Convert stream of float to a stream of unsigned char." - -%feature("docstring") gr_float_to_uchar::gr_float_to_uchar " - -Params: (NONE)" - -%feature("docstring") gr_float_to_uchar::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_float_to_uchar "Creates a float_to_uchar block. - -Convert stream of float to a stream of unsigned char. - -Params: (NONE)" - -%feature("docstring") gr_flowgraph "Class representing a directed, acyclic graph of basic blocks." - -%feature("docstring") gr_flowgraph::~gr_flowgraph " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::connect " - -Params: (src, dst)" - -%feature("docstring") gr_flowgraph::disconnect " - -Params: (src, dst)" - -%feature("docstring") gr_flowgraph::validate " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::clear " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::edges " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::calc_used_blocks " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::topological_sort " - -Params: (blocks)" - -%feature("docstring") gr_flowgraph::partition " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::gr_flowgraph " - -Params: (NONE)" - -%feature("docstring") gr_flowgraph::calc_used_ports " - -Params: (block, check_inputs)" - -%feature("docstring") gr_flowgraph::calc_downstream_blocks " - -Params: (block, port)" - -%feature("docstring") gr_flowgraph::calc_upstream_edges " - -Params: (block)" - -%feature("docstring") gr_flowgraph::has_block_p " - -Params: (block)" - -%feature("docstring") gr_flowgraph::calc_upstream_edge " - -Params: (block, port)" - -%feature("docstring") gr_flowgraph::check_valid_port " - -Params: (sig, port)" - -%feature("docstring") gr_flowgraph::check_dst_not_used " - -Params: (dst)" - -%feature("docstring") gr_flowgraph::check_type_match " - -Params: (src, dst)" - -%feature("docstring") gr_flowgraph::calc_connections " - -Params: (block, check_inputs)" - -%feature("docstring") gr_flowgraph::check_contiguity " - -Params: (block, used_ports, check_inputs)" - -%feature("docstring") gr_flowgraph::calc_reachable_blocks " - -Params: (block, blocks)" - -%feature("docstring") gr_flowgraph::reachable_dfs_visit " - -Params: (block, blocks)" - -%feature("docstring") gr_flowgraph::calc_adjacent_blocks " - -Params: (block, blocks)" - -%feature("docstring") gr_flowgraph::sort_sources_first " - -Params: (blocks)" - -%feature("docstring") gr_flowgraph::source_p " - -Params: (block)" - -%feature("docstring") gr_flowgraph::topological_dfs_visit " - -Params: (block, output)" - -%feature("docstring") gr_make_flowgraph "Creates a flowgraph block. - -Class representing a directed, acyclic graph of basic blocks. - -Params: (NONE)" - -%feature("docstring") gr_fmdet_cf "Implements an IQ slope detector. - -input: stream of complex; output: stream of floats - -This implements a limiting slope detector. The limiter is in the normalization by the magnitude of the sample" - -%feature("docstring") gr_fmdet_cf::gr_fmdet_cf " - -Params: (samplerate, freq_low, freq_high, scl)" - -%feature("docstring") gr_fmdet_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_fmdet_cf "Creates a fmdet_cf block. - -Implements an IQ slope detector. - -input: stream of complex; output: stream of floats - -This implements a limiting slope detector. The limiter is in the normalization by the magnitude of the sample - -Params: (samplerate, freq_low, freq_high, scl)" - -%feature("docstring") gr_fractional_interpolator_cc "Interpolating mmse filter with gr_complex input, gr_complex output." - -%feature("docstring") gr_fractional_interpolator_cc::~gr_fractional_interpolator_cc " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_cc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_fractional_interpolator_cc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_fractional_interpolator_cc::mu " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_cc::interp_ratio " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_cc::set_mu " - -Params: (mu)" - -%feature("docstring") gr_fractional_interpolator_cc::set_interp_ratio " - -Params: (interp_ratio)" - -%feature("docstring") gr_fractional_interpolator_cc::gr_fractional_interpolator_cc " - -Params: (phase_shift, interp_ratio)" - -%feature("docstring") gr_make_fractional_interpolator_cc "Creates a fractional_interpolator_cc block. - -Interpolating mmse filter with gr_complex input, gr_complex output. - -Params: (phase_shift, interp_ratio)" - -%feature("docstring") gr_fractional_interpolator_ff "Interpolating mmse filter with float input, float output." - -%feature("docstring") gr_fractional_interpolator_ff::~gr_fractional_interpolator_ff " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_ff::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_fractional_interpolator_ff::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_fractional_interpolator_ff::mu " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_ff::interp_ratio " - -Params: (NONE)" - -%feature("docstring") gr_fractional_interpolator_ff::set_mu " - -Params: (mu)" - -%feature("docstring") gr_fractional_interpolator_ff::set_interp_ratio " - -Params: (interp_ratio)" - -%feature("docstring") gr_fractional_interpolator_ff::gr_fractional_interpolator_ff " - -Params: (phase_shift, interp_ratio)" - -%feature("docstring") gr_make_fractional_interpolator_ff "Creates a fractional_interpolator_ff block. - -Interpolating mmse filter with float input, float output. - -Params: (phase_shift, interp_ratio)" - -%feature("docstring") gr_framer_sink_1 "Given a stream of bits and access_code flags, assemble packets. - -input: stream of bytes from gr_correlate_access_code_bb output: none. Pushes assembled packet into target queue. - -The framer expects a fixed length header of 2 16-bit shorts containing the payload length, followed by the payload. If the 2 16-bit shorts are not identical, this packet is ignored. Better algs are welcome. - -The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code." - -%feature("docstring") gr_framer_sink_1::gr_framer_sink_1 " - -Params: (target_queue)" - -%feature("docstring") gr_framer_sink_1::enter_search " - -Params: (NONE)" - -%feature("docstring") gr_framer_sink_1::enter_have_sync " - -Params: (NONE)" - -%feature("docstring") gr_framer_sink_1::enter_have_header " - -Params: (payload_len, whitener_offset)" - -%feature("docstring") gr_framer_sink_1::header_ok " - -Params: (NONE)" - -%feature("docstring") gr_framer_sink_1::header_payload " - -Params: (len, offset)" - -%feature("docstring") gr_framer_sink_1::~gr_framer_sink_1 " - -Params: (NONE)" - -%feature("docstring") gr_framer_sink_1::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_framer_sink_1 "Creates a framer_sink_1 block. - -Given a stream of bits and access_code flags, assemble packets. - -input: stream of bytes from gr_correlate_access_code_bb output: none. Pushes assembled packet into target queue. - -The framer expects a fixed length header of 2 16-bit shorts containing the payload length, followed by the payload. If the 2 16-bit shorts are not identical, this packet is ignored. Better algs are welcome. - -The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code. - -Params: (target_queue)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc "FIR filter combined with frequency translation with gr_complex input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::~gr_freq_xlating_fir_filter_ccc " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccc::gr_freq_xlating_fir_filter_ccc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_ccc "Creates a freq_xlating_fir_filter_ccc block. - -FIR filter combined with frequency translation with gr_complex input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf "FIR filter combined with frequency translation with gr_complex input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::~gr_freq_xlating_fir_filter_ccf " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_ccf::gr_freq_xlating_fir_filter_ccf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_ccf "Creates a freq_xlating_fir_filter_ccf block. - -FIR filter combined with frequency translation with gr_complex input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc "FIR filter combined with frequency translation with float input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::~gr_freq_xlating_fir_filter_fcc " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcc::gr_freq_xlating_fir_filter_fcc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_fcc "Creates a freq_xlating_fir_filter_fcc block. - -FIR filter combined with frequency translation with float input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf "FIR filter combined with frequency translation with float input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::~gr_freq_xlating_fir_filter_fcf " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_fcf::gr_freq_xlating_fir_filter_fcf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_fcf "Creates a freq_xlating_fir_filter_fcf block. - -FIR filter combined with frequency translation with float input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc "FIR filter combined with frequency translation with short input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_scc::~gr_freq_xlating_fir_filter_scc " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_scc::gr_freq_xlating_fir_filter_scc "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_scc "Creates a freq_xlating_fir_filter_scc block. - -FIR filter combined with frequency translation with short input, gr_complex output and gr_complex taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf "FIR filter combined with frequency translation with short input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored." - -%feature("docstring") gr_freq_xlating_fir_filter_scf::~gr_freq_xlating_fir_filter_scf " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf::set_center_freq " - -Params: (center_freq)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf::build_composite_fir " - -Params: (NONE)" - -%feature("docstring") gr_freq_xlating_fir_filter_scf::gr_freq_xlating_fir_filter_scf "Construct a FIR filter with the given taps and a composite frequency translation that shifts center_freq down to zero Hz. The frequency translation logically comes before the filtering operation. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_make_freq_xlating_fir_filter_scf "Creates a freq_xlating_fir_filter_scf block. - -FIR filter combined with frequency translation with short input, gr_complex output and float taps - -This class efficiently combines a frequency translation (typically \"down conversion\") with a FIR filter (typically low-pass) and decimation. It is ideally suited for a \"channel selection filter\" and can be efficiently used to select and decimate a narrow band signal out of wide bandwidth input. - -Uses a single input array to produce a single output array. Additional inputs and/or outputs are ignored. - -Params: (decimation, taps, center_freq, sampling_freq)" - -%feature("docstring") gr_frequency_modulator_fc "Frequency modulator block - -float input; complex baseband output." - -%feature("docstring") gr_frequency_modulator_fc::gr_frequency_modulator_fc " - -Params: (sensitivity)" - -%feature("docstring") gr_frequency_modulator_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_frequency_modulator_fc "Creates a frequency_modulator_fc block. - -Frequency modulator block - -float input; complex baseband output. - -Params: (sensitivity)" - -%feature("docstring") gr_glfsr_source_b "Galois LFSR pseudo-random source." - -%feature("docstring") gr_glfsr_source_b::gr_glfsr_source_b " - -Params: (degree, repeat, mask, seed)" - -%feature("docstring") gr_glfsr_source_b::~gr_glfsr_source_b " - -Params: (NONE)" - -%feature("docstring") gr_glfsr_source_b::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_glfsr_source_b::period " - -Params: (NONE)" - -%feature("docstring") gr_glfsr_source_b::mask " - -Params: (NONE)" - -%feature("docstring") gr_make_glfsr_source_b "Creates a glfsr_source_b block. - -Galois LFSR pseudo-random source. - -Params: (degree, repeat, mask, seed)" - -%feature("docstring") gr_glfsr_source_f "Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0." - -%feature("docstring") gr_glfsr_source_f::gr_glfsr_source_f " - -Params: (degree, repeat, mask, seed)" - -%feature("docstring") gr_glfsr_source_f::~gr_glfsr_source_f " - -Params: (NONE)" - -%feature("docstring") gr_glfsr_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_glfsr_source_f::period " - -Params: (NONE)" - -%feature("docstring") gr_glfsr_source_f::mask " - -Params: (NONE)" - -%feature("docstring") gr_make_glfsr_source_f "Creates a glfsr_source_f block. - -Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0. - -Params: (degree, repeat, mask, seed)" - -%feature("docstring") gr_goertzel_fc "Goertzel single-bin DFT calculation." - -%feature("docstring") gr_goertzel_fc::gr_goertzel_fc " - -Params: (rate, len, freq)" - -%feature("docstring") gr_goertzel_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_goertzel_fc::set_freq " - -Params: (freq)" - -%feature("docstring") gr_goertzel_fc::set_rate " - -Params: (rate)" - -%feature("docstring") gr_make_goertzel_fc "Creates a goertzel_fc block. - -Goertzel single-bin DFT calculation. - -Params: (rate, len, freq)" - -%feature("docstring") gr_head "copies the first N items to the output then signals done - -Useful for building test cases" - -%feature("docstring") gr_head::gr_head " - -Params: (sizeof_stream_item, nitems)" - -%feature("docstring") gr_head::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_head::reset " - -Params: (NONE)" - -%feature("docstring") gr_make_head "Creates a head block. - -copies the first N items to the output then signals done - -Useful for building test cases - -Params: (sizeof_stream_item, nitems)" - -%feature("docstring") gr_hier_block2 "Hierarchical container class for gr_block's and gr_hier_block2's." - -%feature("docstring") gr_hier_block2::gr_hier_block2 " - -Params: (name, input_signature, output_signature)" - -%feature("docstring") gr_hier_block2::~gr_hier_block2 " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::self "Return an object, representing the current block, which can be passed to connect. - -The returned object may only be used as an argument to connect or disconnect. Any other use of self() results in unspecified (erroneous) behavior. - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::connect "Add a stand-alone (possibly hierarchical) block to internal graph. - -This adds a gr-block or hierarchical block to the internal graph without wiring it to anything else. - -Params: (block)" - -%feature("docstring") gr_hier_block2::disconnect "Remove a gr-block or hierarchical block from the internal flowgraph. - -This removes a gr-block or hierarchical block from the internal flowgraph, disconnecting it from other blocks as needed. - -Params: (block)" - -%feature("docstring") gr_hier_block2::disconnect_all "Disconnect all connections in the internal flowgraph. - -This call removes all output port to input port connections in the internal flowgraph. - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::lock "Lock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. - -N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::unlock "Unlock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. - -N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::flatten " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2::to_hier_block2 " - -Params: (NONE)" - -%feature("docstring") gr_make_hier_block2 "Creates a hier_block2 block. - -Hierarchical container class for gr_block's and gr_hier_block2's. - -Params: (name, input_signature, output_signature)" - -%feature("docstring") gr_hilbert_fc "Hilbert transformer. - -real output is input appropriately delayed. imaginary output is hilbert filtered (90 degree phase shift) version of input." - -%feature("docstring") gr_hilbert_fc::~gr_hilbert_fc " - -Params: (NONE)" - -%feature("docstring") gr_hilbert_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_hilbert_fc::gr_hilbert_fc " - -Params: (ntaps)" - -%feature("docstring") gr_make_hilbert_fc "Creates a hilbert_fc block. - -Hilbert transformer. - -real output is input appropriately delayed. imaginary output is hilbert filtered (90 degree phase shift) version of input. - -Params: (ntaps)" - -%feature("docstring") gr_histo_sink_f "Histogram module." - -%feature("docstring") gr_histo_sink_f::gr_histo_sink_f " - -Params: (msgq)" - -%feature("docstring") gr_histo_sink_f::send_frame " - -Params: ()" - -%feature("docstring") gr_histo_sink_f::clear " - -Params: ()" - -%feature("docstring") gr_histo_sink_f::~gr_histo_sink_f " - -Params: ()" - -%feature("docstring") gr_histo_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_histo_sink_f::get_frame_size " - -Params: ()" - -%feature("docstring") gr_histo_sink_f::get_num_bins " - -Params: ()" - -%feature("docstring") gr_histo_sink_f::set_frame_size " - -Params: (frame_size)" - -%feature("docstring") gr_histo_sink_f::set_num_bins " - -Params: (num_bins)" - -%feature("docstring") gr_make_histo_sink_f "Creates a histo_sink_f block. - -Histogram module. - -Params: (msgq)" - -%feature("docstring") gr_iir_filter_ffd "IIR filter with float input, float output and double taps - -This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. - -The input and output satisfy a difference equation of the form - - - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps." - -%feature("docstring") gr_iir_filter_ffd::gr_iir_filter_ffd "Construct an IIR filter with the given taps - -Params: (fftaps, fbtaps)" - -%feature("docstring") gr_iir_filter_ffd::~gr_iir_filter_ffd " - -Params: (NONE)" - -%feature("docstring") gr_iir_filter_ffd::set_taps " - -Params: (fftaps, fbtaps)" - -%feature("docstring") gr_iir_filter_ffd::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_iir_filter_ffd "Creates a iir_filter_ffd block. - -IIR filter with float input, float output and double taps - -This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. - -The input and output satisfy a difference equation of the form - - - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps. - -Params: (fftaps, fbtaps)" - -%feature("docstring") gr_integrate_cc "output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate" - -%feature("docstring") gr_integrate_cc::gr_integrate_cc " - -Params: (decim)" - -%feature("docstring") gr_integrate_cc::~gr_integrate_cc " - -Params: (NONE)" - -%feature("docstring") gr_integrate_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_integrate_cc "Creates a integrate_cc block. - -output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate - -Params: (decim)" - -%feature("docstring") gr_integrate_ff "output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate" - -%feature("docstring") gr_integrate_ff::gr_integrate_ff " - -Params: (decim)" - -%feature("docstring") gr_integrate_ff::~gr_integrate_ff " - -Params: (NONE)" - -%feature("docstring") gr_integrate_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_integrate_ff "Creates a integrate_ff block. - -output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate - -Params: (decim)" - -%feature("docstring") gr_integrate_ii "output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate" - -%feature("docstring") gr_integrate_ii::gr_integrate_ii " - -Params: (decim)" - -%feature("docstring") gr_integrate_ii::~gr_integrate_ii " - -Params: (NONE)" - -%feature("docstring") gr_integrate_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_integrate_ii "Creates a integrate_ii block. - -output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate - -Params: (decim)" - -%feature("docstring") gr_integrate_ss "output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate" - -%feature("docstring") gr_integrate_ss::gr_integrate_ss " - -Params: (decim)" - -%feature("docstring") gr_integrate_ss::~gr_integrate_ss " - -Params: (NONE)" - -%feature("docstring") gr_integrate_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_integrate_ss "Creates a integrate_ss block. - -output = sum(input[0]...input[n]) - -Integrate successive samples in input stream and decimate - -Params: (decim)" - -%feature("docstring") gr_interleave "interleave N inputs to a single output" - -%feature("docstring") gr_interleave::gr_interleave " - -Params: (itemsize)" - -%feature("docstring") gr_interleave::~gr_interleave " - -Params: (NONE)" - -%feature("docstring") gr_interleave::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_interleave::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_interleave "Creates a interleave block. - -interleave N inputs to a single output - -Params: (itemsize)" - -%feature("docstring") gr_interleaved_short_to_complex "Convert stream of interleaved shorts to a stream of complex." - -%feature("docstring") gr_interleaved_short_to_complex::gr_interleaved_short_to_complex " - -Params: (NONE)" - -%feature("docstring") gr_interleaved_short_to_complex::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interleaved_short_to_complex "Creates a interleaved_short_to_complex block. - -Convert stream of interleaved shorts to a stream of complex. - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_ccc "Interpolating FIR filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_interp_fir_filter_ccc::gr_interp_fir_filter_ccc "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_ccc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_ccc::~gr_interp_fir_filter_ccc " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_ccc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_ccc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_ccc "Creates a interp_fir_filter_ccc block. - -Interpolating FIR filter with gr_complex input, gr_complex output and gr_complex taps. - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_ccf "Interpolating FIR filter with gr_complex input, gr_complex output and float taps." - -%feature("docstring") gr_interp_fir_filter_ccf::gr_interp_fir_filter_ccf "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_ccf::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_ccf::~gr_interp_fir_filter_ccf " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_ccf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_ccf "Creates a interp_fir_filter_ccf block. - -Interpolating FIR filter with gr_complex input, gr_complex output and float taps. - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fcc "Interpolating FIR filter with float input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_interp_fir_filter_fcc::gr_interp_fir_filter_fcc "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fcc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fcc::~gr_interp_fir_filter_fcc " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_fcc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_fcc "Creates a interp_fir_filter_fcc block. - -Interpolating FIR filter with float input, gr_complex output and gr_complex taps. - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fff "Interpolating FIR filter with float input, float output and float taps." - -%feature("docstring") gr_interp_fir_filter_fff::gr_interp_fir_filter_fff "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fff::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fff::~gr_interp_fir_filter_fff " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_fff::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_fff "Creates a interp_fir_filter_fff block. - -Interpolating FIR filter with float input, float output and float taps. - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fsf "Interpolating FIR filter with float input, short output and float taps." - -%feature("docstring") gr_interp_fir_filter_fsf::gr_interp_fir_filter_fsf "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_fsf::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fsf::~gr_interp_fir_filter_fsf " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_fsf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_fsf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_fsf "Creates a interp_fir_filter_fsf block. - -Interpolating FIR filter with float input, short output and float taps. - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_scc "Interpolating FIR filter with short input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_interp_fir_filter_scc::gr_interp_fir_filter_scc "Construct a FIR filter with the given taps - -Params: (interpolation, taps)" - -%feature("docstring") gr_interp_fir_filter_scc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_scc::~gr_interp_fir_filter_scc " - -Params: (NONE)" - -%feature("docstring") gr_interp_fir_filter_scc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_interp_fir_filter_scc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_interp_fir_filter_scc "Creates a interp_fir_filter_scc block. - -Interpolating FIR filter with short input, gr_complex output and gr_complex taps. - -Params: (interpolation, taps)" - - - -%feature("docstring") gr_iqcomp_cc::gr_iqcomp_cc " - -Params: (mu)" - -%feature("docstring") gr_iqcomp_cc::mu " - -Params: (NONE)" - -%feature("docstring") gr_iqcomp_cc::set_mu " - -Params: (mu)" - -%feature("docstring") gr_iqcomp_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_iqcomp_cc "Creates a iqcomp_cc block. - - - -Params: (mu)" - -%feature("docstring") gr_keep_one_in_n "decimate a stream, keeping one item out of every n." - -%feature("docstring") gr_keep_one_in_n::gr_keep_one_in_n " - -Params: (item_size, n)" - -%feature("docstring") gr_keep_one_in_n::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_keep_one_in_n::set_n " - -Params: (n)" - -%feature("docstring") gr_make_keep_one_in_n "Creates a keep_one_in_n block. - -decimate a stream, keeping one item out of every n. - -Params: (item_size, n)" - -%feature("docstring") gr_kludge_copy "output[i] = input[i] - -This is a short term kludge to work around a problem with the hierarchical block impl." - -%feature("docstring") gr_kludge_copy::gr_kludge_copy " - -Params: (itemsize)" - -%feature("docstring") gr_kludge_copy::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_kludge_copy::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_kludge_copy "Creates a kludge_copy block. - -output[i] = input[i] - -This is a short term kludge to work around a problem with the hierarchical block impl. - -Params: (itemsize)" - -%feature("docstring") gr_lfsr_32k_source_s "LFSR pseudo-random source with period of 2^15 bits (2^11 shorts) - -This source is typically used along with gr_check_lfsr_32k_s to test the USRP using its digital loopback mode." - -%feature("docstring") gr_lfsr_32k_source_s::gr_lfsr_32k_source_s " - -Params: (NONE)" - -%feature("docstring") gr_lfsr_32k_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_lfsr_32k_source_s "Creates a lfsr_32k_source_s block. - -LFSR pseudo-random source with period of 2^15 bits (2^11 shorts) - -This source is typically used along with gr_check_lfsr_32k_s to test the USRP using its digital loopback mode. - -Params: (NONE)" - -%feature("docstring") gr_lms_dfe_cc "Least-Mean-Square Decision Feedback Equalizer (complex in/out)." - -%feature("docstring") gr_lms_dfe_cc::gr_lms_dfe_cc " - -Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" - -%feature("docstring") gr_lms_dfe_cc::slicer_0deg " - -Params: (baud)" - -%feature("docstring") gr_lms_dfe_cc::slicer_45deg " - -Params: (baud)" - -%feature("docstring") gr_lms_dfe_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_lms_dfe_cc "Creates a lms_dfe_cc block. - -Least-Mean-Square Decision Feedback Equalizer (complex in/out). - -Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" - -%feature("docstring") gr_lms_dfe_ff "Least-Mean-Square Decision Feedback Equalizer (float in/out)." - -%feature("docstring") gr_lms_dfe_ff::gr_lms_dfe_ff " - -Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" - -%feature("docstring") gr_lms_dfe_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_lms_dfe_ff "Creates a lms_dfe_ff block. - -Least-Mean-Square Decision Feedback Equalizer (float in/out). - -Params: (lambda_ff, lambda_fb, num_fftaps, num_fbtaps)" - -%feature("docstring") gr_map_bb "output[i] = map[input[i]]" - -%feature("docstring") gr_map_bb::gr_map_bb " - -Params: (map)" - -%feature("docstring") gr_map_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_map_bb "Creates a map_bb block. - -output[i] = map[input[i]] - -Params: (map)" - - - -%feature("docstring") gr_max_ff::gr_max_ff " - -Params: (vlen)" - -%feature("docstring") gr_max_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_max_ff "Creates a max_ff block. - - - -Params: (vlen)" - - - -%feature("docstring") gr_max_ii::gr_max_ii " - -Params: (vlen)" - -%feature("docstring") gr_max_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_max_ii "Creates a max_ii block. - - - -Params: (vlen)" - - - -%feature("docstring") gr_max_ss::gr_max_ss " - -Params: (vlen)" - -%feature("docstring") gr_max_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_max_ss "Creates a max_ss block. - - - -Params: (vlen)" - -%feature("docstring") gr_message "Message class. - -The ideas and method names for adjustable message length were lifted from the click modular router \"Packet\" class." - -%feature("docstring") gr_message::gr_message " - -Params: (type, arg1, arg2, length)" - -%feature("docstring") gr_message::buf_data " - -Params: (NONE)" - -%feature("docstring") gr_message::buf_len " - -Params: (NONE)" - -%feature("docstring") gr_message::~gr_message " - -Params: (NONE)" - -%feature("docstring") gr_message::type " - -Params: (NONE)" - -%feature("docstring") gr_message::arg1 " - -Params: (NONE)" - -%feature("docstring") gr_message::arg2 " - -Params: (NONE)" - -%feature("docstring") gr_message::set_type " - -Params: (type)" - -%feature("docstring") gr_message::set_arg1 " - -Params: (arg1)" - -%feature("docstring") gr_message::set_arg2 " - -Params: (arg2)" - -%feature("docstring") gr_message::msg " - -Params: (NONE)" - -%feature("docstring") gr_message::length " - -Params: (NONE)" - -%feature("docstring") gr_message::to_string " - -Params: (NONE)" - -%feature("docstring") gr_make_message "Creates a message block. - -Message class. - -The ideas and method names for adjustable message length were lifted from the click modular router \"Packet\" class. - -Params: (type, arg1, arg2, length)" - -%feature("docstring") gr_message_sink "Gather received items into messages and insert into msgq." - -%feature("docstring") gr_message_sink::gr_message_sink " - -Params: (itemsize, msgq, dont_block)" - -%feature("docstring") gr_message_sink::~gr_message_sink " - -Params: (NONE)" - -%feature("docstring") gr_message_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_message_sink "Creates a message_sink block. - -Gather received items into messages and insert into msgq. - -Params: (itemsize, msgq, dont_block)" - -%feature("docstring") gr_message_source "Turn received messages into a stream." - -%feature("docstring") gr_message_source::gr_message_source " - -Params: (itemsize, msgq_limit)" - -%feature("docstring") gr_message_source::~gr_message_source " - -Params: (NONE)" - -%feature("docstring") gr_message_source::msgq " - -Params: (NONE)" - -%feature("docstring") gr_message_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_message_source "Creates a message_source block. - -Turn received messages into a stream. - -Params: (itemsize, msgq_limit)" - -%feature("docstring") gr_moving_average_cc "output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." - -%feature("docstring") gr_moving_average_cc::gr_moving_average_cc " - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_cc::~gr_moving_average_cc " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_moving_average_cc::length " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_cc::scale " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_cc::set_length_and_scale " - -Params: (length, scale)" - -%feature("docstring") gr_make_moving_average_cc "Creates a moving_average_cc block. - -output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ff "output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." - -%feature("docstring") gr_moving_average_ff::gr_moving_average_ff " - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ff::~gr_moving_average_ff " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_moving_average_ff::length " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ff::scale " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ff::set_length_and_scale " - -Params: (length, scale)" - -%feature("docstring") gr_make_moving_average_ff "Creates a moving_average_ff block. - -output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ii "output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." - -%feature("docstring") gr_moving_average_ii::gr_moving_average_ii " - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ii::~gr_moving_average_ii " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_moving_average_ii::length " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ii::scale " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ii::set_length_and_scale " - -Params: (length, scale)" - -%feature("docstring") gr_make_moving_average_ii "Creates a moving_average_ii block. - -output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ss "output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex." - -%feature("docstring") gr_moving_average_ss::gr_moving_average_ss " - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_moving_average_ss::~gr_moving_average_ss " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_moving_average_ss::length " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ss::scale " - -Params: (NONE)" - -%feature("docstring") gr_moving_average_ss::set_length_and_scale " - -Params: (length, scale)" - -%feature("docstring") gr_make_moving_average_ss "Creates a moving_average_ss block. - -output is the moving sum of the last N samples, scaled by the scale factor - -max_iter limits how long we go without flushing the accumulator This is necessary to avoid numerical instability for float and complex. - -Params: (length, scale, max_iter)" - -%feature("docstring") gr_mpsk_receiver_cc "This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. - -This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. It works with (D)BPSK, (D)QPSK, and (D)8PSK as tested currently. It should also work for OQPSK and PI/4 DQPSK. - -The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. There are optimized phase error detectors for BPSK and QPSK, but 8PSK is done using a brute-force computation of the constellation points to find the minimum. - -The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: - -G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. - -This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise." - -%feature("docstring") gr_mpsk_receiver_cc::~gr_mpsk_receiver_cc " - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_mpsk_receiver_cc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_mpsk_receiver_cc::mu "(M&M) Returns current value of mu - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::omega "(M&M) Returns current value of omega - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::gain_mu "(M&M) Returns mu gain factor - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::gain_omega "(M&M) Returns omega gain factor - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::set_mu "(M&M) Sets value of mu - -Params: (mu)" - -%feature("docstring") gr_mpsk_receiver_cc::set_omega "(M&M) Sets value of omega and its min and max values - -Params: (omega)" - -%feature("docstring") gr_mpsk_receiver_cc::set_gain_mu "(M&M) Sets value for mu gain factor - -Params: (gain_mu)" - -%feature("docstring") gr_mpsk_receiver_cc::set_gain_omega "(M&M) Sets value for omega gain factor - -Params: (gain_omega)" - -%feature("docstring") gr_mpsk_receiver_cc::alpha "(CL) Returns the value for alpha (the phase gain term) - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::beta "(CL) Returns the value of beta (the frequency gain term) - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::freq "(CL) Returns the current value of the frequency of the NCO in the Costas loop - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::phase "(CL) Returns the current value of the phase of the NCO in the Costal loop - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::set_alpha "(CL) Sets the value for alpha (the phase gain term) - -Params: (alpha)" - -%feature("docstring") gr_mpsk_receiver_cc::set_beta "(CL) Setss the value of beta (the frequency gain term) - -Params: (beta)" - -%feature("docstring") gr_mpsk_receiver_cc::set_freq "(CL) Sets the current value of the frequency of the NCO in the Costas loop - -Params: (freq)" - -%feature("docstring") gr_mpsk_receiver_cc::set_phase "(CL) Setss the current value of the phase of the NCO in the Costal loop - -Params: (phase)" - -%feature("docstring") gr_mpsk_receiver_cc::gr_mpsk_receiver_cc "Constructor to synchronize incoming M-PSK symbols. - -The constructor also chooses which phase detector and decision maker to use in the work loop based on the value of M. - -Params: (M, theta, alpha, beta, fmin, fmax, mu, gain_mu, omega, gain_omega, omega_rel)" - -%feature("docstring") gr_mpsk_receiver_cc::make_constellation " - -Params: (NONE)" - -%feature("docstring") gr_mpsk_receiver_cc::mm_sampler " - -Params: (symbol)" - -%feature("docstring") gr_mpsk_receiver_cc::mm_error_tracking " - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::phase_error_tracking " - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_generic "Phase error detector for MPSK modulations. - -This function determines the phase error for any MPSK signal by creating a set of PSK constellation points and doing a brute-force search to see which point minimizes the Euclidean distance. This point is then used to derotate the sample to the real-axis and a atan (using the fast approximation function) to determine the phase difference between the incoming sample and the real constellation point - -This should be cleaned up and made more efficient. - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_bpsk "Phase error detector for BPSK modulation. - -This function determines the phase error using a simple BPSK phase error detector by multiplying the real and imaginary (the error signal) components together. As the imaginary part goes to 0, so does this error. - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::phase_error_detector_qpsk "Phase error detector for QPSK modulation. - -This function determines the phase error using the limiter approach in a standard 4th order Costas loop - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::decision_generic "Decision maker for a generic MPSK constellation. - -This decision maker is a generic implementation that does a brute-force search for the constellation point that minimizes the error between it and the incoming signal. - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::decision_bpsk "Decision maker for BPSK constellation. - -This decision maker is a simple slicer function that makes a decision on the symbol based on its placement on the real axis of greater than 0 or less than 0; the quadrature component is always 0. - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::decision_qpsk "Decision maker for QPSK constellation. - -This decision maker is a simple slicer function that makes a decision on the symbol based on its placement versus both axes and returns which quadrant the symbol is in. - -Params: (sample)" - -%feature("docstring") gr_mpsk_receiver_cc::__attribute__ "delay line plus some length for overflow protection - -Params: ()" - -%feature("docstring") gr_make_mpsk_receiver_cc "Creates a mpsk_receiver_cc block. - -This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. - -This block takes care of receiving M-PSK modulated signals through phase, frequency, and symbol synchronization. It performs carrier frequency and phase locking as well as symbol timing recovery. It works with (D)BPSK, (D)QPSK, and (D)8PSK as tested currently. It should also work for OQPSK and PI/4 DQPSK. - -The phase and frequency synchronization are based on a Costas loop that finds the error of the incoming signal point compared to its nearest constellation point. The frequency and phase of the NCO are updated according to this error. There are optimized phase error detectors for BPSK and QPSK, but 8PSK is done using a brute-force computation of the constellation points to find the minimum. - -The symbol synchronization is done using a modified Mueller and Muller circuit from the paper: - -G. R. Danesfahani, T.G. Jeans, \"Optimisation of modified Mueller and Muller - algorithm,\" Electronics Letters, Vol. 31, no. 13, 22 June 1995, pp. 1032 - 1033. - -This circuit interpolates the downconverted sample (using the NCO developed by the Costas loop) every mu samples, then it finds the sampling error based on this and the past symbols and the decision made on the samples. Like the phase error detector, there are optimized decision algorithms for BPSK and QPKS, but 8PSK uses another brute force computation against all possible symbols. The modifications to the M&M used here reduce self-noise. - -Params: (M, theta, alpha, beta, fmin, fmax, mu, gain_mu, omega, gain_omega, omega_rel)" - -%feature("docstring") gr_multiply_cc "output = prod (input_0, input_1, ...) - -Multiply across all input streams." - -%feature("docstring") gr_multiply_cc::gr_multiply_cc " - -Params: (vlen)" - -%feature("docstring") gr_multiply_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_cc "Creates a multiply_cc block. - -output = prod (input_0, input_1, ...) - -Multiply across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_multiply_const_cc "output = input * constant" - -%feature("docstring") gr_multiply_const_cc::gr_multiply_const_cc " - -Params: (k)" - -%feature("docstring") gr_multiply_const_cc::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_cc::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_cc "Creates a multiply_const_cc block. - -output = input * constant - -Params: (k)" - -%feature("docstring") gr_multiply_const_ff "output = input * constant" - -%feature("docstring") gr_multiply_const_ff::gr_multiply_const_ff " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ff::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_ff::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_ff "Creates a multiply_const_ff block. - -output = input * constant - -Params: (k)" - -%feature("docstring") gr_multiply_const_ii "output = input * constant" - -%feature("docstring") gr_multiply_const_ii::gr_multiply_const_ii " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ii::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_ii::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_ii "Creates a multiply_const_ii block. - -output = input * constant - -Params: (k)" - -%feature("docstring") gr_multiply_const_ss "output = input * constant" - -%feature("docstring") gr_multiply_const_ss::gr_multiply_const_ss " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ss::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_ss::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_ss "Creates a multiply_const_ss block. - -output = input * constant - -Params: (k)" - -%feature("docstring") gr_multiply_const_vcc "output vector = input vector * constant vector (element-wise)" - -%feature("docstring") gr_multiply_const_vcc::gr_multiply_const_vcc " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vcc::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_vcc::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vcc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_vcc "Creates a multiply_const_vcc block. - -output vector = input vector * constant vector (element-wise) - -Params: (k)" - -%feature("docstring") gr_multiply_const_vff "output vector = input vector * constant vector (element-wise)" - -%feature("docstring") gr_multiply_const_vff::gr_multiply_const_vff " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vff::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_vff::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_vff "Creates a multiply_const_vff block. - -output vector = input vector * constant vector (element-wise) - -Params: (k)" - -%feature("docstring") gr_multiply_const_vii "output vector = input vector * constant vector (element-wise)" - -%feature("docstring") gr_multiply_const_vii::gr_multiply_const_vii " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vii::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_vii::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_vii "Creates a multiply_const_vii block. - -output vector = input vector * constant vector (element-wise) - -Params: (k)" - -%feature("docstring") gr_multiply_const_vss "output vector = input vector * constant vector (element-wise)" - -%feature("docstring") gr_multiply_const_vss::gr_multiply_const_vss " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vss::k " - -Params: (NONE)" - -%feature("docstring") gr_multiply_const_vss::set_k " - -Params: (k)" - -%feature("docstring") gr_multiply_const_vss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_const_vss "Creates a multiply_const_vss block. - -output vector = input vector * constant vector (element-wise) - -Params: (k)" - -%feature("docstring") gr_multiply_ff "output = prod (input_0, input_1, ...) - -Multiply across all input streams." - -%feature("docstring") gr_multiply_ff::gr_multiply_ff " - -Params: (vlen)" - -%feature("docstring") gr_multiply_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_ff "Creates a multiply_ff block. - -output = prod (input_0, input_1, ...) - -Multiply across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_multiply_ii "output = prod (input_0, input_1, ...) - -Multiply across all input streams." - -%feature("docstring") gr_multiply_ii::gr_multiply_ii " - -Params: (vlen)" - -%feature("docstring") gr_multiply_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_ii "Creates a multiply_ii block. - -output = prod (input_0, input_1, ...) - -Multiply across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_multiply_ss "output = prod (input_0, input_1, ...) - -Multiply across all input streams." - -%feature("docstring") gr_multiply_ss::gr_multiply_ss " - -Params: (vlen)" - -%feature("docstring") gr_multiply_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_multiply_ss "Creates a multiply_ss block. - -output = prod (input_0, input_1, ...) - -Multiply across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_mute_cc "output = input or zero if muted." - -%feature("docstring") gr_mute_cc::gr_mute_cc " - -Params: (mute)" - -%feature("docstring") gr_mute_cc::mute " - -Params: (NONE)" - -%feature("docstring") gr_mute_cc::set_mute " - -Params: (mute)" - -%feature("docstring") gr_mute_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_mute_cc "Creates a mute_cc block. - -output = input or zero if muted. - -Params: (mute)" - -%feature("docstring") gr_mute_ff "output = input or zero if muted." - -%feature("docstring") gr_mute_ff::gr_mute_ff " - -Params: (mute)" - -%feature("docstring") gr_mute_ff::mute " - -Params: (NONE)" - -%feature("docstring") gr_mute_ff::set_mute " - -Params: (mute)" - -%feature("docstring") gr_mute_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_mute_ff "Creates a mute_ff block. - -output = input or zero if muted. - -Params: (mute)" - -%feature("docstring") gr_mute_ii "output = input or zero if muted." - -%feature("docstring") gr_mute_ii::gr_mute_ii " - -Params: (mute)" - -%feature("docstring") gr_mute_ii::mute " - -Params: (NONE)" - -%feature("docstring") gr_mute_ii::set_mute " - -Params: (mute)" - -%feature("docstring") gr_mute_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_mute_ii "Creates a mute_ii block. - -output = input or zero if muted. - -Params: (mute)" - -%feature("docstring") gr_mute_ss "output = input or zero if muted." - -%feature("docstring") gr_mute_ss::gr_mute_ss " - -Params: (mute)" - -%feature("docstring") gr_mute_ss::mute " - -Params: (NONE)" - -%feature("docstring") gr_mute_ss::set_mute " - -Params: (mute)" - -%feature("docstring") gr_mute_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_mute_ss "Creates a mute_ss block. - -output = input or zero if muted. - -Params: (mute)" - -%feature("docstring") gr_nlog10_ff "output = n*log10(input) + k" - -%feature("docstring") gr_nlog10_ff::gr_nlog10_ff " - -Params: (n, vlen, k)" - -%feature("docstring") gr_nlog10_ff::~gr_nlog10_ff " - -Params: (NONE)" - -%feature("docstring") gr_nlog10_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_nlog10_ff "Creates a nlog10_ff block. - -output = n*log10(input) + k - -Params: (n, vlen, k)" - -%feature("docstring") gr_noise_source_c "random number source" - -%feature("docstring") gr_noise_source_c::gr_noise_source_c " - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_c::set_type " - -Params: (type)" - -%feature("docstring") gr_noise_source_c::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_noise_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_noise_source_c "Creates a noise_source_c block. - -random number source - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_f "random number source" - -%feature("docstring") gr_noise_source_f::gr_noise_source_f " - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_f::set_type " - -Params: (type)" - -%feature("docstring") gr_noise_source_f::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_noise_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_noise_source_f "Creates a noise_source_f block. - -random number source - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_i "random number source" - -%feature("docstring") gr_noise_source_i::gr_noise_source_i " - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_i::set_type " - -Params: (type)" - -%feature("docstring") gr_noise_source_i::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_noise_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_noise_source_i "Creates a noise_source_i block. - -random number source - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_s "random number source" - -%feature("docstring") gr_noise_source_s::gr_noise_source_s " - -Params: (type, ampl, seed)" - -%feature("docstring") gr_noise_source_s::set_type " - -Params: (type)" - -%feature("docstring") gr_noise_source_s::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_noise_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_noise_source_s "Creates a noise_source_s block. - -random number source - -Params: (type, ampl, seed)" - -%feature("docstring") gr_nonrecursive_convolutional_encoder_bb "Peforms nonrecursive convolutional encoding. ??? - -More detailed description goes here." - -%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::gr_nonrecursive_convolutional_encoder_bb "Constructor to perform nonrecursive convolutional encoding. - -Params: (generator_coeffs)" - -%feature("docstring") gr_nonrecursive_convolutional_encoder_bb::generate_partab " - -Params: (NONE)" - -%feature("docstring") gr_make_nonrecursive_convolutional_encoder_bb "Creates a nonrecursive_convolutional_encoder_bb block. - -Peforms nonrecursive convolutional encoding. ??? - -More detailed description goes here. - -Params: (generator_coeffs)" - -%feature("docstring") gr_nop "Does nothing. Used for testing only." - -%feature("docstring") gr_nop::gr_nop " - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_nop::count_received_msgs " - -Params: (msg)" - -%feature("docstring") gr_nop::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_nop::nmsgs_received " - -Params: (NONE)" - -%feature("docstring") gr_make_nop "Creates a nop block. - -Does nothing. Used for testing only. - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_not_bb "output = ~input_0 - -bitwise boolean not across input stream." - -%feature("docstring") gr_not_bb::gr_not_bb " - -Params: (NONE)" - -%feature("docstring") gr_not_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_not_bb "Creates a not_bb block. - -output = ~input_0 - -bitwise boolean not across input stream. - -Params: (NONE)" - -%feature("docstring") gr_not_ii "output = ~input_0 - -bitwise boolean not across input stream." - -%feature("docstring") gr_not_ii::gr_not_ii " - -Params: (NONE)" - -%feature("docstring") gr_not_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_not_ii "Creates a not_ii block. - -output = ~input_0 - -bitwise boolean not across input stream. - -Params: (NONE)" - -%feature("docstring") gr_not_ss "output = ~input_0 - -bitwise boolean not across input stream." - -%feature("docstring") gr_not_ss::gr_not_ss " - -Params: (NONE)" - -%feature("docstring") gr_not_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_not_ss "Creates a not_ss block. - -output = ~input_0 - -bitwise boolean not across input stream. - -Params: (NONE)" - -%feature("docstring") gr_null_sink "Bit bucket." - -%feature("docstring") gr_null_sink::gr_null_sink " - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_null_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_null_sink "Creates a null_sink block. - -Bit bucket. - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_null_source "A source of zeros." - -%feature("docstring") gr_null_source::gr_null_source " - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_null_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_null_source "Creates a null_source block. - -A source of zeros. - -Params: (sizeof_stream_item)" - -%feature("docstring") gr_ofdm_bpsk_demapper "take a vector of complex constellation points in from an FFT and demodulate to a stream of bits. Simple BPSK version." - -%feature("docstring") gr_ofdm_bpsk_demapper::gr_ofdm_bpsk_demapper " - -Params: (occupied_carriers)" - -%feature("docstring") gr_ofdm_bpsk_demapper::slicer " - -Params: (x)" - -%feature("docstring") gr_ofdm_bpsk_demapper::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_ofdm_bpsk_demapper::~gr_ofdm_bpsk_demapper " - -Params: ()" - -%feature("docstring") gr_ofdm_bpsk_demapper::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_bpsk_demapper "Creates a ofdm_bpsk_demapper block. - -take a vector of complex constellation points in from an FFT and demodulate to a stream of bits. Simple BPSK version. - -Params: (occupied_carriers)" - -%feature("docstring") gr_ofdm_cyclic_prefixer "adds a cyclic prefix vector to an input size long ofdm symbol(vector) and converts vector to a stream output_size long." - -%feature("docstring") gr_ofdm_cyclic_prefixer::gr_ofdm_cyclic_prefixer " - -Params: (input_size, output_size)" - -%feature("docstring") gr_ofdm_cyclic_prefixer::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_cyclic_prefixer "Creates a ofdm_cyclic_prefixer block. - -adds a cyclic prefix vector to an input size long ofdm symbol(vector) and converts vector to a stream output_size long. - -Params: (input_size, output_size)" - -%feature("docstring") gr_ofdm_demapper_vcb "take a stream of vectors in from an FFT and demodulate to a stream of bits. Abstract class must be subclassed with specific mapping." - -%feature("docstring") gr_ofdm_demapper_vcb::gr_ofdm_demapper_vcb " - -Params: (bits_per_symbol, vlen)" - -%feature("docstring") gr_ofdm_demapper_vcb::~gr_ofdm_demapper_vcb " - -Params: ()" - -%feature("docstring") gr_make_ofdm_demapper_vcb "Creates a ofdm_demapper_vcb block. - -take a stream of vectors in from an FFT and demodulate to a stream of bits. Abstract class must be subclassed with specific mapping. - -Params: (bits_per_symbol, vlen)" - -%feature("docstring") gr_ofdm_frame_acquisition "take a vector of complex constellation points in from an FFT and performs a correlation and equalization. - -This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin. - -It then uses one of those known symbols to estimate the channel response over all subcarriers and does a simple 1-tap equalization on all subcarriers. This corrects for the phase and amplitude distortion caused by the channel." - -%feature("docstring") gr_ofdm_frame_acquisition::gr_ofdm_frame_acquisition " - -Params: (occupied_carriers, fft_length, cplen, known_symbol, max_fft_shift_len)" - -%feature("docstring") gr_ofdm_frame_acquisition::slicer " - -Params: (x)" - -%feature("docstring") gr_ofdm_frame_acquisition::correlate " - -Params: (symbol, zeros_on_left)" - -%feature("docstring") gr_ofdm_frame_acquisition::calculate_equalizer " - -Params: (symbol, zeros_on_left)" - -%feature("docstring") gr_ofdm_frame_acquisition::coarse_freq_comp " - -Params: (freq_delta, count)" - -%feature("docstring") gr_ofdm_frame_acquisition::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_ofdm_frame_acquisition::snr "Return an estimate of the SNR of the channel. - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_acquisition::~gr_ofdm_frame_acquisition " - -Params: ()" - -%feature("docstring") gr_ofdm_frame_acquisition::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_frame_acquisition "Creates a ofdm_frame_acquisition block. - -take a vector of complex constellation points in from an FFT and performs a correlation and equalization. - -This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin. - -It then uses one of those known symbols to estimate the channel response over all subcarriers and does a simple 1-tap equalization on all subcarriers. This corrects for the phase and amplitude distortion caused by the channel. - -Params: (occupied_carriers, fft_length, cplen, known_symbol, max_fft_shift_len)" - -%feature("docstring") gr_ofdm_frame_sink "Takes an OFDM symbol in, demaps it into bits of 0's and 1's, packs them into packets, and sends to to a message queue sink. - -NOTE: The mod input parameter simply chooses a pre-defined demapper/slicer. Eventually, we want to be able to pass in a reference to an object to do the demapping and slicing for a given modulation type." - -%feature("docstring") gr_ofdm_frame_sink::gr_ofdm_frame_sink " - -Params: (sym_position, sym_value_out, target_queue, occupied_tones, phase_gain, freq_gain)" - -%feature("docstring") gr_ofdm_frame_sink::enter_search " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_sink::enter_have_sync " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_sink::enter_have_header " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_sink::header_ok " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_sink::slicer " - -Params: (x)" - -%feature("docstring") gr_ofdm_frame_sink::demapper " - -Params: (in, out)" - -%feature("docstring") gr_ofdm_frame_sink::set_sym_value_out " - -Params: (sym_position, sym_value_out)" - -%feature("docstring") gr_ofdm_frame_sink::~gr_ofdm_frame_sink " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_frame_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_frame_sink "Creates a ofdm_frame_sink block. - -Takes an OFDM symbol in, demaps it into bits of 0's and 1's, packs them into packets, and sends to to a message queue sink. - -NOTE: The mod input parameter simply chooses a pre-defined demapper/slicer. Eventually, we want to be able to pass in a reference to an object to do the demapping and slicing for a given modulation type. - -Params: (sym_position, sym_value_out, target_queue, occupied_tones, phase_gain, freq_gain)" - -%feature("docstring") gr_ofdm_insert_preamble "insert \"pre-modulated\" preamble symbols before each payload." - -%feature("docstring") gr_ofdm_insert_preamble::gr_ofdm_insert_preamble " - -Params: (fft_length, preamble)" - -%feature("docstring") gr_ofdm_insert_preamble::enter_idle " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_insert_preamble::enter_preamble " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_insert_preamble::enter_first_payload " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_insert_preamble::enter_payload " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_insert_preamble::~gr_ofdm_insert_preamble " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_insert_preamble::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_insert_preamble "Creates a ofdm_insert_preamble block. - -insert \"pre-modulated\" preamble symbols before each payload. - -Params: (fft_length, preamble)" - -%feature("docstring") gr_ofdm_mapper_bcv "take a stream of bytes in and map to a vector of complex constellation points suitable for IFFT input to be used in an ofdm modulator. Abstract class must be subclassed with specific mapping." - -%feature("docstring") gr_ofdm_mapper_bcv::gr_ofdm_mapper_bcv " - -Params: (constellation, msgq_limit, occupied_carriers, fft_length)" - -%feature("docstring") gr_ofdm_mapper_bcv::randsym " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_mapper_bcv::~gr_ofdm_mapper_bcv " - -Params: ()" - -%feature("docstring") gr_ofdm_mapper_bcv::msgq " - -Params: (NONE)" - -%feature("docstring") gr_ofdm_mapper_bcv::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_mapper_bcv "Creates a ofdm_mapper_bcv block. - -take a stream of bytes in and map to a vector of complex constellation points suitable for IFFT input to be used in an ofdm modulator. Abstract class must be subclassed with specific mapping. - -Params: (constellation, msgq_limit, occupied_carriers, fft_length)" - -%feature("docstring") gr_ofdm_sampler "does the rest of the OFDM stuff" - -%feature("docstring") gr_ofdm_sampler::gr_ofdm_sampler " - -Params: (fft_length, symbol_length, timeout)" - -%feature("docstring") gr_ofdm_sampler::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_ofdm_sampler::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_ofdm_sampler "Creates a ofdm_sampler block. - -does the rest of the OFDM stuff - -Params: (fft_length, symbol_length, timeout)" - -%feature("docstring") gr_or_bb "output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams." - -%feature("docstring") gr_or_bb::gr_or_bb " - -Params: (NONE)" - -%feature("docstring") gr_or_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_or_bb "Creates a or_bb block. - -output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_or_ii "output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams." - -%feature("docstring") gr_or_ii::gr_or_ii " - -Params: (NONE)" - -%feature("docstring") gr_or_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_or_ii "Creates a or_ii block. - -output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_or_ss "output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams." - -%feature("docstring") gr_or_ss::gr_or_ss " - -Params: (NONE)" - -%feature("docstring") gr_or_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_or_ss "Creates a or_ss block. - -output = input_0 | input_1 | , ... | input_N) - -bitwise boolean or across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_f "Building block for python oscilloscope module. - -Accepts multiple float streams." - -%feature("docstring") gr_oscope_sink_f::gr_oscope_sink_f " - -Params: (sampling_rate, msgq)" - -%feature("docstring") gr_oscope_sink_f::~gr_oscope_sink_f " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_oscope_sink_f::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_oscope_sink_f "Creates a oscope_sink_f block. - -Building block for python oscilloscope module. - -Accepts multiple float streams. - -Params: (sampling_rate, msgq)" - -%feature("docstring") gr_pa_2x2_phase_combiner "pa_2x2 phase combiner - -Anntenas are arranged like this: - -2 3 0 1 - -dx and dy are lambda/2." - -%feature("docstring") gr_pa_2x2_phase_combiner::gr_pa_2x2_phase_combiner " - -Params: (NONE)" - -%feature("docstring") gr_pa_2x2_phase_combiner::theta " - -Params: (NONE)" - -%feature("docstring") gr_pa_2x2_phase_combiner::set_theta " - -Params: (theta)" - -%feature("docstring") gr_pa_2x2_phase_combiner::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_pa_2x2_phase_combiner "Creates a pa_2x2_phase_combiner block. - -pa_2x2 phase combiner - -Anntenas are arranged like this: - -2 3 0 1 - -dx and dy are lambda/2. - -Params: (NONE)" - -%feature("docstring") gr_packed_to_unpacked_bb "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of unsigned char; output: stream of unsigned char. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_packed_to_unpacked_bb::gr_packed_to_unpacked_bb " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packed_to_unpacked_bb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_packed_to_unpacked_bb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_packed_to_unpacked_bb::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_packed_to_unpacked_bb "Creates a packed_to_unpacked_bb block. - -Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of unsigned char; output: stream of unsigned char. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packed_to_unpacked_ii "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of int; output: stream of int. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_packed_to_unpacked_ii::gr_packed_to_unpacked_ii " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packed_to_unpacked_ii::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_packed_to_unpacked_ii::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_packed_to_unpacked_ii::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_packed_to_unpacked_ii "Creates a packed_to_unpacked_ii block. - -Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of int; output: stream of int. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packed_to_unpacked_ss "Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of short; output: stream of short. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_packed_to_unpacked_ss::gr_packed_to_unpacked_ss " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packed_to_unpacked_ss::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_packed_to_unpacked_ss::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_packed_to_unpacked_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_packed_to_unpacked_ss "Creates a packed_to_unpacked_ss block. - -Convert a stream of packed bytes or shorts to stream of unpacked bytes or shorts. - -input: stream of short; output: stream of short. - -This is the inverse of gr_unpacked_to_packed_XX. - -The bits in the bytes or shorts input stream are grouped into chunks of bits and each resulting chunk is written right- justified to the output stream of bytes or shorts. All b or 16 bits of the each input bytes or short are processed. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX_ followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_packet_sink "process received bits looking for packet sync, header, and process bits into packet" - -%feature("docstring") gr_packet_sink::gr_packet_sink " - -Params: (sync_vector, target_queue, threshold)" - -%feature("docstring") gr_packet_sink::enter_search " - -Params: (NONE)" - -%feature("docstring") gr_packet_sink::enter_have_sync " - -Params: (NONE)" - -%feature("docstring") gr_packet_sink::enter_have_header " - -Params: (payload_len)" - -%feature("docstring") gr_packet_sink::slice " - -Params: (x)" - -%feature("docstring") gr_packet_sink::header_ok " - -Params: (NONE)" - -%feature("docstring") gr_packet_sink::header_payload_len " - -Params: (NONE)" - -%feature("docstring") gr_packet_sink::~gr_packet_sink " - -Params: (NONE)" - -%feature("docstring") gr_packet_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_packet_sink::carrier_sensed "return true if we detect carrier - -Params: (NONE)" - -%feature("docstring") gr_make_packet_sink "Creates a packet_sink block. - -process received bits looking for packet sync, header, and process bits into packet - -Params: (sync_vector, target_queue, threshold)" - -%feature("docstring") gr_peak_detector2_fb "Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. A separate debug output may be connected, to view the internal EWMA described below." - -%feature("docstring") gr_peak_detector2_fb::gr_peak_detector2_fb " - -Params: (threshold_factor_rise, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector2_fb::set_threshold_factor_rise "Set the threshold factor value for the rise time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector2_fb::set_look_ahead "Set the look-ahead factor. - -Params: (look)" - -%feature("docstring") gr_peak_detector2_fb::set_alpha "Set the running average alpha. - -Params: (alpha)" - -%feature("docstring") gr_peak_detector2_fb::threshold_factor_rise "Get the threshold factor value for the rise time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector2_fb::look_ahead "Get the look-ahead factor value. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector2_fb::alpha "Get the alpha value of the running average. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector2_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_peak_detector2_fb "Creates a peak_detector2_fb block. - -Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. A separate debug output may be connected, to view the internal EWMA described below. - -Params: (threshold_factor_rise, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_fb "Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's." - -%feature("docstring") gr_peak_detector_fb::gr_peak_detector_fb " - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_fb::set_threshold_factor_rise "Set the threshold factor value for the rise time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_fb::set_threshold_factor_fall "Set the threshold factor value for the fall time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_fb::set_look_ahead "Set the look-ahead factor. - -Params: (look)" - -%feature("docstring") gr_peak_detector_fb::set_alpha "Set the running average alpha. - -Params: (alpha)" - -%feature("docstring") gr_peak_detector_fb::threshold_factor_rise "Get the threshold factor value for the rise time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_fb::threshold_factor_fall "Get the threshold factor value for the fall time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_fb::look_ahead "Get the look-ahead factor value. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_fb::alpha "Get the alpha value of the running average. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_peak_detector_fb "Creates a peak_detector_fb block. - -Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_ib "Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's." - -%feature("docstring") gr_peak_detector_ib::gr_peak_detector_ib " - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_ib::set_threshold_factor_rise "Set the threshold factor value for the rise time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_ib::set_threshold_factor_fall "Set the threshold factor value for the fall time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_ib::set_look_ahead "Set the look-ahead factor. - -Params: (look)" - -%feature("docstring") gr_peak_detector_ib::set_alpha "Set the running average alpha. - -Params: (alpha)" - -%feature("docstring") gr_peak_detector_ib::threshold_factor_rise "Get the threshold factor value for the rise time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_ib::threshold_factor_fall "Get the threshold factor value for the fall time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_ib::look_ahead "Get the look-ahead factor value. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_ib::alpha "Get the alpha value of the running average. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_ib::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_peak_detector_ib "Creates a peak_detector_ib block. - -Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_sb "Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's." - -%feature("docstring") gr_peak_detector_sb::gr_peak_detector_sb " - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_peak_detector_sb::set_threshold_factor_rise "Set the threshold factor value for the rise time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_sb::set_threshold_factor_fall "Set the threshold factor value for the fall time. - -Params: (thr)" - -%feature("docstring") gr_peak_detector_sb::set_look_ahead "Set the look-ahead factor. - -Params: (look)" - -%feature("docstring") gr_peak_detector_sb::set_alpha "Set the running average alpha. - -Params: (alpha)" - -%feature("docstring") gr_peak_detector_sb::threshold_factor_rise "Get the threshold factor value for the rise time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_sb::threshold_factor_fall "Get the threshold factor value for the fall time. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_sb::look_ahead "Get the look-ahead factor value. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_sb::alpha "Get the alpha value of the running average. - -Params: (NONE)" - -%feature("docstring") gr_peak_detector_sb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_peak_detector_sb "Creates a peak_detector_sb block. - -Detect the peak of a signal - -If a peak is detected, this block outputs a 1, or it outputs 0's. - -Params: (threshold_factor_rise, threshold_factor_fall, look_ahead, alpha)" - -%feature("docstring") gr_pfb_arb_resampler_ccf "Polyphase filterbank arbitrary resampler with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs arbitrary resampling. The resampling rate can be any real number . The resampling is done by constructing filters where is the interpolation rate. We then calculate where . - -Using and , we can perform rational resampling where is a rational number close to the input rate where we have filters and we cycle through them as a polyphase filterbank with a stride of so that . - -To get the arbitrary rate, we want to interpolate between two points. For each value out, we take an output from the current filter, , and the next filter and then linearly interpolate between the two based on the real resampling rate we want. - -The linear interpolation only provides us with an approximation to the real sampling rate specified. The error is a quantization error between the two filters we used as our interpolation points. To this end, the number of filters, , used determines the quantization error; the larger , the smaller the noise. You can design for a specified noise floor by setting the filter size (parameters ). The size defaults to 32 filters, which is about as good as most implementations need. - -The trick with designing this filter is in how to specify the taps of the prototype filter. Like the PFB interpolator, the taps are specified using the interpolated filter rate. In this case, that rate is the input sample rate multiplied by the number of filters in the filterbank, which is also the interpolation rate. All other values should be relative to this rate. - -For example, for a 32-filter arbitrary resampler and using the GNU Radio's firdes utility to build the filter, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as the interpolation rate (). - - - -The theory behind this block can be found in Chapter 7.5 of the following book." - -%feature("docstring") gr_pfb_arb_resampler_ccf::gr_pfb_arb_resampler_ccf "Build the polyphase filterbank arbitray resampler. - -Params: (rate, taps, filter_size)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::create_diff_taps " - -Params: (newtaps, difftaps)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::create_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (newtaps, ourtaps, ourfilter)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::~gr_pfb_arb_resampler_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::set_rate " - -Params: (rate)" - -%feature("docstring") gr_pfb_arb_resampler_ccf::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_arb_resampler_ccf "Creates a pfb_arb_resampler_ccf block. - -Polyphase filterbank arbitrary resampler with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs arbitrary resampling. The resampling rate can be any real number . The resampling is done by constructing filters where is the interpolation rate. We then calculate where . - -Using and , we can perform rational resampling where is a rational number close to the input rate where we have filters and we cycle through them as a polyphase filterbank with a stride of so that . - -To get the arbitrary rate, we want to interpolate between two points. For each value out, we take an output from the current filter, , and the next filter and then linearly interpolate between the two based on the real resampling rate we want. - -The linear interpolation only provides us with an approximation to the real sampling rate specified. The error is a quantization error between the two filters we used as our interpolation points. To this end, the number of filters, , used determines the quantization error; the larger , the smaller the noise. You can design for a specified noise floor by setting the filter size (parameters ). The size defaults to 32 filters, which is about as good as most implementations need. - -The trick with designing this filter is in how to specify the taps of the prototype filter. Like the PFB interpolator, the taps are specified using the interpolated filter rate. In this case, that rate is the input sample rate multiplied by the number of filters in the filterbank, which is also the interpolation rate. All other values should be relative to this rate. - -For example, for a 32-filter arbitrary resampler and using the GNU Radio's firdes utility to build the filter, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as the interpolation rate (). - - - -The theory behind this block can be found in Chapter 7.5 of the following book. - -Params: (rate, taps, filter_size)" - -%feature("docstring") gr_pfb_channelizer_ccf "Polyphase filterbank channelizer with gr_complex input, gr_complex output and float taps. - -This block takes in complex inputs and channelizes it to channels of equal bandwidth. Each of the resulting channels is decimated to the new rate that is the input sampling rate divided by the number of channels, . - -The PFB channelizer code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -Each filter operates using the gr_fir filter classs of GNU Radio, which takes the input stream at and performs the inner product calculation to where is the number of filter taps. To efficiently handle this in the GNU Radio structure, each filter input must come from its own input stream. So the channelizer must be provided with streams where the input stream has been deinterleaved. This is most easily done using the gr_stream_to_streams block. - -The output is then produced as a vector, where index in the vector is the next sample from the th channel. This is most easily handled by sending the output to a gr_vector_to_streams block to handle the conversion and passing streams out. - -The input and output formatting is done using a hier_block2 called pfb_channelizer_ccf. This can take in a single stream and outputs streams based on the behavior described above. - -The filter's taps should be based on the input sampling rate. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. - - - -The filter output can also be overs ampled. The over sampling rate is the ratio of the the actual output sampling rate to the normal output sampling rate. It must be rationally related to the number of channels as N/i for i in [1,N], which gives an outputsample rate of [fs/N, fs] where fs is the input sample rate and N is the number of channels. - -For example, for 6 channels with fs = 6000 Hz, the normal rate is 6000/6 = 1000 Hz. Allowable oversampling rates are 6/6, 6/5, 6/4, 6/3, 6/2, and 6/1 where the output sample rate of a 6/1 oversample ratio is 6000 Hz, or 6 times the normal 1000 Hz. A rate of 6/5 = 1.2, so the output rate would be 1200 Hz. - -The theory behind this block can be found in Chapter 6 of the following book." - -%feature("docstring") gr_pfb_channelizer_ccf::gr_pfb_channelizer_ccf "Build the polyphase filterbank decimator. - -Params: (numchans, taps, oversample_rate)" - -%feature("docstring") gr_pfb_channelizer_ccf::~gr_pfb_channelizer_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_channelizer_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps)" - -%feature("docstring") gr_pfb_channelizer_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_channelizer_ccf::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_channelizer_ccf "Creates a pfb_channelizer_ccf block. - -Polyphase filterbank channelizer with gr_complex input, gr_complex output and float taps. - -This block takes in complex inputs and channelizes it to channels of equal bandwidth. Each of the resulting channels is decimated to the new rate that is the input sampling rate divided by the number of channels, . - -The PFB channelizer code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -Each filter operates using the gr_fir filter classs of GNU Radio, which takes the input stream at and performs the inner product calculation to where is the number of filter taps. To efficiently handle this in the GNU Radio structure, each filter input must come from its own input stream. So the channelizer must be provided with streams where the input stream has been deinterleaved. This is most easily done using the gr_stream_to_streams block. - -The output is then produced as a vector, where index in the vector is the next sample from the th channel. This is most easily handled by sending the output to a gr_vector_to_streams block to handle the conversion and passing streams out. - -The input and output formatting is done using a hier_block2 called pfb_channelizer_ccf. This can take in a single stream and outputs streams based on the behavior described above. - -The filter's taps should be based on the input sampling rate. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. - - - -The filter output can also be overs ampled. The over sampling rate is the ratio of the the actual output sampling rate to the normal output sampling rate. It must be rationally related to the number of channels as N/i for i in [1,N], which gives an outputsample rate of [fs/N, fs] where fs is the input sample rate and N is the number of channels. - -For example, for 6 channels with fs = 6000 Hz, the normal rate is 6000/6 = 1000 Hz. Allowable oversampling rates are 6/6, 6/5, 6/4, 6/3, 6/2, and 6/1 where the output sample rate of a 6/1 oversample ratio is 6000 Hz, or 6 times the normal 1000 Hz. A rate of 6/5 = 1.2, so the output rate would be 1200 Hz. - -The theory behind this block can be found in Chapter 6 of the following book. - -Params: (numchans, taps, oversample_rate)" - -%feature("docstring") gr_pfb_clock_sync_ccf "Timing synchronizer using polyphase filterbanks. - -This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. - -This approach works by setting up two filterbanks; one filterbank contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. - -If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. - -The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. - -The clock sync block needs to know the number of samples per symbol (sps), because it only returns a single point representing the symbol. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. - -The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. - -The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. - -The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal." - -%feature("docstring") gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf "Build the polyphase filterbank timing synchronizer. - -Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" - -%feature("docstring") gr_pfb_clock_sync_ccf::create_diff_taps " - -Params: (newtaps, difftaps)" - -%feature("docstring") gr_pfb_clock_sync_ccf::~gr_pfb_clock_sync_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps, ourtaps, ourfilter)" - -%feature("docstring") gr_pfb_clock_sync_ccf::channel_taps "Returns the taps of the matched filter - -Params: (channel)" - -%feature("docstring") gr_pfb_clock_sync_ccf::diff_channel_taps "Returns the taps in the derivative filter - -Params: (channel)" - -%feature("docstring") gr_pfb_clock_sync_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_ccf::print_diff_taps "Print all of the filterbank taps of the derivative filter to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_ccf::set_alpha "Set the gain value alpha for the control loop - -Params: (alpha)" - -%feature("docstring") gr_pfb_clock_sync_ccf::set_beta "Set the gain value beta for the control loop - -Params: (beta)" - -%feature("docstring") gr_pfb_clock_sync_ccf::set_max_rate_deviation "Set the maximum deviation from 0 d_rate can have - -Params: (m)" - -%feature("docstring") gr_pfb_clock_sync_ccf::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_pfb_clock_sync_ccf::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_clock_sync_ccf "Creates a pfb_clock_sync_ccf block. - -Timing synchronizer using polyphase filterbanks. - -This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. - -This approach works by setting up two filterbanks; one filterbank contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. - -If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. - -The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. - -The clock sync block needs to know the number of samples per symbol (sps), because it only returns a single point representing the symbol. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. - -The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. - -The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. - -The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal. - -Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" - -%feature("docstring") gr_pfb_clock_sync_fff "Timing synchronizer using polyphase filterbanks. - -This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. - -This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. - -If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. - -The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. - -The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. - -The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. - -The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. - -The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal." - -%feature("docstring") gr_pfb_clock_sync_fff::gr_pfb_clock_sync_fff "Build the polyphase filterbank timing synchronizer. - -Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" - -%feature("docstring") gr_pfb_clock_sync_fff::create_diff_taps " - -Params: (newtaps, difftaps)" - -%feature("docstring") gr_pfb_clock_sync_fff::~gr_pfb_clock_sync_fff " - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_fff::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps, ourtaps, ourfilter)" - -%feature("docstring") gr_pfb_clock_sync_fff::channel_taps "Returns the taps of the matched filter - -Params: (channel)" - -%feature("docstring") gr_pfb_clock_sync_fff::diff_channel_taps "Returns the taps in the derivative filter - -Params: (channel)" - -%feature("docstring") gr_pfb_clock_sync_fff::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_fff::print_diff_taps "Print all of the filterbank taps of the derivative filter to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_clock_sync_fff::set_alpha "Set the gain value alpha for the control loop - -Params: (alpha)" - -%feature("docstring") gr_pfb_clock_sync_fff::set_beta "Set the gain value beta for the control loop - -Params: (beta)" - -%feature("docstring") gr_pfb_clock_sync_fff::set_max_rate_deviation "Set the maximum deviation from 0 d_rate can have - -Params: (m)" - -%feature("docstring") gr_pfb_clock_sync_fff::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_pfb_clock_sync_fff::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_clock_sync_fff "Creates a pfb_clock_sync_fff block. - -Timing synchronizer using polyphase filterbanks. - -This block performs timing synchronization for PAM signals by minimizing the derivative of the filtered signal, which in turn maximizes the SNR and minimizes ISI. - -This approach works by setting up two filterbanks; one filterbanke contains the signal's pulse shaping matched filter (such as a root raised cosine filter), where each branch of the filterbank contains a different phase of the filter. The second filterbank contains the derivatives of the filters in the first filterbank. Thinking of this in the time domain, the first filterbank contains filters that have a sinc shape to them. We want to align the output signal to be sampled at exactly the peak of the sinc shape. The derivative of the sinc contains a zero at the maximum point of the sinc (sinc(0) = 1, sinc(0)' = 0). Furthermore, the region around the zero point is relatively linear. We make use of this fact to generate the error signal. - -If the signal out of the derivative filters is d_i[n] for the ith filter, and the output of the matched filter is x_i[n], we calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} + Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error in the real and imaginary parts. There are two reasons we multiply by the signal itself. First, if the symbol could be positive or negative going, but we want the error term to always tell us to go in the same direction depending on which side of the zero point we are on. The sign of x_i[n] adjusts the error term to do this. Second, the magnitude of x_i[n] scales the error term depending on the symbol's amplitude, so larger signals give us a stronger error term because we have more confidence in that symbol's value. Using the magnitude of x_i[n] instead of just the sign is especially good for signals with low SNR. - -The error signal, e[n], gives us a value proportional to how far away from the zero point we are in the derivative signal. We want to drive this value to zero, so we set up a second order loop. We have two variables for this loop; d_k is the filter number in the filterbank we are on and d_rate is the rate which we travel through the filters in the steady state. That is, due to the natural clock differences between the transmitter and receiver, d_rate represents that difference and would traverse the filter phase paths to keep the receiver locked. Thinking of this as a second-order PLL, the d_rate is the frequency and d_k is the phase. So we update d_rate and d_k using the standard loop equations based on two error signals, d_alpha and d_beta. We have these two values set based on each other for a critically damped system, so in the block constructor, we just ask for \"gain,\" which is d_alpha while d_beta is equal to (gain^2)/4. - -The clock sync block needs to know the number of samples per second (sps), because it only returns a single point representing the sample. The sps can be any positive real number and does not need to be an integer. The filter taps must also be specified. The taps are generated by first conceiving of the prototype filter that would be the signal's matched filter. Then interpolate this by the number of filters in the filterbank. These are then distributed among all of the filters. So if the prototype filter was to have 45 taps in it, then each path of the filterbank will also have 45 taps. This is easily done by building the filter with the sample rate multiplied by the number of filters to use. - -The number of filters can also be set and defaults to 32. With 32 filters, you get a good enough resolution in the phase to produce very small, almost unnoticeable, ISI. Going to 64 filters can reduce this more, but after that there is very little gained for the extra complexity. - -The initial phase is another settable parameter and refers to the filter path the algorithm initially looks at (i.e., d_k starts at init_phase). This value defaults to zero, but it might be useful to start at a different phase offset, such as the mid- point of the filters. - -The final parameter is the max_rate_devitation, which defaults to 1.5. This is how far we allow d_rate to swing, positive or negative, from 0. Constraining the rate can help keep the algorithm from walking too far away to lock during times when there is no signal. - -Params: (sps, gain, taps, filter_size, init_phase, max_rate_deviation)" - -%feature("docstring") gr_pfb_decimator_ccf "Polyphase filterbank bandpass decimator with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs interger down- sampling (decimation) with a polyphase filterbank. The first input is the integer specifying how much to decimate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The third input specifies the channel to extract. By default, the zeroth channel is used, which is the baseband channel (first Nyquist zone). - -The parameter specifies which channel to use since this class is capable of bandpass decimation. Given a complex input stream at a sampling rate of and a decimation rate of , the input frequency domain is split into channels that represent the Nyquist zones. Using the polyphase filterbank, we can select any one of these channels to decimate. - -The output signal will be the basebanded and decimated signal from that channel. This concept is very similar to the PFB channelizer (see gr_pfb_channelizer_ccf) where only a single channel is extracted at a time. - -The filter's taps should be based on the sampling rate before decimation. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. - - - -The PFB decimator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -The theory behind this block can be found in Chapter 6 of the following book." - -%feature("docstring") gr_pfb_decimator_ccf::gr_pfb_decimator_ccf "Build the polyphase filterbank decimator. - -Params: (decim, taps, channel)" - -%feature("docstring") gr_pfb_decimator_ccf::~gr_pfb_decimator_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_decimator_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps)" - -%feature("docstring") gr_pfb_decimator_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_decimator_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_decimator_ccf "Creates a pfb_decimator_ccf block. - -Polyphase filterbank bandpass decimator with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs interger down- sampling (decimation) with a polyphase filterbank. The first input is the integer specifying how much to decimate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. The third input specifies the channel to extract. By default, the zeroth channel is used, which is the baseband channel (first Nyquist zone). - -The parameter specifies which channel to use since this class is capable of bandpass decimation. Given a complex input stream at a sampling rate of and a decimation rate of , the input frequency domain is split into channels that represent the Nyquist zones. Using the polyphase filterbank, we can select any one of these channels to decimate. - -The output signal will be the basebanded and decimated signal from that channel. This concept is very similar to the PFB channelizer (see gr_pfb_channelizer_ccf) where only a single channel is extracted at a time. - -The filter's taps should be based on the sampling rate before decimation. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, , and the filter window function (a Blackman-harris window in this case). The first input is the gain of the filter, which we specify here as unity. - - - -The PFB decimator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/decim) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -The theory behind this block can be found in Chapter 6 of the following book. - -Params: (decim, taps, channel)" - -%feature("docstring") gr_pfb_interpolator_ccf "Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs interger up- sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. - -The filter's taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power). - - - -The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -The theory behind this block can be found in Chapter 7.1 of the following book." - -%feature("docstring") gr_pfb_interpolator_ccf::gr_pfb_interpolator_ccf "Construct a Polyphase filterbank interpolator - -Params: (interp, taps)" - -%feature("docstring") gr_pfb_interpolator_ccf::~gr_pfb_interpolator_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_interpolator_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps)" - -%feature("docstring") gr_pfb_interpolator_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_interpolator_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_interpolator_ccf "Creates a pfb_interpolator_ccf block. - -Polyphase filterbank interpolator with gr_complex input, gr_complex output and float taps. - -This block takes in a signal stream and performs interger up- sampling (interpolation) with a polyphase filterbank. The first input is the integer specifying how much to interpolate by. The second input is a vector (Python list) of floating-point taps of the prototype filter. - -The filter's taps should be based on the interpolation rate specified. That is, the bandwidth specified is relative to the bandwidth after interpolation. - -For example, using the GNU Radio's firdes utility to building filters, we build a low-pass filter with a sampling rate of , a 3-dB bandwidth of and a transition bandwidth of . We can also specify the out-of-band attenuation to use, ATT, and the filter window function (a Blackman-harris window in this case). The first input is the gain, which is also specified as the interpolation rate so that the output levels are the same as the input (this creates an overall increase in power). - - - -The PFB interpolator code takes the taps generated above and builds a set of filters. The set contains number of filters and each filter contains ceil(taps.size()/interp) number of taps. Each tap from the filter prototype is sequentially inserted into the next filter. When all of the input taps are used, the remaining filters in the filterbank are filled out with 0's to make sure each filter has the same number of taps. - -The theory behind this block can be found in Chapter 7.1 of the following book. - -Params: (interp, taps)" - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf "Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps." - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf::gr_pfb_synthesis_filterbank_ccf "Build the polyphase synthesis filterbank. - -Params: (numchans, taps)" - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf::~gr_pfb_synthesis_filterbank_ccf " - -Params: (NONE)" - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf::set_taps "Resets the filterbank's filter taps with the new prototype filter - -Params: (taps)" - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf::print_taps "Print all of the filterbank taps to screen. - -Params: (NONE)" - -%feature("docstring") gr_pfb_synthesis_filterbank_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_pfb_synthesis_filterbank_ccf "Creates a pfb_synthesis_filterbank_ccf block. - -Polyphase synthesis filterbank with gr_complex input, gr_complex output and float taps. - -Params: (numchans, taps)" - -%feature("docstring") gr_phase_modulator_fc "Phase modulator block - -output=complex(cos(in*sensitivity),sin(in*sensitivity))." - -%feature("docstring") gr_phase_modulator_fc::gr_phase_modulator_fc " - -Params: (sensitivity)" - -%feature("docstring") gr_phase_modulator_fc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_phase_modulator_fc "Creates a phase_modulator_fc block. - -Phase modulator block - -output=complex(cos(in*sensitivity),sin(in*sensitivity)). - -Params: (sensitivity)" - -%feature("docstring") gr_pll_carriertracking_cc "Implements a PLL which locks to the input frequency and outputs the input signal mixed with that carrier. - -input: stream of complex; output: stream of complex. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs that signal, downconverted to DC - -All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" - -%feature("docstring") gr_pll_carriertracking_cc::gr_pll_carriertracking_cc " - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pll_carriertracking_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_pll_carriertracking_cc::mod_2pi " - -Params: (in)" - -%feature("docstring") gr_pll_carriertracking_cc::phase_detector " - -Params: (sample, ref_phase)" - -%feature("docstring") gr_pll_carriertracking_cc::lock_detector " - -Params: ()" - -%feature("docstring") gr_pll_carriertracking_cc::squelch_enable " - -Params: ()" - -%feature("docstring") gr_pll_carriertracking_cc::set_lock_threshold " - -Params: ()" - -%feature("docstring") gr_make_pll_carriertracking_cc "Creates a pll_carriertracking_cc block. - -Implements a PLL which locks to the input frequency and outputs the input signal mixed with that carrier. - -input: stream of complex; output: stream of complex. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs that signal, downconverted to DC - -All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pll_freqdet_cf "Implements a PLL which locks to the input frequency and outputs an estimate of that frequency. Useful for FM Demod. - -input: stream of complex; output: stream of floats. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs an estimate of that frequency in radians per sample. All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" - -%feature("docstring") gr_pll_freqdet_cf::gr_pll_freqdet_cf " - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pll_freqdet_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_pll_freqdet_cf::mod_2pi " - -Params: (in)" - -%feature("docstring") gr_pll_freqdet_cf::phase_detector " - -Params: (sample, ref_phase)" - -%feature("docstring") gr_make_pll_freqdet_cf "Creates a pll_freqdet_cf block. - -Implements a PLL which locks to the input frequency and outputs an estimate of that frequency. Useful for FM Demod. - -input: stream of complex; output: stream of floats. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs an estimate of that frequency in radians per sample. All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pll_refout_cc "Implements a PLL which locks to the input frequency and outputs a carrier - -input: stream of complex; output: stream of complex. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs a clean version which is phase and frequency aligned to it. - -All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian)" - -%feature("docstring") gr_pll_refout_cc::gr_pll_refout_cc " - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pll_refout_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_pll_refout_cc::mod_2pi " - -Params: (in)" - -%feature("docstring") gr_pll_refout_cc::phase_detector " - -Params: (sample, ref_phase)" - -%feature("docstring") gr_make_pll_refout_cc "Creates a pll_refout_cc block. - -Implements a PLL which locks to the input frequency and outputs a carrier - -input: stream of complex; output: stream of complex. - -This PLL locks onto a [possibly noisy] reference carrier on the input and outputs a clean version which is phase and frequency aligned to it. - -All settings max_freq and min_freq are in terms of radians per sample, NOT HERTZ. Alpha is the phase gain (first order, units of radians per radian) and beta is the frequency gain (second order, units of radians per sample per radian) - -Params: (alpha, beta, max_freq, min_freq)" - -%feature("docstring") gr_pn_correlator_cc "PN code sequential search correlator. - -Receives complex baseband signal, outputs complex correlation against reference PN code, one sample per PN code period" - -%feature("docstring") gr_pn_correlator_cc::gr_pn_correlator_cc " - -Params: (degree, mask, seed)" - -%feature("docstring") gr_pn_correlator_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_pn_correlator_cc::~gr_pn_correlator_cc " - -Params: (NONE)" - -%feature("docstring") gr_make_pn_correlator_cc "Creates a pn_correlator_cc block. - -PN code sequential search correlator. - -Receives complex baseband signal, outputs complex correlation against reference PN code, one sample per PN code period - -Params: (degree, mask, seed)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c "compute avg magnitude squared. - -input: gr_complex - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." - -%feature("docstring") gr_probe_avg_mag_sqrd_c::gr_probe_avg_mag_sqrd_c " - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::~gr_probe_avg_mag_sqrd_c " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::level " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::threshold " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_c::set_threshold " - -Params: (decibels)" - -%feature("docstring") gr_make_probe_avg_mag_sqrd_c "Creates a probe_avg_mag_sqrd_c block. - -compute avg magnitude squared. - -input: gr_complex - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf "compute avg magnitude squared. - -input: gr_complex output: gr_float - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::gr_probe_avg_mag_sqrd_cf " - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::~gr_probe_avg_mag_sqrd_cf " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::level " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::threshold " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_cf::set_threshold " - -Params: (decibels)" - -%feature("docstring") gr_make_probe_avg_mag_sqrd_cf "Creates a probe_avg_mag_sqrd_cf block. - -compute avg magnitude squared. - -input: gr_complex output: gr_float - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f "compute avg magnitude squared. - -input: float - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors." - -%feature("docstring") gr_probe_avg_mag_sqrd_f::gr_probe_avg_mag_sqrd_f " - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::~gr_probe_avg_mag_sqrd_f " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::level " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::threshold " - -Params: (NONE)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_probe_avg_mag_sqrd_f::set_threshold " - -Params: (decibels)" - -%feature("docstring") gr_make_probe_avg_mag_sqrd_f "Creates a probe_avg_mag_sqrd_f block. - -compute avg magnitude squared. - -input: float - -Compute a running average of the magnitude squared of the the input. The level and indication as to whether the level exceeds threshold can be retrieved with the level and unmuted accessors. - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_probe_density_b "This block maintains a running average of the input stream and makes it available as an accessor function. The input stream is type unsigned char. - -If you send this block a stream of unpacked bytes, it will tell you what the bit density is." - -%feature("docstring") gr_probe_density_b::gr_probe_density_b " - -Params: (alpha)" - -%feature("docstring") gr_probe_density_b::~gr_probe_density_b " - -Params: (NONE)" - -%feature("docstring") gr_probe_density_b::density "Returns the current density value. - -Params: (NONE)" - -%feature("docstring") gr_probe_density_b::set_alpha "Set the average filter constant. - -Params: (alpha)" - -%feature("docstring") gr_probe_density_b::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_probe_density_b "Creates a probe_density_b block. - -This block maintains a running average of the input stream and makes it available as an accessor function. The input stream is type unsigned char. - -If you send this block a stream of unpacked bytes, it will tell you what the bit density is. - -Params: (alpha)" - -%feature("docstring") gr_probe_mpsk_snr_c "Compute the estimate SNR of an MPSK signal using the Squared Signal to Noise Variance (SNV) technique. - -This technique assumes an AWGN channel. - - -Compute the running average of the signal mean and noise variance. The estimated signal mean, noise variance, and SNR are available via accessors. - -This SNR estimator is inaccurate below about 7dB SNR." - -%feature("docstring") gr_probe_mpsk_snr_c::gr_probe_mpsk_snr_c " - -Params: (alpha)" - -%feature("docstring") gr_probe_mpsk_snr_c::~gr_probe_mpsk_snr_c " - -Params: (NONE)" - -%feature("docstring") gr_probe_mpsk_snr_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_probe_mpsk_snr_c::signal_mean " - -Params: (NONE)" - -%feature("docstring") gr_probe_mpsk_snr_c::noise_variance " - -Params: (NONE)" - -%feature("docstring") gr_probe_mpsk_snr_c::snr " - -Params: (NONE)" - -%feature("docstring") gr_probe_mpsk_snr_c::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_make_probe_mpsk_snr_c "Creates a probe_mpsk_snr_c block. - -Compute the estimate SNR of an MPSK signal using the Squared Signal to Noise Variance (SNV) technique. - -This technique assumes an AWGN channel. - - -Compute the running average of the signal mean and noise variance. The estimated signal mean, noise variance, and SNR are available via accessors. - -This SNR estimator is inaccurate below about 7dB SNR. - -Params: (alpha)" - -%feature("docstring") gr_probe_signal_f "Sink that allows a sample to be grabbed from Python." - -%feature("docstring") gr_probe_signal_f::gr_probe_signal_f " - -Params: (NONE)" - -%feature("docstring") gr_probe_signal_f::~gr_probe_signal_f " - -Params: (NONE)" - -%feature("docstring") gr_probe_signal_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_probe_signal_f::level " - -Params: (NONE)" - -%feature("docstring") gr_make_probe_signal_f "Creates a probe_signal_f block. - -Sink that allows a sample to be grabbed from Python. - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_cc "gate or zero output when input power below threshold" - -%feature("docstring") gr_pwr_squelch_cc::gr_pwr_squelch_cc " - -Params: (db, alpha, ramp, gate)" - -%feature("docstring") gr_pwr_squelch_cc::update_state " - -Params: (in)" - -%feature("docstring") gr_pwr_squelch_cc::mute " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_cc::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_cc::threshold " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_cc::set_threshold " - -Params: (db)" - -%feature("docstring") gr_pwr_squelch_cc::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_make_pwr_squelch_cc "Creates a pwr_squelch_cc block. - -gate or zero output when input power below threshold - -Params: (db, alpha, ramp, gate)" - -%feature("docstring") gr_pwr_squelch_ff "gate or zero output when input power below threshold" - -%feature("docstring") gr_pwr_squelch_ff::gr_pwr_squelch_ff " - -Params: (db, alpha, ramp, gate)" - -%feature("docstring") gr_pwr_squelch_ff::update_state " - -Params: (in)" - -%feature("docstring") gr_pwr_squelch_ff::mute " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_ff::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_ff::threshold " - -Params: (NONE)" - -%feature("docstring") gr_pwr_squelch_ff::set_threshold " - -Params: (db)" - -%feature("docstring") gr_pwr_squelch_ff::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_make_pwr_squelch_ff "Creates a pwr_squelch_ff block. - -gate or zero output when input power below threshold - -Params: (db, alpha, ramp, gate)" - -%feature("docstring") gr_quadrature_demod_cf "quadrature demodulator: complex in, float out - -This can be used to demod FM, FSK, GMSK, etc. The input is complex baseband." - -%feature("docstring") gr_quadrature_demod_cf::gr_quadrature_demod_cf " - -Params: (gain)" - -%feature("docstring") gr_quadrature_demod_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_quadrature_demod_cf "Creates a quadrature_demod_cf block. - -quadrature demodulator: complex in, float out - -This can be used to demod FM, FSK, GMSK, etc. The input is complex baseband. - -Params: (gain)" - - - -%feature("docstring") gr_rail_ff::gr_rail_ff " - -Params: (lo, hi)" - -%feature("docstring") gr_rail_ff::lo " - -Params: (NONE)" - -%feature("docstring") gr_rail_ff::set_lo " - -Params: (lo)" - -%feature("docstring") gr_rail_ff::hi " - -Params: (NONE)" - -%feature("docstring") gr_rail_ff::set_hi " - -Params: (hi)" - -%feature("docstring") gr_rail_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_rail_ff "Creates a rail_ff block. - - - -Params: (lo, hi)" - -%feature("docstring") gr_rational_resampler_base_ccc "Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_rational_resampler_base_ccc::gr_rational_resampler_base_ccc "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_ccc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_ccc::~gr_rational_resampler_base_ccc " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccc::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_ccc::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccc::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_ccc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_ccc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_ccc "Creates a rational_resampler_base_ccc block. - -Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and gr_complex taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_ccf "Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and float taps." - -%feature("docstring") gr_rational_resampler_base_ccf::gr_rational_resampler_base_ccf "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_ccf::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_ccf::~gr_rational_resampler_base_ccf " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccf::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccf::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_ccf::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccf::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_ccf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_ccf::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_ccf::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_ccf "Creates a rational_resampler_base_ccf block. - -Rational Resampling Polyphase FIR filter with gr_complex input, gr_complex output and float taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fcc "Rational Resampling Polyphase FIR filter with float input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_rational_resampler_base_fcc::gr_rational_resampler_base_fcc "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fcc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fcc::~gr_rational_resampler_base_fcc " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fcc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fcc::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_fcc::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fcc::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fcc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fcc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_fcc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_fcc "Creates a rational_resampler_base_fcc block. - -Rational Resampling Polyphase FIR filter with float input, gr_complex output and gr_complex taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fff "Rational Resampling Polyphase FIR filter with float input, float output and float taps." - -%feature("docstring") gr_rational_resampler_base_fff::gr_rational_resampler_base_fff "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fff::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fff::~gr_rational_resampler_base_fff " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fff::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fff::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_fff::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fff::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fff::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fff::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_fff::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_fff "Creates a rational_resampler_base_fff block. - -Rational Resampling Polyphase FIR filter with float input, float output and float taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fsf "Rational Resampling Polyphase FIR filter with float input, short output and float taps." - -%feature("docstring") gr_rational_resampler_base_fsf::gr_rational_resampler_base_fsf "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_fsf::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fsf::~gr_rational_resampler_base_fsf " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fsf::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fsf::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_fsf::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fsf::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_fsf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_fsf::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_fsf::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_fsf "Creates a rational_resampler_base_fsf block. - -Rational Resampling Polyphase FIR filter with float input, short output and float taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_scc "Rational Resampling Polyphase FIR filter with short input, gr_complex output and gr_complex taps." - -%feature("docstring") gr_rational_resampler_base_scc::gr_rational_resampler_base_scc "Construct a FIR filter with the given taps - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_rational_resampler_base_scc::install_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_scc::~gr_rational_resampler_base_scc " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_scc::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_scc::set_history " - -Params: (history)" - -%feature("docstring") gr_rational_resampler_base_scc::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_scc::decimation " - -Params: (NONE)" - -%feature("docstring") gr_rational_resampler_base_scc::set_taps " - -Params: (taps)" - -%feature("docstring") gr_rational_resampler_base_scc::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_rational_resampler_base_scc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_rational_resampler_base_scc "Creates a rational_resampler_base_scc block. - -Rational Resampling Polyphase FIR filter with short input, gr_complex output and gr_complex taps. - -Params: (interpolation, decimation, taps)" - -%feature("docstring") gr_regenerate_bb "Detect the peak of a signal and repeat every period samples - -If a peak is detected, this block outputs a 1 repeated every period samples until reset by detection of another 1 on the input or stopped after max_regen regenerations have occurred. - -Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever." - -%feature("docstring") gr_regenerate_bb::gr_regenerate_bb " - -Params: (period, max_regen)" - -%feature("docstring") gr_regenerate_bb::set_max_regen "Reset the maximum regeneration count; this will reset the current regen. - -Params: (regen)" - -%feature("docstring") gr_regenerate_bb::set_period "Reset the period of regenerations; this will reset the current regen. - -Params: (period)" - -%feature("docstring") gr_regenerate_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_regenerate_bb "Creates a regenerate_bb block. - -Detect the peak of a signal and repeat every period samples - -If a peak is detected, this block outputs a 1 repeated every period samples until reset by detection of another 1 on the input or stopped after max_regen regenerations have occurred. - -Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever. - -Params: (period, max_regen)" - -%feature("docstring") gr_repeat "Repeat a sample 'interp' times in output stream." - -%feature("docstring") gr_repeat::gr_repeat " - -Params: (itemsize, interp)" - -%feature("docstring") gr_repeat::~gr_repeat " - -Params: (NONE)" - -%feature("docstring") gr_repeat::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_repeat "Creates a repeat block. - -Repeat a sample 'interp' times in output stream. - -Params: (itemsize, interp)" - -%feature("docstring") gr_rms_cf "RMS average power." - -%feature("docstring") gr_rms_cf::gr_rms_cf " - -Params: (alpha)" - -%feature("docstring") gr_rms_cf::~gr_rms_cf " - -Params: (NONE)" - -%feature("docstring") gr_rms_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_rms_cf::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_rms_cf::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_make_rms_cf "Creates a rms_cf block. - -RMS average power. - -Params: (alpha)" - -%feature("docstring") gr_rms_ff "RMS average power." - -%feature("docstring") gr_rms_ff::gr_rms_ff " - -Params: (alpha)" - -%feature("docstring") gr_rms_ff::~gr_rms_ff " - -Params: (NONE)" - -%feature("docstring") gr_rms_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_rms_ff::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_rms_ff::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_make_rms_ff "Creates a rms_ff block. - -RMS average power. - -Params: (alpha)" - -%feature("docstring") gr_sample_and_hold_bb "sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." - -%feature("docstring") gr_sample_and_hold_bb::gr_sample_and_hold_bb " - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sample_and_hold_bb "Creates a sample_and_hold_bb block. - -sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ff "sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." - -%feature("docstring") gr_sample_and_hold_ff::gr_sample_and_hold_ff " - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sample_and_hold_ff "Creates a sample_and_hold_ff block. - -sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ii "sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." - -%feature("docstring") gr_sample_and_hold_ii::gr_sample_and_hold_ii " - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sample_and_hold_ii "Creates a sample_and_hold_ii block. - -sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ss "sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1)." - -%feature("docstring") gr_sample_and_hold_ss::gr_sample_and_hold_ss " - -Params: (NONE)" - -%feature("docstring") gr_sample_and_hold_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sample_and_hold_ss "Creates a sample_and_hold_ss block. - -sample and hold circuit - -Samples the data stream (input stream 0) and holds the value if the control signal is 1 (intput stream 1). - -Params: (NONE)" - -%feature("docstring") gr_scrambler_bb "Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output." - -%feature("docstring") gr_scrambler_bb::gr_scrambler_bb " - -Params: (mask, seed, len)" - -%feature("docstring") gr_scrambler_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_scrambler_bb "Creates a scrambler_bb block. - -Scramble an input stream using an LFSR. This block works on the LSB only of the input data stream, i.e., on an \"unpacked binary\" stream, and produces the same format on its output. - -Params: (mask, seed, len)" - -%feature("docstring") gr_short_to_float "Convert stream of short to a stream of float." - -%feature("docstring") gr_short_to_float::gr_short_to_float " - -Params: (NONE)" - -%feature("docstring") gr_short_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_short_to_float "Creates a short_to_float block. - -Convert stream of short to a stream of float. - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c "signal generator with gr_complex output." - -%feature("docstring") gr_sig_source_c::gr_sig_source_c " - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_sig_source_c::sampling_freq " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c::waveform " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c::frequency " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c::amplitude " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c::offset " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_c::set_sampling_freq " - -Params: (sampling_freq)" - -%feature("docstring") gr_sig_source_c::set_waveform " - -Params: (waveform)" - -%feature("docstring") gr_sig_source_c::set_frequency " - -Params: (frequency)" - -%feature("docstring") gr_sig_source_c::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_sig_source_c::set_offset " - -Params: (offset)" - -%feature("docstring") gr_make_sig_source_c "Creates a sig_source_c block. - -signal generator with gr_complex output. - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_f "signal generator with float output." - -%feature("docstring") gr_sig_source_f::gr_sig_source_f " - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_sig_source_f::sampling_freq " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_f::waveform " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_f::frequency " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_f::amplitude " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_f::offset " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_f::set_sampling_freq " - -Params: (sampling_freq)" - -%feature("docstring") gr_sig_source_f::set_waveform " - -Params: (waveform)" - -%feature("docstring") gr_sig_source_f::set_frequency " - -Params: (frequency)" - -%feature("docstring") gr_sig_source_f::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_sig_source_f::set_offset " - -Params: (offset)" - -%feature("docstring") gr_make_sig_source_f "Creates a sig_source_f block. - -signal generator with float output. - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_i "signal generator with int output." - -%feature("docstring") gr_sig_source_i::gr_sig_source_i " - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_sig_source_i::sampling_freq " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_i::waveform " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_i::frequency " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_i::amplitude " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_i::offset " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_i::set_sampling_freq " - -Params: (sampling_freq)" - -%feature("docstring") gr_sig_source_i::set_waveform " - -Params: (waveform)" - -%feature("docstring") gr_sig_source_i::set_frequency " - -Params: (frequency)" - -%feature("docstring") gr_sig_source_i::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_sig_source_i::set_offset " - -Params: (offset)" - -%feature("docstring") gr_make_sig_source_i "Creates a sig_source_i block. - -signal generator with int output. - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_s "signal generator with short output." - -%feature("docstring") gr_sig_source_s::gr_sig_source_s " - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_sig_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_sig_source_s::sampling_freq " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_s::waveform " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_s::frequency " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_s::amplitude " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_s::offset " - -Params: (NONE)" - -%feature("docstring") gr_sig_source_s::set_sampling_freq " - -Params: (sampling_freq)" - -%feature("docstring") gr_sig_source_s::set_waveform " - -Params: (waveform)" - -%feature("docstring") gr_sig_source_s::set_frequency " - -Params: (frequency)" - -%feature("docstring") gr_sig_source_s::set_amplitude " - -Params: (ampl)" - -%feature("docstring") gr_sig_source_s::set_offset " - -Params: (offset)" - -%feature("docstring") gr_make_sig_source_s "Creates a sig_source_s block. - -signal generator with short output. - -Params: (sampling_freq, waveform, wave_freq, ampl, offset)" - -%feature("docstring") gr_simple_correlator "inverse of gr_simple_framer (more or less)" - -%feature("docstring") gr_simple_correlator::gr_simple_correlator " - -Params: (payload_bytesize)" - -%feature("docstring") gr_simple_correlator::slice " - -Params: (x)" - -%feature("docstring") gr_simple_correlator::update_avg " - -Params: (x)" - -%feature("docstring") gr_simple_correlator::enter_locked " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator::enter_under_threshold " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator::enter_looking " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator::add_index " - -Params: (a, b)" - -%feature("docstring") gr_simple_correlator::sub_index " - -Params: (a, b)" - -%feature("docstring") gr_simple_correlator::~gr_simple_correlator " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_simple_correlator "Creates a simple_correlator block. - -inverse of gr_simple_framer (more or less) - -Params: (payload_bytesize)" - -%feature("docstring") gr_simple_correlator_bb "Inverse of simple_framer. Takes a stream of bits from gr_correlate_access_code_bb and returns a stream of items of size payload_bytesize. - -input: stream of bits from gr_correlate_access_code_bb output: steam of items of size payload_bytesize. - -The framer expects a fixed length header of 1 byte giving the packet number. - -The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code." - -%feature("docstring") gr_simple_correlator_bb::gr_simple_correlator_bb " - -Params: (target_queue)" - -%feature("docstring") gr_simple_correlator_bb::enter_search " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator_bb::enter_have_sync " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator_bb::enter_have_header " - -Params: (seq)" - -%feature("docstring") gr_simple_correlator_bb::header_ok " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator_bb::header_payload " - -Params: (seq)" - -%feature("docstring") gr_simple_correlator_bb::~gr_simple_correlator_bb " - -Params: (NONE)" - -%feature("docstring") gr_simple_correlator_bb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_simple_correlator_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_simple_correlator_bb "Creates a simple_correlator_bb block. - -Inverse of simple_framer. Takes a stream of bits from gr_correlate_access_code_bb and returns a stream of items of size payload_bytesize. - -input: stream of bits from gr_correlate_access_code_bb output: steam of items of size payload_bytesize. - -The framer expects a fixed length header of 1 byte giving the packet number. - -The input data consists of bytes that have two bits used. Bit 0, the LSB, contains the data bit. Bit 1 if set, indicates that the corresponding bit is the the first bit of the packet. That is, this bit is the first one after the access code. - -Params: (target_queue)" - -%feature("docstring") gr_simple_framer "add sync field, seq number and command field to payload" - -%feature("docstring") gr_simple_framer::gr_simple_framer " - -Params: (payload_bytesize)" - -%feature("docstring") gr_simple_framer::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_simple_framer::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_simple_framer "Creates a simple_framer block. - -add sync field, seq number and command field to payload - -Params: (payload_bytesize)" - -%feature("docstring") gr_simple_squelch_cc "simple squelch block based on average signal power and threshold in dB." - -%feature("docstring") gr_simple_squelch_cc::gr_simple_squelch_cc " - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_simple_squelch_cc::~gr_simple_squelch_cc " - -Params: (NONE)" - -%feature("docstring") gr_simple_squelch_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_simple_squelch_cc::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_simple_squelch_cc::set_alpha " - -Params: (alpha)" - -%feature("docstring") gr_simple_squelch_cc::set_threshold " - -Params: (decibels)" - -%feature("docstring") gr_simple_squelch_cc::threshold " - -Params: (NONE)" - -%feature("docstring") gr_simple_squelch_cc::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_make_simple_squelch_cc "Creates a simple_squelch_cc block. - -simple squelch block based on average signal power and threshold in dB. - -Params: (threshold_db, alpha)" - -%feature("docstring") gr_single_pole_iir_filter_cc "single pole IIR filter with complex input, complex output - -The input and output satisfy a difference equation of the form - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap." - -%feature("docstring") gr_single_pole_iir_filter_cc::gr_single_pole_iir_filter_cc " - -Params: (alpha, vlen)" - -%feature("docstring") gr_single_pole_iir_filter_cc::~gr_single_pole_iir_filter_cc " - -Params: (NONE)" - -%feature("docstring") gr_single_pole_iir_filter_cc::set_taps " - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir_filter_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_single_pole_iir_filter_cc "Creates a single_pole_iir_filter_cc block. - -single pole IIR filter with complex input, complex output - -The input and output satisfy a difference equation of the form - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap. - -Params: (alpha, vlen)" - -%feature("docstring") gr_single_pole_iir_filter_ff "single pole IIR filter with float input, float output - -The input and output satisfy a difference equation of the form - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap." - -%feature("docstring") gr_single_pole_iir_filter_ff::gr_single_pole_iir_filter_ff " - -Params: (alpha, vlen)" - -%feature("docstring") gr_single_pole_iir_filter_ff::~gr_single_pole_iir_filter_ff " - -Params: (NONE)" - -%feature("docstring") gr_single_pole_iir_filter_ff::set_taps " - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir_filter_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_single_pole_iir_filter_ff "Creates a single_pole_iir_filter_ff block. - -single pole IIR filter with float input, float output - -The input and output satisfy a difference equation of the form - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback tap. - -Params: (alpha, vlen)" - -%feature("docstring") gr_single_threaded_scheduler "Simple scheduler for stream computations." - -%feature("docstring") gr_single_threaded_scheduler::~gr_single_threaded_scheduler " - -Params: (NONE)" - -%feature("docstring") gr_single_threaded_scheduler::run " - -Params: (NONE)" - -%feature("docstring") gr_single_threaded_scheduler::stop " - -Params: (NONE)" - -%feature("docstring") gr_single_threaded_scheduler::gr_single_threaded_scheduler " - -Params: (blocks)" - -%feature("docstring") gr_single_threaded_scheduler::main_loop " - -Params: (NONE)" - -%feature("docstring") gr_make_single_threaded_scheduler "Creates a single_threaded_scheduler block. - -Simple scheduler for stream computations. - -Params: (blocks)" - -%feature("docstring") gr_skiphead "skips the first N items, from then on copies items to the output - -Useful for building test cases and sources which have metadata or junk at the start" - -%feature("docstring") gr_skiphead::gr_skiphead " - -Params: (itemsize, nitems_to_skip)" - -%feature("docstring") gr_skiphead::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_skiphead "Creates a skiphead block. - -skips the first N items, from then on copies items to the output - -Useful for building test cases and sources which have metadata or junk at the start - -Params: (itemsize, nitems_to_skip)" - - - -%feature("docstring") gr_squash_ff::gr_squash_ff " - -Params: (igrid, ogrid)" - -%feature("docstring") gr_squash_ff::~gr_squash_ff " - -Params: (NONE)" - -%feature("docstring") gr_squash_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_squash_ff "Creates a squash_ff block. - - - -Params: (igrid, ogrid)" - -%feature("docstring") gr_stream_mux "Stream muxing block to multiplex many streams into one with a specified format. - -Muxes N streams together producing an output stream that contains N0 items from the first stream, N1 items from the second, etc. and repeats: - -[N0, N1, N2, ..., Nm, N0, N1, ...]" - -%feature("docstring") gr_stream_mux::gr_stream_mux " - -Params: (itemsize, lengths)" - -%feature("docstring") gr_stream_mux::increment_stream " - -Params: (NONE)" - -%feature("docstring") gr_stream_mux::~gr_stream_mux " - -Params: ()" - -%feature("docstring") gr_stream_mux::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_stream_mux::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_make_stream_mux "Creates a stream_mux block. - -Stream muxing block to multiplex many streams into one with a specified format. - -Muxes N streams together producing an output stream that contains N0 items from the first stream, N1 items from the second, etc. and repeats: - -[N0, N1, N2, ..., Nm, N0, N1, ...] - -Params: (itemsize, lengths)" - -%feature("docstring") gr_stream_to_streams "convert a stream of items into a N streams of items - -Converts a stream of N items into N streams of 1 item. Repeat ad infinitum." - -%feature("docstring") gr_stream_to_streams::gr_stream_to_streams " - -Params: (item_size, nstreams)" - -%feature("docstring") gr_stream_to_streams::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_stream_to_streams "Creates a stream_to_streams block. - -convert a stream of items into a N streams of items - -Converts a stream of N items into N streams of 1 item. Repeat ad infinitum. - -Params: (item_size, nstreams)" - -%feature("docstring") gr_stream_to_vector "convert a stream of items into a stream of blocks containing nitems_per_block" - -%feature("docstring") gr_stream_to_vector::gr_stream_to_vector " - -Params: (item_size, nitems_per_block)" - -%feature("docstring") gr_stream_to_vector::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_stream_to_vector "Creates a stream_to_vector block. - -convert a stream of items into a stream of blocks containing nitems_per_block - -Params: (item_size, nitems_per_block)" - -%feature("docstring") gr_streams_to_stream "Convert N streams of 1 item into a 1 stream of N items - -Convert N streams of 1 item into 1 stream of N items. Repeat ad infinitum." - -%feature("docstring") gr_streams_to_stream::gr_streams_to_stream " - -Params: (item_size, nstreams)" - -%feature("docstring") gr_streams_to_stream::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_streams_to_stream "Creates a streams_to_stream block. - -Convert N streams of 1 item into a 1 stream of N items - -Convert N streams of 1 item into 1 stream of N items. Repeat ad infinitum. - -Params: (item_size, nstreams)" - -%feature("docstring") gr_streams_to_vector "convert N streams of items to 1 stream of vector length N" - -%feature("docstring") gr_streams_to_vector::gr_streams_to_vector " - -Params: (item_size, nstreams)" - -%feature("docstring") gr_streams_to_vector::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_streams_to_vector "Creates a streams_to_vector block. - -convert N streams of items to 1 stream of vector length N - -Params: (item_size, nstreams)" - - - -%feature("docstring") gr_stretch_ff::gr_stretch_ff " - -Params: (lo, vlen)" - -%feature("docstring") gr_stretch_ff::lo " - -Params: (NONE)" - -%feature("docstring") gr_stretch_ff::set_lo " - -Params: (lo)" - -%feature("docstring") gr_stretch_ff::vlen " - -Params: (NONE)" - -%feature("docstring") gr_stretch_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_stretch_ff "Creates a stretch_ff block. - - - -Params: (lo, vlen)" - -%feature("docstring") gr_sub_cc "output = input_0 - input_1 - ...) - -Subtract across all input streams." - -%feature("docstring") gr_sub_cc::gr_sub_cc " - -Params: (vlen)" - -%feature("docstring") gr_sub_cc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sub_cc "Creates a sub_cc block. - -output = input_0 - input_1 - ...) - -Subtract across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_sub_ff "output = input_0 - input_1 - ...) - -Subtract across all input streams." - -%feature("docstring") gr_sub_ff::gr_sub_ff " - -Params: (vlen)" - -%feature("docstring") gr_sub_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sub_ff "Creates a sub_ff block. - -output = input_0 - input_1 - ...) - -Subtract across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_sub_ii "output = input_0 - input_1 - ...) - -Subtract across all input streams." - -%feature("docstring") gr_sub_ii::gr_sub_ii " - -Params: (vlen)" - -%feature("docstring") gr_sub_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sub_ii "Creates a sub_ii block. - -output = input_0 - input_1 - ...) - -Subtract across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_sub_ss "output = input_0 - input_1 - ...) - -Subtract across all input streams." - -%feature("docstring") gr_sub_ss::gr_sub_ss " - -Params: (vlen)" - -%feature("docstring") gr_sub_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_sub_ss "Creates a sub_ss block. - -output = input_0 - input_1 - ...) - -Subtract across all input streams. - -Params: (vlen)" - -%feature("docstring") gr_tagged_file_sink "Write stream to file descriptor." - -%feature("docstring") gr_tagged_file_sink::gr_tagged_file_sink " - -Params: (itemsize, samp_rate)" - -%feature("docstring") gr_tagged_file_sink::~gr_tagged_file_sink " - -Params: (NONE)" - -%feature("docstring") gr_tagged_file_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_tagged_file_sink "Creates a tagged_file_sink block. - -Write stream to file descriptor. - -Params: (itemsize, samp_rate)" - -%feature("docstring") gr_test "Test class for testing runtime system (setting up buffers and such.) - -This block does not do any usefull actual data processing. It just exposes setting all standard block parameters using the contructor or public methods. - -This block can be usefull when testing the runtime system. You can force this block to have a large history, decimation factor and/or large output_multiple. The runtime system should detect this and create large enough buffers all through the signal chain." - -%feature("docstring") gr_test::~gr_test " - -Params: (NONE)" - -%feature("docstring") gr_test::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_test::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_test::set_check_topology "Force check topology to return true or false. - -Params: (check_topology)" - -%feature("docstring") gr_test::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_test::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (ninput)" - -%feature("docstring") gr_test::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. - -Params: (noutput)" - -%feature("docstring") gr_test::set_fixed_rate_public "Set if fixed rate should return true. N.B. This is normally a private method but we make it available here as public. - -Params: (fixed_rate)" - -%feature("docstring") gr_test::set_consume_type "Set the consume pattern. - -Params: (cons_type)" - -%feature("docstring") gr_test::set_consume_limit "Set the consume limit. - -Params: (limit)" - -%feature("docstring") gr_test::set_produce_type "Set the produce pattern. - -Params: (prod_type)" - -%feature("docstring") gr_test::set_produce_limit "Set the produce limit. - -Params: (limit)" - -%feature("docstring") gr_test::gr_test " - -Params: (name, min_inputs, max_inputs, sizeof_input_item, min_outputs, max_outputs, sizeof_output_item, history, output_multiple, relative_rate, fixed_rate, cons_type, prod_type)" - -%feature("docstring") gr_make_test "Creates a test block. - -Test class for testing runtime system (setting up buffers and such.) - -This block does not do any usefull actual data processing. It just exposes setting all standard block parameters using the contructor or public methods. - -This block can be usefull when testing the runtime system. You can force this block to have a large history, decimation factor and/or large output_multiple. The runtime system should detect this and create large enough buffers all through the signal chain. - -Params: (name, min_inputs, max_inputs, sizeof_input_item, min_outputs, max_outputs, sizeof_output_item, history, output_multiple, relative_rate, fixed_rate, cons_type, prod_type)" - -%feature("docstring") gr_threshold_ff "Please fix my documentation." - -%feature("docstring") gr_threshold_ff::gr_threshold_ff " - -Params: (lo, hi, initial_state)" - -%feature("docstring") gr_threshold_ff::lo " - -Params: (NONE)" - -%feature("docstring") gr_threshold_ff::set_lo " - -Params: (lo)" - -%feature("docstring") gr_threshold_ff::hi " - -Params: (NONE)" - -%feature("docstring") gr_threshold_ff::set_hi " - -Params: (hi)" - -%feature("docstring") gr_threshold_ff::last_state " - -Params: (NONE)" - -%feature("docstring") gr_threshold_ff::set_last_state " - -Params: (last_state)" - -%feature("docstring") gr_threshold_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_threshold_ff "Creates a threshold_ff block. - -Please fix my documentation. - -Params: (lo, hi, initial_state)" - -%feature("docstring") gr_throttle "throttle flow of samples such that the average rate does not exceed samples_per_sec. - -input: one stream of itemsize; output: one stream of itemsize - -N.B. this should only be used in GUI apps where there is no other rate limiting block. It is not intended nor effective at precisely controlling the rate of samples. That should be controlled by a source or sink tied to sample clock. E.g., a USRP or audio card." - -%feature("docstring") gr_throttle::gr_throttle " - -Params: (itemsize, samples_per_sec)" - -%feature("docstring") gr_throttle::~gr_throttle " - -Params: (NONE)" - -%feature("docstring") gr_throttle::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_throttle "Creates a throttle block. - -throttle flow of samples such that the average rate does not exceed samples_per_sec. - -input: one stream of itemsize; output: one stream of itemsize - -N.B. this should only be used in GUI apps where there is no other rate limiting block. It is not intended nor effective at precisely controlling the rate of samples. That should be controlled by a source or sink tied to sample clock. E.g., a USRP or audio card. - -Params: (itemsize, samples_per_sec)" - -%feature("docstring") gr_timer "implement timeouts" - -%feature("docstring") gr_timer::gr_timer " - -Params: ()" - -%feature("docstring") gr_timer::~gr_timer " - -Params: (NONE)" - -%feature("docstring") gr_timer::schedule_at "schedule timer to fire at abs_when - -Params: (abs_when)" - -%feature("docstring") gr_timer::schedule_after "schedule timer to fire rel_when seconds from now. - -Params: (rel_when)" - -%feature("docstring") gr_timer::schedule_periodic "schedule a periodic timeout. - -Params: (abs_when, period)" - -%feature("docstring") gr_timer::unschedule "cancel timer - -Params: (NONE)" - -%feature("docstring") gr_timer::now "return absolute current time (seconds since the epoc). - -Params: (NONE)" - -%feature("docstring") gr_make_timer "Creates a timer block. - -implement timeouts - -Params: ()" - -%feature("docstring") gr_top_block "Top-level hierarchical block representing a flowgraph." - -%feature("docstring") gr_top_block::gr_top_block " - -Params: (name)" - -%feature("docstring") gr_top_block::~gr_top_block " - -Params: (NONE)" - -%feature("docstring") gr_top_block::run "The simple interface to running a flowgraph. - -Calls start() then wait(). Used to run a flowgraph that will stop on its own, or when another thread will call stop(). - -Params: (NONE)" - -%feature("docstring") gr_top_block::start "Start the contained flowgraph. Creates one or more threads to execute the flow graph. Returns to the caller once the threads are created. Calling start() on a top_block that is already started IS an error. - -Params: (NONE)" - -%feature("docstring") gr_top_block::stop "Stop the running flowgraph. Notifies each thread created by the scheduler to shutdown, then returns to caller. Calling stop() on a top_block that is already stopped IS NOT an error. - -Params: (NONE)" - -%feature("docstring") gr_top_block::wait "Wait for a flowgraph to complete. Flowgraphs complete when either (1) all blocks indicate that they are done (typically only when using gr.file_source, or gr.head, or (2) after stop() has been called to request shutdown. Calling wait on a top_block that is not running IS NOT an error (wait returns w/o blocking). - -Params: (NONE)" - -%feature("docstring") gr_top_block::lock "Lock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. - -N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. - -Params: (NONE)" - -%feature("docstring") gr_top_block::unlock "Unlock a flowgraph in preparation for reconfiguration. When an equal number of calls to lock() and unlock() have occurred, the flowgraph will be reconfigured. - -N.B. lock() and unlock() may not be called from a flowgraph thread (E.g., gr_block::work method) or deadlock will occur when reconfiguration happens. - -Params: (NONE)" - -%feature("docstring") gr_top_block::dump "Displays flattened flowgraph edges and block connectivity - -Params: (NONE)" - -%feature("docstring") gr_top_block::to_top_block " - -Params: (NONE)" - -%feature("docstring") gr_make_top_block "Creates a top_block block. - -Top-level hierarchical block representing a flowgraph. - -Params: (name)" - -%feature("docstring") gr_uchar_to_float "Convert stream of unsigned chars to a stream of float." - -%feature("docstring") gr_uchar_to_float::gr_uchar_to_float " - -Params: (NONE)" - -%feature("docstring") gr_uchar_to_float::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_uchar_to_float "Creates a uchar_to_float block. - -Convert stream of unsigned chars to a stream of float. - -Params: (NONE)" - -%feature("docstring") gr_udp_sink "Write stream to an UDP socket." - -%feature("docstring") gr_udp_sink::gr_udp_sink "UDP Sink Constructor. - -Params: (itemsize, host, port, payload_size, eof)" - -%feature("docstring") gr_udp_sink::~gr_udp_sink " - -Params: (NONE)" - -%feature("docstring") gr_udp_sink::payload_size "return the PAYLOAD_SIZE of the socket - -Params: (NONE)" - -%feature("docstring") gr_udp_sink::connect "Change the connection to a new destination. - -Calls disconnect() to terminate any current connection first. - -Params: (host, port)" - -%feature("docstring") gr_udp_sink::disconnect "Send zero-length packet (if eof is requested) then stop sending. - -Zero-byte packets can be interpreted as EOF by gr_udp_source. Note that disconnect occurs automatically when the sink is destroyed, but not when its top_block stops. - -Params: (NONE)" - -%feature("docstring") gr_udp_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_udp_sink "Creates a udp_sink block. - -Write stream to an UDP socket. - -Params: (itemsize, host, port, payload_size, eof)" - -%feature("docstring") gr_udp_source "Read stream from an UDP socket." - -%feature("docstring") gr_udp_source::gr_udp_source "UDP Source Constructor. - -Params: (itemsize, host, port, payload_size, eof, wait)" - -%feature("docstring") gr_udp_source::~gr_udp_source " - -Params: (NONE)" - -%feature("docstring") gr_udp_source::payload_size "return the PAYLOAD_SIZE of the socket - -Params: (NONE)" - -%feature("docstring") gr_udp_source::get_port "return the port number of the socket - -Params: (NONE)" - -%feature("docstring") gr_udp_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_udp_source "Creates a udp_source block. - -Read stream from an UDP socket. - -Params: (itemsize, host, port, payload_size, eof, wait)" - -%feature("docstring") gr_unpack_k_bits_bb "Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB." - -%feature("docstring") gr_unpack_k_bits_bb::gr_unpack_k_bits_bb " - -Params: (k)" - -%feature("docstring") gr_unpack_k_bits_bb::~gr_unpack_k_bits_bb " - -Params: (NONE)" - -%feature("docstring") gr_unpack_k_bits_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_unpack_k_bits_bb "Creates a unpack_k_bits_bb block. - -Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB. - -Params: (k)" - -%feature("docstring") gr_unpacked_to_packed_bb "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of unsigned char; output: stream of unsigned char. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_unpacked_to_packed_bb::gr_unpacked_to_packed_bb " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_unpacked_to_packed_bb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_unpacked_to_packed_bb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_unpacked_to_packed_bb::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_unpacked_to_packed_bb "Creates a unpacked_to_packed_bb block. - -Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of unsigned char; output: stream of unsigned char. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_unpacked_to_packed_ii "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of int; output: stream of int. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_unpacked_to_packed_ii::gr_unpacked_to_packed_ii " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_unpacked_to_packed_ii::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_unpacked_to_packed_ii::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_unpacked_to_packed_ii::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_unpacked_to_packed_ii "Creates a unpacked_to_packed_ii block. - -Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of int; output: stream of int. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_unpacked_to_packed_ss "Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of short; output: stream of short. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols." - -%feature("docstring") gr_unpacked_to_packed_ss::gr_unpacked_to_packed_ss " - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_unpacked_to_packed_ss::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_unpacked_to_packed_ss::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_unpacked_to_packed_ss::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_make_unpacked_to_packed_ss "Creates a unpacked_to_packed_ss block. - -Convert a stream of unpacked bytes or shorts into a stream of packed bytes or shorts. - -input: stream of short; output: stream of short. - -This is the inverse of gr_packed_to_unpacked_XX. - -The low bits are extracted from each input byte or short. These bits are then packed densely into the output bytes or shorts, such that all 8 or 16 bits of the output bytes or shorts are filled with valid input bits. The right thing is done if bits_per_chunk is not a power of two. - -The combination of gr_packed_to_unpacked_XX followed by gr_chunks_to_symbols_Xf or gr_chunks_to_symbols_Xc handles the general case of mapping from a stream of bytes or shorts into arbitrary float or complex symbols. - -Params: (bits_per_chunk, endianness)" - -%feature("docstring") gr_vco_f "VCO - Voltage controlled oscillator - -input: float stream of control voltages; output: float oscillator output." - -%feature("docstring") gr_vco_f::gr_vco_f "VCO - Voltage controlled oscillator. - -Params: (sampling_rate, sensitivity, amplitude)" - -%feature("docstring") gr_vco_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vco_f "Creates a vco_f block. - -VCO - Voltage controlled oscillator - -input: float stream of control voltages; output: float oscillator output. - -Params: (sampling_rate, sensitivity, amplitude)" - -%feature("docstring") gr_vector_sink_b "unsigned char sink that writes to a vector" - -%feature("docstring") gr_vector_sink_b::gr_vector_sink_b " - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_b::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_vector_sink_b::reset " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_b::clear " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_b::data " - -Params: (NONE)" - -%feature("docstring") gr_make_vector_sink_b "Creates a vector_sink_b block. - -unsigned char sink that writes to a vector - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_c "gr_complex sink that writes to a vector" - -%feature("docstring") gr_vector_sink_c::gr_vector_sink_c " - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_vector_sink_c::reset " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_c::clear " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_c::data " - -Params: (NONE)" - -%feature("docstring") gr_make_vector_sink_c "Creates a vector_sink_c block. - -gr_complex sink that writes to a vector - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_f "float sink that writes to a vector" - -%feature("docstring") gr_vector_sink_f::gr_vector_sink_f " - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_vector_sink_f::reset " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_f::clear " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_f::data " - -Params: (NONE)" - -%feature("docstring") gr_make_vector_sink_f "Creates a vector_sink_f block. - -float sink that writes to a vector - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_i "int sink that writes to a vector" - -%feature("docstring") gr_vector_sink_i::gr_vector_sink_i " - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_i::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_vector_sink_i::reset " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_i::clear " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_i::data " - -Params: (NONE)" - -%feature("docstring") gr_make_vector_sink_i "Creates a vector_sink_i block. - -int sink that writes to a vector - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_s "short sink that writes to a vector" - -%feature("docstring") gr_vector_sink_s::gr_vector_sink_s " - -Params: (vlen)" - -%feature("docstring") gr_vector_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_vector_sink_s::reset " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_s::clear " - -Params: (NONE)" - -%feature("docstring") gr_vector_sink_s::data " - -Params: (NONE)" - -%feature("docstring") gr_make_vector_sink_s "Creates a vector_sink_s block. - -short sink that writes to a vector - -Params: (vlen)" - -%feature("docstring") gr_vector_source_b "source of unsigned char's that gets its data from a vector" - -%feature("docstring") gr_vector_source_b::gr_vector_source_b " - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_b::rewind " - -Params: (NONE)" - -%feature("docstring") gr_vector_source_b::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_source_b "Creates a vector_source_b block. - -source of unsigned char's that gets its data from a vector - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_c "source of gr_complex's that gets its data from a vector" - -%feature("docstring") gr_vector_source_c::gr_vector_source_c " - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_c::rewind " - -Params: (NONE)" - -%feature("docstring") gr_vector_source_c::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_source_c "Creates a vector_source_c block. - -source of gr_complex's that gets its data from a vector - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_f "source of float's that gets its data from a vector" - -%feature("docstring") gr_vector_source_f::gr_vector_source_f " - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_f::rewind " - -Params: (NONE)" - -%feature("docstring") gr_vector_source_f::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_source_f "Creates a vector_source_f block. - -source of float's that gets its data from a vector - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_i "source of int's that gets its data from a vector" - -%feature("docstring") gr_vector_source_i::gr_vector_source_i " - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_i::rewind " - -Params: (NONE)" - -%feature("docstring") gr_vector_source_i::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_source_i "Creates a vector_source_i block. - -source of int's that gets its data from a vector - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_s "source of short's that gets its data from a vector" - -%feature("docstring") gr_vector_source_s::gr_vector_source_s " - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_source_s::rewind " - -Params: (NONE)" - -%feature("docstring") gr_vector_source_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_source_s "Creates a vector_source_s block. - -source of short's that gets its data from a vector - -Params: (data, repeat, vlen)" - -%feature("docstring") gr_vector_to_stream "convert a stream of blocks of nitems_per_block items into a stream of items" - -%feature("docstring") gr_vector_to_stream::gr_vector_to_stream " - -Params: (item_size, nitems_per_block)" - -%feature("docstring") gr_vector_to_stream::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_to_stream "Creates a vector_to_stream block. - -convert a stream of blocks of nitems_per_block items into a stream of items - -Params: (item_size, nitems_per_block)" - -%feature("docstring") gr_vector_to_streams "Convert 1 stream of vectors of length N to N streams of items." - -%feature("docstring") gr_vector_to_streams::gr_vector_to_streams " - -Params: (item_size, nstreams)" - -%feature("docstring") gr_vector_to_streams::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_vector_to_streams "Creates a vector_to_streams block. - -Convert 1 stream of vectors of length N to N streams of items. - -Params: (item_size, nstreams)" - -%feature("docstring") gr_wavelet_ff "compute wavelet transform using gsl routines" - -%feature("docstring") gr_wavelet_ff::gr_wavelet_ff " - -Params: (size, order, forward)" - -%feature("docstring") gr_wavelet_ff::~gr_wavelet_ff " - -Params: (NONE)" - -%feature("docstring") gr_wavelet_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_wavelet_ff "Creates a wavelet_ff block. - -compute wavelet transform using gsl routines - -Params: (size, order, forward)" - -%feature("docstring") gr_wavfile_sink "Read stream from a Microsoft PCM (.wav) file, output floats. - -Values are within [-1;1]. Check gr_make_wavfile_source() for extra info." - -%feature("docstring") gr_wavfile_sink::gr_wavfile_sink " - -Params: (filename, n_channels, sample_rate, bits_per_sample)" - -%feature("docstring") gr_wavfile_sink::convert_to_short "Convert a sample value within [-1;+1] to a corresponding short integer value. - -Params: (sample)" - -%feature("docstring") gr_wavfile_sink::close_wav "Writes information to the WAV header which is not available a-priori (chunk size etc.) and closes the file. Not thread-safe and assumes d_fp is a valid file pointer, should thus only be called by other methods. - -Params: (NONE)" - -%feature("docstring") gr_wavfile_sink::~gr_wavfile_sink " - -Params: (NONE)" - -%feature("docstring") gr_wavfile_sink::open "Opens a new file and writes a WAV header. Thread-safe. - -Params: (filename)" - -%feature("docstring") gr_wavfile_sink::close "Closes the currently active file and completes the WAV header. Thread-safe. - -Params: (NONE)" - -%feature("docstring") gr_wavfile_sink::do_update "If any file changes have occurred, update now. This is called internally by work() and thus doesn't usually need to be called by hand. - -Params: (NONE)" - -%feature("docstring") gr_wavfile_sink::set_sample_rate "Set the sample rate. This will not affect the WAV file currently opened. Any following open() calls will use this new sample rate. - -Params: (sample_rate)" - -%feature("docstring") gr_wavfile_sink::set_bits_per_sample "Set bits per sample. This will not affect the WAV file currently opened (see set_sample_rate()). If the value is neither 8 nor 16, the call is ignored and the current value is kept. - -Params: (bits_per_sample)" - -%feature("docstring") gr_wavfile_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_wavfile_sink "Creates a wavfile_sink block. - -Read stream from a Microsoft PCM (.wav) file, output floats. - -Values are within [-1;1]. Check gr_make_wavfile_source() for extra info. - -Params: (filename, n_channels, sample_rate, bits_per_sample)" - -%feature("docstring") gr_wavfile_source "Read stream from a Microsoft PCM (.wav) file, output floats. - -Unless otherwise called, values are within [-1;1]. Check gr_make_wavfile_source() for extra info." - -%feature("docstring") gr_wavfile_source::gr_wavfile_source " - -Params: (filename, repeat)" - -%feature("docstring") gr_wavfile_source::convert_to_float "Convert an integer sample value to a float value within [-1;1]. - -Params: (sample)" - -%feature("docstring") gr_wavfile_source::~gr_wavfile_source " - -Params: (NONE)" - -%feature("docstring") gr_wavfile_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_wavfile_source::sample_rate "Read the sample rate as specified in the wav file header. - -Params: (NONE)" - -%feature("docstring") gr_wavfile_source::bits_per_sample "Return the number of bits per sample as specified in the wav file header. Only 8 or 16 bit are supported here. - -Params: (NONE)" - -%feature("docstring") gr_wavfile_source::channels "Return the number of channels in the wav file as specified in the wav file header. This is also the max number of outputs you can have. - -Params: (NONE)" - -%feature("docstring") gr_make_wavfile_source "Creates a wavfile_source block. - -Read stream from a Microsoft PCM (.wav) file, output floats. - -Unless otherwise called, values are within [-1;1]. Check gr_make_wavfile_source() for extra info. - -Params: (filename, repeat)" - -%feature("docstring") gr_wvps_ff "computes the Wavelet Power Spectrum from a set of wavelet coefficients" - -%feature("docstring") gr_wvps_ff::gr_wvps_ff " - -Params: (ilen)" - -%feature("docstring") gr_wvps_ff::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_wvps_ff "Creates a wvps_ff block. - -computes the Wavelet Power Spectrum from a set of wavelet coefficients - -Params: (ilen)" - -%feature("docstring") gr_xor_bb "output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams." - -%feature("docstring") gr_xor_bb::gr_xor_bb " - -Params: (NONE)" - -%feature("docstring") gr_xor_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_xor_bb "Creates a xor_bb block. - -output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_xor_ii "output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams." - -%feature("docstring") gr_xor_ii::gr_xor_ii " - -Params: (NONE)" - -%feature("docstring") gr_xor_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_xor_ii "Creates a xor_ii block. - -output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams. - -Params: (NONE)" - -%feature("docstring") gr_xor_ss "output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams." - -%feature("docstring") gr_xor_ss::gr_xor_ss " - -Params: (NONE)" - -%feature("docstring") gr_xor_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_make_xor_ss "Creates a xor_ss block. - -output = input_0 ^ input_1 ^ , ... ^ input_N) - -bitwise boolean xor across all input streams. - -Params: (NONE)" - - - -%feature("docstring") msdd_source_simple::msdd_source_simple " - -Params: (src, port_src)" - -%feature("docstring") msdd_source_simple::~msdd_source_simple " - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::set_decim_rate " - -Params: (int)" - -%feature("docstring") msdd_source_simple::set_rx_freq " - -Params: (, )" - -%feature("docstring") msdd_source_simple::set_pga " - -Params: (, )" - -%feature("docstring") msdd_source_simple::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") msdd_source_simple::adc_freq " - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::decim_rate " - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::gain_range " - -Params: (NONE)" - -%feature("docstring") msdd_source_simple::freq_range " - -Params: (NONE)" - -%feature("docstring") msdd_make_source_simple "Creates a source_simple block. - - - -Params: (src, port_src)" - - - -%feature("docstring") noaa_hrpt_decoder::noaa_hrpt_decoder " - -Params: (verbose, output_files)" - -%feature("docstring") noaa_hrpt_decoder::process_mfnum " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::process_address " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::process_day_of_year " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::process_milli1 " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::process_milli2 " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::process_milli3 " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::~noaa_hrpt_decoder " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_decoder::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") noaa_make_hrpt_decoder "Creates a hrpt_decoder block. - - - -Params: (verbose, output_files)" - - - -%feature("docstring") noaa_hrpt_deframer::noaa_hrpt_deframer " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_deframer::enter_idle " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_deframer::enter_synced " - -Params: (NONE)" - -%feature("docstring") noaa_hrpt_deframer::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") noaa_make_hrpt_deframer "Creates a hrpt_deframer block. - - - -Params: (NONE)" - - - -%feature("docstring") noaa_hrpt_pll_cf::noaa_hrpt_pll_cf " - -Params: (alpha, beta, max_offset)" - -%feature("docstring") noaa_hrpt_pll_cf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") noaa_hrpt_pll_cf::set_alpha " - -Params: (alpha)" - -%feature("docstring") noaa_hrpt_pll_cf::set_beta " - -Params: (beta)" - -%feature("docstring") noaa_hrpt_pll_cf::set_max_offset " - -Params: (max_offset)" - -%feature("docstring") noaa_make_hrpt_pll_cf "Creates a hrpt_pll_cf block. - - - -Params: (alpha, beta, max_offset)" - -%feature("docstring") pager_flex_deinterleave "flex deinterleave description" - -%feature("docstring") pager_flex_deinterleave::pager_flex_deinterleave " - -Params: (NONE)" - -%feature("docstring") pager_flex_deinterleave::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") pager_make_flex_deinterleave "Creates a flex_deinterleave block. - -flex deinterleave description - -Params: (NONE)" - -%feature("docstring") pager_flex_frame "flex_frame." - -%feature("docstring") pager_flex_frame::pager_flex_frame " - -Params: (NONE)" - -%feature("docstring") pager_flex_frame::~pager_flex_frame " - -Params: (NONE)" - -%feature("docstring") pager_make_flex_frame "Creates a flex_frame block. - -flex_frame. - -Params: (NONE)" - -%feature("docstring") pager_flex_sync "flex sync description" - -%feature("docstring") pager_flex_sync::pager_flex_sync " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::enter_idle " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::enter_syncing " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::enter_sync1 " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::enter_sync2 " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::enter_data " - -Params: (NONE)" - -%feature("docstring") pager_flex_sync::index_avg " - -Params: (start, end)" - -%feature("docstring") pager_flex_sync::test_sync " - -Params: (sym)" - -%feature("docstring") pager_flex_sync::output_symbol " - -Params: (sym)" - -%feature("docstring") pager_flex_sync::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") pager_flex_sync::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") pager_make_flex_sync "Creates a flex_sync block. - -flex sync description - -Params: (NONE)" - -%feature("docstring") pager_slicer_fb "slicer description" - -%feature("docstring") pager_slicer_fb::pager_slicer_fb " - -Params: (alpha)" - -%feature("docstring") pager_slicer_fb::slice " - -Params: (sample)" - -%feature("docstring") pager_slicer_fb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") pager_slicer_fb::dc_offset " - -Params: (NONE)" - -%feature("docstring") pager_make_slicer_fb "Creates a slicer_fb block. - -slicer description - -Params: (alpha)" - -%feature("docstring") trellis_encoder_bb "Convolutional encoder." - -%feature("docstring") trellis_encoder_bb::trellis_encoder_bb " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_bb::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bb::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bb::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_bb "Creates a encoder_bb block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_bi "Convolutional encoder." - -%feature("docstring") trellis_encoder_bi::trellis_encoder_bi " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_bi::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bi::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bi::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_bi "Creates a encoder_bi block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_bs "Convolutional encoder." - -%feature("docstring") trellis_encoder_bs::trellis_encoder_bs " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_bs::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bs::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_bs::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_bs "Creates a encoder_bs block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_ii "Convolutional encoder." - -%feature("docstring") trellis_encoder_ii::trellis_encoder_ii " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_ii::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_ii::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_ii::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_ii "Creates a encoder_ii block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_si "Convolutional encoder." - -%feature("docstring") trellis_encoder_si::trellis_encoder_si " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_si::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_si::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_si::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_si "Creates a encoder_si block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_ss "Convolutional encoder." - -%feature("docstring") trellis_encoder_ss::trellis_encoder_ss " - -Params: (FSM, ST)" - -%feature("docstring") trellis_encoder_ss::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_ss::ST " - -Params: (NONE)" - -%feature("docstring") trellis_encoder_ss::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_encoder_ss "Creates a encoder_ss block. - -Convolutional encoder. - -Params: (FSM, ST)" - -%feature("docstring") trellis_metrics_c "Evaluate metrics for use by the Viterbi algorithm." - -%feature("docstring") trellis_metrics_c::trellis_metrics_c " - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_c::O " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_c::D " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_c::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_c::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_c::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_metrics_c::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_metrics_c::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_metrics_c "Creates a metrics_c block. - -Evaluate metrics for use by the Viterbi algorithm. - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_f "Evaluate metrics for use by the Viterbi algorithm." - -%feature("docstring") trellis_metrics_f::trellis_metrics_f " - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_f::O " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_f::D " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_f::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_f::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_f::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_metrics_f::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_metrics_f::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_metrics_f "Creates a metrics_f block. - -Evaluate metrics for use by the Viterbi algorithm. - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_i "Evaluate metrics for use by the Viterbi algorithm." - -%feature("docstring") trellis_metrics_i::trellis_metrics_i " - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_i::O " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_i::D " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_i::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_i::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_i::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_metrics_i::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_metrics_i::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_metrics_i "Creates a metrics_i block. - -Evaluate metrics for use by the Viterbi algorithm. - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_s "Evaluate metrics for use by the Viterbi algorithm." - -%feature("docstring") trellis_metrics_s::trellis_metrics_s " - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_metrics_s::O " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_s::D " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_s::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_s::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_metrics_s::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_metrics_s::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_metrics_s::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_metrics_s "Creates a metrics_s block. - -Evaluate metrics for use by the Viterbi algorithm. - -Params: (O, D, TABLE, TYPE)" - -%feature("docstring") trellis_permutation "Permutation." - -%feature("docstring") trellis_permutation::trellis_permutation " - -Params: (K, TABLE, SYMS_PER_BLOCK, NBYTES)" - -%feature("docstring") trellis_permutation::K " - -Params: (NONE)" - -%feature("docstring") trellis_permutation::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_permutation::SYMS_PER_BLOCK " - -Params: (NONE)" - -%feature("docstring") trellis_permutation::NBYTES_INOUT " - -Params: (NONE)" - -%feature("docstring") trellis_permutation::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") trellis_make_permutation "Creates a permutation block. - -Permutation. - -Params: (K, TABLE, SYMS_PER_BLOCK, NBYTES)" - - - -%feature("docstring") trellis_siso_combined_f::trellis_siso_combined_f " - -Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE, D, TABLE, TYPE)" - -%feature("docstring") trellis_siso_combined_f::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::K " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::SK " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::POSTI " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::POSTO " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::SISO_TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::D " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_siso_combined_f::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_siso_combined_f::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_siso_combined_f "Creates a siso_combined_f block. - - - -Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_siso_f::trellis_siso_f " - -Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE)" - -%feature("docstring") trellis_siso_f::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::K " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::SK " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::POSTI " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::POSTO " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::SISO_TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_siso_f::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_siso_f::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_siso_f "Creates a siso_f block. - - - -Params: (FSM, K, S0, SK, POSTI, POSTO, d_SISO_TYPE)" - - - -%feature("docstring") trellis_viterbi_b::trellis_viterbi_b " - -Params: (FSM, K, S0, SK)" - -%feature("docstring") trellis_viterbi_b::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_b::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_b::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_b::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_b::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_b::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_b "Creates a viterbi_b block. - - - -Params: (FSM, K, S0, SK)" - - - -%feature("docstring") trellis_viterbi_combined_cb::trellis_viterbi_combined_cb " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_cb::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cb::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_cb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_cb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_cb "Creates a viterbi_combined_cb block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_ci::trellis_viterbi_combined_ci " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_ci::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ci::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_ci::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_ci::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_ci "Creates a viterbi_combined_ci block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_cs::trellis_viterbi_combined_cs " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_cs::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_cs::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_cs::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_cs::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_cs "Creates a viterbi_combined_cs block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_fb::trellis_viterbi_combined_fb " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_fb::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fb::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_fb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_fb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_fb "Creates a viterbi_combined_fb block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_fi::trellis_viterbi_combined_fi " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_fi::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fi::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_fi::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_fi::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_fi "Creates a viterbi_combined_fi block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_fs::trellis_viterbi_combined_fs " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_fs::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_fs::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_fs::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_fs::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_fs "Creates a viterbi_combined_fs block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_ib::trellis_viterbi_combined_ib " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_ib::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ib::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_ib::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_ib::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_ib "Creates a viterbi_combined_ib block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_ii::trellis_viterbi_combined_ii " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_ii::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ii::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_ii::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_ii::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_ii "Creates a viterbi_combined_ii block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_is::trellis_viterbi_combined_is " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_is::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_is::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_is::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_is::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_is "Creates a viterbi_combined_is block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_sb::trellis_viterbi_combined_sb " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_sb::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_sb::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_sb::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_sb::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_sb "Creates a viterbi_combined_sb block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_si::trellis_viterbi_combined_si " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_si::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_si::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_si::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_si::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_si "Creates a viterbi_combined_si block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_combined_ss::trellis_viterbi_combined_ss " - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - -%feature("docstring") trellis_viterbi_combined_ss::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::D " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::TABLE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::TYPE " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_combined_ss::set_TABLE " - -Params: (table)" - -%feature("docstring") trellis_viterbi_combined_ss::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_combined_ss::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_combined_ss "Creates a viterbi_combined_ss block. - - - -Params: (FSM, K, S0, SK, D, TABLE, TYPE)" - - - -%feature("docstring") trellis_viterbi_i::trellis_viterbi_i " - -Params: (FSM, K, S0, SK)" - -%feature("docstring") trellis_viterbi_i::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_i::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_i::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_i::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_i::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_i::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_i "Creates a viterbi_i block. - - - -Params: (FSM, K, S0, SK)" - - - -%feature("docstring") trellis_viterbi_s::trellis_viterbi_s " - -Params: (FSM, K, S0, SK)" - -%feature("docstring") trellis_viterbi_s::FSM " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_s::K " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_s::S0 " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_s::SK " - -Params: (NONE)" - -%feature("docstring") trellis_viterbi_s::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") trellis_viterbi_s::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") trellis_make_viterbi_s "Creates a viterbi_s block. - - - -Params: (FSM, K, S0, SK)" - - - -%feature("docstring") usrp2_sink_16sc::usrp2_sink_16sc " - -Params: (ifc, mac)" - -%feature("docstring") usrp2_sink_16sc::~usrp2_sink_16sc " - -Params: (NONE)" - -%feature("docstring") usrp2_sink_16sc::work "Derived class must override this. - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp2_make_sink_16sc "Creates a sink_16sc block. - - - -Params: (ifc, mac)" - - - -%feature("docstring") usrp2_sink_32fc::usrp2_sink_32fc " - -Params: (ifc, mac)" - -%feature("docstring") usrp2_sink_32fc::~usrp2_sink_32fc " - -Params: (NONE)" - -%feature("docstring") usrp2_sink_32fc::work "Derived class must override this. - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp2_make_sink_32fc "Creates a sink_32fc block. - - - -Params: (ifc, mac)" - - - -%feature("docstring") usrp2_source_16sc::usrp2_source_16sc " - -Params: (ifc, mac)" - -%feature("docstring") usrp2_source_16sc::~usrp2_source_16sc " - -Params: (NONE)" - -%feature("docstring") usrp2_source_16sc::work "Derived class must override this. - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp2_make_source_16sc "Creates a source_16sc block. - - - -Params: (ifc, mac)" - - - -%feature("docstring") usrp2_source_32fc::usrp2_source_32fc " - -Params: (ifc, mac)" - -%feature("docstring") usrp2_source_32fc::~usrp2_source_32fc " - -Params: (NONE)" - -%feature("docstring") usrp2_source_32fc::work "Derived class must override this. - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp2_make_source_32fc "Creates a source_32fc block. - - - -Params: (ifc, mac)" - -%feature("docstring") usrp_sink_c "Interface to Universal Software Radio Peripheral Tx path - -input: gr_complex." - -%feature("docstring") usrp_sink_c::usrp_sink_c " - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_sink_c::copy_to_usrp_buffer "convert between input item format and usrp native format - -Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" - -%feature("docstring") usrp_sink_c::~usrp_sink_c " - -Params: (NONE)" - -%feature("docstring") usrp_make_sink_c "Creates a sink_c block. - -Interface to Universal Software Radio Peripheral Tx path - -input: gr_complex. - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_sink_s "Interface to Universal Software Radio Peripheral Tx path - -input: short." - -%feature("docstring") usrp_sink_s::usrp_sink_s " - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_sink_s::copy_to_usrp_buffer "convert between input item format and usrp native format - -Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" - -%feature("docstring") usrp_sink_s::~usrp_sink_s " - -Params: (NONE)" - -%feature("docstring") usrp_make_sink_s "Creates a sink_s block. - -Interface to Universal Software Radio Peripheral Tx path - -input: short. - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_source_c "Interface to Universal Software Radio Peripheral Rx path - -output: 1 stream of complex" - -%feature("docstring") usrp_source_c::usrp_source_c " - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_source_c::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. - -Params: (noutput_items)" - -%feature("docstring") usrp_source_c::copy_from_usrp_buffer "convert between native usrp format and output item format - -The copy must consume all bytes available. That is, must equal . - -Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" - -%feature("docstring") usrp_source_c::~usrp_source_c " - -Params: (NONE)" - -%feature("docstring") usrp_make_source_c "Creates a source_c block. - -Interface to Universal Software Radio Peripheral Rx path - -output: 1 stream of complex - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_source_s "Interface to Universal Software Radio Peripheral Rx path - -output: 1 stream of short." - -%feature("docstring") usrp_source_s::usrp_source_s " - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_source_s::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. - -Params: (noutput_items)" - -%feature("docstring") usrp_source_s::copy_from_usrp_buffer "convert between native usrp format and output item format - -The copy must consume all bytes available. That is, must equal . - -Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" - -%feature("docstring") usrp_source_s::~usrp_source_s " - -Params: (NONE)" - -%feature("docstring") usrp_make_source_s "Creates a source_s block. - -Interface to Universal Software Radio Peripheral Rx path - -output: 1 stream of short. - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") aadvarky_enough " - -Params: (aad)" - -%feature("docstring") main " - -Params: (NONE)" - -%feature("docstring") audio_alsa_make_sink "make an alsa audio sink. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_alsa_make_source "Make an ALSA audio source. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_jack_make_sink "make an JACK audio sink. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") jack_sink_process " - -Params: (nframes, arg)" - -%feature("docstring") audio_jack_make_source "make a JACK audio source. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") jack_source_process " - -Params: (nframes, arg)" - -%feature("docstring") audio_oss_make_sink " - -Params: (sampling_rate, dev, ok_to_block)" - -%feature("docstring") audio_oss_make_source " - -Params: (sampling_rate, dev, ok_to_block)" - -%feature("docstring") audio_osx_make_sink " - -Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" - -%feature("docstring") audio_osx_make_source " - -Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" - -%feature("docstring") audio_portaudio_make_sink "PORTAUDIO audio sink. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_portaudio_make_source "PORTAUDIO audio source. - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_windows_make_sink " - -Params: (sampling_freq, dev)" - -%feature("docstring") audio_windows_make_source " - -Params: (sampling_freq, dev)" - -%feature("docstring") dec2base "change base - -Params: (num, base, s)" - -%feature("docstring") dec2bases " - -Params: (num, bases, s)" - -%feature("docstring") base2dec " - -Params: (s, base)" - -%feature("docstring") bases2dec " - -Params: (s, bases)" - -%feature("docstring") ccomplex_dotprod_generic " - -Params: (input, taps, n_2_ccomplex_blocks, result)" - -%feature("docstring") ccomplex_dotprod_3dnow " - -Params: (input, taps, n_2_ccomplex_blocks, result)" - -%feature("docstring") ccomplex_dotprod_3dnowext " - -Params: (input, taps, n_2_ccomplex_blocks, result)" - -%feature("docstring") ccomplex_dotprod_sse " - -Params: (input, taps, n_2_ccomplex_blocks, result)" - -%feature("docstring") modnn " - -Params: (rs, x)" - -%feature("docstring") complex_dotprod_generic " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") complex_dotprod_3dnow " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") complex_dotprod_3dnowext " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") complex_dotprod_sse " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") complex_vec_test0 " - -Params: (NONE)" - -%feature("docstring") complex_vec_test1 " - -Params: (input)" - -%feature("docstring") complex_scalar_test0 " - -Params: (NONE)" - -%feature("docstring") complex_scalar_test1 " - -Params: (input)" - -%feature("docstring") int_vec_test0 " - -Params: (NONE)" - -%feature("docstring") int_vec_test1 " - -Params: (input)" - -%feature("docstring") float_vec_test0 " - -Params: (NONE)" - -%feature("docstring") float_vec_test1 " - -Params: (input)" - -%feature("docstring") getopt " - -Params: (argc, argv, optstring)" - -%feature("docstring") usleep " - -Params: (usec)" - -%feature("docstring") nanosleep " - -Params: (req, rem)" - -%feature("docstring") gettimeofday " - -Params: (tv, tz)" - -%feature("docstring") create_atsci_equalizer_nop " - -Params: (NONE)" - -%feature("docstring") create_atsci_equalizer_lms " - -Params: (NONE)" - -%feature("docstring") create_atsci_equalizer_lms2 " - -Params: (NONE)" - -%feature("docstring") create_atsci_fs_checker "Factory that creates appropriate atsci_fs_checker - -Params: (NONE)" - -%feature("docstring") create_atsci_fs_correlator "Factory that creates appropriate atsci_fs_correlator - -Params: (NONE)" - -%feature("docstring") cvsd_make_decode_bs "Constructor parameters to initialize the CVSD decoder. The default values are modeled after the Bluetooth standard and should not be changed, except by an advanced user. - -Params: (min_step, max_step, step_decay, accum_decay, K, J, pos_accum_max, neg_accum_max)" - -%feature("docstring") cvsd_make_encode_sb "Constructor parameters to initialize the CVSD encoder. The default values are modeled after the Bluetooth standard and should not be changed except by an advanced user. - -Params: (min_step, max_step, step_decay, accum_decay, K, J, pos_accum_max, neg_accum_max)" - -%feature("docstring") darwin_error_str " - -Params: (result)" - -%feature("docstring") darwin_to_errno " - -Params: (result)" - -%feature("docstring") ep_to_pipeRef " - -Params: (device, ep)" - -%feature("docstring") operator<< " - -Params: (os, x)" - -%feature("docstring") instantiate_dbs " - -Params: (dbid, usrp, which_side)" - -%feature("docstring") int_seq_to_str " - -Params: (seq)" - -%feature("docstring") str_to_int_seq " - -Params: (str)" - -%feature("docstring") make_dial_tone " - -Params: (NONE)" - -%feature("docstring") dotprod_ccf_armv7_a " - -Params: (a, b, res, n)" - -%feature("docstring") dotprod_fff_altivec " - -Params: (a, b, n)" - -%feature("docstring") dotprod_fff_armv7_a " - -Params: (a, b, n)" - -%feature("docstring") fcomplex_dotprod_3dnow " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") fcomplex_dotprod_sse " - -Params: (input, taps, n_2_complex_blocks, result)" - -%feature("docstring") _fft_1d_r2 " - -Params: (out, in, W, log2_size)" - -%feature("docstring") mod255 " - -Params: (x)" - -%feature("docstring") float_dotprod_generic " - -Params: (input, taps, n_4_float_blocks)" - -%feature("docstring") float_dotprod_3dnow " - -Params: (input, taps, n_4_float_blocks)" - -%feature("docstring") float_dotprod_sse " - -Params: (input, taps, n_4_float_blocks)" - -%feature("docstring") ep_to_pipeRef " - -Params: (device, ep)" - -%feature("docstring") g72x_init_state " - -Params: ()" - -%feature("docstring") g721_encoder " - -Params: (sample, in_coding, state_ptr)" - -%feature("docstring") g721_decoder " - -Params: (code, out_coding, state_ptr)" - -%feature("docstring") g723_24_encoder " - -Params: (sample, in_coding, state_ptr)" - -%feature("docstring") g723_24_decoder " - -Params: (code, out_coding, state_ptr)" - -%feature("docstring") g723_40_encoder " - -Params: (sample, in_coding, state_ptr)" - -%feature("docstring") g723_40_decoder " - -Params: (code, out_coding, state_ptr)" - -%feature("docstring") quantize " - -Params: (d, y, table, size)" - -%feature("docstring") reconstruct " - -Params: (, , )" - -%feature("docstring") update " - -Params: (code_size, y, wi, fi, dq, sr, dqsez, state_ptr)" - -%feature("docstring") tandem_adjust_alaw " - -Params: (sr, se, y, i, sign, qtab)" - -%feature("docstring") tandem_adjust_ulaw " - -Params: (sr, se, y, i, sign, qtab)" - -%feature("docstring") linear2alaw " - -Params: (pcm_val)" - -%feature("docstring") alaw2linear " - -Params: (a_val)" - -%feature("docstring") linear2ulaw " - -Params: (pcm_val)" - -%feature("docstring") ulaw2linear " - -Params: (u_val)" - -%feature("docstring") predictor_zero " - -Params: (state_ptr)" - -%feature("docstring") predictor_pole " - -Params: (state_ptr)" - -%feature("docstring") step_size " - -Params: (state_ptr)" - -%feature("docstring") gc_aligned_alloc "Return pointer to chunk of storage of size size bytes. The allocation will be aligned to an boundary. - -Throws if can't allocate memory. The storage should be freed with \"free\" when done. The memory is initialized to zero. - -Params: (size, alignment)" - -%feature("docstring") gc_udelay " - -Params: (usecs)" - -%feature("docstring") gc_cdelay " - -Params: (cpu_cycles)" - -%feature("docstring") gc_jd_queue_init "Initialize the queue to empty. - -Params: (q)" - -%feature("docstring") gc_jd_queue_enqueue "Add to the tail of . - -Params: (q, item)" - -%feature("docstring") gc_jd_queue_dequeue "Remove and return item at head of queue, or 0 if queue is empty. - -Params: (q)" - -%feature("docstring") gc_jd_queue_dequeue "Remove and return item at head of queue. - -If return is not GCQ_OK, we're holding a lock-line reservation that covers the queue. - -Params: (q, item_ea, jd_tag, item)" - -%feature("docstring") gc_jd_stack_init "Initialize the stack to empty. - -Params: (stack)" - -%feature("docstring") gc_jd_stack_push "Add to the top of . - -Params: (stack, item)" - -%feature("docstring") gc_jd_stack_pop "pop and return top item on stack, or 0 if stack is empty - -Params: (stack)" - -%feature("docstring") ea_to_jdp " - -Params: (ea)" - -%feature("docstring") jdp_to_ea " - -Params: (item)" - -%feature("docstring") gc_program_handle_from_filename "Return a boost::shared_ptr to an spe_program_handle_t. - -Calls spe_image_open to open the file. If successful returns a boost::shared_ptr that will call spe_image_close when it's time to free the object. - -Returns the equivalent of the NULL pointer if the file cannot be opened, or if it's not an SPE ELF object file. - -Params: (filename)" - -%feature("docstring") gc_program_handle_from_address "Return a boost::shared_ptr to an spe_program_handle_t. - -If successful returns a boost::shared_ptr that does nothing when it's time to free the object. - -Params: (handle)" - -%feature("docstring") gc_job_status_string "map gc_job_status_t into a string - -Params: (status)" - -%feature("docstring") gc_make_job_manager " - -Params: (options)" - -%feature("docstring") gcpd_find_table "find the gc_proc_def table in the SPE program - -Params: (program, table, nentries, ls_addr)" - -%feature("docstring") gc_uniform_deviate "Return a uniformly distributed value in the range [0, 1.0) (Linear congruential generator. YMMV. Caveat emptor.). - -Params: ()" - -%feature("docstring") gc_set_seed " - -Params: (seed)" - -%feature("docstring") ea_to_ptr " - -Params: (ea)" - -%feature("docstring") ptr_to_ea " - -Params: (p)" - -%feature("docstring") __get_cpuid_max " - -Params: (__ext, __sig)" - -%feature("docstring") __get_cpuid " - -Params: (__level, __eax, __ebx, __ecx, __edx)" - -%feature("docstring") __get_cpuid_max " - -Params: (__ext, __sig)" - -%feature("docstring") __get_cpuid " - -Params: (__level, __eax, __ebx, __ecx, __edx)" - -%feature("docstring") gcp_fft_1d_r2_submit "Submit a job that computes the forward or inverse FFT. - -Returns a shared_ptr to a job descriptor which should be passed to wait_job*. Throws an exception in the event of a problem. This uses the FFTW conventions for scaling. That is, neither the forward nor inverse are scaled by 1/fft_length. - -Params: (mgr, log2_fft_length, forward, shift, out, in, twiddle, window)" - -%feature("docstring") gcp_fft_1d_r2_twiddle "Compute twiddle factors. - -Params: (log2_fft_length, W)" - -%feature("docstring") operator< " - -Params: (lhs, rhs)" - -%feature("docstring") gr_basic_block_ncurrently_allocated " - -Params: (NONE)" - -%feature("docstring") operator<< " - -Params: (os, basic_block)" - -%feature("docstring") operator<< " - -Params: (os, m)" - -%feature("docstring") gr_block_detail_ncurrently_allocated " - -Params: (NONE)" - -%feature("docstring") gr_buffer_add_reader "Create a new gr_buffer_reader and attach it to buffer . - -Params: (buf, nzero_preload, link)" - -%feature("docstring") gr_buffer_ncurrently_allocated "returns # of gr_buffers currently allocated - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader_ncurrently_allocated "returns # of gr_buffer_readers currently allocated - -Params: (NONE)" - -%feature("docstring") is_complex " - -Params: (x)" - -%feature("docstring") gr_prefix "return ./configure --prefix argument. Typically /usr/local - -Params: (NONE)" - -%feature("docstring") gr_sysconfdir "return ./configure --sysconfdir argument. Typically $prefix/etc or /etc - -Params: (NONE)" - -%feature("docstring") gr_prefsdir "return preferences file directory. Typically $sysconfdir/etc/conf.d - -Params: (NONE)" - -%feature("docstring") gr_build_date "return date/time of build, as set when 'bootstrap' is run - -Params: (NONE)" - -%feature("docstring") gr_version "return version string defined in configure.ac - -Params: (NONE)" - -%feature("docstring") gr_count_bits8 " - -Params: (x)" - -%feature("docstring") gr_count_bits16 " - -Params: (x)" - -%feature("docstring") gr_count_bits32 " - -Params: (x)" - -%feature("docstring") gr_count_bits64 " - -Params: (x)" - -%feature("docstring") gr_update_crc32 "update running CRC-32 - -Update a running CRC with the bytes buf[0..len-1] The CRC should be initialized to all 1's, and the transmitted value is the 1's complement of the final running CRC. The resulting CRC should be transmitted in big endian order. - -Params: (crc, buf, len)" - -%feature("docstring") gr_crc32 " - -Params: (buf, len)" - -%feature("docstring") gr_dispatcher_singleton " - -Params: (NONE)" - -%feature("docstring") gr_expj " - -Params: (phase)" - -%feature("docstring") gr_feval_dd_example "trivial examples / test cases showing C++ calling Python code - -Params: (f, x)" - -%feature("docstring") gr_feval_cc_example " - -Params: (f, x)" - -%feature("docstring") gr_feval_ll_example " - -Params: (f, x)" - -%feature("docstring") gr_feval_example " - -Params: (f)" - -%feature("docstring") gr_fir_sysconfig_singleton " - -Params: (NONE)" - -%feature("docstring") operator<< " - -Params: (os, endp)" - -%feature("docstring") gr_make_io_signature "Create an i/o signature. - -Params: (min_streams, max_streams, sizeof_stream_item)" - -%feature("docstring") gr_make_io_signature2 "Create an i/o signature. - -Params: (min_streams, max_streams, sizeof_stream_item1, sizeof_stream_item2)" - -%feature("docstring") gr_make_io_signature3 "Create an i/o signature. - -Params: (min_streams, max_streams, sizeof_stream_item1, sizeof_stream_item2, sizeof_stream_item3)" - -%feature("docstring") gr_make_io_signaturev "Create an i/o signature. - -If there are more streams than there are entries in sizeof_stream_items, the value of the last entry in sizeof_stream_items is used for the missing values. sizeof_stream_items must contain at least 1 entry. - -Params: (min_streams, max_streams, sizeof_stream_items)" - -%feature("docstring") gr_log2_const " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 1 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 2 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 4 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 8 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 16 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 32 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 64 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 128 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 256 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 512 > " - -Params: (NONE)" - -%feature("docstring") gr_log2_const< 1024 > " - -Params: (NONE)" - -%feature("docstring") gr_is_power_of_2 " - -Params: (x)" - -%feature("docstring") gr_fast_atan2f "Fast arc tangent using table lookup and linear interpolation. - -This function calculates the angle of the vector (x,y) based on a table lookup and linear interpolation. The table uses a 256 point table covering -45 to +45 degrees and uses symetry to determine the final angle value in the range of -180 to 180 degrees. Note that this function uses the small angle approximation for values close to zero. This routine calculates the arc tangent with an average error of +/- 0.045 degrees. - -Params: (y, x)" - -%feature("docstring") gr_branchless_clip " - -Params: (x, clip)" - -%feature("docstring") gr_clip " - -Params: (x, clip)" - -%feature("docstring") gr_binary_slicer " - -Params: (x)" - -%feature("docstring") gr_quad_45deg_slicer " - -Params: (r, i)" - -%feature("docstring") gr_quad_0deg_slicer " - -Params: (r, i)" - -%feature("docstring") gr_branchless_binary_slicer " - -Params: (x)" - -%feature("docstring") gr_branchless_quad_0deg_slicer " - -Params: (r, i)" - -%feature("docstring") gr_branchless_quad_45deg_slicer " - -Params: (r, i)" - -%feature("docstring") gr_p2_round_down " - -Params: (x, pow2)" - -%feature("docstring") gr_p2_round_up " - -Params: (x, pow2)" - -%feature("docstring") gr_p2_modulo " - -Params: (x, pow2)" - -%feature("docstring") gr_p2_modulo_neg " - -Params: (x, pow2)" - -%feature("docstring") gr_make_message_from_string " - -Params: (s, type, arg1, arg2)" - -%feature("docstring") gr_message_ncurrently_allocated " - -Params: (NONE)" - -%feature("docstring") gr_rounduppow2 " - -Params: (n)" - -%feature("docstring") gr_zero_vector " - -Params: (v)" - -%feature("docstring") gr_make_msg_queue " - -Params: (limit)" - -%feature("docstring") gr_pagesize "return the page size in bytes - -Params: (NONE)" - -%feature("docstring") gr_enable_realtime_scheduling "If possible, enable high-priority \"real time\" scheduling. - -Params: (NONE)" - -%feature("docstring") gr_remez "Parks-McClellan FIR filter design. - -Calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands. - - -Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2) - -Params: (order, bands, ampl, error_weight, filter_type, grid_density)" - -%feature("docstring") gr_reverse " - -Params: (taps)" - -%feature("docstring") gr_sincos " - -Params: (x, sin, cos)" - -%feature("docstring") gr_sincosf " - -Params: (x, sin, cos)" - -%feature("docstring") gr_tmp_path "directory to create temporary files - -Params: (NONE)" - -%feature("docstring") gr_appdata_path "directory to store application data - -Params: (NONE)" - -%feature("docstring") get_unittest_path " - -Params: (filename)" - -%feature("docstring") gri_add_const_ss "Low-level, high-speed add_const_ss primitive. - -copy src to dst adding konst - -Params: (dst, src, nshorts, konst)" - -%feature("docstring") gri_alsa_dump_hw_params " - -Params: (pcm, hwparams, fp)" - -%feature("docstring") gri_alsa_pick_acceptable_format " - -Params: (pcm, hwparams, acceptable_formats, nacceptable_formats, selected_format, error_msg_tag, verbose)" - -%feature("docstring") gri_char_to_float " - -Params: (in, out, nsamples)" - -%feature("docstring") gri_float_to_char "convert array of floats to chars with rounding and saturation. - -Params: (in, out, nsamples)" - -%feature("docstring") gri_float_to_short "convert array of floats to shorts with rounding and saturation. - -Params: (in, out, nsamples)" - -%feature("docstring") gri_float_to_uchar "convert array of floats to unsigned chars with rounding and saturation. - -Params: (in, out, nsamples)" - -%feature("docstring") gri_interleaved_short_to_complex " - -Params: (in, out, nsamples)" - -%feature("docstring") gri_pa_find_device_by_name " - -Params: (name)" - -%feature("docstring") gri_print_devices " - -Params: (NONE)" - -%feature("docstring") gri_short_to_float " - -Params: (in, out, nsamples)" - -%feature("docstring") gri_uchar_to_float " - -Params: (in, out, nsamples)" - -%feature("docstring") gri_wav_read_sample "Read one sample from an open WAV file at the current position. - -Takes care of endianness. - -Params: (fp, bytes_per_sample)" - -%feature("docstring") gri_wavheader_write "Write a valid RIFF file header. - -Note: Some header values are kept blank because they're usually not known a-priori (file and chunk lengths). Use gri_wavheader_complete() to fill these in. - -Params: (fp, sample_rate, nchans, bytes_per_sample)" - -%feature("docstring") gri_wav_write_sample "Write one sample to an open WAV file at the current position. - -Takes care of endianness. - -Params: (fp, sample, bytes_per_sample)" - -%feature("docstring") gri_wavheader_complete "Complete a WAV header. - -Note: The stream position is changed during this function. If anything needs to be written to the WAV file after calling this function (which shouldn't happen), you need to fseek() to the end of the file (or whereever). - - File pointer to an open WAV file with a blank header Length of all samples written to the file in bytes. - -Params: (fp, byte_count)" - -%feature("docstring") gsm_fr_make_decode_ps " - -Params: (NONE)" - -%feature("docstring") gsm_fr_make_encode_sp " - -Params: (NONE)" - -%feature("docstring") make_i2c_bbio_pp " - -Params: (pp)" - -%feature("docstring") make_i2c_bitbang " - -Params: (io)" - -%feature("docstring") htonll " - -Params: (x)" - -%feature("docstring") ntohll " - -Params: (x)" - -%feature("docstring") ntohx " - -Params: (x)" - -%feature("docstring") htonx " - -Params: (x)" - -%feature("docstring") modnn " - -Params: (rs, x)" - -%feature("docstring") fft_1d_r2 " - -Params: (out, in, W, log2_size)" - -%feature("docstring") malloc16Align " - -Params: (size)" - -%feature("docstring") calloc16Align " - -Params: (nmemb, size)" - -%feature("docstring") free16Align " - -Params: (p)" - -%feature("docstring") md5_init_ctx " - -Params: (ctx)" - -%feature("docstring") md5_process_block " - -Params: (buffer, len, ctx)" - -%feature("docstring") md5_process_bytes " - -Params: (buffer, len, ctx)" - -%feature("docstring") md5_finish_ctx " - -Params: (ctx, resbuf)" - -%feature("docstring") md5_read_ctx " - -Params: (ctx, resbuf)" - -%feature("docstring") md5_stream " - -Params: (stream, resblock)" - -%feature("docstring") md5_buffer " - -Params: (buffer, len, resblock)" - -%feature("docstring") smp_mb " - -Params: ()" - -%feature("docstring") smp_rmb " - -Params: ()" - -%feature("docstring") smp_wmb " - -Params: ()" - -%feature("docstring") msdd_rs_make_source_simple " - -Params: (src, port_src)" - -%feature("docstring") pageri_bch3221 " - -Params: (data)" - -%feature("docstring") find_flex_mode " - -Params: (sync_code)" - -%feature("docstring") is_alphanumeric_page " - -Params: (type)" - -%feature("docstring") is_numeric_page " - -Params: (type)" - -%feature("docstring") is_tone_page " - -Params: (type)" - -%feature("docstring") pageri_reverse_bits8 " - -Params: (val)" - -%feature("docstring") pageri_reverse_bits32 " - -Params: (val)" - -%feature("docstring") posix_memalign " - -Params: (memptr, alignment, size)" - -%feature("docstring") make_ppio "Factory method. - -Split out from class to make life easier for SWIG - -Params: (which_pp)" - -%feature("docstring") make_ppio_ppdev " - -Params: (which)" - -%feature("docstring") make_psk " - -Params: (gr_constell)" - -%feature("docstring") make_qam " - -Params: (gr_constell)" - -%feature("docstring") SWAP " - -Params: (a, b)" - -%feature("docstring") quicksort_index " - -Params: (p, index, left, right)" - -%feature("docstring") encode_rs_char " - -Params: (rs, data, parity)" - -%feature("docstring") decode_rs_char " - -Params: (rs, data, eras_pos, no_eras)" - -%feature("docstring") init_rs_char " - -Params: (symsize, gfpoly, fcr, prim, nroots)" - -%feature("docstring") free_rs_char " - -Params: (rs)" - -%feature("docstring") encode_rs_int " - -Params: (rs, data, parity)" - -%feature("docstring") decode_rs_int " - -Params: (rs, data, eras_pos, no_eras)" - -%feature("docstring") init_rs_int " - -Params: (symsize, gfpoly, fcr, prim, nroots)" - -%feature("docstring") free_rs_int " - -Params: (rs)" - -%feature("docstring") encode_rs_8 " - -Params: (data, parity)" - -%feature("docstring") decode_rs_8 " - -Params: (data, eras_pos, no_eras)" - -%feature("docstring") short_dotprod_generic " - -Params: (input, taps, n_4_short_blocks)" - -%feature("docstring") short_dotprod_mmx " - -Params: (input, taps, n_4_short_blocks)" - -%feature("docstring") short_dotprod_sse2 " - -Params: (input, taps, n_4_short_blocks)" - -%feature("docstring") qsimp " - -Params: (func, a, b)" - -%feature("docstring") strtod_si "convert string at s to double honoring any trailing SI suffixes - -Params: (s, result)" - -%feature("docstring") calc_metric " - -Params: (O, D, TABLE, in, metric, type)" - -%feature("docstring") uhd_make_multi_usrp_sink " - -Params: (device_addr, io_type, num_channels)" - -%feature("docstring") uhd_make_multi_usrp_source " - -Params: (device_addr, io_type, num_channels)" - -%feature("docstring") uhd_make_single_usrp_sink " - -Params: (device_addr, io_type, num_channels)" - -%feature("docstring") uhd_make_single_usrp_source " - -Params: (device_addr, io_type, num_channels)" - -%feature("docstring") operator<< " - -Params: (os, x)" - -%feature("docstring") bswap_16 "routines for convertering between host and usrp byte order - -Prior to including this file, the user must include \"config.h\" which will or won't define WORDS_BIGENDIAN based on the result of the AC_C_BIGENDIAN autoconf test. - -Params: (x)" - -%feature("docstring") bswap_32 " - -Params: (x)" - -%feature("docstring") host_to_usrp_u32 " - -Params: (x)" - -%feature("docstring") usrp_to_host_u32 " - -Params: (x)" - -%feature("docstring") host_to_usrp_short " - -Params: (x)" - -%feature("docstring") usrp_to_host_short " - -Params: (x)" - -%feature("docstring") usrp_rx_config_stream_count "given a usrp_rx_config word, return the number of I & Q streams that are interleaved on the USB. - -Params: (usrp_rx_config)" - -%feature("docstring") usrp_tx_config_stream_count "given a usrp_tx_config word, return the number of I & Q streams that are interleaved on the USB. - -Params: (usrp_tx_config)" - -%feature("docstring") usrp_one_time_init "initialize libusb; Behavior differs depending on libusb version - -libusb-0.12 - -Probe busses and devices. The argument is ignored and defaults to NULL. Safe to call more than once. - -libusb-1.0 - -If an location to a libusb_context is passed in, create and write in the new context. If no argument is provided, initialize libusb with the default (NULL) context. - -Generally _not_ safe to call more than once with non-NULL argument since a new context will be created each time. - -Params: (ctx)" - -%feature("docstring") usrp_deinit "deinitialize libusb - -libusb-0.1: No effect - -libusb-1.0: Deinitialize context ctx - -Params: (ctx)" - -%feature("docstring") usrp_rescan " - -Params: (NONE)" - -%feature("docstring") usrp_find_device "locate Nth (zero based) USRP device in system. Return pointer or 0 if not found. - -The following kinds of devices are considered USRPs: - -unconfigured USRP (no firwmare loaded) configured USRP (firmware loaded) unconfigured Cypress FX2 (only if fx2_ok_p is true) - -Params: (nth, fx2_ok_p, ctx)" - -%feature("docstring") usrp_usrp_p " - -Params: (q)" - -%feature("docstring") usrp_usrp0_p " - -Params: (q)" - -%feature("docstring") usrp_usrp1_p " - -Params: (q)" - -%feature("docstring") usrp_usrp2_p " - -Params: (q)" - -%feature("docstring") usrp_hw_rev " - -Params: (q)" - -%feature("docstring") usrp_fx2_p " - -Params: (q)" - -%feature("docstring") usrp_unconfigured_usrp_p " - -Params: (q)" - -%feature("docstring") usrp_configured_usrp_p " - -Params: (q)" - -%feature("docstring") usrp_open_cmd_interface "given a libusb_device return an instance of the appropriate libusb_device_handle - -These routines claim the specified interface and select the correct alternate interface. (USB nomenclature is totally screwed!) - -If interface can't be opened, or is already claimed by some other process, 0 is returned. - -Params: (dev)" - -%feature("docstring") usrp_open_rx_interface " - -Params: (dev)" - -%feature("docstring") usrp_open_tx_interface " - -Params: (dev)" - -%feature("docstring") usrp_close_interface "close interface. - -Params: (udh)" - -%feature("docstring") usrp_load_firmware "load intel hex format file into USRP/Cypress FX2 (8051). - -The filename extension is typically *.ihx - -Note that loading firmware may cause the device to renumerate. I.e., change its configuration, invalidating the current device handle. - -Params: (udh, filename, force)" - -%feature("docstring") usrp_load_firmware_nth "load intel hex format file into USRP FX2 (8051). - -The filename extension is typically *.ihx - -Note that loading firmware may cause the device to renumerate. I.e., change its configuration, invalidating the current device handle. If the result is ULS_OK, usrp_load_firmware_nth delays 1 second then rescans the busses and devices. - -Params: (nth, filename, force, ctx)" - -%feature("docstring") usrp_load_fpga "load fpga configuration bitstream - -Params: (udh, filename, force)" - -%feature("docstring") usrp_load_standard_bits "load the regular firmware and fpga bitstream in the Nth USRP. - -This is the normal starting point... - -Params: (nth, force, fpga_filename, firmware_filename, ctx)" - -%feature("docstring") usrp_set_hash "copy the given into the USRP hash slot . The usrp implements two hash slots, 0 and 1. - -Params: (udh, which, hash)" - -%feature("docstring") usrp_get_hash "retrieve the from the USRP hash slot . The usrp implements two hash slots, 0 and 1. - -Params: (udh, which, hash)" - -%feature("docstring") usrp_write_fpga_reg " - -Params: (udh, reg, value)" - -%feature("docstring") usrp_read_fpga_reg " - -Params: (udh, reg, value)" - -%feature("docstring") usrp_set_fpga_reset " - -Params: (udh, on)" - -%feature("docstring") usrp_set_fpga_tx_enable " - -Params: (udh, on)" - -%feature("docstring") usrp_set_fpga_rx_enable " - -Params: (udh, on)" - -%feature("docstring") usrp_set_fpga_tx_reset " - -Params: (udh, on)" - -%feature("docstring") usrp_set_fpga_rx_reset " - -Params: (udh, on)" - -%feature("docstring") usrp_set_led " - -Params: (udh, which, on)" - -%feature("docstring") usrp_check_rx_overrun " - -Params: (udh, overrun_p)" - -%feature("docstring") usrp_check_tx_underrun " - -Params: (udh, underrun_p)" - -%feature("docstring") usrp_i2c_write " - -Params: (udh, i2c_addr, buf, len)" - -%feature("docstring") usrp_i2c_read " - -Params: (udh, i2c_addr, buf, len)" - -%feature("docstring") usrp_spi_write " - -Params: (udh, optional_header, enables, format, buf, len)" - -%feature("docstring") usrp_spi_read " - -Params: (udh, optional_header, enables, format, buf, len)" - -%feature("docstring") usrp_9862_write " - -Params: (udh, which_codec, regno, value)" - -%feature("docstring") usrp_9862_read " - -Params: (udh, which_codec, regno, value)" - -%feature("docstring") usrp_9862_write_many "Write multiple 9862 regs at once. - -contains alternating register_number, register_value pairs. must be even and is the length of buf in bytes. - -Params: (udh, which_codec, buf, len)" - -%feature("docstring") usrp_9862_write_many_all "write specified regs to all 9862's in the system - -Params: (udh, buf, len)" - -%feature("docstring") usrp_eeprom_write " - -Params: (udh, i2c_addr, eeprom_offset, buf, len)" - -%feature("docstring") usrp_eeprom_read " - -Params: (udh, i2c_addr, eeprom_offset, buf, len)" - -%feature("docstring") usrp_write_aux_dac "write to the specified aux dac. - -which Tx or Rx slot to write. N.B., SLOT_TX_A and SLOT_RX_A share the same AUX DAC's SLOT_TX_B and SLOT_RX_B share the same AUX DAC's - - [0,3] RX slots must use only 0 and 1. TX slots must use only 2 and 3. - -AUX DAC 3 is really the 9862 sigma delta output. - - to write to aux dac. All dacs take straight binary values. Although dacs 0, 1 and 2 are 8-bit and dac 3 is 12-bit, the interface is in terms of 12-bit values [0,4095] - -Params: (uhd, slot, which_dac, value)" - -%feature("docstring") usrp_read_aux_adc "Read the specified aux adc. - -which Tx or Rx slot to read aux dac [0,1] which of the two adcs to read : return value, 12-bit straight binary. - -Params: (udh, slot, which_adc, value)" - -%feature("docstring") usrp_dbid_to_string "usrp daughterboard id to name mapping - -Params: (dbid)" - -%feature("docstring") usrp_read_dboard_eeprom "Read and return parsed daughterboard eeprom. - -Params: (udh, slot_id, eeprom)" - -%feature("docstring") usrp_write_dboard_offsets "write ADC/DAC offset calibration constants to d'board eeprom - -Params: (udh, slot_id, offset0, offset1)" - -%feature("docstring") usrp_serial_number "return a usrp's serial number. - -Note that this only works on a configured usrp. - -Params: (udh)" - -%feature("docstring") usrp_open_interface " - -Params: (dev, interface, altinterface)" - -%feature("docstring") write_cmd " - -Params: (udh, request, value, index, bytes, len)" - -%feature("docstring") _get_usb_device " - -Params: (udh)" - -%feature("docstring") _get_usb_device_descriptor " - -Params: (q)" - -%feature("docstring") _get_usb_string_descriptor " - -Params: (udh, index, data, length)" - -%feature("docstring") _usb_control_transfer " - -Params: (udh, request_type, request, value, index, data, length, timeout)" - -%feature("docstring") make_usrp_rx_cfile " - -Params: (which, spec, decim, freq, gain, width8, nohb, output_shorts, nsamples, filename)" - -%feature("docstring") str_to_subdev " - -Params: (spec_str)" - -%feature("docstring") make_usrp_siggen " - -Params: (which, spec, rf_freq, interp, wfreq, waveform, amp, gain, offset, nsamples)" - -%feature("docstring") video_sdl_make_sink_s " - -Params: (framerate, width, height, format, dst_width, dst_height)" - -%feature("docstring") video_sdl_make_sink_uc " - -Params: (framerate, width, height, format, dst_width, dst_height)" - -%feature("docstring") gen_met " - -Params: (mettab, amp, esn0, bias, scale)" - -%feature("docstring") encode " - -Params: (symbols, data, nbytes, encstate)" - -%feature("docstring") viterbi_chunks_init " - -Params: (state)" - -%feature("docstring") viterbi_butterfly2 " - -Params: (symbols, mettab, state0, state1)" - -%feature("docstring") viterbi_get_output " - -Params: (state, outbuf)" - -%feature("docstring") volk_16s_add_quad_aligned16 " - -Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes)" - -%feature("docstring") volk_16s_add_quad_aligned16_manual " - -Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes, arch)" - -%feature("docstring") volk_16s_branch_4_state_8_aligned16 " - -Params: (target, src0, permuters, cntl2, cntl3, scalars)" - -%feature("docstring") volk_16s_branch_4_state_8_aligned16_manual " - -Params: (target, src0, permuters, cntl2, cntl3, scalars, arch)" - -%feature("docstring") volk_16sc_deinterleave_16s_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") volk_16sc_deinterleave_16s_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_16sc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" - -%feature("docstring") volk_16sc_deinterleave_32f_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_16sc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_16sc_deinterleave_real_16s_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_16sc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") volk_16sc_deinterleave_real_32f_aligned16_manual " - -Params: (iBuffer, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_16sc_deinterleave_real_8s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_16sc_deinterleave_real_8s_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_16sc_magnitude_16s_aligned16 " - -Params: (magnitudeVector, complexVector, num_points)" - -%feature("docstring") volk_16sc_magnitude_16s_aligned16_manual " - -Params: (magnitudeVector, complexVector, num_points, arch)" - -%feature("docstring") volk_16sc_magnitude_32f_aligned16 " - -Params: (magnitudeVector, complexVector, scalar, num_points)" - -%feature("docstring") volk_16sc_magnitude_32f_aligned16_manual " - -Params: (magnitudeVector, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_16s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_16s_convert_32f_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_16s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_16s_convert_32f_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_16s_convert_8s_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_16s_convert_8s_aligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_16s_convert_8s_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_16s_convert_8s_unaligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_16s_max_star_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") volk_16s_max_star_aligned16_manual " - -Params: (target, src0, num_bytes, arch)" - -%feature("docstring") volk_16s_max_star_horizontal_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") volk_16s_max_star_horizontal_aligned16_manual " - -Params: (target, src0, num_bytes, arch)" - -%feature("docstring") volk_16s_permute_and_scalar_add_aligned16 " - -Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes)" - -%feature("docstring") volk_16s_permute_and_scalar_add_aligned16_manual " - -Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes, arch)" - -%feature("docstring") volk_16s_quad_max_star_aligned16 " - -Params: (target, src0, src1, src2, src3, num_bytes)" - -%feature("docstring") volk_16s_quad_max_star_aligned16_manual " - -Params: (target, src0, src1, src2, src3, num_bytes, arch)" - -%feature("docstring") volk_16u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") volk_16u_byteswap_aligned16_manual " - -Params: (intsToSwap, num_points, arch)" - -%feature("docstring") volk_32f_accumulator_aligned16 " - -Params: (result, inputBuffer, num_points)" - -%feature("docstring") volk_32f_accumulator_aligned16_manual " - -Params: (result, inputBuffer, num_points, arch)" - -%feature("docstring") volk_32f_add_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_add_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32fc_32f_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32fc_32f_multiply_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32fc_32f_power_32fc_aligned16 " - -Params: (cVector, aVector, power, num_points)" - -%feature("docstring") volk_32fc_32f_power_32fc_aligned16_manual " - -Params: (cVector, aVector, power, num_points, arch)" - -%feature("docstring") volk_32f_calc_spectral_noise_floor_aligned16 " - -Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points)" - -%feature("docstring") volk_32f_calc_spectral_noise_floor_aligned16_manual " - -Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points, arch)" - -%feature("docstring") volk_32fc_atan2_32f_aligned16 " - -Params: (outputVector, inputVector, normalizeFactor, num_points)" - -%feature("docstring") volk_32fc_atan2_32f_aligned16_manual " - -Params: (outputVector, inputVector, normalizeFactor, num_points, arch)" - -%feature("docstring") volk_32fc_conjugate_dot_prod_aligned16 " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") volk_32fc_conjugate_dot_prod_aligned16_manual " - -Params: (result, input, taps, num_bytes, arch)" - -%feature("docstring") volk_32fc_conjugate_dot_prod_unaligned " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") volk_32fc_conjugate_dot_prod_unaligned_manual " - -Params: (result, input, taps, num_bytes, arch)" - -%feature("docstring") volk_32fc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") volk_32fc_deinterleave_32f_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_32fc_deinterleave_64f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") volk_32fc_deinterleave_64f_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_32fc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") volk_32fc_deinterleave_real_16s_aligned16_manual " - -Params: (iBuffer, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_32fc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_32fc_deinterleave_real_32f_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_32fc_deinterleave_real_64f_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_32fc_deinterleave_real_64f_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_32fc_dot_prod_aligned16 " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") volk_32fc_dot_prod_aligned16_manual " - -Params: (result, input, taps, num_bytes, arch)" - -%feature("docstring") volk_32fc_index_max_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") volk_32fc_index_max_aligned16_manual " - -Params: (target, src0, num_bytes, arch)" - -%feature("docstring") volk_32fc_magnitude_16s_aligned16 " - -Params: (magnitudeVector, complexVector, scalar, num_points)" - -%feature("docstring") volk_32fc_magnitude_16s_aligned16_manual " - -Params: (magnitudeVector, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_32fc_magnitude_32f_aligned16 " - -Params: (magnitudeVector, complexVector, num_points)" - -%feature("docstring") volk_32fc_magnitude_32f_aligned16_manual " - -Params: (magnitudeVector, complexVector, num_points, arch)" - -%feature("docstring") volk_32fc_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32fc_multiply_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_convert_16s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_16s_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32f_convert_16s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_16s_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32f_convert_32s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_32s_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32f_convert_32s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_32s_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32f_convert_64f_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_32f_convert_64f_aligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_32f_convert_64f_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_32f_convert_64f_unaligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_32f_convert_8s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_8s_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32f_convert_8s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32f_convert_8s_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32fc_power_spectral_density_32f_aligned16 " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points)" - -%feature("docstring") volk_32fc_power_spectral_density_32f_aligned16_manual " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points, arch)" - -%feature("docstring") volk_32fc_power_spectrum_32f_aligned16 " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points)" - -%feature("docstring") volk_32fc_power_spectrum_32f_aligned16_manual " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points, arch)" - -%feature("docstring") volk_32fc_square_dist_aligned16 " - -Params: (target, src0, points, num_bytes)" - -%feature("docstring") volk_32fc_square_dist_aligned16_manual " - -Params: (target, src0, points, num_bytes, arch)" - -%feature("docstring") volk_32fc_square_dist_scalar_mult_aligned16 " - -Params: (target, src0, points, scalar, num_bytes)" - -%feature("docstring") volk_32fc_square_dist_scalar_mult_aligned16_manual " - -Params: (target, src0, points, scalar, num_bytes, arch)" - -%feature("docstring") volk_32f_divide_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_divide_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_dot_prod_aligned16 " - -Params: (result, input, taps, num_points)" - -%feature("docstring") volk_32f_dot_prod_aligned16_manual " - -Params: (result, input, taps, num_points, arch)" - -%feature("docstring") volk_32f_dot_prod_unaligned16 " - -Params: (result, input, taps, num_points)" - -%feature("docstring") volk_32f_dot_prod_unaligned16_manual " - -Params: (result, input, taps, num_points, arch)" - -%feature("docstring") volk_32f_fm_detect_aligned16 " - -Params: (outputVector, inputVector, bound, saveValue, num_points)" - -%feature("docstring") volk_32f_fm_detect_aligned16_manual " - -Params: (outputVector, inputVector, bound, saveValue, num_points, arch)" - -%feature("docstring") volk_32f_index_max_aligned16 " - -Params: (target, src0, num_points)" - -%feature("docstring") volk_32f_index_max_aligned16_manual " - -Params: (target, src0, num_points, arch)" - -%feature("docstring") volk_32f_interleave_16sc_aligned16 " - -Params: (complexVector, iBuffer, qBuffer, scalar, num_points)" - -%feature("docstring") volk_32f_interleave_16sc_aligned16_manual " - -Params: (complexVector, iBuffer, qBuffer, scalar, num_points, arch)" - -%feature("docstring") volk_32f_interleave_32fc_aligned16 " - -Params: (complexVector, iBuffer, qBuffer, num_points)" - -%feature("docstring") volk_32f_interleave_32fc_aligned16_manual " - -Params: (complexVector, iBuffer, qBuffer, num_points, arch)" - -%feature("docstring") volk_32f_max_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_max_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_min_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_min_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_multiply_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_normalize_aligned16 " - -Params: (vecBuffer, scalar, num_points)" - -%feature("docstring") volk_32f_normalize_aligned16_manual " - -Params: (vecBuffer, scalar, num_points, arch)" - -%feature("docstring") volk_32f_power_aligned16 " - -Params: (cVector, aVector, power, num_points)" - -%feature("docstring") volk_32f_power_aligned16_manual " - -Params: (cVector, aVector, power, num_points, arch)" - -%feature("docstring") volk_32f_sqrt_aligned16 " - -Params: (cVector, aVector, num_points)" - -%feature("docstring") volk_32f_sqrt_aligned16_manual " - -Params: (cVector, aVector, num_points, arch)" - -%feature("docstring") volk_32f_stddev_aligned16 " - -Params: (stddev, inputBuffer, mean, num_points)" - -%feature("docstring") volk_32f_stddev_aligned16_manual " - -Params: (stddev, inputBuffer, mean, num_points, arch)" - -%feature("docstring") volk_32f_stddev_and_mean_aligned16 " - -Params: (stddev, mean, inputBuffer, num_points)" - -%feature("docstring") volk_32f_stddev_and_mean_aligned16_manual " - -Params: (stddev, mean, inputBuffer, num_points, arch)" - -%feature("docstring") volk_32f_subtract_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32f_subtract_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32f_sum_of_poly_aligned16 " - -Params: (target, src0, center_point_array, cutoff, num_bytes)" - -%feature("docstring") volk_32f_sum_of_poly_aligned16_manual " - -Params: (target, src0, center_point_array, cutoff, num_bytes, arch)" - -%feature("docstring") volk_32s_and_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32s_and_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32s_convert_32f_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_32s_convert_32f_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_32s_or_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_32s_or_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_32u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") volk_32u_byteswap_aligned16_manual " - -Params: (intsToSwap, num_points, arch)" - -%feature("docstring") volk_32u_popcnt_aligned16 " - -Params: (ret, value)" - -%feature("docstring") volk_32u_popcnt_aligned16_manual " - -Params: (ret, value, arch)" - -%feature("docstring") volk_64f_convert_32f_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_64f_convert_32f_aligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_64f_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_64f_convert_32f_unaligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_64f_max_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_64f_max_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_64f_min_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_64f_min_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_64u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") volk_64u_byteswap_aligned16_manual " - -Params: (intsToSwap, num_points, arch)" - -%feature("docstring") volk_64u_popcnt_aligned16 " - -Params: (ret, value)" - -%feature("docstring") volk_64u_popcnt_aligned16_manual " - -Params: (ret, value, arch)" - -%feature("docstring") volk_8sc_deinterleave_16s_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") volk_8sc_deinterleave_16s_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_8sc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" - -%feature("docstring") volk_8sc_deinterleave_32f_aligned16_manual " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_8sc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_8sc_deinterleave_real_16s_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_8sc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") volk_8sc_deinterleave_real_32f_aligned16_manual " - -Params: (iBuffer, complexVector, scalar, num_points, arch)" - -%feature("docstring") volk_8sc_deinterleave_real_8s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") volk_8sc_deinterleave_real_8s_aligned16_manual " - -Params: (iBuffer, complexVector, num_points, arch)" - -%feature("docstring") volk_8sc_multiply_conjugate_16sc_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") volk_8sc_multiply_conjugate_16sc_aligned16_manual " - -Params: (cVector, aVector, bVector, num_points, arch)" - -%feature("docstring") volk_8sc_multiply_conjugate_32fc_aligned16 " - -Params: (cVector, aVector, bVector, scalar, num_points)" - -%feature("docstring") volk_8sc_multiply_conjugate_32fc_aligned16_manual " - -Params: (cVector, aVector, bVector, scalar, num_points, arch)" - -%feature("docstring") volk_8s_convert_16s_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_8s_convert_16s_aligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_8s_convert_16s_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") volk_8s_convert_16s_unaligned16_manual " - -Params: (outputVector, inputVector, num_points, arch)" - -%feature("docstring") volk_8s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_8s_convert_32f_aligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") volk_8s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_8s_convert_32f_unaligned16_manual " - -Params: (outputVector, inputVector, scalar, num_points, arch)" - -%feature("docstring") lv_creal " - -Params: (x)" - -%feature("docstring") lv_cimag " - -Params: (x)" - -%feature("docstring") lv_conj " - -Params: (x)" - -%feature("docstring") lv_cpow " - -Params: (x, y)" - -%feature("docstring") lv_32fc_init " - -Params: (x, y)" - -%feature("docstring") volk_cpu_init " - -Params: (NONE)" - -%feature("docstring") volk_get_lvarch " - -Params: (NONE)" - -%feature("docstring") volk_environment_init " - -Params: (NONE)" - -%feature("docstring") default_acquire_volk_16s_add_quad_aligned16 " - -Params: (target0, target1, target2, target3, src0, src1, src2, src3, src4, num_bytes)" - -%feature("docstring") default_acquire_volk_16s_branch_4_state_8_aligned16 " - -Params: (target, src0, permuters, cntl2, cntl3, scalars)" - -%feature("docstring") default_acquire_volk_16sc_deinterleave_16s_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_16sc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_16sc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_16sc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_16sc_deinterleave_real_8s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_16sc_magnitude_16s_aligned16 " - -Params: (magnitudeVector, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_16sc_magnitude_32f_aligned16 " - -Params: (magnitudeVector, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_16s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_16s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_16s_convert_8s_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_16s_convert_8s_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_16s_max_star_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") default_acquire_volk_16s_max_star_horizontal_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") default_acquire_volk_16s_permute_and_scalar_add_aligned16 " - -Params: (target, src0, permute_indexes, cntl0, cntl1, cntl2, cntl3, scalars, num_bytes)" - -%feature("docstring") default_acquire_volk_16s_quad_max_star_aligned16 " - -Params: (target, src0, src1, src2, src3, num_bytes)" - -%feature("docstring") default_acquire_volk_16u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") default_acquire_volk_32f_accumulator_aligned16 " - -Params: (result, inputBuffer, num_points)" - -%feature("docstring") default_acquire_volk_32f_add_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_32f_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_32f_power_32fc_aligned16 " - -Params: (cVector, aVector, power, num_points)" - -%feature("docstring") default_acquire_volk_32f_calc_spectral_noise_floor_aligned16 " - -Params: (noiseFloorAmplitude, realDataPoints, spectralExclusionValue, num_points)" - -%feature("docstring") default_acquire_volk_32fc_atan2_32f_aligned16 " - -Params: (outputVector, inputVector, normalizeFactor, num_points)" - -%feature("docstring") default_acquire_volk_32fc_conjugate_dot_prod_aligned16 " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") default_acquire_volk_32fc_conjugate_dot_prod_unaligned " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") default_acquire_volk_32fc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_deinterleave_64f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32fc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_deinterleave_real_64f_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_dot_prod_aligned16 " - -Params: (result, input, taps, num_bytes)" - -%feature("docstring") default_acquire_volk_32fc_index_max_aligned16 " - -Params: (target, src0, num_bytes)" - -%feature("docstring") default_acquire_volk_32fc_magnitude_16s_aligned16 " - -Params: (magnitudeVector, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32fc_magnitude_32f_aligned16 " - -Params: (magnitudeVector, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_32fc_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_16s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_16s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_32s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_32s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_64f_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_64f_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_8s_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_convert_8s_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32fc_power_spectral_density_32f_aligned16 " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, rbw, num_points)" - -%feature("docstring") default_acquire_volk_32fc_power_spectrum_32f_aligned16 " - -Params: (logPowerOutput, complexFFTInput, normalizationFactor, num_points)" - -%feature("docstring") default_acquire_volk_32fc_square_dist_aligned16 " - -Params: (target, src0, points, num_bytes)" - -%feature("docstring") default_acquire_volk_32fc_square_dist_scalar_mult_aligned16 " - -Params: (target, src0, points, scalar, num_bytes)" - -%feature("docstring") default_acquire_volk_32f_divide_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_dot_prod_aligned16 " - -Params: (result, input, taps, num_points)" - -%feature("docstring") default_acquire_volk_32f_dot_prod_unaligned16 " - -Params: (result, input, taps, num_points)" - -%feature("docstring") default_acquire_volk_32f_fm_detect_aligned16 " - -Params: (outputVector, inputVector, bound, saveValue, num_points)" - -%feature("docstring") default_acquire_volk_32f_index_max_aligned16 " - -Params: (target, src0, num_points)" - -%feature("docstring") default_acquire_volk_32f_interleave_16sc_aligned16 " - -Params: (complexVector, iBuffer, qBuffer, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_interleave_32fc_aligned16 " - -Params: (complexVector, iBuffer, qBuffer, num_points)" - -%feature("docstring") default_acquire_volk_32f_max_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_min_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_multiply_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_normalize_aligned16 " - -Params: (vecBuffer, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32f_power_aligned16 " - -Params: (cVector, aVector, power, num_points)" - -%feature("docstring") default_acquire_volk_32f_sqrt_aligned16 " - -Params: (cVector, aVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_stddev_aligned16 " - -Params: (stddev, inputBuffer, mean, num_points)" - -%feature("docstring") default_acquire_volk_32f_stddev_and_mean_aligned16 " - -Params: (stddev, mean, inputBuffer, num_points)" - -%feature("docstring") default_acquire_volk_32f_subtract_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32f_sum_of_poly_aligned16 " - -Params: (target, src0, center_point_array, cutoff, num_bytes)" - -%feature("docstring") default_acquire_volk_32s_and_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_32s_or_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_32u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") default_acquire_volk_32u_popcnt_aligned16 " - -Params: (ret, value)" - -%feature("docstring") default_acquire_volk_64f_convert_32f_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_64f_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_64f_max_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_64f_min_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_64u_byteswap_aligned16 " - -Params: (intsToSwap, num_points)" - -%feature("docstring") default_acquire_volk_64u_popcnt_aligned16 " - -Params: (ret, value)" - -%feature("docstring") default_acquire_volk_8sc_deinterleave_16s_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_8sc_deinterleave_32f_aligned16 " - -Params: (iBuffer, qBuffer, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_8sc_deinterleave_real_16s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_8sc_deinterleave_real_32f_aligned16 " - -Params: (iBuffer, complexVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_8sc_deinterleave_real_8s_aligned16 " - -Params: (iBuffer, complexVector, num_points)" - -%feature("docstring") default_acquire_volk_8sc_multiply_conjugate_16sc_aligned16 " - -Params: (cVector, aVector, bVector, num_points)" - -%feature("docstring") default_acquire_volk_8sc_multiply_conjugate_32fc_aligned16 " - -Params: (cVector, aVector, bVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_8s_convert_16s_aligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_8s_convert_16s_unaligned16 " - -Params: (outputVector, inputVector, num_points)" - -%feature("docstring") default_acquire_volk_8s_convert_32f_aligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") default_acquire_volk_8s_convert_32f_unaligned16 " - -Params: (outputVector, inputVector, scalar, num_points)" - -%feature("docstring") volk_rank_archs " - -Params: (arch_defs, arch)" - -%feature("docstring") get_volk_runtime " - -Params: (NONE)" - -%feature("docstring") volk_runtime_init " - -Params: (NONE)" - -%feature("docstring") scm_xyzzy_init " - -Params: ()" - -%feature("docstring") xyzzy_init " - -Params: (filename)" - -%feature("docstring") xyzzy_file_exists " - -Params: (filename)" - -%feature("docstring") xyzzy_open_file " - -Params: (filename)" - - - -%feature("docstring") _1200_common::_1200_common " - -Params: (NONE)" - -%feature("docstring") _1200_common::~_1200_common " - -Params: (NONE)" - -%feature("docstring") _1200_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _1200_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _1800_common::_1800_common " - -Params: (NONE)" - -%feature("docstring") _1800_common::~_1800_common " - -Params: (NONE)" - -%feature("docstring") _1800_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _1800_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _2200_common::_2200_common " - -Params: (NONE)" - -%feature("docstring") _2200_common::~_2200_common " - -Params: (NONE)" - -%feature("docstring") _2200_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _2200_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _2400_common::_2400_common " - -Params: (NONE)" - -%feature("docstring") _2400_common::~_2400_common " - -Params: (NONE)" - -%feature("docstring") _2400_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _2400_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _400_common::_400_common " - -Params: (NONE)" - -%feature("docstring") _400_common::~_400_common " - -Params: (NONE)" - -%feature("docstring") _400_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _400_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _400_rx::_400_rx " - -Params: (NONE)" - -%feature("docstring") _400_rx::~_400_rx " - -Params: (NONE)" - - - -%feature("docstring") _400_tx::_400_tx " - -Params: (NONE)" - -%feature("docstring") _400_tx::~_400_tx " - -Params: (NONE)" - - - -%feature("docstring") _900_common::_900_common " - -Params: (NONE)" - -%feature("docstring") _900_common::~_900_common " - -Params: (NONE)" - -%feature("docstring") _900_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _900_common::freq_max " - -Params: (NONE)" - - - -%feature("docstring") _AD4360_common::_AD4360_common " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::~_AD4360_common " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::freq_max " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::_compute_regs " - -Params: (refclk_freq, freq, retR, retcontrol, retN, retfreq)" - -%feature("docstring") _AD4360_common::_compute_control_reg " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::_prescaler " - -Params: (NONE)" - -%feature("docstring") _AD4360_common::R_DIV " - -Params: (div)" - - - -%feature("docstring") _ADF410X_common::_ADF410X_common " - -Params: (NONE)" - -%feature("docstring") _ADF410X_common::~_ADF410X_common " - -Params: (NONE)" - -%feature("docstring") _ADF410X_common::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - -%feature("docstring") _ADF410X_common::_write_all " - -Params: (R, N, control)" - -%feature("docstring") _ADF410X_common::_write_R " - -Params: (R)" - -%feature("docstring") _ADF410X_common::_write_N " - -Params: (N)" - -%feature("docstring") _ADF410X_common::_write_func " - -Params: (func)" - -%feature("docstring") _ADF410X_common::_write_init " - -Params: (init)" - -%feature("docstring") _ADF410X_common::_prescaler " - -Params: (NONE)" - -%feature("docstring") _ADF410X_common::_write_it " - -Params: (v)" - -%feature("docstring") _ADF410X_common::_refclk_freq " - -Params: (NONE)" - -%feature("docstring") _ADF410X_common::_rx_write_io " - -Params: (value, mask)" - -%feature("docstring") _ADF410X_common::_lock_detect " - -Params: (NONE)" - -%feature("docstring") _ADF410X_common::usrp " - -Params: (NONE)" - - - -%feature("docstring") _lo_common::_lo_common " - -Params: (NONE)" - -%feature("docstring") _lo_common::~_lo_common " - -Params: (NONE)" - -%feature("docstring") _lo_common::freq_min " - -Params: (NONE)" - -%feature("docstring") _lo_common::freq_max " - -Params: (NONE)" - -%feature("docstring") _lo_common::set_divider " - -Params: (main_or_aux, divisor)" - -%feature("docstring") _lo_common::set_freq " - -Params: (freq)" - -%feature("docstring") Aadvark "Models the mammal Aadvark. - -Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. - -This line is uninformative and is only to test line breaks in the comments." - -%feature("docstring") Aadvark::print "Outputs the vital aadvark statistics. - -Params: (NONE)" - -%feature("docstring") Aadvark::Aadvark " - -Params: (aaness)" - -%feature("docstring") Aadvark::get_aadvarkness " - -Params: (NONE)" - - - -%feature("docstring") adf4350::adf4350 " - -Params: (NONE)" - -%feature("docstring") adf4350::~adf4350 " - -Params: (NONE)" - -%feature("docstring") adf4350::_update " - -Params: (NONE)" - -%feature("docstring") adf4350::compute_register " - -Params: (addr)" - -%feature("docstring") adf4350::_set_freq " - -Params: (freq, refclock_freq)" - -%feature("docstring") adf4350::_get_freq " - -Params: (refclock_freq)" - -%feature("docstring") adf4350::_get_max_freq " - -Params: (NONE)" - -%feature("docstring") adf4350::_get_min_freq " - -Params: (NONE)" - - - -%feature("docstring") adf4350_regs::adf4350_regs " - -Params: (NONE)" - -%feature("docstring") adf4350_regs::~adf4350_regs " - -Params: (NONE)" - -%feature("docstring") adf4350_regs::_reg_shift " - -Params: (data, shift)" - -%feature("docstring") adf4350_regs::compute_register " - -Params: (addr)" - - - -%feature("docstring") std::allocator "STL class." - -%feature("docstring") atsc_data_segment "contains 832 3 bit symbols. The low 3 bits in the byte hold the symbol." - -%feature("docstring") atsc_data_segment::operator== " - -Params: (other)" - -%feature("docstring") atsc_data_segment::operator!= " - -Params: (other)" - - - -%feature("docstring") atsc_mpeg_packet::operator== " - -Params: (other)" - -%feature("docstring") atsc_mpeg_packet::operator!= " - -Params: (other)" - - - -%feature("docstring") atsc_mpeg_packet_no_sync::operator== " - -Params: (other)" - -%feature("docstring") atsc_mpeg_packet_no_sync::operator!= " - -Params: (other)" - - - -%feature("docstring") atsc_mpeg_packet_rs_encoded::operator== " - -Params: (other)" - -%feature("docstring") atsc_mpeg_packet_rs_encoded::operator!= " - -Params: (other)" - - - -%feature("docstring") atsc_root_raised_cosine::taps " - -Params: (sampling_freq)" - - - -%feature("docstring") atsc_root_raised_cosine_bandpass::atsc_root_raised_cosine_bandpass " - -Params: (center_freq)" - -%feature("docstring") atsc_root_raised_cosine_bandpass::taps " - -Params: (sampling_freq)" - -%feature("docstring") atsc_soft_data_segment "Contains 832 bipolar floating point symbols. Nominal values are +/- {1, 3, 5, 7}. This data type represents the input to the viterbi decoder." - -%feature("docstring") atsc_soft_data_segment::operator== " - -Params: (other)" - -%feature("docstring") atsc_soft_data_segment::operator!= " - -Params: (other)" - - - -%feature("docstring") atsc_vsbtx_lp::taps " - -Params: (sampling_freq)" - -%feature("docstring") atsci_basic_trellis_encoder "ATSC trellis encoder building block. - -Note this is NOT the 12x interleaved interface. - -This implements a single instance of the ATSC trellis encoder. This is a rate 2/3 encoder (really a constraint length 3, rate 1/2 encoder with the top bit passed through unencoded. This does not implement the \"precoding\" of the top bit, because the NTSC rejection filter is not supported." - -%feature("docstring") atsci_basic_trellis_encoder::atsci_basic_trellis_encoder " - -Params: (NONE)" - -%feature("docstring") atsci_basic_trellis_encoder::encode "Encode two bit INPUT into 3 bit return value. Domain is [0,3], Range is [0,7]. The mapping to bipolar levels is not done. - -Params: (input)" - -%feature("docstring") atsci_basic_trellis_encoder::reset "reset encoder state - -Params: (NONE)" - -%feature("docstring") atsci_data_deinterleaver "atsc convolutional data deinterleaver" - -%feature("docstring") atsci_data_deinterleaver::atsci_data_deinterleaver " - -Params: (NONE)" - -%feature("docstring") atsci_data_deinterleaver::deinterleave " - -Params: (out, in)" - -%feature("docstring") atsci_data_deinterleaver::remap_pli " - -Params: (out, in)" - -%feature("docstring") atsci_data_interleaver "atsc convolutional data interleaver" - -%feature("docstring") atsci_data_interleaver::atsci_data_interleaver " - -Params: (NONE)" - -%feature("docstring") atsci_data_interleaver::interleave " - -Params: (out, in)" - -%feature("docstring") atsci_equalizer "abstract base class for ATSC equalizer" - -%feature("docstring") atsci_equalizer::atsci_equalizer " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer::~atsci_equalizer " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer::reset "reset state (e.g., on channel change) - -Note, subclasses must invoke the superclass's method too! - -Params: (NONE)" - -%feature("docstring") atsci_equalizer::filter "produce of output from given inputs and tags - -This is the main entry point. It examines the input_tags and local state and invokes the appropriate virtual function to handle each sub-segment of the input data. - - must have (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] are referenced to compute the output values. - - must have nsamples valid entries. input_tags[0] .. input_tags[nsamples - 1] are referenced to compute the output values. - -Params: (input_samples, input_tags, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer::ntaps "how much history the input data stream requires. - -This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. - -Params: (NONE)" - -%feature("docstring") atsci_equalizer::npretaps "how many taps are \"in the future\". - -This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. - -npretaps () must return a value between 0 and ntaps() - 1. - -If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). - -Params: (NONE)" - -%feature("docstring") atsci_equalizer::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset)" - -%feature("docstring") atsci_equalizer::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset, which_field)" - - - -%feature("docstring") atsci_equalizer_lms::atsci_equalizer_lms " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms::~atsci_equalizer_lms " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms::reset "reset state (e.g., on channel change) - -Note, subclasses must invoke the superclass's method too! - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms::ntaps "how much history the input data stream requires. - -This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms::npretaps "how many taps are \"in the future\". - -This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. - -npretaps () must return a value between 0 and ntaps() - 1. - -If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset)" - -%feature("docstring") atsci_equalizer_lms::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset, which_field)" - -%feature("docstring") atsci_equalizer_lms::filterN " - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms::adaptN " - -Params: (input_samples, training_pattern, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms::filter1 " - -Params: (input)" - -%feature("docstring") atsci_equalizer_lms::adapt1 " - -Params: (input, ideal_output)" - - - -%feature("docstring") atsci_equalizer_lms2::atsci_equalizer_lms2 " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms2::~atsci_equalizer_lms2 " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms2::reset "reset state (e.g., on channel change) - -Note, subclasses must invoke the superclass's method too! - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms2::ntaps "how much history the input data stream requires. - -This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms2::npretaps "how many taps are \"in the future\". - -This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. - -npretaps () must return a value between 0 and ntaps() - 1. - -If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_lms2::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms2::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset)" - -%feature("docstring") atsci_equalizer_lms2::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset, which_field)" - -%feature("docstring") atsci_equalizer_lms2::filterN " - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms2::adaptN " - -Params: (input_samples, training_pattern, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_lms2::filter1 " - -Params: (input)" - -%feature("docstring") atsci_equalizer_lms2::adapt1 " - -Params: (input, ideal_output)" - - - -%feature("docstring") atsci_equalizer_nop::scale " - -Params: (input)" - -%feature("docstring") atsci_equalizer_nop::scale_and_train " - -Params: (input)" - -%feature("docstring") atsci_equalizer_nop::atsci_equalizer_nop " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_nop::~atsci_equalizer_nop " - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_nop::reset "reset state (e.g., on channel change) - -Note, subclasses must invoke the superclass's method too! - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_nop::ntaps "how much history the input data stream requires. - -This must return a value >= 1. Think of this as the number of samples you need to look at to compute a single output sample. - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_nop::npretaps "how many taps are \"in the future\". - -This allows us to handle what the ATSC folks call \"pre-ghosts\". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out. - -npretaps () must return a value between 0 and ntaps() - 1. - -If npretaps () returns 0, this means that the equalizer will only handle multipath \"in the past.\" I suspect that a good value would be something like 15% - 20% of ntaps (). - -Params: (NONE)" - -%feature("docstring") atsci_equalizer_nop::filter_normal "Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples)" - -%feature("docstring") atsci_equalizer_nop::filter_data_seg_sync "Input range is known to consist of only a data segment sync or a portion of a data segment sync. will be in [1,4]. will be in [0,3]. is the offset of the input from the beginning of the data segment sync pattern. - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset)" - -%feature("docstring") atsci_equalizer_nop::filter_field_sync "Input range is known to consist of only a field sync segment or a portion of a field sync segment. will be in [1,832]. will be in [0,831]. is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. is in [0,1] and specifies which field (duh). - - has (nsamples + ntaps() - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + ntaps() - 1] may be referenced to compute the output values. - -Params: (input_samples, output_samples, nsamples, offset, which_field)" - - - -%feature("docstring") atsci_exp2_lp::taps " - -Params: (sampling_freq)" - -%feature("docstring") atsci_fake_single_viterbi "single channel viterbi decoder" - -%feature("docstring") atsci_fake_single_viterbi::atsci_fake_single_viterbi " - -Params: (NONE)" - -%feature("docstring") atsci_fake_single_viterbi::decode "ideally takes on the values +/- 1,3,5,7 return is decoded dibit in the range [0, 3] - -Params: (input)" - -%feature("docstring") atsci_fake_single_viterbi::reset " - -Params: (NONE)" - -%feature("docstring") atsci_fake_single_viterbi::delay "internal delay of decoder - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker "abstract base class for ATSC field sync checker - -Processes input samples one at a time looking for an occurence of either the field sync 1 or field sync 2 pattern. - -Note that unlike atsci_fs_correlator, this class uses the symbol_num in input_tag to avoid having to test each symbol position. - -For each sample processed, an output sample and an output tag are produced. The output samples are identical to the input samples but are delayed by a number of samples given by . The output tag associated with the the given output sample indicates whether this sample is the beginning of one of the field syncs or is an ordinary sample. The tags are defined in atsci_sync_tag.h. - -For ease of use, the field sync patterns are defined to begin with the first symbol of the 4 symbol data segment sync pattern that immediately proceeds the actual PN 511 code. This makes it easier for downstream code to determine the location of data segment syncs merely by counting. They'll occur every 832 samples assuming everything is working." - -%feature("docstring") atsci_fs_checker::atsci_fs_checker " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker::~atsci_fs_checker " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker::reset " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker::filter " - -Params: (input_sample, input_tag, output_sample, output_tag)" - -%feature("docstring") atsci_fs_checker::delay "return delay in samples from input to output - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker_naive "Naive concrete implementation of field sync checker." - -%feature("docstring") atsci_fs_checker_naive::wrap " - -Params: (index)" - -%feature("docstring") atsci_fs_checker_naive::incr " - -Params: (index)" - -%feature("docstring") atsci_fs_checker_naive::decr " - -Params: (index)" - -%feature("docstring") atsci_fs_checker_naive::atsci_fs_checker_naive " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker_naive::~atsci_fs_checker_naive " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker_naive::reset " - -Params: (NONE)" - -%feature("docstring") atsci_fs_checker_naive::filter " - -Params: (input_sample, input_tag, output_sample, output_tag)" - -%feature("docstring") atsci_fs_checker_naive::delay "return delay in samples from input to output - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator "abstract base class for ATSC field sync correlator - -Processes input samples one at a time looking for an occurence of either the field sync 1 or field sync 2 pattern. - -For each sample processed, an output sample and an output tag are produced. The output samples are identical to the input samples but are delayed by a number of samples given by . The output tag associated with the the given output sample indicates whether this sample is the beginning of one of the field syncs or is an ordinary sample. The tags are defined in atsci_sync_tag.h. - -For ease of use, the field sync patterns are defined to begin with the first symbol of the 4 symbol data segment sync pattern that immediately proceeds the actual PN 511 code. This makes it easier for downstream code to determine the location of data segment syncs merely by counting. They'll occur every 832 samples assuming everything is working." - -%feature("docstring") atsci_fs_correlator::atsci_fs_correlator " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator::~atsci_fs_correlator " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator::reset " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator::filter " - -Params: (input_sample, output_sample, output_tag)" - -%feature("docstring") atsci_fs_correlator::delay "return delay in samples from input to output - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator_naive "Naive concrete implementation of field sync correlator." - -%feature("docstring") atsci_fs_correlator_naive::wrap " - -Params: (index)" - -%feature("docstring") atsci_fs_correlator_naive::incr " - -Params: (index)" - -%feature("docstring") atsci_fs_correlator_naive::decr " - -Params: (index)" - -%feature("docstring") atsci_fs_correlator_naive::atsci_fs_correlator_naive " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator_naive::~atsci_fs_correlator_naive " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator_naive::reset " - -Params: (NONE)" - -%feature("docstring") atsci_fs_correlator_naive::filter " - -Params: (input_sample, output_sample, output_tag)" - -%feature("docstring") atsci_fs_correlator_naive::delay "return delay in samples from input to output - -Params: (NONE)" - -%feature("docstring") atsci_interpolator "interpolator control for segment and symbol sync recovery" - -%feature("docstring") atsci_interpolator::atsci_interpolator "must be >= 1.8 - -Params: (nominal_ratio_of_rx_clock_to_symbol_freq)" - -%feature("docstring") atsci_interpolator::~atsci_interpolator " - -Params: (NONE)" - -%feature("docstring") atsci_interpolator::reset "call on channel change - -Params: (NONE)" - -%feature("docstring") atsci_interpolator::update "produce next sample referenced to Tx clock - -If there aren't enough input_samples left to produce an output, return false, else true. - -Params: (input_samples, nsamples, index, timing_adjustment, output_sample)" - -%feature("docstring") atsci_interpolator::ntaps " - -Params: (NONE)" - -%feature("docstring") atsci_interpolator::mu " - -Params: (NONE)" - -%feature("docstring") atsci_interpolator::w " - -Params: (NONE)" - -%feature("docstring") atsci_interpolator::incr " - -Params: (NONE)" - -%feature("docstring") atsci_randomizer "ATSC data \"whitener\". - -The data randomizer described in ATSC standard A/53B. See figure D4 on page 54." - -%feature("docstring") atsci_randomizer::atsci_randomizer " - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::reset "reset randomizer LFSR - -must be called during the Data Segment Sync interval prior to the first data segment. I.e., the LFSR is reset prior to the first field of each VSB data frame. - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::randomize "randomize (whiten) mpeg packet and remove leading MPEG-2 sync byte - -Params: (out, in)" - -%feature("docstring") atsci_randomizer::derandomize "derandomize (de-whiten) mpeg packet and add leading MPEG-2 sync byte - -Params: (out, in)" - -%feature("docstring") atsci_randomizer::state " - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::initialize_output_map " - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::slow_output_map " - -Params: (st)" - -%feature("docstring") atsci_randomizer::fast_output_map " - -Params: (st)" - -%feature("docstring") atsci_randomizer::output "return current output value - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::clk "clock LFSR; advance to next state. - -Params: (NONE)" - -%feature("docstring") atsci_randomizer::output_and_clk "return current output value and advance to next state - -Params: (NONE)" - -%feature("docstring") atsci_reed_solomon "ATSC Reed-Solomon encoder / decoder. - -The t=10 (207,187) code described in ATSC standard A/53B. See figure D5 on page 55." - -%feature("docstring") atsci_reed_solomon::atsci_reed_solomon " - -Params: (NONE)" - -%feature("docstring") atsci_reed_solomon::~atsci_reed_solomon " - -Params: (NONE)" - -%feature("docstring") atsci_reed_solomon::encode "Add RS error correction encoding. - -Params: (out, in)" - -%feature("docstring") atsci_reed_solomon::decode "Decode RS encoded packet. - -Params: (out, in)" - -%feature("docstring") atsci_single_viterbi "single channel viterbi decoder" - -%feature("docstring") atsci_single_viterbi::atsci_single_viterbi " - -Params: (NONE)" - -%feature("docstring") atsci_single_viterbi::decode "ideally takes on the values +/- 1,3,5,7 return is decoded dibit in the range [0, 3] - -Params: (input)" - -%feature("docstring") atsci_single_viterbi::reset " - -Params: (NONE)" - -%feature("docstring") atsci_single_viterbi::delay "internal delay of decoder - -Params: (NONE)" - -%feature("docstring") atsci_slicer_agc "Automatic Gain Control class for atsc slicer. - -Given perfect data, output values will be +/- {7, 5, 3, 1}" - -%feature("docstring") atsci_slicer_agc::atsci_slicer_agc " - -Params: (NONE)" - -%feature("docstring") atsci_slicer_agc::gain " - -Params: (NONE)" - -%feature("docstring") atsci_slicer_agc::scale " - -Params: (input)" - -%feature("docstring") atsci_sliding_correlator "look for the PN 511 field sync pattern" - -%feature("docstring") atsci_sliding_correlator::atsci_sliding_correlator " - -Params: (NONE)" - -%feature("docstring") atsci_sliding_correlator::~atsci_sliding_correlator " - -Params: (NONE)" - -%feature("docstring") atsci_sliding_correlator::input_bit "input hard decision bit, return correlation (0,511) - -Params: (bit)" - -%feature("docstring") atsci_sliding_correlator::input_int "input sample, return correlation (0,511) - -Params: (sample)" - -%feature("docstring") atsci_sliding_correlator::input_float "input sample, return correlation (0,511) - -Params: (sample)" - -%feature("docstring") atsci_sliding_correlator::reset " - -Params: (NONE)" - -%feature("docstring") atsci_sssr "ATSC Segment and Symbol Sync Recovery. - -This class implements data segment sync tracking and symbol timing using the method described in \"ATSC/VSB Tutorial - Receiver Technology\" by Wayne E. Bretl of Zenith, pgs 41-45." - -%feature("docstring") atsci_sssr::incr_counter " - -Params: (NONE)" - -%feature("docstring") atsci_sssr::incr_symbol_index " - -Params: (NONE)" - -%feature("docstring") atsci_sssr::atsci_sssr " - -Params: (NONE)" - -%feature("docstring") atsci_sssr::~atsci_sssr " - -Params: (NONE)" - -%feature("docstring") atsci_sssr::reset "call on channel change - -Params: (NONE)" - -%feature("docstring") atsci_sssr::update "process a single sample at the ATSC symbol rate (~10.76 MSPS) - -This block computes an indication of our timing error and keeps track of where the segment sync's occur. is returned to indicate how the interpolator timing needs to be adjusted to track the transmitter's symbol timing. If is true, then is the index of this sample in the current segment. The symbols are numbered from 0 to 831, where symbols 0, 1, 2 and 3 correspond to the data segment sync pattern, nominally +5, -5, -5, +5. - -Params: (sample_in, seg_locked, symbol_index, timing_adjust)" - -%feature("docstring") atsci_trellis_encoder "fancy, schmancy 12-way interleaved trellis encoder for ATSC" - -%feature("docstring") atsci_trellis_encoder::atsci_trellis_encoder " - -Params: (NONE)" - -%feature("docstring") atsci_trellis_encoder::~atsci_trellis_encoder " - -Params: (NONE)" - -%feature("docstring") atsci_trellis_encoder::reset "reset all encoder states - -Params: (NONE)" - -%feature("docstring") atsci_trellis_encoder::encode "Take 12 RS encoded, convolutionally interleaved segments and produce 12 trellis coded data segments. We work in groups of 12 because that's the smallest number of segments that composes a single full cycle of the encoder mux. - -Params: (out, in)" - -%feature("docstring") atsci_trellis_encoder::encode_helper " - -Params: (out, in)" - -%feature("docstring") atsci_viterbi_decoder "fancy, schmancy 12-way interleaved viterbi decoder for ATSC" - -%feature("docstring") atsci_viterbi_decoder::atsci_viterbi_decoder " - -Params: (NONE)" - -%feature("docstring") atsci_viterbi_decoder::~atsci_viterbi_decoder " - -Params: (NONE)" - -%feature("docstring") atsci_viterbi_decoder::reset "reset all decoder states - -Params: (NONE)" - -%feature("docstring") atsci_viterbi_decoder::decode "Take 12 data segments of soft decisions (floats) and produce 12 RS encoded data segments. We work in groups of 12 because that's the smallest number of segments that composes a single full cycle of the decoder mux. - -Params: (out, in)" - -%feature("docstring") atsci_viterbi_decoder::decode_helper " - -Params: (out, in)" - -%feature("docstring") audio_alsa_sink "audio sink using ALSA - -The sink has N input streams of floats, where N depends on the hardware characteristics of the selected device. - -Input samples must be in the range [-1,1]." - -%feature("docstring") audio_alsa_sink::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_alsa_sink::bail " - -Params: (msg, err)" - -%feature("docstring") audio_alsa_sink::audio_alsa_sink " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_alsa_sink::write_buffer " - -Params: (buffer, nframes, sizeof_frame)" - -%feature("docstring") audio_alsa_sink::work_s16 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_sink::work_s16_1x2 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_sink::work_s32 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_sink::work_s32_1x2 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_sink::~audio_alsa_sink " - -Params: (NONE)" - -%feature("docstring") audio_alsa_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_alsa_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_source "audio source using ALSA - -The source has between 1 and N input streams of floats, where N is depends on the hardware characteristics of the selected device. - -Output samples will be in the range [-1,1]." - -%feature("docstring") audio_alsa_source::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_alsa_source::bail " - -Params: (msg, err)" - -%feature("docstring") audio_alsa_source::audio_alsa_source " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_alsa_source::read_buffer " - -Params: (buffer, nframes, sizeof_frame)" - -%feature("docstring") audio_alsa_source::work_s16 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_source::work_s16_2x1 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_source::work_s32 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_source::work_s32_2x1 " - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_alsa_source::~audio_alsa_source " - -Params: (NONE)" - -%feature("docstring") audio_alsa_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_alsa_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_jack_sink "audio sink using JACK - -The sink has one input stream of floats. - -Input samples must be in the range [-1,1]." - -%feature("docstring") audio_jack_sink::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_jack_sink::bail " - -Params: (msg, err)" - -%feature("docstring") audio_jack_sink::audio_jack_sink " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_jack_sink::~audio_jack_sink " - -Params: (NONE)" - -%feature("docstring") audio_jack_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_jack_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_jack_source "audio source using JACK - -The source has one input stream of floats. - -Output samples will be in the range [-1,1]." - -%feature("docstring") audio_jack_source::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_jack_source::bail " - -Params: (msg, err)" - -%feature("docstring") audio_jack_source::audio_jack_source " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_jack_source::~audio_jack_source " - -Params: (NONE)" - -%feature("docstring") audio_jack_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_jack_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_oss_sink "audio sink using OSS - -input signature is one or two streams of floats. Input samples must be in the range [-1,1]." - -%feature("docstring") audio_oss_sink::audio_oss_sink " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_oss_sink::~audio_oss_sink " - -Params: (NONE)" - -%feature("docstring") audio_oss_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_oss_source "audio source using OSS - -Output signature is one or two streams of floats. Output samples will be in the range [-1,1]." - -%feature("docstring") audio_oss_source::audio_oss_source " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_oss_source::~audio_oss_source " - -Params: (NONE)" - -%feature("docstring") audio_oss_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_osx_sink "audio sink using OSX - -input signature is one or two streams of floats. Input samples must be in the range [-1,1]." - -%feature("docstring") audio_osx_sink::audio_osx_sink " - -Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" - -%feature("docstring") audio_osx_sink::~audio_osx_sink " - -Params: (NONE)" - -%feature("docstring") audio_osx_sink::IsRunning " - -Params: (NONE)" - -%feature("docstring") audio_osx_sink::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") audio_osx_sink::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") audio_osx_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_osx_sink::AUOutputCallback " - -Params: (inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData)" - -%feature("docstring") audio_osx_source "audio source using OSX - -Input signature is one or two streams of floats. Samples must be in the range [-1,1]." - -%feature("docstring") audio_osx_source::audio_osx_source " - -Params: (sample_rate, device_name, do_block, channel_config, max_sample_count)" - -%feature("docstring") audio_osx_source::~audio_osx_source " - -Params: (NONE)" - -%feature("docstring") audio_osx_source::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") audio_osx_source::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") audio_osx_source::IsRunning " - -Params: (NONE)" - -%feature("docstring") audio_osx_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_osx_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_osx_source::SetDefaultInputDeviceAsCurrent " - -Params: (NONE)" - -%feature("docstring") audio_osx_source::AllocAudioBufferList " - -Params: (t_ABL, n_channels, inputBufferSizeBytes)" - -%feature("docstring") audio_osx_source::FreeAudioBufferList " - -Params: (t_ABL)" - -%feature("docstring") audio_osx_source::ConverterCallback " - -Params: (inAudioConverter, ioNumberDataPackets, ioData, outASPD, inUserData)" - -%feature("docstring") audio_osx_source::AUInputCallback " - -Params: (inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData)" - -%feature("docstring") audio_portaudio_sink "\ Audio sink using PORTAUDIO - -Input samples must be in the range [-1,1]." - -%feature("docstring") audio_portaudio_sink::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_portaudio_sink::bail " - -Params: (msg, err)" - -%feature("docstring") audio_portaudio_sink::create_ringbuffer " - -Params: (NONE)" - -%feature("docstring") audio_portaudio_sink::audio_portaudio_sink " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_portaudio_sink::~audio_portaudio_sink " - -Params: (NONE)" - -%feature("docstring") audio_portaudio_sink::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_portaudio_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_portaudio_source "\ Audio source using PORTAUDIO - -Input samples must be in the range [-1,1]." - -%feature("docstring") audio_portaudio_source::output_error_msg " - -Params: (msg, err)" - -%feature("docstring") audio_portaudio_source::bail " - -Params: (msg, err)" - -%feature("docstring") audio_portaudio_source::create_ringbuffer " - -Params: (NONE)" - -%feature("docstring") audio_portaudio_source::audio_portaudio_source " - -Params: (sampling_rate, device_name, ok_to_block)" - -%feature("docstring") audio_portaudio_source::~audio_portaudio_source " - -Params: (NONE)" - -%feature("docstring") audio_portaudio_source::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") audio_portaudio_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_windows_sink "audio sink using winmm mmsystem (win32 only) - -input signature is one or two streams of floats. Input samples must be in the range [-1,1]." - -%feature("docstring") audio_windows_sink::string_to_int " - -Params: (s)" - -%feature("docstring") audio_windows_sink::audio_windows_sink " - -Params: (sampling_freq, device_name)" - -%feature("docstring") audio_windows_sink::open_waveout_device " - -Params: ()" - -%feature("docstring") audio_windows_sink::write_waveout " - -Params: (lp_data, dw_data_size)" - -%feature("docstring") audio_windows_sink::~audio_windows_sink " - -Params: (NONE)" - -%feature("docstring") audio_windows_sink::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") audio_windows_source "audio source using winmm mmsystem (win32 only) - -Output signature is one or two streams of floats. Output samples will be in the range [-1,1]." - -%feature("docstring") audio_windows_source::audio_windows_source " - -Params: (sampling_freq, device_name)" - -%feature("docstring") audio_windows_source::~audio_windows_source " - -Params: (NONE)" - -%feature("docstring") audio_windows_source::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") std::auto_ptr "STL class." - -%feature("docstring") std::bad_alloc "STL class." - -%feature("docstring") std::bad_cast "STL class." - -%feature("docstring") std::bad_exception "STL class." - -%feature("docstring") std::bad_typeid "STL class." - -%feature("docstring") std::basic_fstream "STL class." - -%feature("docstring") std::basic_ifstream "STL class." - -%feature("docstring") std::basic_ios "STL class." - -%feature("docstring") std::basic_iostream "STL class." - -%feature("docstring") std::basic_istream "STL class." - -%feature("docstring") std::basic_istringstream "STL class." - -%feature("docstring") std::basic_ofstream "STL class." - -%feature("docstring") std::basic_ostream "STL class." - -%feature("docstring") std::basic_ostringstream "STL class." - -%feature("docstring") std::basic_string "STL class." - -%feature("docstring") std::basic_stringstream "STL class." - -%feature("docstring") std::bitset "STL class." - - - -%feature("docstring") msdd::BufferCopyBehavior::operator() " - -Params: (a, b, output_index, nitems)" - -%feature("docstring") msdd::BufferCopyBehavior::~BufferCopyBehavior " - -Params: (NONE)" - - - -%feature("docstring") msdd::BufferCopyBehaviorComplex::operator() " - -Params: (a, b, output_index, nitems)" - - - -%feature("docstring") msdd::BufferCopyBehaviorGeneric::operator() " - -Params: (a, b, output_index, nitems)" - - - -%feature("docstring") circular_buffer::delete_mutex_cond " - -Params: (NONE)" - -%feature("docstring") circular_buffer::circular_buffer " - -Params: (bufLen_I, doWriteBlock, doFullRead)" - -%feature("docstring") circular_buffer::~circular_buffer " - -Params: (NONE)" - -%feature("docstring") circular_buffer::n_avail_write_items " - -Params: (NONE)" - -%feature("docstring") circular_buffer::n_avail_read_items " - -Params: (NONE)" - -%feature("docstring") circular_buffer::buffer_length_items " - -Params: (NONE)" - -%feature("docstring") circular_buffer::do_write_block " - -Params: (NONE)" - -%feature("docstring") circular_buffer::do_full_read " - -Params: (NONE)" - -%feature("docstring") circular_buffer::reset " - -Params: (NONE)" - -%feature("docstring") circular_buffer::enqueue " - -Params: (buf, bufLen_I)" - -%feature("docstring") circular_buffer::dequeue " - -Params: (buf, bufLen_I)" - -%feature("docstring") circular_buffer::abort " - -Params: (NONE)" - - - -%feature("docstring") circular_linked_list::circular_linked_list " - -Params: (n_nodes)" - -%feature("docstring") circular_linked_list::~circular_linked_list " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::find_next_available_node " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::make_node_available " - -Params: (l_node)" - -%feature("docstring") circular_linked_list::iterate_start " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::iterate_next " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::object " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::num_nodes " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::num_used " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::num_available " - -Params: (NONE)" - -%feature("docstring") circular_linked_list::num_used_inc " - -Params: ()" - -%feature("docstring") circular_linked_list::num_used_dec " - -Params: ()" - -%feature("docstring") circular_linked_list::in_use " - -Params: (NONE)" - -%feature("docstring") std::complex "STL class." - -%feature("docstring") std::basic_string::const_iterator "STL iterator class." - -%feature("docstring") std::string::const_iterator "STL iterator class." - -%feature("docstring") std::wstring::const_iterator "STL iterator class." - -%feature("docstring") std::deque::const_iterator "STL iterator class." - -%feature("docstring") std::list::const_iterator "STL iterator class." - -%feature("docstring") std::map::const_iterator "STL iterator class." - -%feature("docstring") std::multimap::const_iterator "STL iterator class." - -%feature("docstring") std::set::const_iterator "STL iterator class." - -%feature("docstring") std::multiset::const_iterator "STL iterator class." - -%feature("docstring") std::vector::const_iterator "STL iterator class." - -%feature("docstring") std::basic_string::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::string::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::wstring::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::deque::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::list::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::map::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::multimap::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::set::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::multiset::const_reverse_iterator "STL iterator class." - -%feature("docstring") std::vector::const_reverse_iterator "STL iterator class." - -%feature("docstring") convolutional_interleaver "template class for generic convolutional interleaver" - -%feature("docstring") convolutional_interleaver::convolutional_interleaver " - -Params: (interleave_p, nbanks, fifo_size_incr)" - -%feature("docstring") convolutional_interleaver::~convolutional_interleaver " - -Params: (NONE)" - -%feature("docstring") convolutional_interleaver::reset "reset interleaver (flushes contents and resets commutator) - -Params: (NONE)" - -%feature("docstring") convolutional_interleaver::sync "sync interleaver (resets commutator, but doesn't flush fifos) - -Params: (NONE)" - -%feature("docstring") convolutional_interleaver::end_to_end_delay "return end to end delay in symbols (delay through concatenated interleaver / deinterleaver) - -Params: (NONE)" - -%feature("docstring") convolutional_interleaver::transform "transform a single symbol - -Params: (input)" - - - -%feature("docstring") usrp2::copy_handler::copy_handler " - -Params: (dest, len)" - -%feature("docstring") usrp2::copy_handler::~copy_handler " - -Params: (NONE)" - -%feature("docstring") usrp2::copy_handler::operator() " - -Params: (base, len)" - -%feature("docstring") usrp2::copy_handler::bytes " - -Params: (NONE)" - -%feature("docstring") usrp2::copy_handler::times " - -Params: (NONE)" - -%feature("docstring") usrp2::copy_handler::full " - -Params: (NONE)" - -%feature("docstring") usrp2::data_handler "Abstract function object called to handle received data blocks." - -%feature("docstring") usrp2::data_handler::operator() " - -Params: (base, len)" - -%feature("docstring") usrp2::data_handler::~data_handler " - -Params: (NONE)" - -%feature("docstring") db_base "Abstract base class for all USRP daughterboards." - -%feature("docstring") db_base::_enable_refclk " - -Params: (enable)" - -%feature("docstring") db_base::_refclk_freq " - -Params: (NONE)" - -%feature("docstring") db_base::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") db_base::usrp " - -Params: (NONE)" - -%feature("docstring") db_base::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_base::db_base " - -Params: (usrp, which)" - -%feature("docstring") db_base::~db_base " - -Params: (NONE)" - -%feature("docstring") db_base::dbid " - -Params: (NONE)" - -%feature("docstring") db_base::name " - -Params: (NONE)" - -%feature("docstring") db_base::side_and_name " - -Params: (NONE)" - -%feature("docstring") db_base::which " - -Params: (NONE)" - -%feature("docstring") db_base::bypass_adc_buffers " - -Params: (bypass)" - -%feature("docstring") db_base::set_atr_mask " - -Params: (v)" - -%feature("docstring") db_base::set_atr_txval " - -Params: (v)" - -%feature("docstring") db_base::set_atr_rxval " - -Params: (v)" - -%feature("docstring") db_base::set_atr_tx_delay " - -Params: (v)" - -%feature("docstring") db_base::set_atr_rx_delay " - -Params: (v)" - -%feature("docstring") db_base::set_lo_offset " - -Params: (offset)" - -%feature("docstring") db_base::lo_offset " - -Params: (NONE)" - -%feature("docstring") db_base::gain_min " - -Params: (NONE)" - -%feature("docstring") db_base::gain_max " - -Params: (NONE)" - -%feature("docstring") db_base::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_base::freq_min " - -Params: (NONE)" - -%feature("docstring") db_base::freq_max " - -Params: (NONE)" - -%feature("docstring") db_base::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_base::set_gain " - -Params: (gain)" - -%feature("docstring") db_base::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_base::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_base::spectrum_inverted " - -Params: (NONE)" - -%feature("docstring") db_base::set_enable " - -Params: (on)" - -%feature("docstring") db_base::set_auto_tr " - -Params: (on)" - -%feature("docstring") db_base::select_rx_antenna " - -Params: (which_antenna)" - -%feature("docstring") db_base::set_bw " - -Params: (bw)" - - - -%feature("docstring") db_basic_rx::db_basic_rx " - -Params: (usrp, which, subdev)" - -%feature("docstring") db_basic_rx::~db_basic_rx " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::freq_max " - -Params: (NONE)" - -%feature("docstring") db_basic_rx::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_basic_rx::set_gain " - -Params: (gain)" - -%feature("docstring") db_basic_rx::is_quadrature " - -Params: (NONE)" - - - -%feature("docstring") db_basic_tx::db_basic_tx " - -Params: (usrp, which)" - -%feature("docstring") db_basic_tx::~db_basic_tx " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::freq_max " - -Params: (NONE)" - -%feature("docstring") db_basic_tx::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_basic_tx::set_gain " - -Params: (gain)" - -%feature("docstring") db_basic_tx::is_quadrature " - -Params: (NONE)" - - - -%feature("docstring") db_bitshark_rx::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") db_bitshark_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::db_bitshark_rx " - -Params: (usrp, which)" - -%feature("docstring") db_bitshark_rx::~db_bitshark_rx " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::freq_max " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::set_freq " - -Params: (freq)" - -%feature("docstring") db_bitshark_rx::set_gain " - -Params: (gain)" - -%feature("docstring") db_bitshark_rx::set_bw " - -Params: (bw)" - -%feature("docstring") db_bitshark_rx::set_clock_scheme " - -Params: (clock_scheme, ref_clock_freq)" - -%feature("docstring") db_bitshark_rx::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_bitshark_rx::i_and_q_swapped " - -Params: (NONE)" - - - -%feature("docstring") db_dbs_rx::_write_reg " - -Params: (regno, v)" - -%feature("docstring") db_dbs_rx::_write_regs " - -Params: (starting_regno, vals)" - -%feature("docstring") db_dbs_rx::_read_status " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::_send_reg " - -Params: (regno)" - -%feature("docstring") db_dbs_rx::_set_m " - -Params: (m)" - -%feature("docstring") db_dbs_rx::_set_fdac " - -Params: (fdac)" - -%feature("docstring") db_dbs_rx::_set_dl " - -Params: (dl)" - -%feature("docstring") db_dbs_rx::_set_gc2 " - -Params: (gc2)" - -%feature("docstring") db_dbs_rx::_set_gc1 " - -Params: (gc1)" - -%feature("docstring") db_dbs_rx::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") db_dbs_rx::_set_osc " - -Params: (osc)" - -%feature("docstring") db_dbs_rx::_set_cp " - -Params: (cp)" - -%feature("docstring") db_dbs_rx::_set_n " - -Params: (n)" - -%feature("docstring") db_dbs_rx::_set_div2 " - -Params: (div2)" - -%feature("docstring") db_dbs_rx::_set_r " - -Params: (r)" - -%feature("docstring") db_dbs_rx::_set_ade " - -Params: (ade)" - -%feature("docstring") db_dbs_rx::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::db_dbs_rx " - -Params: (usrp, which)" - -%feature("docstring") db_dbs_rx::~db_dbs_rx " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::freq_max " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::set_freq " - -Params: (freq)" - -%feature("docstring") db_dbs_rx::set_gain " - -Params: (gain)" - -%feature("docstring") db_dbs_rx::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_dbs_rx::set_bw " - -Params: (bw)" - - - -%feature("docstring") db_dtt754::db_dtt754 " - -Params: (usrp, which)" - -%feature("docstring") db_dtt754::~db_dtt754 " - -Params: (NONE)" - -%feature("docstring") db_dtt754::gain_min " - -Params: (NONE)" - -%feature("docstring") db_dtt754::gain_max " - -Params: (NONE)" - -%feature("docstring") db_dtt754::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_dtt754::set_gain " - -Params: (gain)" - -%feature("docstring") db_dtt754::freq_min " - -Params: (NONE)" - -%feature("docstring") db_dtt754::freq_max " - -Params: (NONE)" - -%feature("docstring") db_dtt754::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_dtt754::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_dtt754::spectrum_inverted " - -Params: (NONE)" - -%feature("docstring") db_dtt754::set_bw " - -Params: (bw)" - -%feature("docstring") db_dtt754::_set_rfagc " - -Params: (gain)" - -%feature("docstring") db_dtt754::_set_ifagc " - -Params: (gain)" - -%feature("docstring") db_dtt754::_set_pga " - -Params: (pga_gain)" - - - -%feature("docstring") db_dtt768::db_dtt768 " - -Params: (usrp, which)" - -%feature("docstring") db_dtt768::~db_dtt768 " - -Params: (NONE)" - -%feature("docstring") db_dtt768::gain_min " - -Params: (NONE)" - -%feature("docstring") db_dtt768::gain_max " - -Params: (NONE)" - -%feature("docstring") db_dtt768::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_dtt768::set_gain " - -Params: (gain)" - -%feature("docstring") db_dtt768::freq_min " - -Params: (NONE)" - -%feature("docstring") db_dtt768::freq_max " - -Params: (NONE)" - -%feature("docstring") db_dtt768::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_dtt768::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_dtt768::spectrum_inverted " - -Params: (NONE)" - -%feature("docstring") db_dtt768::set_bw " - -Params: (bw)" - -%feature("docstring") db_dtt768::_set_rfagc " - -Params: (gain)" - -%feature("docstring") db_dtt768::_set_ifagc " - -Params: (gain)" - -%feature("docstring") db_dtt768::_set_pga " - -Params: (pga_gain)" - - - -%feature("docstring") db_flexrf_1200_rx::db_flexrf_1200_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_rx::~db_flexrf_1200_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_1200_rx_mimo_a::db_flexrf_1200_rx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_rx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1200_rx_mimo_b::db_flexrf_1200_rx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_rx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1200_tx::db_flexrf_1200_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_tx::~db_flexrf_1200_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1200_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_1200_tx_mimo_a::db_flexrf_1200_tx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_tx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1200_tx_mimo_b::db_flexrf_1200_tx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1200_tx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1800_rx::db_flexrf_1800_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_rx::~db_flexrf_1800_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_1800_rx_mimo_a::db_flexrf_1800_rx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_rx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1800_rx_mimo_b::db_flexrf_1800_rx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_rx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1800_tx::db_flexrf_1800_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_tx::~db_flexrf_1800_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_1800_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_1800_tx_mimo_a::db_flexrf_1800_tx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_tx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_1800_tx_mimo_b::db_flexrf_1800_tx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_1800_tx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_2200_rx::db_flexrf_2200_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2200_rx::~db_flexrf_2200_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_2200_tx::db_flexrf_2200_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2200_tx::~db_flexrf_2200_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2200_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_2400_rx::db_flexrf_2400_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_rx::~db_flexrf_2400_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_2400_rx_mimo_a::db_flexrf_2400_rx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_rx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_2400_rx_mimo_b::db_flexrf_2400_rx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_rx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_2400_tx::db_flexrf_2400_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_tx::~db_flexrf_2400_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_2400_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_2400_tx_mimo_a::db_flexrf_2400_tx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_tx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_2400_tx_mimo_b::db_flexrf_2400_tx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_2400_tx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_400_rx::db_flexrf_400_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_rx::~db_flexrf_400_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_400_rx_mimo_a::db_flexrf_400_rx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_rx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_400_rx_mimo_b::db_flexrf_400_rx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_rx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_400_tx::db_flexrf_400_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_tx::~db_flexrf_400_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_400_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_400_tx_mimo_a::db_flexrf_400_tx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_tx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_400_tx_mimo_b::db_flexrf_400_tx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_400_tx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_900_rx::db_flexrf_900_rx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_rx::~db_flexrf_900_rx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_rx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_rx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_900_rx_mimo_a::db_flexrf_900_rx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_rx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_900_rx_mimo_b::db_flexrf_900_rx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_rx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_900_tx::db_flexrf_900_tx " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_tx::~db_flexrf_900_tx " - -Params: (NONE)" - -%feature("docstring") db_flexrf_900_tx::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - - - -%feature("docstring") db_flexrf_900_tx_mimo_a::db_flexrf_900_tx_mimo_a " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_tx_mimo_a::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_flexrf_900_tx_mimo_b::db_flexrf_900_tx_mimo_b " - -Params: (usrp, which)" - -%feature("docstring") db_flexrf_900_tx_mimo_b::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_lf_rx::db_lf_rx " - -Params: (usrp, which, subdev)" - -%feature("docstring") db_lf_rx::~db_lf_rx " - -Params: (NONE)" - -%feature("docstring") db_lf_rx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_lf_rx::freq_max " - -Params: (NONE)" - - - -%feature("docstring") db_lf_tx::db_lf_tx " - -Params: (usrp, which)" - -%feature("docstring") db_lf_tx::~db_lf_tx " - -Params: (NONE)" - -%feature("docstring") db_lf_tx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_lf_tx::freq_max " - -Params: (NONE)" - - - -%feature("docstring") db_tv_rx::_set_rfagc " - -Params: (gain)" - -%feature("docstring") db_tv_rx::_set_ifagc " - -Params: (gain)" - -%feature("docstring") db_tv_rx::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") db_tv_rx::db_tv_rx " - -Params: (usrp, which, first_IF, second_IF)" - -%feature("docstring") db_tv_rx::~db_tv_rx " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::freq_min " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::freq_max " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_tv_rx::set_gain " - -Params: (gain)" - -%feature("docstring") db_tv_rx::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_tv_rx::spectrum_inverted " - -Params: (NONE)" - - - -%feature("docstring") db_tv_rx_mimo::db_tv_rx_mimo " - -Params: (usrp, which, first_IF, second_IF)" - -%feature("docstring") db_tv_rx_mimo::_refclk_divisor " - -Params: (NONE)" - - - -%feature("docstring") db_wbx_lo_rx::db_wbx_lo_rx " - -Params: (usrp, which)" - -%feature("docstring") db_wbx_lo_rx::~db_wbx_lo_rx " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::_refclk_freq " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::_rx_write_io " - -Params: (value, mask)" - -%feature("docstring") db_wbx_lo_rx::_lock_detect " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_rx::usrp " - -Params: (NONE)" - - - -%feature("docstring") db_wbx_lo_tx::db_wbx_lo_tx " - -Params: (usrp, which)" - -%feature("docstring") db_wbx_lo_tx::~db_wbx_lo_tx " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::set_gain " - -Params: (gain)" - -%feature("docstring") db_wbx_lo_tx::_refclk_freq " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::_rx_write_io " - -Params: (value, mask)" - -%feature("docstring") db_wbx_lo_tx::_lock_detect " - -Params: (NONE)" - -%feature("docstring") db_wbx_lo_tx::usrp " - -Params: (NONE)" - - - -%feature("docstring") db_wbxng_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_wbxng_rx::_set_attn " - -Params: (attn)" - -%feature("docstring") db_wbxng_rx::db_wbxng_rx " - -Params: (usrp, which)" - -%feature("docstring") db_wbxng_rx::~db_wbxng_rx " - -Params: (NONE)" - -%feature("docstring") db_wbxng_rx::set_auto_tr " - -Params: (on)" - -%feature("docstring") db_wbxng_rx::select_rx_antenna " - -Params: (which_antenna)" - -%feature("docstring") db_wbxng_rx::set_gain " - -Params: (gain)" - -%feature("docstring") db_wbxng_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_wbxng_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_wbxng_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_wbxng_rx::i_and_q_swapped " - -Params: (NONE)" - - - -%feature("docstring") db_wbxng_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_wbxng_tx::db_wbxng_tx " - -Params: (usrp, which)" - -%feature("docstring") db_wbxng_tx::~db_wbxng_tx " - -Params: (NONE)" - -%feature("docstring") db_wbxng_tx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_wbxng_tx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_wbxng_tx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_wbxng_tx::set_auto_tr " - -Params: (on)" - -%feature("docstring") db_wbxng_tx::set_enable " - -Params: (on)" - -%feature("docstring") db_wbxng_tx::set_gain " - -Params: (gain)" - - - -%feature("docstring") db_xcvr2450_base::db_xcvr2450_base " - -Params: (usrp, which)" - -%feature("docstring") db_xcvr2450_base::~db_xcvr2450_base " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_base::set_freq " - -Params: (target_freq)" - -%feature("docstring") db_xcvr2450_base::is_quadrature " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_base::freq_min " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_base::freq_max " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_base::shutdown_common " - -Params: (NONE)" - - - -%feature("docstring") db_xcvr2450_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_rx::db_xcvr2450_rx " - -Params: (usrp, which)" - -%feature("docstring") db_xcvr2450_rx::~db_xcvr2450_rx " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_rx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_rx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_rx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_rx::set_gain " - -Params: (gain)" - - - -%feature("docstring") db_xcvr2450_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_tx::db_xcvr2450_tx " - -Params: (usrp, which)" - -%feature("docstring") db_xcvr2450_tx::~db_xcvr2450_tx " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_tx::gain_min " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_tx::gain_max " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_tx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") db_xcvr2450_tx::set_gain " - -Params: (gain)" - -%feature("docstring") db_xcvr2450_tx::i_and_q_swapped " - -Params: (NONE)" - -%feature("docstring") std::deque "STL class." - - - -%feature("docstring") dial_tone::dial_tone " - -Params: (NONE)" - -%feature("docstring") sssr::digital_correlator "digital correlator for 1001 and 0110 patterns" - -%feature("docstring") sssr::digital_correlator::digital_correlator " - -Params: (NONE)" - -%feature("docstring") sssr::digital_correlator::reset "called on channel change - -Params: (NONE)" - -%feature("docstring") sssr::digital_correlator::update "clock bit in and return true if we've seen 1001 - -Params: (bit)" - -%feature("docstring") std::domain_error "STL class." - -%feature("docstring") usrp2::eth_buffer "high-performance interface to send and receive raw ethernet frames with out-of-order retirement of received frames. - -On many systems it should be possible to implement this on top of libpcap" - -%feature("docstring") usrp2::eth_buffer::frame_available " - -Params: (NONE)" - -%feature("docstring") usrp2::eth_buffer::inc_head " - -Params: (NONE)" - -%feature("docstring") usrp2::eth_buffer::eth_buffer " - -Params: (rx_bufsize)" - -%feature("docstring") usrp2::eth_buffer::~eth_buffer " - -Params: (NONE)" - -%feature("docstring") usrp2::eth_buffer::open "open the specified interface - -Params: (ifname, protocol)" - -%feature("docstring") usrp2::eth_buffer::close "close the interface - -Params: (NONE)" - -%feature("docstring") usrp2::eth_buffer::attach_pktfilter "attach packet filter to socket to restrict which packets read sees. - -Params: (pf)" - -%feature("docstring") usrp2::eth_buffer::mac "return 6 byte string containing our MAC address - -Params: (NONE)" - -%feature("docstring") usrp2::eth_buffer::rx_frames "Call for each frame in the receive buffer. - -If is 0, rx_frames will not wait for frames if none are available, and f will not be invoked. If is -1 (the default), rx_frames will block indefinitely until frames are available. If is positive, it indicates the number of milliseconds to wait for a frame to become available. Once the timeout has expired, rx_frames will return, f never having been invoked. - - will be called on each ethernet frame that is available. returns a bit mask with one of the following set or cleared: - -data_handler::KEEP - hold onto the frame and present it again during the next call to rx_frames, otherwise discard it - -data_handler::DONE - return from rx_frames now even though more frames might be available; otherwise continue if more frames are ready. - -The idea of holding onto a frame for the next iteration allows the caller to scan the received packet stream for particular classes of frames (such as command replies) leaving the rest intact. On the next call all kept frames, followed by any new frames received, will be presented in order to . See usrp2.cc for an example of the pattern. - -Params: (f, timeout)" - -%feature("docstring") usrp2::eth_buffer::release_frame " - -Params: (p)" - -%feature("docstring") usrp2::eth_buffer::tx_frame " - -Params: (base, len, flags)" - -%feature("docstring") usrp2::eth_buffer::tx_framev " - -Params: (iov, iovcnt, flags)" - -%feature("docstring") usrp2::eth_buffer::max_frames " - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet "Read and write ethernet frames. - -This provides a low level interface to hardware that communicates via raw (non-IP) ethernet frames." - -%feature("docstring") usrp2::ethernet::ethernet " - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet::~ethernet " - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet::open " - -Params: (ifname, protocol)" - -%feature("docstring") usrp2::ethernet::close " - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet::attach_pktfilter "attach packet filter to socket to restrict which packets read sees. - -Params: (pf)" - -%feature("docstring") usrp2::ethernet::mac "return 6 byte string containing our MAC address - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet::fd "Return file descriptor associated with socket. - -Params: (NONE)" - -%feature("docstring") usrp2::ethernet::read_packet "Read packet from interface. - -Returned packet includes 14-byte ethhdr - -Params: (buf, buflen)" - -%feature("docstring") usrp2::ethernet::read_packet_dont_block "Read packet from interface, but don't block waiting. - -Returned packet includes 14-byte ethhdr - -Params: (buf, buflen)" - -%feature("docstring") usrp2::ethernet::write_packet " - -Params: (buf, buflen)" - -%feature("docstring") usrp2::ethernet::write_packetv " - -Params: (iov, iovlen)" - -%feature("docstring") std::exception "STL class." - -%feature("docstring") std::ios_base::failure "STL class." - - - -%feature("docstring") flexrf_base::flexrf_base " - -Params: (usrp, which, _power_on)" - -%feature("docstring") flexrf_base::~flexrf_base " - -Params: (NONE)" - -%feature("docstring") flexrf_base::set_freq " - -Params: (freq)" - -%feature("docstring") flexrf_base::is_quadrature " - -Params: (NONE)" - -%feature("docstring") flexrf_base::freq_min " - -Params: (NONE)" - -%feature("docstring") flexrf_base::freq_max " - -Params: (NONE)" - -%feature("docstring") flexrf_base::_write_all " - -Params: (R, control, N)" - -%feature("docstring") flexrf_base::_write_control " - -Params: (control)" - -%feature("docstring") flexrf_base::_write_R " - -Params: (R)" - -%feature("docstring") flexrf_base::_write_N " - -Params: (N)" - -%feature("docstring") flexrf_base::_write_it " - -Params: (v)" - -%feature("docstring") flexrf_base::_lock_detect " - -Params: (NONE)" - -%feature("docstring") flexrf_base::_compute_regs " - -Params: (freq, retR, retcontrol, retN, retfreq)" - -%feature("docstring") flexrf_base::_compute_control_reg " - -Params: (NONE)" - -%feature("docstring") flexrf_base::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") flexrf_base::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") flexrf_base::power_on " - -Params: (NONE)" - -%feature("docstring") flexrf_base::power_off " - -Params: (NONE)" - - - -%feature("docstring") flexrf_base_rx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") flexrf_base_rx::flexrf_base_rx " - -Params: (usrp, which, _power_on)" - -%feature("docstring") flexrf_base_rx::~flexrf_base_rx " - -Params: (NONE)" - -%feature("docstring") flexrf_base_rx::set_auto_tr " - -Params: (on)" - -%feature("docstring") flexrf_base_rx::select_rx_antenna " - -Params: (which_antenna)" - -%feature("docstring") flexrf_base_rx::set_gain " - -Params: (gain)" - - - -%feature("docstring") flexrf_base_tx::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") flexrf_base_tx::flexrf_base_tx " - -Params: (usrp, which, _power_on)" - -%feature("docstring") flexrf_base_tx::~flexrf_base_tx " - -Params: (NONE)" - -%feature("docstring") flexrf_base_tx::gain_min " - -Params: (NONE)" - -%feature("docstring") flexrf_base_tx::gain_max " - -Params: (NONE)" - -%feature("docstring") flexrf_base_tx::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") flexrf_base_tx::set_auto_tr " - -Params: (on)" - -%feature("docstring") flexrf_base_tx::set_enable " - -Params: (on)" - -%feature("docstring") flexrf_base_tx::set_gain " - -Params: (gain)" - -%feature("docstring") fsm "FSM class." - -%feature("docstring") fsm::generate_PS_PI " - -Params: (NONE)" - -%feature("docstring") fsm::generate_TM " - -Params: (NONE)" - -%feature("docstring") fsm::find_es " - -Params: (es)" - -%feature("docstring") fsm::fsm " - -Params: (NONE)" - -%feature("docstring") fsm::I " - -Params: (NONE)" - -%feature("docstring") fsm::S " - -Params: (NONE)" - -%feature("docstring") fsm::O " - -Params: (NONE)" - -%feature("docstring") fsm::NS " - -Params: (NONE)" - -%feature("docstring") fsm::OS " - -Params: (NONE)" - -%feature("docstring") fsm::PS " - -Params: (NONE)" - -%feature("docstring") fsm::PI " - -Params: (NONE)" - -%feature("docstring") fsm::TMi " - -Params: (NONE)" - -%feature("docstring") fsm::TMl " - -Params: (NONE)" - -%feature("docstring") fsm::write_trellis_svg " - -Params: (filename, number_stages)" - -%feature("docstring") fsm::write_fsm_txt " - -Params: (filename)" - -%feature("docstring") std::fstream "STL class." - -%feature("docstring") fusb_devhandle "abstract usb device handle" - -%feature("docstring") fusb_devhandle::fusb_devhandle " - -Params: (rhs)" - -%feature("docstring") fusb_devhandle::operator= " - -Params: (rhs)" - -%feature("docstring") fusb_devhandle::~fusb_devhandle " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle::get_usb_dev_handle " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_darwin "darwin implementation of fusb_devhandle - -This is currently identical to the generic implementation and is intended as a starting point for whatever magic is required to make usb fly." - -%feature("docstring") fusb_devhandle_darwin::fusb_devhandle_darwin " - -Params: (udh)" - -%feature("docstring") fusb_devhandle_darwin::~fusb_devhandle_darwin " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_darwin::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle_generic "generic implementation of fusb_devhandle using only libusb" - -%feature("docstring") fusb_devhandle_generic::fusb_devhandle_generic " - -Params: (udh)" - -%feature("docstring") fusb_devhandle_generic::~fusb_devhandle_generic " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_generic::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle_libusb1 "libusb1 implementation of fusb_devhandle" - -%feature("docstring") fusb_devhandle_libusb1::pending_add " - -Params: (lut)" - -%feature("docstring") fusb_devhandle_libusb1::pending_get " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_libusb1::fusb_devhandle_libusb1 " - -Params: (udh, ctx)" - -%feature("docstring") fusb_devhandle_libusb1::~fusb_devhandle_libusb1 " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_libusb1::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle_libusb1::_submit_lut " - -Params: ()" - -%feature("docstring") fusb_devhandle_libusb1::_cancel_lut " - -Params: ()" - -%feature("docstring") fusb_devhandle_libusb1::_cancel_pending_rqsts " - -Params: (eph)" - -%feature("docstring") fusb_devhandle_libusb1::_reap " - -Params: (ok_to_block_p)" - -%feature("docstring") fusb_devhandle_libusb1::_wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_libusb1::pending_remove " - -Params: (lut)" - -%feature("docstring") fusb_devhandle_libusb1::_teardown " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_linux "linux specific implementation of fusb_devhandle using usbdevice_fs" - -%feature("docstring") fusb_devhandle_linux::pending_add " - -Params: (urb)" - -%feature("docstring") fusb_devhandle_linux::pending_remove " - -Params: (urb)" - -%feature("docstring") fusb_devhandle_linux::pending_get " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_linux::fusb_devhandle_linux " - -Params: (udh)" - -%feature("docstring") fusb_devhandle_linux::~fusb_devhandle_linux " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_linux::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle_linux::_submit_urb " - -Params: (urb)" - -%feature("docstring") fusb_devhandle_linux::_cancel_urb " - -Params: (urb)" - -%feature("docstring") fusb_devhandle_linux::_cancel_pending_rqsts " - -Params: (eph)" - -%feature("docstring") fusb_devhandle_linux::_reap " - -Params: (ok_to_block_p)" - -%feature("docstring") fusb_devhandle_linux::_wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_ra_wb "generic implementation of fusb_devhandle using only libusb" - -%feature("docstring") fusb_devhandle_ra_wb::fusb_devhandle_ra_wb " - -Params: (udh)" - -%feature("docstring") fusb_devhandle_ra_wb::~fusb_devhandle_ra_wb " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_ra_wb::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_devhandle_win32 "win32 implementation of fusb_devhandle using libusb-win32" - -%feature("docstring") fusb_devhandle_win32::fusb_devhandle_win32 " - -Params: (udh)" - -%feature("docstring") fusb_devhandle_win32::~fusb_devhandle_win32 " - -Params: (NONE)" - -%feature("docstring") fusb_devhandle_win32::make_ephandle "return an ephandle of the correct subtype - -Params: (endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle "abstract usb end point handle" - -%feature("docstring") fusb_ephandle::fusb_ephandle " - -Params: (rhs)" - -%feature("docstring") fusb_ephandle::operator= " - -Params: (rhs)" - -%feature("docstring") fusb_ephandle::~fusb_ephandle " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle::block_size "returns current block size. - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_darwin "darwin implementation of fusb_ephandle - -This is currently identical to the generic implementation and is intended as a starting point for whatever magic is required to make usb fly." - -%feature("docstring") fusb_ephandle_darwin::write_completed " - -Params: (ret_io_size, result, io_size)" - -%feature("docstring") fusb_ephandle_darwin::read_completed " - -Params: (ret_io_size, result, io_size)" - -%feature("docstring") fusb_ephandle_darwin::run_thread " - -Params: (arg)" - -%feature("docstring") fusb_ephandle_darwin::read_thread " - -Params: (arg)" - -%feature("docstring") fusb_ephandle_darwin::read_issue " - -Params: (l_both)" - -%feature("docstring") fusb_ephandle_darwin::fusb_ephandle_darwin " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_darwin::~fusb_ephandle_darwin " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_darwin::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_darwin::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_darwin::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_darwin::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_darwin::abort " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_darwin::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_generic "generic implementation of fusb_ephandle using only libusb" - -%feature("docstring") fusb_ephandle_generic::fusb_ephandle_generic " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_generic::~fusb_ephandle_generic " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_generic::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_generic::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_generic::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_generic::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_generic::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1 "libusb1 implementation of fusb_ephandle" - -%feature("docstring") fusb_ephandle_libusb1::get_write_work_in_progress " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::reap_complete_writes " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::reload_read_buffer " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::submit_lut " - -Params: (lut)" - -%feature("docstring") fusb_ephandle_libusb1::fusb_ephandle_libusb1 " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_libusb1::~fusb_ephandle_libusb1 " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_libusb1::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_libusb1::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::free_list_add " - -Params: (lut)" - -%feature("docstring") fusb_ephandle_libusb1::completed_list_add " - -Params: (lut)" - -%feature("docstring") fusb_ephandle_libusb1::free_list_get " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::completed_list_get " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_libusb1::get_fusb_devhandle_libusb1 " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux "linux specific implementation of fusb_ephandle using usbdevice_fs" - -%feature("docstring") fusb_ephandle_linux::get_write_work_in_progress " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::reap_complete_writes " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::reload_read_buffer " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::submit_urb " - -Params: (urb)" - -%feature("docstring") fusb_ephandle_linux::fusb_ephandle_linux " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_linux::~fusb_ephandle_linux " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_linux::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_linux::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::free_list_add " - -Params: (urb)" - -%feature("docstring") fusb_ephandle_linux::completed_list_add " - -Params: (urb)" - -%feature("docstring") fusb_ephandle_linux::free_list_get " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_linux::completed_list_get " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_ra_wb "generic implementation of fusb_ephandle using only libusb" - -%feature("docstring") fusb_ephandle_ra_wb::fusb_ephandle_ra_wb " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_ra_wb::~fusb_ephandle_ra_wb " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_ra_wb::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_ra_wb::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_ra_wb::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_ra_wb::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_ra_wb::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_win32 "win32 implementation of fusb_ephandle using libusb-win32" - -%feature("docstring") fusb_ephandle_win32::fusb_ephandle_win32 " - -Params: (dh, endpoint, input_p, block_size, nblocks)" - -%feature("docstring") fusb_ephandle_win32::~fusb_ephandle_win32 " - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_win32::start "begin streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_win32::stop "stop streaming i/o - -Params: (NONE)" - -%feature("docstring") fusb_ephandle_win32::write " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_win32::read " - -Params: (buffer, nbytes)" - -%feature("docstring") fusb_ephandle_win32::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") fusb_sysconfig "factory for creating concrete instances of the appropriate subtype." - -%feature("docstring") fusb_sysconfig::make_devhandle "returns fusb_devhandle or throws if trouble - -Params: (udh, ctx)" - -%feature("docstring") fusb_sysconfig::max_block_size "Returns max block size in bytes (hard limit). - -Params: (NONE)" - -%feature("docstring") fusb_sysconfig::default_block_size "Returns default block size in bytes. - -Params: (NONE)" - -%feature("docstring") fusb_sysconfig::default_buffer_size "Returns the default buffer size in bytes. - -Params: (NONE)" - - - -%feature("docstring") gc_bad_align::gc_bad_align " - -Params: (msg)" - - - -%feature("docstring") gc_bad_alloc::gc_bad_alloc " - -Params: (msg)" - - - -%feature("docstring") gc_bad_submit::gc_bad_submit " - -Params: (name, status)" - - - -%feature("docstring") gc_client_thread_info::gc_client_thread_info " - -Params: (NONE)" - -%feature("docstring") gc_client_thread_info::~gc_client_thread_info " - -Params: (NONE)" - - - -%feature("docstring") gc_exception::gc_exception " - -Params: (msg)" - -%feature("docstring") gc_job_manager "Abstract class that manages SPE jobs. - -There is typically a single instance derived from this class. It is safe to call its methods from any thread." - -%feature("docstring") gc_job_manager::gc_job_manager " - -Params: (options)" - -%feature("docstring") gc_job_manager::~gc_job_manager " - -Params: (NONE)" - -%feature("docstring") gc_job_manager::shutdown "Stop accepting new jobs. Wait for existing jobs to complete. Return all managed SPE's to the system. - -Params: (NONE)" - -%feature("docstring") gc_job_manager::nspes "Return number of SPE's currently allocated to job manager. - -Params: (NONE)" - -%feature("docstring") gc_job_manager::alloc_job_desc "Return a pointer to a properly aligned job descriptor, or throws gc_bad_alloc if there are none available. - -Params: (NONE)" - -%feature("docstring") gc_job_manager::free_job_desc " - -Params: (jd)" - -%feature("docstring") gc_job_manager::submit_job "Submit a job for asynchronous processing on an SPE. - -The caller must not read or write the job description or any of the memory associated with any indirect arguments until after calling wait_job. - -Params: (jd)" - -%feature("docstring") gc_job_manager::wait_job "Wait for job to complete. - -A thread may only wait for jobs which it submitted. - -Params: (jd)" - -%feature("docstring") gc_job_manager::wait_jobs "wait for 1 or more jobs to complete. - -A thread may only wait for jobs which it submitted. - -Params: (njobs, jd, done, mode)" - -%feature("docstring") gc_job_manager::ea_args_maxsize "Return the maximum number of bytes of EA arguments that may be copied to or from the SPE in a single job. The limit applies independently to the \"get\" and \"put\" args. - -Params: (NONE)" - -%feature("docstring") gc_job_manager::lookup_proc "Return gc_proc_id_t associated with spu procedure if one exists, otherwise throws gc_unknown_proc. - -Params: (proc_name)" - -%feature("docstring") gc_job_manager::proc_names "Return a vector of all known spu procedure names. - -Params: (NONE)" - -%feature("docstring") gc_job_manager::set_singleton "Set the singleton gc_job_manager instance. - -The singleton is weakly held, thus the caller must maintain a reference to the mgr for the duration. (If we held the manager strongly, the destructor would never be called, and the resources (SPEs) would not be returned.) Bottom line: the caller is responsible for life-time management. - -Params: (mgr)" - -%feature("docstring") gc_job_manager::singleton "Retrieve the singleton gc_job_manager instance. - -Returns the singleton gc_job_manager instance or raises boost::bad_weak_ptr if the singleton is empty. - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl "Concrete class that manages SPE jobs. - -This class contains all the implementation details." - -%feature("docstring") gc_job_manager_impl::alloc_cti " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::free_cti " - -Params: (cti)" - -%feature("docstring") gc_job_manager_impl::create_event_handler " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::set_eh_state " - -Params: (s)" - -%feature("docstring") gc_job_manager_impl::set_ea_args_maxsize " - -Params: (maxsize)" - -%feature("docstring") gc_job_manager_impl::notify_clients_jobs_are_done " - -Params: (spe_num, completion_info_idx)" - -%feature("docstring") gc_job_manager_impl::send_all_spes " - -Params: (msg)" - -%feature("docstring") gc_job_manager_impl::send_spe " - -Params: (spe, msg)" - -%feature("docstring") gc_job_manager_impl::print_event " - -Params: (evt)" - -%feature("docstring") gc_job_manager_impl::handle_event " - -Params: (evt)" - -%feature("docstring") gc_job_manager_impl::incr_njobs_active " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::decr_njobs_active " - -Params: (n)" - -%feature("docstring") gc_job_manager_impl::tell_spes_to_check_queue " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::poll_for_job_completion " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::bv_zero " - -Params: (bv)" - -%feature("docstring") gc_job_manager_impl::bv_clr " - -Params: (bv, bitno)" - -%feature("docstring") gc_job_manager_impl::bv_set " - -Params: (bv, bitno)" - -%feature("docstring") gc_job_manager_impl::bv_isset " - -Params: (bv, bitno)" - -%feature("docstring") gc_job_manager_impl::bv_isclr " - -Params: (bv, bitno)" - -%feature("docstring") gc_job_manager_impl::setup_logfiles " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::sync_logfiles " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::unmap_logfiles " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::gc_job_manager_impl " - -Params: (options)" - -%feature("docstring") gc_job_manager_impl::event_handler_loop " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::job_completer_loop " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::~gc_job_manager_impl " - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::shutdown "Stop accepting new jobs. Wait for existing jobs to complete. Return all managed SPE's to the system. - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::nspes "Return number of SPE's currently allocated to job manager. - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::alloc_job_desc "Return a pointer to a properly aligned job descriptor, or zero if none are available. - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::free_job_desc " - -Params: (jd)" - -%feature("docstring") gc_job_manager_impl::submit_job "Submit a job for asynchronous processing on an SPE. - -The caller must not read or write the job description or any of the memory associated with any indirect arguments until after calling wait_job. - -Params: (jd)" - -%feature("docstring") gc_job_manager_impl::wait_job "Wait for job to complete. - -A thread may only wait for jobs which it submitted. - -Params: (jd)" - -%feature("docstring") gc_job_manager_impl::wait_jobs "wait for 1 or more jobs to complete. - -A thread may only wait for jobs which it submitted. - -Params: (njobs, jd, done, mode)" - -%feature("docstring") gc_job_manager_impl::ea_args_maxsize "Return the maximum number of bytes of EA arguments that may be copied to or from the SPE in a single job. The limit applies independently to the \"get\" and \"put\" args. - -Params: (NONE)" - -%feature("docstring") gc_job_manager_impl::lookup_proc "Return gc_proc_id_t associated with spu procedure if one exists, otherwise throws gc_unknown_proc. - -Params: (proc_name)" - -%feature("docstring") gc_job_manager_impl::proc_names "Return a vector of all known spu procedure names. - -Params: (NONE)" - - - -%feature("docstring") gc_unknown_proc::gc_unknown_proc " - -Params: (msg)" - -%feature("docstring") gr_adaptive_fir_ccf "Adaptive FIR filter with gr_complex input, gr_complex output and float taps." - -%feature("docstring") gr_adaptive_fir_ccf::error " - -Params: (out)" - -%feature("docstring") gr_adaptive_fir_ccf::update_tap " - -Params: (tap, in)" - -%feature("docstring") gr_adaptive_fir_ccf::gr_adaptive_fir_ccf " - -Params: (name, decimation, taps)" - -%feature("docstring") gr_adaptive_fir_ccf::set_taps " - -Params: (taps)" - -%feature("docstring") gr_adaptive_fir_ccf::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - - - -%feature("docstring") gr_base_error_handler::gr_base_error_handler " - -Params: (NONE)" - -%feature("docstring") gr_base_error_handler::nwarnings " - -Params: (NONE)" - -%feature("docstring") gr_base_error_handler::nerrors " - -Params: (NONE)" - -%feature("docstring") gr_base_error_handler::reset_counts " - -Params: (NONE)" - -%feature("docstring") gr_base_error_handler::count_error " - -Params: (s)" - -%feature("docstring") gr_basic_block "The abstract base class for all signal processing blocks. - -Basic blocks are the bare abstraction of an entity that has a name, a set of inputs and outputs, and a message queue. These are never instantiated directly; rather, this is the abstract parent class of both gr_hier_block, which is a recursive container, and gr_block, which implements actual signal processing functions." - -%feature("docstring") gr_basic_block::dispatch_msg " - -Params: (msg)" - -%feature("docstring") gr_basic_block::gr_basic_block "Protected constructor prevents instantiation by non-derived classes. - -Params: (name, input_signature, output_signature)" - -%feature("docstring") gr_basic_block::set_input_signature "may only be called during constructor - -Params: (iosig)" - -%feature("docstring") gr_basic_block::set_output_signature "may only be called during constructor - -Params: (iosig)" - -%feature("docstring") gr_basic_block::set_color "Allow the flowgraph to set for sorting and partitioning. - -Params: (color)" - -%feature("docstring") gr_basic_block::color " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::~gr_basic_block " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::unique_id " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::name " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::input_signature " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::output_signature " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::to_basic_block " - -Params: (NONE)" - -%feature("docstring") gr_basic_block::check_topology "Confirm that ninputs and noutputs is an acceptable combination. - -This function is called by the runtime system whenever the topology changes. Most classes do not need to override this. This check is in addition to the constraints specified by the input and output gr_io_signatures. - -Params: (ninputs, noutputs)" - -%feature("docstring") gr_basic_block::set_msg_handler "Set the callback that is fired when messages are available. - -can be any kind of function pointer or function object that has the signature: - -(You may want to use boost::bind to massage your callable into the correct form. See gr_nop.{h,cc} for an example that sets up a class method as the callback.) - -Blocks that desire to handle messages must call this method in their constructors to register the handler that will be invoked when messages are available. - -If the block inherits from gr_block, the runtime system will ensure that msg_handler is called in a thread-safe manner, such that work and msg_handler will never be called concurrently. This allows msg_handler to update state variables without having to worry about thread-safety issues with work, general_work or another invocation of msg_handler. - -If the block inherits from gr_hier_block2, the runtime system will ensure that no reentrant calls are made to msg_handler. - -Params: (msg_handler)" - -%feature("docstring") gr_block "The abstract base class for all 'terminal' processing blocks. - -A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions. This is the base class for all such leaf nodes. - -Blocks have a set of input streams and output streams. The input_signature and output_signature define the number of input streams and output streams respectively, and the type of the data items in each stream. - -Although blocks may consume data on each input stream at a different rate, all outputs streams must produce data at the same rate. That rate may be different from any of the input rates. - -User derived blocks override two methods, forecast and general_work, to implement their signal processing behavior. forecast is called by the system scheduler to determine how many items are required on each input stream in order to produce a given number of output items. - -general_work is called to perform the signal processing in the block. It reads the input items and writes the output items." - -%feature("docstring") gr_block::~gr_block " - -Params: (NONE)" - -%feature("docstring") gr_block::history "Assume block computes y_i = f(x_i, x_i-1, x_i-2, x_i-3...) History is the number of x_i's that are examined to produce one y_i. This comes in handy for FIR filters, where we use history to ensure that our input contains the appropriate \"history\" for the filter. History should be equal to the number of filter taps. - -Params: (NONE)" - -%feature("docstring") gr_block::set_history " - -Params: (history)" - -%feature("docstring") gr_block::fixed_rate "Return true if this block has a fixed input to output rate. - -If true, then fixed_rate_in_to_out and fixed_rate_out_to_in may be called. - -Params: (NONE)" - -%feature("docstring") gr_block::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_block::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_block::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") gr_block::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") gr_block::set_output_multiple "Constrain the noutput_items argument passed to forecast and general_work. - -set_output_multiple causes the scheduler to ensure that the noutput_items argument passed to forecast and general_work will be an integer multiple of - -Params: (multiple)" - -%feature("docstring") gr_block::output_multiple " - -Params: (NONE)" - -%feature("docstring") gr_block::consume "Tell the scheduler of input stream were consumed. - -Params: (which_input, how_many_items)" - -%feature("docstring") gr_block::consume_each "Tell the scheduler were consumed on each input stream. - -Params: (how_many_items)" - -%feature("docstring") gr_block::produce "Tell the scheduler were produced on output stream . - -If the block's general_work method calls produce, must return WORK_CALLED_PRODUCE. - -Params: (which_output, how_many_items)" - -%feature("docstring") gr_block::set_relative_rate "Set the approximate output rate / input rate. - -Provide a hint to the buffer allocator and scheduler. The default relative_rate is 1.0 - -decimators have relative_rates < 1.0 interpolators have relative_rates > 1.0 - -Params: (relative_rate)" - -%feature("docstring") gr_block::relative_rate "return the approximate output rate / input rate - -Params: (NONE)" - -%feature("docstring") gr_block::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (ninput)" - -%feature("docstring") gr_block::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (noutput)" - -%feature("docstring") gr_block::nitems_read "Return the number of items read on input stream which_input. - -Params: (which_input)" - -%feature("docstring") gr_block::nitems_written "Return the number of items written on output stream which_output. - -Params: (which_output)" - -%feature("docstring") gr_block::tag_propagation_policy "Asks for the policy used by the scheduler to moved tags downstream. - -Params: (NONE)" - -%feature("docstring") gr_block::set_tag_propagation_policy "Set the policy by the scheduler to determine how tags are moved downstream. - -Params: (p)" - -%feature("docstring") gr_block::detail " - -Params: (NONE)" - -%feature("docstring") gr_block::set_detail " - -Params: (detail)" - -%feature("docstring") gr_block::gr_block " - -Params: (name, input_signature, output_signature)" - -%feature("docstring") gr_block::set_fixed_rate " - -Params: (fixed_rate)" - -%feature("docstring") gr_block::add_item_tag "Adds a new tag onto the given output buffer. - -Params: (which_output, abs_offset, key, value, srcid)" - -%feature("docstring") gr_block::get_tags_in_range "Given a [start,end), returns a vector of all tags in the range. - -Range of counts is from start to end-1. - -Tags are tuples of: (item count, source id, key, value) - -Params: (v, which_input, abs_start, abs_end)" - -%feature("docstring") gr_block_executor "Manage the execution of a single block." - -%feature("docstring") gr_block_executor::gr_block_executor " - -Params: (block)" - -%feature("docstring") gr_block_executor::~gr_block_executor " - -Params: (NONE)" - -%feature("docstring") gr_block_executor::run_one_iteration " - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader "How we keep track of the readers of a gr_buffer." - -%feature("docstring") gr_buffer_reader::~gr_buffer_reader " - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::items_available "Return number of items available for reading. - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::buffer "Return buffer this reader reads from. - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::max_possible_items_available "Return maximum number of items that could ever be available for reading. This is used as a sanity check in the scheduler to avoid looping forever. - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::read_pointer "return pointer to read buffer. - -The return value points to items_available() number of items - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::update_read_pointer " - -Params: (nitems)" - -%feature("docstring") gr_buffer_reader::set_done " - -Params: (done)" - -%feature("docstring") gr_buffer_reader::done " - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::mutex " - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::nitems_read " - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::link "Return the block that reads via this reader. - -Params: (NONE)" - -%feature("docstring") gr_buffer_reader::get_tags_in_range "Given a [start,end), returns a vector all tags in the range. - -Get a vector of tags in given range. Range of counts is from start to end-1. - -Tags are tuples of: (item count, source id, key, value) - -Params: (v, abs_start, abs_end)" - -%feature("docstring") gr_buffer_reader::gr_buffer_reader "constructor is private. Use gr_buffer::add_reader to create instances - -Params: (buffer, read_index, link)" - - - -%feature("docstring") gr_circular_file::gr_circular_file " - -Params: (filename, writable, size)" - -%feature("docstring") gr_circular_file::~gr_circular_file " - -Params: (NONE)" - -%feature("docstring") gr_circular_file::write " - -Params: (data, nbytes)" - -%feature("docstring") gr_circular_file::read " - -Params: (data, nbytes)" - -%feature("docstring") gr_circular_file::reset_read_pointer " - -Params: (NONE)" - - - -%feature("docstring") gr_constellation_sector::gr_constellation_sector " - -Params: (constellation, n_sectors)" - -%feature("docstring") gr_constellation_sector::decision_maker "Returns the constellation point that matches best. Also calculates the phase error. - -Params: (sample)" - -%feature("docstring") gr_constellation_sector::get_sector " - -Params: (sample)" - -%feature("docstring") gr_constellation_sector::calc_sector_value " - -Params: (sector)" - -%feature("docstring") gr_constellation_sector::find_sector_values " - -Params: (NONE)" - -%feature("docstring") gr_edge "Class representing a connection between to graph endpoints." - -%feature("docstring") gr_edge::gr_edge " - -Params: (NONE)" - -%feature("docstring") gr_edge::~gr_edge " - -Params: (NONE)" - -%feature("docstring") gr_edge::src " - -Params: (NONE)" - -%feature("docstring") gr_edge::dst " - -Params: (NONE)" - -%feature("docstring") gr_endpoint "Class representing a specific input or output graph endpoint." - -%feature("docstring") gr_endpoint::gr_endpoint " - -Params: (NONE)" - -%feature("docstring") gr_endpoint::block " - -Params: (NONE)" - -%feature("docstring") gr_endpoint::port " - -Params: (NONE)" - -%feature("docstring") gr_endpoint::operator== " - -Params: (other)" - -%feature("docstring") gr_error_handler "abstract error handler" - -%feature("docstring") gr_error_handler::gr_error_handler " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::~gr_error_handler " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::message " - -Params: (format, )" - -%feature("docstring") gr_error_handler::warning " - -Params: (format, )" - -%feature("docstring") gr_error_handler::error " - -Params: (format, )" - -%feature("docstring") gr_error_handler::fatal " - -Params: (format, )" - -%feature("docstring") gr_error_handler::nwarnings " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::nerrors " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::reset_counts " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::verror " - -Params: (s, format, )" - -%feature("docstring") gr_error_handler::verror_text " - -Params: (s, text)" - -%feature("docstring") gr_error_handler::default_handler " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::silent_handler " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::has_default_handler " - -Params: (NONE)" - -%feature("docstring") gr_error_handler::set_default_handler " - -Params: (errh)" - -%feature("docstring") gr_error_handler::count_error " - -Params: (s)" - -%feature("docstring") gr_error_handler::handle_text " - -Params: (s, str)" - -%feature("docstring") gr_error_handler::make_text " - -Params: (s, format, )" - -%feature("docstring") gr_feval "base class for evaluating a function: void -> void - -This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. - -Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." - -%feature("docstring") gr_feval::eval "override this to define the function - -Params: (NONE)" - -%feature("docstring") gr_feval::gr_feval " - -Params: (NONE)" - -%feature("docstring") gr_feval::~gr_feval " - -Params: (NONE)" - -%feature("docstring") gr_feval::calleval " - -Params: (NONE)" - -%feature("docstring") gr_feval_cc "base class for evaluating a function: complex -> complex - -This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. - -Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." - -%feature("docstring") gr_feval_cc::eval "override this to define the function - -Params: (x)" - -%feature("docstring") gr_feval_cc::gr_feval_cc " - -Params: (NONE)" - -%feature("docstring") gr_feval_cc::~gr_feval_cc " - -Params: (NONE)" - -%feature("docstring") gr_feval_cc::calleval " - -Params: (x)" - -%feature("docstring") gr_feval_dd "base class for evaluating a function: double -> double - -This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. - -Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." - -%feature("docstring") gr_feval_dd::eval "override this to define the function - -Params: (x)" - -%feature("docstring") gr_feval_dd::gr_feval_dd " - -Params: (NONE)" - -%feature("docstring") gr_feval_dd::~gr_feval_dd " - -Params: (NONE)" - -%feature("docstring") gr_feval_dd::calleval " - -Params: (x)" - -%feature("docstring") gr_feval_ll "base class for evaluating a function: long -> long - -This class is designed to be subclassed in Python or C++ and is callable from both places. It uses SWIG's \"director\" feature to implement the magic. It's slow. Don't use it in a performance critical path. - -Override eval to define the behavior. Use calleval to invoke eval (this kludge is required to allow a python specific \"shim\" to be inserted." - -%feature("docstring") gr_feval_ll::eval "override this to define the function - -Params: (x)" - -%feature("docstring") gr_feval_ll::gr_feval_ll " - -Params: (NONE)" - -%feature("docstring") gr_feval_ll::~gr_feval_ll " - -Params: (NONE)" - -%feature("docstring") gr_feval_ll::calleval " - -Params: (x)" - - - -%feature("docstring") gr_file_error_handler::gr_file_error_handler " - -Params: (file)" - -%feature("docstring") gr_file_error_handler::~gr_file_error_handler " - -Params: (NONE)" - -%feature("docstring") gr_file_error_handler::handle_text " - -Params: (s, str)" - -%feature("docstring") gr_file_sink_base "Common base class for file sinks." - -%feature("docstring") gr_file_sink_base::gr_file_sink_base " - -Params: (filename, is_binary)" - -%feature("docstring") gr_file_sink_base::~gr_file_sink_base " - -Params: (NONE)" - -%feature("docstring") gr_file_sink_base::open "Open filename and begin output to it. - -Params: (filename)" - -%feature("docstring") gr_file_sink_base::close "Close current output file. - -Closes current output file and ignores any output until open is called to connect to another file. - -Params: (NONE)" - -%feature("docstring") gr_file_sink_base::do_update "if we've had an update, do it now. - -Params: (NONE)" - -%feature("docstring") gr_file_sink_base::set_unbuffered "turn on unbuffered writes for slower outputs - -Params: (unbuffered)" - -%feature("docstring") gr_fir_ccc "Abstract class for FIR with gr_complex input, gr_complex output and gr_complex taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_ccc::gr_fir_ccc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc::~gr_fir_ccc " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_ccc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_ccc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_ccc::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc_3dnow "3DNow! version of gr_fir_ccc" - -%feature("docstring") gr_fir_ccc_3dnow::gr_fir_ccc_3dnow " - -Params: (NONE)" - - - -%feature("docstring") gr_fir_ccc_3dnowext::gr_fir_ccc_3dnowext " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc_generic "Concrete class for generic implementation of FIR with gr_complex input, gr_complex output and gr_complex taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_ccc_generic::gr_fir_ccc_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccc_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_ccc_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_ccc_simd "common base class for SIMD versions of gr_fir_ccc - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_ccc_simd::gr_fir_ccc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc_simd::~gr_fir_ccc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccc_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_ccc_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccc_sse "SSE version of gr_fir_ccc." - -%feature("docstring") gr_fir_ccc_sse::gr_fir_ccc_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf "Abstract class for FIR with gr_complex input, gr_complex output and float taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_ccf::gr_fir_ccf "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf::~gr_fir_ccf " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccf::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_ccf::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_ccf::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_ccf::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_3dnow "3DNow! version of gr_fir_ccf" - -%feature("docstring") gr_fir_ccf_3dnow::gr_fir_ccf_3dnow " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_armv7_a "armv7_a using NEON coprocessor version of gr_fir_ccf" - -%feature("docstring") gr_fir_ccf_armv7_a::gr_fir_ccf_armv7_a " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_armv7_a::~gr_fir_ccf_armv7_a " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_armv7_a::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_ccf_armv7_a::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccf_generic "Concrete class for generic implementation of FIR with gr_complex input, gr_complex output and float taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_ccf_generic::gr_fir_ccf_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccf_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_ccf_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_ccf_simd "common base class for SIMD versions of gr_fir_ccf - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_ccf_simd::gr_fir_ccf_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_simd::~gr_fir_ccf_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_ccf_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_ccf_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_ccf_sse "SSE version of gr_fir_ccf." - -%feature("docstring") gr_fir_ccf_sse::gr_fir_ccf_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc "Abstract class for FIR with float input, gr_complex output and gr_complex taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fcc::gr_fir_fcc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc::~gr_fir_fcc " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fcc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fcc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fcc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fcc::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc_3dnow "3DNow! version of gr_fir_fcc" - -%feature("docstring") gr_fir_fcc_3dnow::gr_fir_fcc_3dnow " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc_generic "Concrete class for generic implementation of FIR with float input, gr_complex output and gr_complex taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fcc_generic::gr_fir_fcc_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fcc_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fcc_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fcc_simd "common base class for SIMD versions of gr_fir_fcc - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_fcc_simd::gr_fir_fcc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc_simd::~gr_fir_fcc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fcc_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fcc_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fcc_sse "SSE version of gr_fir_fcc." - -%feature("docstring") gr_fir_fcc_sse::gr_fir_fcc_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff "Abstract class for FIR with float input, float output and float taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fff::gr_fir_fff "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_fff::~gr_fir_fff " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fff::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fff::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fff::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fff::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_3dnow "3DNow! version of gr_fir_fff" - -%feature("docstring") gr_fir_fff_3dnow::gr_fir_fff_3dnow " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_altivec "altivec version of gr_fir_fff" - -%feature("docstring") gr_fir_fff_altivec::gr_fir_fff_altivec " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_altivec::~gr_fir_fff_altivec " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_altivec::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fff_altivec::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fff_armv7_a "armv7_a using NEON coprocessor version of gr_fir_fff" - -%feature("docstring") gr_fir_fff_armv7_a::gr_fir_fff_armv7_a " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_armv7_a::~gr_fir_fff_armv7_a " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_armv7_a::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fff_armv7_a::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fff_generic "Concrete class for generic implementation of FIR with float input, float output and float taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fff_generic::gr_fir_fff_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fff_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fff_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fff_simd "common base class for SIMD versions of gr_fir_fff - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_fff_simd::gr_fir_fff_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_simd::~gr_fir_fff_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fff_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fff_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fff_sse "SSE version of gr_fir_fff." - -%feature("docstring") gr_fir_fff_sse::gr_fir_fff_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf "Abstract class for FIR with float input, short output and float taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fsf::gr_fir_fsf "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf::~gr_fir_fsf " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fsf::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fsf::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fsf::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fsf::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf_3dnow "3DNow! version of gr_fir_fsf" - -%feature("docstring") gr_fir_fsf_3dnow::gr_fir_fsf_3dnow " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf_generic "Concrete class for generic implementation of FIR with float input, short output and float taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_fsf_generic::gr_fir_fsf_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fsf_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_fsf_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_fsf_simd "common base class for SIMD versions of gr_fir_fsf - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_fsf_simd::gr_fir_fsf_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf_simd::~gr_fir_fsf_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_fsf_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_fsf_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_fsf_sse "SSE version of gr_fir_fsf." - -%feature("docstring") gr_fir_fsf_sse::gr_fir_fsf_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc "Abstract class for FIR with short input, gr_complex output and gr_complex taps - -This is the abstract class for a Finite Impulse Response filter. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_scc::gr_fir_scc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (NONE)" - -%feature("docstring") gr_fir_scc::~gr_fir_scc " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_scc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_scc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_scc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_scc::ntaps " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc::get_taps " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_3dnow "3DNow! version of gr_fir_scc" - -%feature("docstring") gr_fir_scc_3dnow::gr_fir_scc_3dnow " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_3dnowext "3DNow! Ext version of gr_fir_scc" - -%feature("docstring") gr_fir_scc_3dnowext::gr_fir_scc_3dnowext " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_generic "Concrete class for generic implementation of FIR with short input, gr_complex output and gr_complex taps. - -The trailing suffix has the form _IOT where I codes the input type, O codes the output type, and T codes the tap type. I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)" - -%feature("docstring") gr_fir_scc_generic::gr_fir_scc_generic " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_generic::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_scc_generic::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gr_fir_scc_generic::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gr_fir_scc_simd "common base class for SIMD versions of gr_fir_scc - -This base class handles alignment issues common to SSE and 3DNOW subclasses." - -%feature("docstring") gr_fir_scc_simd::gr_fir_scc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_simd::~gr_fir_scc_simd " - -Params: (NONE)" - -%feature("docstring") gr_fir_scc_simd::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gr_fir_scc_simd::filter "compute a single output value. - -must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -Params: (input)" - -%feature("docstring") gr_fir_scc_sse "SSE version of gr_fir_scc." - -%feature("docstring") gr_fir_scc_sse::gr_fir_scc_sse " - -Params: (NONE)" - -%feature("docstring") gr_fir_sysconfig "abstract base class for configuring the automatic selection of the fastest gr_fir for your platform. - -This is used internally by gr_fir_util." - -%feature("docstring") gr_fir_sysconfig::~gr_fir_sysconfig " - -Params: (NONE)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_ccf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_fcc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_ccc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_fff " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_scc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::create_gr_fir_fsf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_ccf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_fcc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_ccc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_fff_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_scc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig::get_gr_fir_fsf_info " - -Params: (info)" - - - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_ccf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fcc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fff " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_fsf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_scc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::create_gr_fir_ccc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_ccf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fcc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fff_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_fsf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_scc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_armv7_a::get_gr_fir_ccc_info " - -Params: (info)" - - - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_ccf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fcc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_ccc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fff " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_scc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::create_gr_fir_fsf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_ccf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fcc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_ccc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fff_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_scc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_generic::get_gr_fir_fsf_info " - -Params: (info)" - - - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_ccf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fcc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fff " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_fsf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_scc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::create_gr_fir_ccc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_ccf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fcc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fff_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_fsf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_scc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_powerpc::get_gr_fir_ccc_info " - -Params: (info)" - - - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_ccf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fcc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fff " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_fsf " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_scc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::create_gr_fir_ccc " - -Params: (taps)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_ccf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fcc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fff_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_fsf_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_scc_info " - -Params: (info)" - -%feature("docstring") gr_fir_sysconfig_x86::get_gr_fir_ccc_info " - -Params: (info)" - -%feature("docstring") gr_firdes "Finite Impulse Response (FIR) filter design functions." - -%feature("docstring") gr_firdes::low_pass "use \"window method\" to design a low-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, cutoff_freq, transition_width, window, beta)" - -%feature("docstring") gr_firdes::low_pass_2 "use \"window method\" to design a low-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). required stopband attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuatin --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, cutoff_freq, transition_width, attenuation_dB, window, beta)" - -%feature("docstring") gr_firdes::high_pass "use \"window method\" to design a high-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, cutoff_freq, transition_width, window, beta)" - -%feature("docstring") gr_firdes::high_pass_2 "use \"window method\" to design a high-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, cutoff_freq, transition_width, attenuation_dB, window, beta)" - -%feature("docstring") gr_firdes::band_pass "use \"window method\" to design a band-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" - -%feature("docstring") gr_firdes::band_pass_2 "use \"window method\" to design a band-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" - -%feature("docstring") gr_firdes::complex_band_pass "use \"window method\" to design a complex band-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" - -%feature("docstring") gr_firdes::complex_band_pass_2 "use \"window method\" to design a complex band-pass FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" - -%feature("docstring") gr_firdes::band_reject "use \"window method\" to design a band-reject FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). The normalized width of the transition band is what sets the number of taps required. Narrow --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, window, beta)" - -%feature("docstring") gr_firdes::band_reject_2 "use \"window method\" to design a band-reject FIR filter - -overall gain of filter (typically 1.0) sampling freq (Hz) center of transition band (Hz) center of transition band (Hz) width of transition band (Hz). out of band attenuation The normalized width of the transition band and the required stop band attenuation is what sets the number of taps required. Narrow --> more taps More attenuation --> more taps What kind of window to use. Determines maximum attenuation and passband ripple. parameter for Kaiser window - -Params: (gain, sampling_freq, low_cutoff_freq, high_cutoff_freq, transition_width, attenuation_dB, window, beta)" - -%feature("docstring") gr_firdes::hilbert "design a Hilbert Transform Filter - -Number of taps, must be odd What kind of window to use Only used for Kaiser - -Params: (ntaps, windowtype, beta)" - -%feature("docstring") gr_firdes::root_raised_cosine "design a Root Cosine FIR Filter (do we need a window?) - -overall gain of filter (typically 1.0) sampling freq (Hz) rate: symbol rate, must be a factor of sample rate excess bandwidth factor number of taps - -Params: (gain, sampling_freq, symbol_rate, alpha, ntaps)" - -%feature("docstring") gr_firdes::gaussian "design a Gaussian filter - -overall gain of filter (typically 1.0) per bit: symbol rate, must be a factor of sample rate number of taps - -Params: (gain, spb, bt, ntaps)" - -%feature("docstring") gr_firdes::window " - -Params: (type, ntaps, beta)" - -%feature("docstring") gr_firdes::bessi0 " - -Params: (x)" - -%feature("docstring") gr_firdes::sanity_check_1f " - -Params: (sampling_freq, f1, transition_width)" - -%feature("docstring") gr_firdes::sanity_check_2f " - -Params: (sampling_freq, f1, f2, transition_width)" - -%feature("docstring") gr_firdes::sanity_check_2f_c " - -Params: (sampling_freq, f1, f2, transition_width)" - -%feature("docstring") gr_firdes::compute_ntaps " - -Params: (sampling_freq, transition_width, window_type, beta)" - -%feature("docstring") gr_firdes::compute_ntaps_windes " - -Params: (sampling_freq, transition_width, attenuation_dB)" - -%feature("docstring") gr_fxpt "fixed point sine and cosine and friends. - -fixed pt radians --------- -------- -2**31 -pi 0 0 2**31-1 pi - epsilon" - -%feature("docstring") gr_fxpt::float_to_fixed " - -Params: (x)" - -%feature("docstring") gr_fxpt::fixed_to_float " - -Params: (x)" - -%feature("docstring") gr_fxpt::sin "Given a fixed point angle x, return float sine (x). - -Params: (x)" - -%feature("docstring") gr_fxpt::cos " - -Params: (x)" - -%feature("docstring") gr_fxpt_nco "Numerically Controlled Oscillator (NCO)." - -%feature("docstring") gr_fxpt_nco::gr_fxpt_nco " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_nco::~gr_fxpt_nco " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_nco::set_phase " - -Params: (angle)" - -%feature("docstring") gr_fxpt_nco::adjust_phase " - -Params: (delta_phase)" - -%feature("docstring") gr_fxpt_nco::set_freq " - -Params: (angle_rate)" - -%feature("docstring") gr_fxpt_nco::adjust_freq " - -Params: (delta_angle_rate)" - -%feature("docstring") gr_fxpt_nco::step " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_nco::get_phase " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_nco::get_freq " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_nco::sincos " - -Params: (sinx, cosx)" - -%feature("docstring") gr_fxpt_nco::sin " - -Params: (output, noutput_items, ampl)" - -%feature("docstring") gr_fxpt_nco::cos " - -Params: (output, noutput_items, ampl)" - -%feature("docstring") gr_fxpt_vco "Voltage Controlled Oscillator (VCO)." - -%feature("docstring") gr_fxpt_vco::gr_fxpt_vco " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_vco::~gr_fxpt_vco " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_vco::set_phase " - -Params: (angle)" - -%feature("docstring") gr_fxpt_vco::adjust_phase " - -Params: (delta_phase)" - -%feature("docstring") gr_fxpt_vco::get_phase " - -Params: (NONE)" - -%feature("docstring") gr_fxpt_vco::sincos " - -Params: (sinx, cosx)" - -%feature("docstring") gr_fxpt_vco::cos " - -Params: (output, input, noutput_items, k, ampl)" - -%feature("docstring") gr_fxpt_vco::sin " - -Params: (NONE)" - - - -%feature("docstring") gr_hier_block2_detail::gr_hier_block2_detail " - -Params: (owner)" - -%feature("docstring") gr_hier_block2_detail::~gr_hier_block2_detail " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2_detail::connect " - -Params: (block)" - -%feature("docstring") gr_hier_block2_detail::disconnect " - -Params: (block)" - -%feature("docstring") gr_hier_block2_detail::disconnect_all " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2_detail::lock " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2_detail::unlock " - -Params: (NONE)" - -%feature("docstring") gr_hier_block2_detail::flatten_aux " - -Params: (sfg)" - -%feature("docstring") gr_hier_block2_detail::connect_input " - -Params: (my_port, port, block)" - -%feature("docstring") gr_hier_block2_detail::connect_output " - -Params: (my_port, port, block)" - -%feature("docstring") gr_hier_block2_detail::disconnect_input " - -Params: (my_port, port, block)" - -%feature("docstring") gr_hier_block2_detail::disconnect_output " - -Params: (my_port, port, block)" - -%feature("docstring") gr_hier_block2_detail::resolve_port " - -Params: (port, is_input)" - -%feature("docstring") gr_hier_block2_detail::resolve_endpoint " - -Params: (endp, is_input)" - -%feature("docstring") gr_io_signature "i/o signature for input and output ports. - -misc" - -%feature("docstring") gr_io_signature::gr_io_signature " - -Params: (min_streams, max_streams, sizeof_stream_items)" - -%feature("docstring") gr_io_signature::~gr_io_signature " - -Params: (NONE)" - -%feature("docstring") gr_io_signature::min_streams " - -Params: (NONE)" - -%feature("docstring") gr_io_signature::max_streams " - -Params: (NONE)" - -%feature("docstring") gr_io_signature::sizeof_stream_item " - -Params: (index)" - -%feature("docstring") gr_io_signature::sizeof_stream_items " - -Params: (NONE)" - -%feature("docstring") gr_local_sighandler "Get and set signal handler. - -Constructor installs new handler, destructor reinstalls original value." - -%feature("docstring") gr_local_sighandler::gr_local_sighandler " - -Params: (signum, new_handler)" - -%feature("docstring") gr_local_sighandler::~gr_local_sighandler " - -Params: (NONE)" - -%feature("docstring") gr_local_sighandler::throw_signal " - -Params: (signum)" - -%feature("docstring") gr_msg_accepter "Accepts messages and inserts them into a message queue, then notifies subclass gr_basic_block there is a message pending." - -%feature("docstring") gr_msg_accepter::gr_msg_accepter " - -Params: (NONE)" - -%feature("docstring") gr_msg_accepter::~gr_msg_accepter " - -Params: (NONE)" - -%feature("docstring") gr_msg_accepter::post "send to - -Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. - -Params: (msg)" - -%feature("docstring") gr_msg_handler "abstract class of message handlers" - -%feature("docstring") gr_msg_handler::~gr_msg_handler " - -Params: (NONE)" - -%feature("docstring") gr_msg_handler::handle "handle - -Params: (msg)" - -%feature("docstring") gr_msg_queue "thread-safe message queue" - -%feature("docstring") gr_msg_queue::gr_msg_queue " - -Params: (limit)" - -%feature("docstring") gr_msg_queue::~gr_msg_queue " - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::handle "Generic msg_handler method: insert the message. - -Params: (msg)" - -%feature("docstring") gr_msg_queue::insert_tail "Insert message at tail of queue. - -Block if queue if full. - -Params: (msg)" - -%feature("docstring") gr_msg_queue::delete_head "Delete message from head of queue and return it. Block if no message is available. - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::delete_head_nowait "If there's a message in the q, delete it and return it. If no message is available, return 0. - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::flush "Delete all messages from the queue. - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::empty_p "is the queue empty? - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::full_p "is the queue full? - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::count "return number of messages in queue - -Params: (NONE)" - -%feature("docstring") gr_msg_queue::limit "return limit on number of message in queue. 0 -> unbounded - -Params: (NONE)" - -%feature("docstring") gr_nco "base class template for Numerically Controlled Oscillator (NCO)" - -%feature("docstring") gr_nco::gr_nco " - -Params: (NONE)" - -%feature("docstring") gr_nco::~gr_nco " - -Params: (NONE)" - -%feature("docstring") gr_nco::set_phase " - -Params: (angle)" - -%feature("docstring") gr_nco::adjust_phase " - -Params: (delta_phase)" - -%feature("docstring") gr_nco::set_freq " - -Params: (angle_rate)" - -%feature("docstring") gr_nco::adjust_freq " - -Params: (delta_angle_rate)" - -%feature("docstring") gr_nco::step " - -Params: (NONE)" - -%feature("docstring") gr_nco::get_phase " - -Params: (NONE)" - -%feature("docstring") gr_nco::get_freq " - -Params: (NONE)" - -%feature("docstring") gr_nco::sincos " - -Params: (sinx, cosx)" - -%feature("docstring") gr_nco::cos " - -Params: (NONE)" - -%feature("docstring") gr_nco::sin " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts "guts of oscilloscope trigger and buffer module - -This module processes sets of samples provided the method. When appropriate given the updateRate, sampleRate and trigger conditions, process_sample will periodically write output records of captured data to output_fd. For each trigger event, nchannels records will be written. Each record consists of get_samples_per_output_record binary floats. The trigger instant occurs at the 1/2 way point in the buffer. Thus, output records consist of 50% pre-trigger data and 50% post-trigger data." - -%feature("docstring") gr_oscope_guts::gr_oscope_guts " - -Params: (rhs)" - -%feature("docstring") gr_oscope_guts::operator= " - -Params: (rhs)" - -%feature("docstring") gr_oscope_guts::trigger_changed " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::update_rate_or_decimation_changed " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::found_trigger " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::write_output_records " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::enter_hold_off " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::enter_look_for_trigger " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::enter_post_trigger " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::~gr_oscope_guts " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::process_sample "points to nchannels float values. These are the values for each channel at this sample time. - -Params: (channel_data)" - -%feature("docstring") gr_oscope_guts::set_update_rate " - -Params: (update_rate)" - -%feature("docstring") gr_oscope_guts::set_decimation_count " - -Params: (decimation_count)" - -%feature("docstring") gr_oscope_guts::set_trigger_channel " - -Params: (channel)" - -%feature("docstring") gr_oscope_guts::set_trigger_mode " - -Params: (mode)" - -%feature("docstring") gr_oscope_guts::set_trigger_slope " - -Params: (slope)" - -%feature("docstring") gr_oscope_guts::set_trigger_level " - -Params: (trigger_level)" - -%feature("docstring") gr_oscope_guts::set_trigger_level_auto " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::set_sample_rate " - -Params: (sample_rate)" - -%feature("docstring") gr_oscope_guts::set_num_channels " - -Params: (nchannels)" - -%feature("docstring") gr_oscope_guts::num_channels " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::sample_rate " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::update_rate " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_decimation_count " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_trigger_channel " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_trigger_mode " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_trigger_slope " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_trigger_level " - -Params: (NONE)" - -%feature("docstring") gr_oscope_guts::get_samples_per_output_record " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x "Abstract class for python oscilloscope module. - -Don't instantiate this. Use gr_oscope_sink_f or gr_oscope_sink_c instead." - -%feature("docstring") gr_oscope_sink_x::gr_oscope_sink_x " - -Params: (name, input_sig, sampling_rate)" - -%feature("docstring") gr_oscope_sink_x::~gr_oscope_sink_x " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::set_update_rate " - -Params: (update_rate)" - -%feature("docstring") gr_oscope_sink_x::set_decimation_count " - -Params: (decimation_count)" - -%feature("docstring") gr_oscope_sink_x::set_trigger_channel " - -Params: (channel)" - -%feature("docstring") gr_oscope_sink_x::set_trigger_mode " - -Params: (mode)" - -%feature("docstring") gr_oscope_sink_x::set_trigger_slope " - -Params: (slope)" - -%feature("docstring") gr_oscope_sink_x::set_trigger_level " - -Params: (trigger_level)" - -%feature("docstring") gr_oscope_sink_x::set_trigger_level_auto " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::set_sample_rate " - -Params: (sample_rate)" - -%feature("docstring") gr_oscope_sink_x::set_num_channels " - -Params: (nchannels)" - -%feature("docstring") gr_oscope_sink_x::num_channels " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::sample_rate " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::update_rate " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_decimation_count " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_trigger_channel " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_trigger_mode " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_trigger_slope " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_trigger_level " - -Params: (NONE)" - -%feature("docstring") gr_oscope_sink_x::get_samples_per_output_record " - -Params: (NONE)" - - - -%feature("docstring") gr_preferences::get " - -Params: (key)" - -%feature("docstring") gr_preferences::set " - -Params: (key, value)" - -%feature("docstring") gr_prefs "Base class for representing user preferences a la windows INI files. - -The real implementation is in Python, and is accessable from C++ via the magic of SWIG directors." - -%feature("docstring") gr_prefs::singleton " - -Params: (NONE)" - -%feature("docstring") gr_prefs::set_singleton " - -Params: (p)" - -%feature("docstring") gr_prefs::~gr_prefs " - -Params: (NONE)" - -%feature("docstring") gr_prefs::has_section "Does exist? - -Params: (section)" - -%feature("docstring") gr_prefs::has_option "Does exist? - -Params: (section, option)" - -%feature("docstring") gr_prefs::get_string "If option exists return associated value; else default_val. - -Params: (section, option, default_val)" - -%feature("docstring") gr_prefs::get_bool "If option exists and value can be converted to bool, return it; else default_val. - -Params: (section, option, default_val)" - -%feature("docstring") gr_prefs::get_long "If option exists and value can be converted to long, return it; else default_val. - -Params: (section, option, default_val)" - -%feature("docstring") gr_prefs::get_double "If option exists and value can be converted to double, return it; else default_val. - -Params: (section, option, default_val)" - -%feature("docstring") gr_random "pseudo random number generator" - -%feature("docstring") gr_random::gr_random " - -Params: (seed)" - -%feature("docstring") gr_random::reseed " - -Params: (seed)" - -%feature("docstring") gr_random::ran1 "uniform random deviate in the range [0.0, 1.0) - -Params: (NONE)" - -%feature("docstring") gr_random::gasdev "normally distributed deviate with zero mean and variance 1 - -Params: (NONE)" - -%feature("docstring") gr_random::laplacian " - -Params: (NONE)" - -%feature("docstring") gr_random::impulse " - -Params: (factor)" - -%feature("docstring") gr_random::rayleigh " - -Params: (NONE)" - -%feature("docstring") gr_random::rayleigh_complex " - -Params: (NONE)" - - - -%feature("docstring") gr_rotator::gr_rotator " - -Params: (NONE)" - -%feature("docstring") gr_rotator::set_phase " - -Params: (phase)" - -%feature("docstring") gr_rotator::set_phase_incr " - -Params: (incr)" - -%feature("docstring") gr_rotator::rotate " - -Params: (in)" - -%feature("docstring") gr_scheduler "Abstract scheduler that takes a flattened flow graph and runs it. - -Preconditions: details, buffers and buffer readers have been assigned." - -%feature("docstring") gr_scheduler::gr_scheduler "Construct a scheduler and begin evaluating the graph. - -The scheduler will continue running until all blocks until they report that they are done or the stop method is called. - -Params: (ffg)" - -%feature("docstring") gr_scheduler::~gr_scheduler " - -Params: (NONE)" - -%feature("docstring") gr_scheduler::stop "Tell the scheduler to stop executing. - -Params: (NONE)" - -%feature("docstring") gr_scheduler::wait "Block until the graph is done. - -Params: (NONE)" - -%feature("docstring") gr_scheduler_sts "Concrete scheduler that uses the single_threaded_scheduler." - -%feature("docstring") gr_scheduler_sts::gr_scheduler_sts "Construct a scheduler and begin evaluating the graph. - -The scheduler will continue running until all blocks until they report that they are done or the stop method is called. - -Params: (ffg)" - -%feature("docstring") gr_scheduler_sts::make " - -Params: (ffg)" - -%feature("docstring") gr_scheduler_sts::~gr_scheduler_sts " - -Params: (NONE)" - -%feature("docstring") gr_scheduler_sts::stop "Tell the scheduler to stop executing. - -Params: (NONE)" - -%feature("docstring") gr_scheduler_sts::wait "Block until the graph is done. - -Params: (NONE)" - -%feature("docstring") gr_scheduler_tpb "Concrete scheduler that uses a kernel thread-per-block." - -%feature("docstring") gr_scheduler_tpb::gr_scheduler_tpb "Construct a scheduler and begin evaluating the graph. - -The scheduler will continue running until all blocks until they report that they are done or the stop method is called. - -Params: (ffg)" - -%feature("docstring") gr_scheduler_tpb::make " - -Params: (ffg)" - -%feature("docstring") gr_scheduler_tpb::~gr_scheduler_tpb " - -Params: (NONE)" - -%feature("docstring") gr_scheduler_tpb::stop "Tell the scheduler to stop executing. - -Params: (NONE)" - -%feature("docstring") gr_scheduler_tpb::wait "Block until the graph is done. - -Params: (NONE)" - -%feature("docstring") gr_select_handler "Abstract handler for select based notification." - -%feature("docstring") gr_select_handler::gr_select_handler " - -Params: (file_descriptor)" - -%feature("docstring") gr_select_handler::~gr_select_handler " - -Params: (NONE)" - -%feature("docstring") gr_select_handler::fd " - -Params: (NONE)" - -%feature("docstring") gr_select_handler::file_descriptor " - -Params: (NONE)" - -%feature("docstring") gr_select_handler::handle_read "Called when file_descriptor is readable. - -Called when the dispatcher detects that file_descriptor can be read without blocking. - -Params: (NONE)" - -%feature("docstring") gr_select_handler::handle_write "Called when file_descriptor is writable. - -Called when dispatcher detects that file descriptor can be written without blocking. - -Params: (NONE)" - -%feature("docstring") gr_select_handler::readable "Called each time around the dispatcher loop to determine whether this handler's file descriptor should be added to the list on which read events can occur. The default method returns true, indicating that by default, all handlers are interested in read events. - -Params: (NONE)" - -%feature("docstring") gr_select_handler::writable "Called each time around the dispatcher loop to determine whether this handler's file descriptor should be added to the list on which write events can occur. The default method returns true, indicating that by default, all handlers are interested in write events. - -Params: (NONE)" - -%feature("docstring") gr_signal "Representation of signal." - -%feature("docstring") gr_signal::gr_signal " - -Params: (signum)" - -%feature("docstring") gr_signal::signal " - -Params: (NONE)" - -%feature("docstring") gr_signal::name " - -Params: (NONE)" - -%feature("docstring") gr_single_pole_iir "class template for single pole IIR filter" - -%feature("docstring") gr_single_pole_iir::gr_single_pole_iir "construct new single pole IIR with given alpha - -computes y(i) = (1-alpha) * y(i-1) + alpha * x(i) - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir::filter "compute a single output value. - -Params: (input)" - -%feature("docstring") gr_single_pole_iir::filterN "compute an array of N output values. must have n valid entries. - -Params: (output, input, n)" - -%feature("docstring") gr_single_pole_iir::set_taps "install as the current taps. - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir::reset "reset state to zero - -Params: (NONE)" - -%feature("docstring") gr_single_pole_iir::prev_output " - -Params: (NONE)" - - - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::gr_single_pole_iir "construct new single pole IIR with given alpha - -computes y(i) = (1-alpha) * y(i-1) + alpha * x(i) - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::filter "compute a single output value. - -Params: (input)" - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::filterN "compute an array of N output values. must have n valid entries. - -Params: (output, input, n)" - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::set_taps "install as the current taps. - -Params: (alpha)" - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::reset "reset state to zero - -Params: (NONE)" - -%feature("docstring") gr_single_pole_iir< gr_complex, i_type, double >::prev_output " - -Params: (NONE)" - - - -%feature("docstring") gr_squelch_base_cc::update_state " - -Params: (sample)" - -%feature("docstring") gr_squelch_base_cc::mute " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_cc::gr_squelch_base_cc " - -Params: (name, ramp, gate)" - -%feature("docstring") gr_squelch_base_cc::ramp " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_cc::set_ramp " - -Params: (ramp)" - -%feature("docstring") gr_squelch_base_cc::gate " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_cc::set_gate " - -Params: (gate)" - -%feature("docstring") gr_squelch_base_cc::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_cc::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_cc::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - - - -%feature("docstring") gr_squelch_base_ff::update_state " - -Params: (sample)" - -%feature("docstring") gr_squelch_base_ff::mute " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_ff::gr_squelch_base_ff " - -Params: (name, ramp, gate)" - -%feature("docstring") gr_squelch_base_ff::ramp " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_ff::set_ramp " - -Params: (ramp)" - -%feature("docstring") gr_squelch_base_ff::gate " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_ff::set_gate " - -Params: (gate)" - -%feature("docstring") gr_squelch_base_ff::unmuted " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_ff::squelch_range " - -Params: (NONE)" - -%feature("docstring") gr_squelch_base_ff::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_sync_block "synchronous 1:1 input to output with history - -Override work to provide the signal processing implementation." - -%feature("docstring") gr_sync_block::gr_sync_block " - -Params: (name, input_signature, output_signature)" - -%feature("docstring") gr_sync_block::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gr_sync_block::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_sync_block::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_sync_block::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (ninput)" - -%feature("docstring") gr_sync_block::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (noutput)" - -%feature("docstring") gr_sync_decimator "synchronous N:1 input to output with history - -Override work to provide the signal processing implementation." - -%feature("docstring") gr_sync_decimator::gr_sync_decimator " - -Params: (name, input_signature, output_signature, decimation)" - -%feature("docstring") gr_sync_decimator::decimation " - -Params: (NONE)" - -%feature("docstring") gr_sync_decimator::set_decimation " - -Params: (decimation)" - -%feature("docstring") gr_sync_decimator::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_sync_decimator::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_sync_decimator::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (ninput)" - -%feature("docstring") gr_sync_decimator::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (noutput)" - -%feature("docstring") gr_sync_interpolator "synchronous 1:N input to output with history - -Override work to provide the signal processing implementation." - -%feature("docstring") gr_sync_interpolator::gr_sync_interpolator " - -Params: (name, input_signature, output_signature, interpolation)" - -%feature("docstring") gr_sync_interpolator::interpolation " - -Params: (NONE)" - -%feature("docstring") gr_sync_interpolator::set_interpolation " - -Params: (interpolation)" - -%feature("docstring") gr_sync_interpolator::forecast "Estimate input requirements given output request. - -Given a request to product , estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close. - -Params: (noutput_items, ninput_items_required)" - -%feature("docstring") gr_sync_interpolator::general_work "compute output items from input items - -general_work must call consume or consume_each to indicate how many items were consumed on each input stream. - -Params: (noutput_items, ninput_items, input_items, output_items)" - -%feature("docstring") gr_sync_interpolator::fixed_rate_ninput_to_noutput "Given ninput samples, return number of output samples that will be produced. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (ninput)" - -%feature("docstring") gr_sync_interpolator::fixed_rate_noutput_to_ninput "Given noutput samples, return number of input samples required to produce noutput. N.B. this is only defined if fixed_rate returns true. Generally speaking, you don't need to override this. - -Params: (noutput)" - -%feature("docstring") gr_top_block_impl "Abstract implementation details of gr_top_block - -The actual implementation of gr_top_block. Separate class allows decoupling of changes from dependent classes." - -%feature("docstring") gr_top_block_impl::gr_top_block_impl " - -Params: (owner)" - -%feature("docstring") gr_top_block_impl::~gr_top_block_impl " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::start " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::stop " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::wait " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::lock " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::unlock " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::dump " - -Params: (NONE)" - -%feature("docstring") gr_top_block_impl::restart " - -Params: (NONE)" - -%feature("docstring") gr_tpb_thread_body "The body of each thread-per-block thread. - -One of these is instantiated in its own thread for each block. The constructor turns into the main loop which returns when the block is done or is interrupted." - -%feature("docstring") gr_tpb_thread_body::gr_tpb_thread_body " - -Params: (block)" - -%feature("docstring") gr_tpb_thread_body::~gr_tpb_thread_body " - -Params: (NONE)" - -%feature("docstring") gr_vco "base class template for Voltage Controlled Oscillator (VCO)" - -%feature("docstring") gr_vco::gr_vco " - -Params: (NONE)" - -%feature("docstring") gr_vco::~gr_vco " - -Params: (NONE)" - -%feature("docstring") gr_vco::set_phase " - -Params: (angle)" - -%feature("docstring") gr_vco::adjust_phase " - -Params: (delta_phase)" - -%feature("docstring") gr_vco::get_phase " - -Params: (NONE)" - -%feature("docstring") gr_vco::sincos " - -Params: (sinx, cosx)" - -%feature("docstring") gr_vco::cos " - -Params: (NONE)" - -%feature("docstring") gr_vco::sin " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf "abstract class to implement doubly mapped virtual memory circular buffers" - -%feature("docstring") gr_vmcircbuf::gr_vmcircbuf " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf::~gr_vmcircbuf " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf::pointer_to_first_copy " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf::pointer_to_second_copy " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_createfilemapping "concrete class to implement circular buffers with mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_createfilemapping::gr_vmcircbuf_createfilemapping " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_createfilemapping::~gr_vmcircbuf_createfilemapping " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_createfilemapping_factory "concrete factory for circular buffers built using mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_createfilemapping_factory::singleton " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_createfilemapping_factory::name "return name of this factory - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_createfilemapping_factory::granularity "return granularity of mapping, typically equal to page size - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_createfilemapping_factory::make "return a gr_vmcircbuf, or 0 if unable. - -Call this to create a doubly mapped circular buffer. - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_factory "abstract factory for creating circular buffers" - -%feature("docstring") gr_vmcircbuf_factory::gr_vmcircbuf_factory " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_factory::~gr_vmcircbuf_factory " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_factory::name "return name of this factory - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_factory::granularity "return granularity of mapping, typically equal to page size - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_factory::make "return a gr_vmcircbuf, or 0 if unable. - -Call this to create a doubly mapped circular buffer. - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open "concrete class to implement circular buffers with mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open::gr_vmcircbuf_mmap_shm_open " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open::~gr_vmcircbuf_mmap_shm_open " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory "concrete factory for circular buffers built using mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::singleton " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::name "return name of this factory - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::granularity "return granularity of mapping, typically equal to page size - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_shm_open_factory::make "return a gr_vmcircbuf, or 0 if unable. - -Call this to create a doubly mapped circular buffer. - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile "concrete class to implement circular buffers with mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile::gr_vmcircbuf_mmap_tmpfile " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile::~gr_vmcircbuf_mmap_tmpfile " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory "concrete factory for circular buffers built using mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::singleton " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::name "return name of this factory - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::granularity "return granularity of mapping, typically equal to page size - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_mmap_tmpfile_factory::make "return a gr_vmcircbuf, or 0 if unable. - -Call this to create a doubly mapped circular buffer. - -Params: (size)" - - - -%feature("docstring") gr_vmcircbuf_sysconfig::get_default_factory " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysconfig::granularity " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysconfig::make " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_sysconfig::all_factories " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysconfig::set_default_factory " - -Params: (f)" - -%feature("docstring") gr_vmcircbuf_sysconfig::test_factory "Does this factory really work? - -verbose = 0: silent verbose = 1: names of factories tested and results verbose = 2: all intermediate results - -Params: (f, verbose)" - -%feature("docstring") gr_vmcircbuf_sysconfig::test_all_factories "Test all factories, return true if at least one of them works verbose = 0: silent verbose = 1: names of factories tested and results verbose = 2: all intermediate results. - -Params: (verbose)" - -%feature("docstring") gr_vmcircbuf_sysv_shm "concrete class to implement circular buffers with mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_sysv_shm::gr_vmcircbuf_sysv_shm " - -Params: (size)" - -%feature("docstring") gr_vmcircbuf_sysv_shm::~gr_vmcircbuf_sysv_shm " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysv_shm_factory "concrete factory for circular buffers built using mmap and shm_open" - -%feature("docstring") gr_vmcircbuf_sysv_shm_factory::singleton " - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysv_shm_factory::name "return name of this factory - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysv_shm_factory::granularity "return granularity of mapping, typically equal to page size - -Params: (NONE)" - -%feature("docstring") gr_vmcircbuf_sysv_shm_factory::make "return a gr_vmcircbuf, or 0 if unable. - -Call this to create a doubly mapped circular buffer. - -Params: (size)" - -%feature("docstring") gri_agc2_cc "high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used." - -%feature("docstring") gri_agc2_cc::gri_agc2_cc " - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gri_agc2_cc::decay_rate " - -Params: (NONE)" - -%feature("docstring") gri_agc2_cc::attack_rate " - -Params: (NONE)" - -%feature("docstring") gri_agc2_cc::reference " - -Params: (NONE)" - -%feature("docstring") gri_agc2_cc::gain " - -Params: (NONE)" - -%feature("docstring") gri_agc2_cc::max_gain " - -Params: (NONE)" - -%feature("docstring") gri_agc2_cc::set_decay_rate " - -Params: (rate)" - -%feature("docstring") gri_agc2_cc::set_attack_rate " - -Params: (rate)" - -%feature("docstring") gri_agc2_cc::set_reference " - -Params: (reference)" - -%feature("docstring") gri_agc2_cc::set_gain " - -Params: (gain)" - -%feature("docstring") gri_agc2_cc::set_max_gain " - -Params: (max_gain)" - -%feature("docstring") gri_agc2_cc::scale " - -Params: (input)" - -%feature("docstring") gri_agc2_cc::scaleN " - -Params: (output, input, n)" - -%feature("docstring") gri_agc2_ff "high performance Automatic Gain Control class with attack and decay rate - -Power is approximated by absolute value" - -%feature("docstring") gri_agc2_ff::gri_agc2_ff " - -Params: (attack_rate, decay_rate, reference, gain, max_gain)" - -%feature("docstring") gri_agc2_ff::attack_rate " - -Params: (NONE)" - -%feature("docstring") gri_agc2_ff::decay_rate " - -Params: (NONE)" - -%feature("docstring") gri_agc2_ff::reference " - -Params: (NONE)" - -%feature("docstring") gri_agc2_ff::gain " - -Params: (NONE)" - -%feature("docstring") gri_agc2_ff::max_gain " - -Params: (NONE)" - -%feature("docstring") gri_agc2_ff::set_attack_rate " - -Params: (rate)" - -%feature("docstring") gri_agc2_ff::set_decay_rate " - -Params: (rate)" - -%feature("docstring") gri_agc2_ff::set_reference " - -Params: (reference)" - -%feature("docstring") gri_agc2_ff::set_gain " - -Params: (gain)" - -%feature("docstring") gri_agc2_ff::set_max_gain " - -Params: (max_gain)" - -%feature("docstring") gri_agc2_ff::scale " - -Params: (input)" - -%feature("docstring") gri_agc2_ff::scaleN " - -Params: (output, input, n)" - -%feature("docstring") gri_agc_cc "high performance Automatic Gain Control class - -For Power the absolute value of the complex number is used." - -%feature("docstring") gri_agc_cc::gri_agc_cc " - -Params: (rate, reference, gain, max_gain)" - -%feature("docstring") gri_agc_cc::rate " - -Params: (NONE)" - -%feature("docstring") gri_agc_cc::reference " - -Params: (NONE)" - -%feature("docstring") gri_agc_cc::gain " - -Params: (NONE)" - -%feature("docstring") gri_agc_cc::max_gain " - -Params: (NONE)" - -%feature("docstring") gri_agc_cc::set_rate " - -Params: (rate)" - -%feature("docstring") gri_agc_cc::set_reference " - -Params: (reference)" - -%feature("docstring") gri_agc_cc::set_gain " - -Params: (gain)" - -%feature("docstring") gri_agc_cc::set_max_gain " - -Params: (max_gain)" - -%feature("docstring") gri_agc_cc::scale " - -Params: (input)" - -%feature("docstring") gri_agc_cc::scaleN " - -Params: (output, input, n)" - -%feature("docstring") gri_agc_ff "high performance Automatic Gain Control class - -Power is approximated by absolute value" - -%feature("docstring") gri_agc_ff::gri_agc_ff " - -Params: (rate, reference, gain, max_gain)" - -%feature("docstring") gri_agc_ff::rate " - -Params: (NONE)" - -%feature("docstring") gri_agc_ff::reference " - -Params: (NONE)" - -%feature("docstring") gri_agc_ff::gain " - -Params: (NONE)" - -%feature("docstring") gri_agc_ff::max_gain " - -Params: (NONE)" - -%feature("docstring") gri_agc_ff::set_rate " - -Params: (rate)" - -%feature("docstring") gri_agc_ff::set_reference " - -Params: (reference)" - -%feature("docstring") gri_agc_ff::set_gain " - -Params: (gain)" - -%feature("docstring") gri_agc_ff::set_max_gain " - -Params: (max_gain)" - -%feature("docstring") gri_agc_ff::scale " - -Params: (input)" - -%feature("docstring") gri_agc_ff::scaleN " - -Params: (output, input, n)" - -%feature("docstring") gri_fft_complex "FFT: complex in, complex out." - -%feature("docstring") gri_fft_complex::gri_fft_complex " - -Params: (fft_size, forward)" - -%feature("docstring") gri_fft_complex::~gri_fft_complex " - -Params: (NONE)" - -%feature("docstring") gri_fft_complex::get_inbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_complex::get_outbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_complex::inbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_complex::outbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_complex::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_ccc_generic "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gri_fft_filter_ccc_generic::compute_sizes " - -Params: (ntaps)" - -%feature("docstring") gri_fft_filter_ccc_generic::tailsize " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_ccc_generic::gri_fft_filter_ccc_generic "Construct an FFT filter for complex vectors with the given taps and decimation rate. - -This is the basic implementation for performing FFT filter for fast convolution in other blocks for complex vectors (such as gr_fft_filter_ccc). - -Params: (decimation, taps)" - -%feature("docstring") gri_fft_filter_ccc_generic::~gri_fft_filter_ccc_generic " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_ccc_generic::set_taps "Set new taps for the filter. - -Sets new taps and resets the class properties to handle different sizes - -Params: (taps)" - -%feature("docstring") gri_fft_filter_ccc_generic::filter "Perform the filter operation. - -Params: (nitems, input, output)" - -%feature("docstring") gri_fft_filter_ccc_sse "Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gri_fft_filter_ccc_sse::compute_sizes " - -Params: (ntaps)" - -%feature("docstring") gri_fft_filter_ccc_sse::tailsize " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_ccc_sse::gri_fft_filter_ccc_sse "Construct an FFT filter for complex vectors with the given taps and decimation rate. - -This is the basic implementation for performing FFT filter for fast convolution in other blocks for complex vectors (such as gr_fft_filter_ccc). - -Params: (decimation, taps)" - -%feature("docstring") gri_fft_filter_ccc_sse::~gri_fft_filter_ccc_sse " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_ccc_sse::set_taps "Set new taps for the filter. - -Sets new taps and resets the class properties to handle different sizes - -Params: (taps)" - -%feature("docstring") gri_fft_filter_ccc_sse::filter "Perform the filter operation. - -Params: (nitems, input, output)" - - - -%feature("docstring") gri_fft_filter_fff_generic::compute_sizes " - -Params: (ntaps)" - -%feature("docstring") gri_fft_filter_fff_generic::tailsize " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_fff_generic::gri_fft_filter_fff_generic "Construct a FFT filter for float vectors with the given taps and decimation rate. - -This is the basic implementation for performing FFT filter for fast convolution in other blocks for floating point vectors (such as gr_fft_filter_fff). - -Params: (decimation, taps)" - -%feature("docstring") gri_fft_filter_fff_generic::~gri_fft_filter_fff_generic " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_fff_generic::set_taps "Set new taps for the filter. - -Sets new taps and resets the class properties to handle different sizes - -Params: (taps)" - -%feature("docstring") gri_fft_filter_fff_generic::filter "Perform the filter operation. - -Params: (nitems, input, output)" - - - -%feature("docstring") gri_fft_filter_fff_sse::compute_sizes " - -Params: (ntaps)" - -%feature("docstring") gri_fft_filter_fff_sse::tailsize " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_fff_sse::gri_fft_filter_fff_sse "Construct a FFT filter for float vectors with the given taps and decimation rate. - -This is the basic implementation for performing FFT filter for fast convolution in other blocks for floating point vectors (such as gr_fft_filter_fff). - -Params: (decimation, taps)" - -%feature("docstring") gri_fft_filter_fff_sse::~gri_fft_filter_fff_sse " - -Params: (NONE)" - -%feature("docstring") gri_fft_filter_fff_sse::set_taps "Set new taps for the filter. - -Sets new taps and resets the class properties to handle different sizes - -Params: (taps)" - -%feature("docstring") gri_fft_filter_fff_sse::filter "Perform the filter operation. - -Params: (nitems, input, output)" - -%feature("docstring") gri_fft_planner "Export reference to planner mutex for those apps that want to use FFTW w/o using the gri_fftw* classes." - -%feature("docstring") gri_fft_planner::mutex "Return reference to planner mutex - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd "FFT: real in, complex out." - -%feature("docstring") gri_fft_real_fwd::gri_fft_real_fwd " - -Params: (fft_size)" - -%feature("docstring") gri_fft_real_fwd::~gri_fft_real_fwd " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd::get_inbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd::get_outbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd::inbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd::outbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_fwd::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev "FFT: complex in, float out." - -%feature("docstring") gri_fft_real_rev::gri_fft_real_rev " - -Params: (fft_size)" - -%feature("docstring") gri_fft_real_rev::~gri_fft_real_rev " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev::get_inbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev::get_outbuf " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev::inbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev::outbuf_length " - -Params: (NONE)" - -%feature("docstring") gri_fft_real_rev::execute "compute FFT. The input comes from inbuf, the output is placed in outbuf. - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc "FIR with internal buffer for gr_complex input, gr_complex output and gr_complex taps." - -%feature("docstring") gri_fir_filter_with_buffer_ccc::gri_fir_filter_with_buffer_ccc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::~gri_fir_filter_with_buffer_ccc " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccc::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf "FIR with internal buffer for gr_complex input, gr_complex output and float taps." - -%feature("docstring") gri_fir_filter_with_buffer_ccf::gri_fir_filter_with_buffer_ccf "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::~gri_fir_filter_with_buffer_ccf " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_ccf::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc "FIR with internal buffer for float input, gr_complex output and gr_complex taps." - -%feature("docstring") gri_fir_filter_with_buffer_fcc::gri_fir_filter_with_buffer_fcc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::~gri_fir_filter_with_buffer_fcc " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fcc::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fff "FIR with internal buffer for float input, float output and float taps." - -%feature("docstring") gri_fir_filter_with_buffer_fff::gri_fir_filter_with_buffer_fff "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::~gri_fir_filter_with_buffer_fff " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fff::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf "FIR with internal buffer for float input, short output and float taps." - -%feature("docstring") gri_fir_filter_with_buffer_fsf::gri_fir_filter_with_buffer_fsf "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::~gri_fir_filter_with_buffer_fsf " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_fsf::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_scc "FIR with internal buffer for short input, gr_complex output and gr_complex taps." - -%feature("docstring") gri_fir_filter_with_buffer_scc::gri_fir_filter_with_buffer_scc "construct new FIR with given taps. - -Note that taps must be in forward order, e.g., coefficient 0 is stored in new_taps[0], coefficient 1 is stored in new_taps[1], etc. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::~gri_fir_filter_with_buffer_scc " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::filter "compute a single output value. - -is a single input value of the filter type - -Params: (input)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::filterN "compute an array of N output values. - -must have (n - 1 + ntaps()) valid entries. input[0] .. input[n - 1 + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::filterNdec "compute an array of N output values, decimating the input - -must have (decimate * (n - 1) + ntaps()) valid entries. input[0] .. input[decimate * (n - 1) + ntaps() - 1] are referenced to compute the output values. - -Params: (output, input, n, decimate)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::set_taps "install as the current taps. - -Params: (taps)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_fir_filter_with_buffer_scc::get_taps " - -Params: (NONE)" - -%feature("docstring") gri_glfsr "Galois Linear Feedback Shift Register using specified polynomial mask - -Generates a maximal length pseudo-random sequence of length 2^degree-1." - -%feature("docstring") gri_glfsr::gri_glfsr " - -Params: (mask, seed)" - -%feature("docstring") gri_glfsr::next_bit " - -Params: (NONE)" - -%feature("docstring") gri_glfsr::mask " - -Params: (NONE)" - -%feature("docstring") gri_glfsr::glfsr_mask " - -Params: (degree)" - -%feature("docstring") gri_goertzel "Implements Goertzel single-bin DFT calculation." - -%feature("docstring") gri_goertzel::gri_goertzel " - -Params: (NONE)" - -%feature("docstring") gri_goertzel::gri_setparms " - -Params: (rate, len, freq)" - -%feature("docstring") gri_goertzel::batch " - -Params: (in)" - -%feature("docstring") gri_goertzel::input " - -Params: (in)" - -%feature("docstring") gri_goertzel::output " - -Params: (NONE)" - -%feature("docstring") gri_goertzel::ready " - -Params: (NONE)" - -%feature("docstring") gri_iir "base class template for Infinite Impulse Response filter (IIR)" - -%feature("docstring") gri_iir::gri_iir "Construct an IIR with the given taps. - -This filter uses the Direct Form I implementation, where contains the feed-forward taps, and the feedback ones. - - and must have equal numbers of taps - -The input and output satisfy a difference equation of the form - - - -with the corresponding rational system function - - - -Note that some texts define the system function with a + in the denominator. If you're using that convention, you'll need to negate the feedback taps. - -Params: (fftaps, fbtaps)" - -%feature("docstring") gri_iir::~gri_iir " - -Params: (NONE)" - -%feature("docstring") gri_iir::filter "compute a single output value. - -Params: (input)" - -%feature("docstring") gri_iir::filter_n "compute an array of N output values. must have N valid entries. - -Params: (output, input, n)" - -%feature("docstring") gri_iir::ntaps_ff " - -Params: (NONE)" - -%feature("docstring") gri_iir::ntaps_fb " - -Params: (NONE)" - -%feature("docstring") gri_iir::set_taps "install new taps. - -Params: (fftaps, fbtaps)" - -%feature("docstring") gri_lfsr "Fibonacci Linear Feedback Shift Register using specified polynomial mask - -Generates a maximal length pseudo-random sequence of length 2^degree-1. - -Constructor: gri_lfsr(int mask, int seed, int reg_len); - -mask - polynomial coefficients representing the locations of feedback taps from a shift register which are xor'ed together to form the new high order bit. - -Some common masks might be: x^4 + x^3 + x^0 = 0x19 x^5 + x^3 + x^0 = 0x29 x^6 + x^5 + x^0 = 0x61 - -seed - the initialization vector placed into the register durring initialization. Low order bit corresponds to x^0 coefficient -- the first to be shifted as output. - -reg_len - specifies the length of the feedback shift register to be used. Durring each iteration, the register is rightshifted one and the new bit is placed in bit reg_len. reg_len should generally be at least order(mask) + 1 - -see for more explanation. - -next_bit() - Standard LFSR operation - -Perform one cycle of the LFSR. The output bit is taken from the shift register LSB. The shift register MSB is assigned from the modulo 2 sum of the masked shift register. - -next_bit_scramble(unsigned char input) - Scramble an input stream - -Perform one cycle of the LFSR. The output bit is taken from the shift register LSB. The shift register MSB is assigned from the modulo 2 sum of the masked shift register and the input LSB. - -next_bit_descramble(unsigned char input) - Descramble an input stream - -Perform one cycle of the LFSR. The output bit is taken from the modulo 2 sum of the masked shift register and the input LSB. The shift register MSB is assigned from the LSB of the input. - -See for operation of these last two functions (see multiplicative scrambler.)" - -%feature("docstring") gri_lfsr::popCount " - -Params: (x)" - -%feature("docstring") gri_lfsr::gri_lfsr " - -Params: (mask, seed, reg_len)" - -%feature("docstring") gri_lfsr::next_bit " - -Params: (NONE)" - -%feature("docstring") gri_lfsr::next_bit_scramble " - -Params: (input)" - -%feature("docstring") gri_lfsr::next_bit_descramble " - -Params: (input)" - -%feature("docstring") gri_lfsr::reset "Reset shift register to initial seed value - -Params: (NONE)" - -%feature("docstring") gri_lfsr::pre_shift "Rotate the register through x number of bits where we are just throwing away the results to get queued up correctly - -Params: (num)" - -%feature("docstring") gri_lfsr::mask " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_15_1_0 "Linear Feedback Shift Register using primitive polynomial x^15 + x + 1 - -Generates a maximal length pseudo-random sequence of length 2^15 - 1 bits." - -%feature("docstring") gri_lfsr_15_1_0::gri_lfsr_15_1_0 " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_15_1_0::reset " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_15_1_0::next_bit " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_15_1_0::next_byte " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_32k "generate pseudo-random sequence of length 32768 bits. - -This is based on gri_lfsr_15_1_0 with an extra 0 added at the end of the sequence." - -%feature("docstring") gri_lfsr_32k::gri_lfsr_32k " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_32k::reset " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_32k::next_bit " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_32k::next_byte " - -Params: (NONE)" - -%feature("docstring") gri_lfsr_32k::next_short " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator "Compute intermediate samples between signal samples x(k*Ts) - -This implements a Mininum Mean Squared Error interpolator with 8 taps. It is suitable for signals where the bandwidth of interest B = 1/(4*Ts) Where Ts is the time between samples. - -Although mu, the fractional delay, is specified as a float, it is actually quantized. 0.0 <= mu <= 1.0. That is, mu is quantized in the interpolate method to 32nd's of a sample." - -%feature("docstring") gri_mmse_fir_interpolator::gri_mmse_fir_interpolator " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator::~gri_mmse_fir_interpolator " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator::nsteps " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator::interpolate "compute a single interpolated output value. must have ntaps() valid entries. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - -must be in the range [0, 1] and specifies the fractional delay. - -Params: (input, mu)" - -%feature("docstring") gri_mmse_fir_interpolator_cc "Compute intermediate samples between signal samples x(k*Ts) - -This implements a Mininum Mean Squared Error interpolator with 8 taps. It is suitable for signals where the bandwidth of interest B = 1/(4*Ts) Where Ts is the time between samples. - -Although mu, the fractional delay, is specified as a float, it is actually quantized. 0.0 <= mu <= 1.0. That is, mu is quantized in the interpolate method to 32nd's of a sample." - -%feature("docstring") gri_mmse_fir_interpolator_cc::gri_mmse_fir_interpolator_cc " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator_cc::~gri_mmse_fir_interpolator_cc " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator_cc::ntaps " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator_cc::nsteps " - -Params: (NONE)" - -%feature("docstring") gri_mmse_fir_interpolator_cc::interpolate "compute a single interpolated output value. - -must have ntaps() valid entries and be 8-byte aligned. input[0] .. input[ntaps() - 1] are referenced to compute the output value. - must be in the range [0, 1] and specifies the fractional delay. - -Params: (input, mu)" - -%feature("docstring") gsm_fr_decode_ps "GSM 06.10 Full Rate Vocoder Decoder." - -%feature("docstring") gsm_fr_decode_ps::gsm_fr_decode_ps " - -Params: (NONE)" - -%feature("docstring") gsm_fr_decode_ps::~gsm_fr_decode_ps " - -Params: (NONE)" - -%feature("docstring") gsm_fr_decode_ps::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") gsm_fr_encode_sp "GSM 06.10 Full Rate Vocoder Encoder - -shorts in; 33 byte packets out." - -%feature("docstring") gsm_fr_encode_sp::gsm_fr_encode_sp " - -Params: (NONE)" - -%feature("docstring") gsm_fr_encode_sp::~gsm_fr_encode_sp " - -Params: (NONE)" - -%feature("docstring") gsm_fr_encode_sp::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") i2c "abstract class for controlling i2c bus" - -%feature("docstring") i2c::i2c " - -Params: (NONE)" - -%feature("docstring") i2c::~i2c " - -Params: (NONE)" - -%feature("docstring") i2c::write " - -Params: (addr, buf, nbytes)" - -%feature("docstring") i2c::read " - -Params: (addr, buf, max_bytes)" - -%feature("docstring") i2c_bbio "abstract class that implements bit banging i/o for i2c bus." - -%feature("docstring") i2c_bbio::i2c_bbio " - -Params: (NONE)" - -%feature("docstring") i2c_bbio::~i2c_bbio " - -Params: (NONE)" - -%feature("docstring") i2c_bbio::set_scl " - -Params: (state)" - -%feature("docstring") i2c_bbio::set_sda " - -Params: (state)" - -%feature("docstring") i2c_bbio::get_sda " - -Params: (NONE)" - -%feature("docstring") i2c_bbio::lock " - -Params: (NONE)" - -%feature("docstring") i2c_bbio::unlock " - -Params: (NONE)" - -%feature("docstring") i2c_bbio_pp "concrete class that bit bangs eval board i2c bus using parallel port - -This class talks to the i2c bus on the microtune eval board using the parallel port. This works for both the 4937 and 4702 boards." - -%feature("docstring") i2c_bbio_pp::i2c_bbio_pp " - -Params: (pp)" - -%feature("docstring") i2c_bbio_pp::set_scl " - -Params: (state)" - -%feature("docstring") i2c_bbio_pp::set_sda " - -Params: (state)" - -%feature("docstring") i2c_bbio_pp::get_sda " - -Params: (NONE)" - -%feature("docstring") i2c_bbio_pp::lock " - -Params: (NONE)" - -%feature("docstring") i2c_bbio_pp::unlock " - -Params: (NONE)" - -%feature("docstring") i2c_bitbang "class for controlling i2c bus" - -%feature("docstring") i2c_bitbang::i2c_bitbang " - -Params: (io)" - -%feature("docstring") i2c_bitbang::start " - -Params: (NONE)" - -%feature("docstring") i2c_bitbang::stop " - -Params: (NONE)" - -%feature("docstring") i2c_bitbang::write_bit " - -Params: (bit)" - -%feature("docstring") i2c_bitbang::write_byte " - -Params: (byte)" - -%feature("docstring") i2c_bitbang::set_sda " - -Params: (bit)" - -%feature("docstring") i2c_bitbang::set_scl " - -Params: (bit)" - -%feature("docstring") i2c_bitbang::get_sda " - -Params: (NONE)" - -%feature("docstring") i2c_bitbang::~i2c_bitbang " - -Params: (NONE)" - -%feature("docstring") i2c_bitbang::write " - -Params: (addr, buf, nbytes)" - -%feature("docstring") i2c_bitbang::read " - -Params: (addr, buf, max_bytes)" - -%feature("docstring") std::ifstream "STL class." - - - -%feature("docstring") usrp2::usrp2::impl::inc_enqueued " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::dec_enqueued " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::init_et_hdrs " - -Params: (p, dst)" - -%feature("docstring") usrp2::usrp2::impl::init_etf_hdrs " - -Params: (p, dst, word0_flags, chan, timestamp)" - -%feature("docstring") usrp2::usrp2::impl::start_bg " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::stop_bg " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::init_config_rx_v2_cmd " - -Params: (cmd)" - -%feature("docstring") usrp2::usrp2::impl::init_config_tx_v2_cmd " - -Params: (cmd)" - -%feature("docstring") usrp2::usrp2::impl::transmit_cmd_and_wait " - -Params: (cmd, len, p, secs)" - -%feature("docstring") usrp2::usrp2::impl::transmit_cmd " - -Params: (cmd, len)" - -%feature("docstring") usrp2::usrp2::impl::operator() " - -Params: (base, len)" - -%feature("docstring") usrp2::usrp2::impl::handle_control_packet " - -Params: (base, len)" - -%feature("docstring") usrp2::usrp2::impl::handle_data_packet " - -Params: (base, len)" - -%feature("docstring") usrp2::usrp2::impl::dboard_info " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::reset_db " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::impl " - -Params: (ifc, p, rx_bufsize)" - -%feature("docstring") usrp2::usrp2::impl::~impl " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::mac_addr " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::interface_name " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_antenna " - -Params: (ant)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_gain " - -Params: (gain)" - -%feature("docstring") usrp2::usrp2::impl::rx_gain_min " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::rx_gain_max " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::rx_gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_lo_offset " - -Params: (frequency)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_center_freq " - -Params: (frequency, result)" - -%feature("docstring") usrp2::usrp2::impl::rx_freq_min " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::rx_freq_max " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_decim " - -Params: (decimation_factor)" - -%feature("docstring") usrp2::usrp2::impl::rx_decim " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_rx_scale_iq " - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::impl::set_gpio_ddr " - -Params: (bank, value, mask)" - -%feature("docstring") usrp2::usrp2::impl::set_gpio_sels " - -Params: (bank, src)" - -%feature("docstring") usrp2::usrp2::impl::enable_gpio_streaming " - -Params: (bank, enable)" - -%feature("docstring") usrp2::usrp2::impl::write_gpio " - -Params: (bank, value, mask)" - -%feature("docstring") usrp2::usrp2::impl::read_gpio " - -Params: (bank, value)" - -%feature("docstring") usrp2::usrp2::impl::start_rx_streaming " - -Params: (channel, items_per_frame)" - -%feature("docstring") usrp2::usrp2::impl::start_rx_streaming_at " - -Params: (channel, items_per_frame, time)" - -%feature("docstring") usrp2::usrp2::impl::sync_and_start_rx_streaming_at " - -Params: (channel, items_per_frame, time)" - -%feature("docstring") usrp2::usrp2::impl::rx_samples " - -Params: (channel, handler)" - -%feature("docstring") usrp2::usrp2::impl::flush_rx_samples " - -Params: (channel)" - -%feature("docstring") usrp2::usrp2::impl::stop_rx_streaming " - -Params: (channel)" - -%feature("docstring") usrp2::usrp2::impl::rx_overruns " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::rx_missing " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_antenna " - -Params: (ant)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_gain " - -Params: (gain)" - -%feature("docstring") usrp2::usrp2::impl::tx_gain_min " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::tx_gain_max " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::tx_gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_lo_offset " - -Params: (frequency)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_center_freq " - -Params: (frequency, result)" - -%feature("docstring") usrp2::usrp2::impl::tx_freq_min " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::tx_freq_max " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_interp " - -Params: (interpolation_factor)" - -%feature("docstring") usrp2::usrp2::impl::tx_interp " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::default_tx_scale_iq " - -Params: (interpolation_factor, scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::impl::set_tx_scale_iq " - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::impl::tx_32fc " - -Params: (channel, samples, nsamples, metadata)" - -%feature("docstring") usrp2::usrp2::impl::tx_16sc " - -Params: (channel, samples, nsamples, metadata)" - -%feature("docstring") usrp2::usrp2::impl::tx_raw " - -Params: (channel, items, nitems, metadata)" - -%feature("docstring") usrp2::usrp2::impl::config_mimo " - -Params: (flags)" - -%feature("docstring") usrp2::usrp2::impl::fpga_master_clock_freq " - -Params: (freq)" - -%feature("docstring") usrp2::usrp2::impl::adc_rate " - -Params: (rate)" - -%feature("docstring") usrp2::usrp2::impl::dac_rate " - -Params: (rate)" - -%feature("docstring") usrp2::usrp2::impl::tx_daughterboard_id " - -Params: (dbid)" - -%feature("docstring") usrp2::usrp2::impl::rx_daughterboard_id " - -Params: (dbid)" - -%feature("docstring") usrp2::usrp2::impl::burn_mac_addr " - -Params: (new_addr)" - -%feature("docstring") usrp2::usrp2::impl::sync_to_pps " - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::impl::sync_every_pps " - -Params: (enable)" - -%feature("docstring") usrp2::usrp2::impl::peek32 " - -Params: (addr, words)" - -%feature("docstring") usrp2::usrp2::impl::poke32 " - -Params: (addr, data)" - -%feature("docstring") usrp2::usrp2::impl::bg_loop " - -Params: (NONE)" - -%feature("docstring") interleaver "INTERLEAVER class." - -%feature("docstring") interleaver::interleaver " - -Params: (NONE)" - -%feature("docstring") interleaver::K " - -Params: (NONE)" - -%feature("docstring") interleaver::INTER " - -Params: (NONE)" - -%feature("docstring") interleaver::DEINTER " - -Params: (NONE)" - -%feature("docstring") interleaver::write_interleaver_txt " - -Params: (filename)" - -%feature("docstring") interleaver_fifo "template class for interleaver fifo" - -%feature("docstring") interleaver_fifo::interleaver_fifo " - -Params: (size)" - -%feature("docstring") interleaver_fifo::~interleaver_fifo " - -Params: (NONE)" - -%feature("docstring") interleaver_fifo::reset "reset interleaver (flushes contents and resets commutator) - -Params: (NONE)" - -%feature("docstring") interleaver_fifo::stuff "stuff a symbol into the fifo and return the oldest - -Params: (input)" - -%feature("docstring") std::invalid_argument "STL class." - -%feature("docstring") std::ios "STL class." - -%feature("docstring") std::ios_base "STL class." - -%feature("docstring") std::istream "STL class." - -%feature("docstring") std::istringstream "STL class." - -%feature("docstring") std::basic_string::iterator "STL iterator class." - -%feature("docstring") std::multimap::iterator "STL iterator class." - -%feature("docstring") std::wstring::iterator "STL iterator class." - -%feature("docstring") std::set::iterator "STL iterator class." - -%feature("docstring") std::map::iterator "STL iterator class." - -%feature("docstring") std::deque::iterator "STL iterator class." - -%feature("docstring") std::list::iterator "STL iterator class." - -%feature("docstring") std::multiset::iterator "STL iterator class." - -%feature("docstring") std::string::iterator "STL iterator class." - -%feature("docstring") std::vector::iterator "STL iterator class." - -%feature("docstring") std::length_error "STL class." - -%feature("docstring") std::list "STL class." - -%feature("docstring") std::logic_error "STL class." - -%feature("docstring") std::map "STL class." - -%feature("docstring") microtune_4702 "class for controlling microtune 4702 tuner module" - -%feature("docstring") microtune_4702::microtune_4702 " - -Params: (i2c, i2c_addr)" - -%feature("docstring") microtune_4702::~microtune_4702 " - -Params: (NONE)" - -%feature("docstring") microtune_4702::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. - -Params: (freq, actual_freq)" - -%feature("docstring") microtune_4702::pll_locked_p " - -Params: (NONE)" - -%feature("docstring") microtune_4702::get_output_freq " - -Params: (NONE)" - -%feature("docstring") microtune_4702_eval_board "control microtune 4702 eval board" - -%feature("docstring") microtune_4702_eval_board::microtune_4702_eval_board " - -Params: (which_pp)" - -%feature("docstring") microtune_4702_eval_board::~microtune_4702_eval_board " - -Params: (NONE)" - -%feature("docstring") microtune_4702_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) - -This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. - -Params: (value_0_1000)" - -%feature("docstring") microtune_4937 "class for controlling microtune 4937 tuner module" - -%feature("docstring") microtune_4937::microtune_4937 " - -Params: (i2c, i2c_addr)" - -%feature("docstring") microtune_4937::~microtune_4937 " - -Params: (NONE)" - -%feature("docstring") microtune_4937::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. - -Params: (freq, actual_freq)" - -%feature("docstring") microtune_4937::pll_locked_p " - -Params: (NONE)" - -%feature("docstring") microtune_4937::get_output_freq " - -Params: (NONE)" - -%feature("docstring") microtune_4937_eval_board "control microtune 4937 eval board" - -%feature("docstring") microtune_4937_eval_board::microtune_4937_eval_board " - -Params: (which_pp)" - -%feature("docstring") microtune_4937_eval_board::~microtune_4937_eval_board " - -Params: (NONE)" - -%feature("docstring") microtune_4937_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) - -This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. - -Params: (value_0_1000)" - -%feature("docstring") microtune_xxxx "abstract class for controlling microtune {4937,4702} tuner modules" - -%feature("docstring") microtune_xxxx::microtune_xxxx " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx::~microtune_xxxx " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. - -Params: (freq, actual_freq)" - -%feature("docstring") microtune_xxxx::pll_locked_p " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx::get_output_freq " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx_eval_board "abstract class for controlling microtune xxxx eval board" - -%feature("docstring") microtune_xxxx_eval_board::microtune_xxxx_eval_board " - -Params: (which_pp)" - -%feature("docstring") microtune_xxxx_eval_board::~microtune_xxxx_eval_board " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx_eval_board::board_present_p "is the eval board present? - -Params: (NONE)" - -%feature("docstring") microtune_xxxx_eval_board::set_RF_AGC_voltage "set RF and IF AGC control voltages ([0, 5] volts) - -Params: (volts)" - -%feature("docstring") microtune_xxxx_eval_board::set_IF_AGC_voltage " - -Params: (volts)" - -%feature("docstring") microtune_xxxx_eval_board::set_AGC "set RF and IF AGC levels together (scale [0, 1000]) - -This provides a simple linear interface for adjusting both the RF and IF gain in consort. This is the easy to use interface. 0 corresponds to minimum gain. 1000 corresponds to maximum gain. - -Params: (value_0_1000)" - -%feature("docstring") microtune_xxxx_eval_board::set_RF_freq "select RF frequency to be tuned to output frequency. is the requested frequency in Hz, is set to the actual frequency tuned. It takes about 100 ms for the PLL to settle. - -Params: (freq, actual_freq)" - -%feature("docstring") microtune_xxxx_eval_board::pll_locked_p " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx_eval_board::get_output_freq " - -Params: (NONE)" - -%feature("docstring") microtune_xxxx_eval_board::write_dac " - -Params: (which, value)" - -%feature("docstring") microtune_xxxx_eval_board::write_both_dacs " - -Params: (val0, val1)" - - - -%feature("docstring") MSDD6000::MSDD6000 " - -Params: (ip_addr)" - -%feature("docstring") MSDD6000::~MSDD6000 " - -Params: (NONE)" - -%feature("docstring") MSDD6000::set_decim " - -Params: (decim_pow2)" - -%feature("docstring") MSDD6000::set_fc " - -Params: (center_mhz, offset_hz)" - -%feature("docstring") MSDD6000::set_ddc_gain " - -Params: (gain)" - -%feature("docstring") MSDD6000::set_rf_attn " - -Params: (attn)" - -%feature("docstring") MSDD6000::set_output " - -Params: (mode, arg)" - -%feature("docstring") MSDD6000::start " - -Params: (NONE)" - -%feature("docstring") MSDD6000::stop " - -Params: (NONE)" - -%feature("docstring") MSDD6000::send_request " - -Params: (, , , , )" - -%feature("docstring") MSDD6000::read " - -Params: (, )" - - - -%feature("docstring") MSDD6000_RS::MSDD6000_RS " - -Params: (ip_addr)" - -%feature("docstring") MSDD6000_RS::~MSDD6000_RS " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::set_rf_attn " - -Params: (attn)" - -%feature("docstring") MSDD6000_RS::set_ddc_gain " - -Params: (gain)" - -%feature("docstring") MSDD6000_RS::set_fc " - -Params: (center_mhz, offset_hz)" - -%feature("docstring") MSDD6000_RS::set_ddc_samp_rate " - -Params: (sample_rate_khz)" - -%feature("docstring") MSDD6000_RS::set_ddc_bw " - -Params: (bw_khz)" - -%feature("docstring") MSDD6000_RS::start " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::stop " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::start_data " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::stop_data " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::pull_ddc_samp_rate " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::pull_ddc_bw " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::pull_rx_freq " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::pull_ddc_gain " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::pull_rf_atten " - -Params: (NONE)" - -%feature("docstring") MSDD6000_RS::send_request " - -Params: (, , , , , , )" - -%feature("docstring") MSDD6000_RS::read " - -Params: (, )" - - - -%feature("docstring") msdd_rs_source_simple::msdd_rs_source_simple " - -Params: (src, port_src)" - -%feature("docstring") msdd_rs_source_simple::~msdd_rs_source_simple " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::start_data " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::stop_data " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::set_ddc_samp_rate " - -Params: ()" - -%feature("docstring") msdd_rs_source_simple::set_ddc_bw " - -Params: ()" - -%feature("docstring") msdd_rs_source_simple::set_rx_freq " - -Params: ()" - -%feature("docstring") msdd_rs_source_simple::set_ddc_gain " - -Params: ()" - -%feature("docstring") msdd_rs_source_simple::set_rf_atten " - -Params: ()" - -%feature("docstring") msdd_rs_source_simple::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") msdd_rs_source_simple::pull_adc_freq " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::pull_ddc_samp_rate " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::pull_ddc_bw " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::pull_rx_freq " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::pull_ddc_gain " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::pull_rf_atten " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::gain_range " - -Params: (NONE)" - -%feature("docstring") msdd_rs_source_simple::freq_range " - -Params: (NONE)" - -%feature("docstring") gruel::msg_accepter "Virtual base class that accepts messages." - -%feature("docstring") gruel::msg_accepter::msg_accepter " - -Params: (NONE)" - -%feature("docstring") gruel::msg_accepter::~msg_accepter " - -Params: (NONE)" - -%feature("docstring") gruel::msg_accepter::post "send to - -Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. - -Params: (msg)" - -%feature("docstring") gruel::msg_accepter_msgq "Concrete class that accepts messages and inserts them into a message queue." - -%feature("docstring") gruel::msg_accepter_msgq::msg_accepter_msgq " - -Params: (msgq)" - -%feature("docstring") gruel::msg_accepter_msgq::~msg_accepter_msgq " - -Params: (NONE)" - -%feature("docstring") gruel::msg_accepter_msgq::post "send to - -Sending a message is an asynchronous operation. The call will not wait for the message either to arrive at the destination or to be received. - -Params: (msg)" - -%feature("docstring") gruel::msg_accepter_msgq::msg_queue " - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue "thread-safe message queue" - -%feature("docstring") gruel::msg_queue::msg_queue " - -Params: (limit)" - -%feature("docstring") gruel::msg_queue::~msg_queue " - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::insert_tail "Insert message at tail of queue. - -Block if queue if full. - -Params: (msg)" - -%feature("docstring") gruel::msg_queue::delete_head "Delete message from head of queue and return it. Block if no message is available. - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::delete_head_nowait "If there's a message in the q, delete it and return it. If no message is available, return pmt_t(). - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::flush "Delete all messages from the queue. - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::empty_p "is the queue empty? - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::full_p "is the queue full? - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::count "return number of messages in queue - -Params: (NONE)" - -%feature("docstring") gruel::msg_queue::limit "return limit on number of message in queue. 0 -> unbounded - -Params: (NONE)" - -%feature("docstring") std::multimap "STL class." - -%feature("docstring") std::multiset "STL class." - -%feature("docstring") std::ofstream "STL class." - -%feature("docstring") std::ostream "STL class." - -%feature("docstring") std::ostringstream "STL class." - -%feature("docstring") std::out_of_range "STL class." - -%feature("docstring") std::overflow_error "STL class." - -%feature("docstring") usrp2::pending_reply "Control mechanism to allow API calls to block waiting for reply packets" - -%feature("docstring") usrp2::pending_reply::pending_reply "Construct a pending reply from the reply ID, response packet buffer, and buffer length. - -Params: (rid, buffer, len)" - -%feature("docstring") usrp2::pending_reply::~pending_reply "Destructor. Signals creating thread. - -Params: (NONE)" - -%feature("docstring") usrp2::pending_reply::wait_for_completion "Block, waiting for reply packet. Returns: 1 = ok, reply packet in buffer 0 = timeout - -Params: (secs)" - -%feature("docstring") usrp2::pending_reply::notify_completion "Allows creating thread to resume after copying reply into buffer - -Params: (NONE)" - -%feature("docstring") usrp2::pending_reply::rid "Retrieve pending reply ID - -Params: (NONE)" - -%feature("docstring") usrp2::pending_reply::buffer "Retrieve destination buffer address - -Params: (NONE)" - -%feature("docstring") usrp2::pending_reply::len "Retrieve destination buffer length - -Params: (NONE)" - - - -%feature("docstring") usrp2::pktfilter::pktfilter " - -Params: (NONE)" - -%feature("docstring") usrp2::pktfilter::~pktfilter " - -Params: (NONE)" - -%feature("docstring") usrp2::pktfilter::make_ethertype "Return a filter that harvests packets with the specified ethertype. - -Params: (ethertype)" - -%feature("docstring") usrp2::pktfilter::make_ethertype_inbound "Return a filter that harvests inbound packets with the specified ethertype. - -Params: (ethertype, our_mac)" - -%feature("docstring") usrp2::pktfilter::make_ethertype_inbound_target "Return a filter that harvests inbound packets with the specified ethertype and source MAC address. - -Params: (ethertype, usrp_mac)" - -%feature("docstring") plinfo "pipeline info that flows with data - -Not all modules need all the info" - -%feature("docstring") plinfo::plinfo " - -Params: (NONE)" - -%feature("docstring") plinfo::field_sync1_p " - -Params: (NONE)" - -%feature("docstring") plinfo::field_sync2_p " - -Params: (NONE)" - -%feature("docstring") plinfo::field_sync_p " - -Params: (NONE)" - -%feature("docstring") plinfo::regular_seg_p " - -Params: (NONE)" - -%feature("docstring") plinfo::in_field1_p " - -Params: (NONE)" - -%feature("docstring") plinfo::in_field2_p " - -Params: (NONE)" - -%feature("docstring") plinfo::first_regular_seg_p " - -Params: (NONE)" - -%feature("docstring") plinfo::transport_error_p " - -Params: (NONE)" - -%feature("docstring") plinfo::segno " - -Params: (NONE)" - -%feature("docstring") plinfo::flags " - -Params: (NONE)" - -%feature("docstring") plinfo::set_field_sync1 " - -Params: (NONE)" - -%feature("docstring") plinfo::set_field_sync2 " - -Params: (NONE)" - -%feature("docstring") plinfo::set_regular_seg " - -Params: (field2, segno)" - -%feature("docstring") plinfo::set_transport_error " - -Params: (error)" - -%feature("docstring") plinfo::operator== " - -Params: (other)" - -%feature("docstring") plinfo::operator!= " - -Params: (other)" - -%feature("docstring") plinfo::delay "Set such that it reflects a pipeline delay from . - -Params: (out, in, nsegs_of_delay)" - -%feature("docstring") plinfo::sanity_check "confirm that is plausible - -Params: (in)" - - - -%feature("docstring") pmt::pmt_any::pmt_any " - -Params: (any)" - -%feature("docstring") pmt::pmt_any::is_any " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_any::ref " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_any::set " - -Params: (any)" - - - -%feature("docstring") pmt::pmt_base::pmt_base " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::~pmt_base " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_bool " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_symbol " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_number " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_integer " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_uint64 " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_real " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_complex " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_null " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_pair " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_tuple " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_dict " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_any " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_uniform_vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_u8vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_s8vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_u16vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_s16vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_u32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_s32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_u64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_s64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_f32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_f64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_c32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_base::is_c64vector " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_bool::pmt_bool " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_bool::is_bool " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_c32vector::pmt_c32vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_c32vector::is_c32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_c32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_c32vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_c32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_c32vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_c32vector::pmt_c32vector " - -Params: (k, fill)" - -%feature("docstring") pmt_c32vector::is_c32vector " - -Params: (NONE)" - -%feature("docstring") pmt_c32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_c32vector::ref " - -Params: (k)" - -%feature("docstring") pmt_c32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_c32vector::elements " - -Params: (len)" - -%feature("docstring") pmt_c32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_c32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_c32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_c64vector::pmt_c64vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_c64vector::is_c64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_c64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_c64vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_c64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_c64vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_c64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_c64vector::pmt_c64vector " - -Params: (k, fill)" - -%feature("docstring") pmt_c64vector::is_c64vector " - -Params: (NONE)" - -%feature("docstring") pmt_c64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_c64vector::ref " - -Params: (k)" - -%feature("docstring") pmt_c64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_c64vector::elements " - -Params: (len)" - -%feature("docstring") pmt_c64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_c64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_c64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_complex::pmt_complex " - -Params: (value)" - -%feature("docstring") pmt::pmt_complex::is_number " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_complex::is_complex " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_complex::value " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_exception::pmt_exception " - -Params: (msg, obj)" - - - -%feature("docstring") pmt_f32vector::pmt_f32vector " - -Params: (k, fill)" - -%feature("docstring") pmt_f32vector::is_f32vector " - -Params: (NONE)" - -%feature("docstring") pmt_f32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_f32vector::ref " - -Params: (k)" - -%feature("docstring") pmt_f32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_f32vector::elements " - -Params: (len)" - -%feature("docstring") pmt_f32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_f32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_f32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_f32vector::pmt_f32vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_f32vector::is_f32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_f32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_f32vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_f32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_f32vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_f64vector::pmt_f64vector " - -Params: (k, fill)" - -%feature("docstring") pmt_f64vector::is_f64vector " - -Params: (NONE)" - -%feature("docstring") pmt_f64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_f64vector::ref " - -Params: (k)" - -%feature("docstring") pmt_f64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_f64vector::elements " - -Params: (len)" - -%feature("docstring") pmt_f64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_f64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_f64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_f64vector::pmt_f64vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_f64vector::is_f64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_f64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_f64vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_f64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_f64vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_f64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_integer::pmt_integer " - -Params: (value)" - -%feature("docstring") pmt::pmt_integer::is_number " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_integer::is_integer " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_integer::value " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_notimplemented::pmt_notimplemented " - -Params: (msg, obj)" - - - -%feature("docstring") pmt::pmt_null::pmt_null " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_null::is_null " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_out_of_range::pmt_out_of_range " - -Params: (msg, obj)" - - - -%feature("docstring") pmt::pmt_pair::pmt_pair " - -Params: (car, cdr)" - -%feature("docstring") pmt::pmt_pair::is_pair " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_pair::car " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_pair::cdr " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_pair::set_car " - -Params: (car)" - -%feature("docstring") pmt::pmt_pair::set_cdr " - -Params: (cdr)" - -%feature("docstring") pmt::pmt_pool "very simple thread-safe fixed-size allocation pool - -FIXME may want to go to global allocation with per-thread free list. This would eliminate virtually all lock contention." - -%feature("docstring") pmt::pmt_pool::pmt_pool " - -Params: (itemsize, alignment, allocation_size, max_items)" - -%feature("docstring") pmt::pmt_pool::~pmt_pool " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_pool::malloc " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_pool::free " - -Params: (p)" - - - -%feature("docstring") pmt::pmt_real::pmt_real " - -Params: (value)" - -%feature("docstring") pmt::pmt_real::is_number " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_real::is_real " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_real::value " - -Params: (NONE)" - - - -%feature("docstring") pmt_s16vector::pmt_s16vector " - -Params: (k, fill)" - -%feature("docstring") pmt_s16vector::is_s16vector " - -Params: (NONE)" - -%feature("docstring") pmt_s16vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_s16vector::ref " - -Params: (k)" - -%feature("docstring") pmt_s16vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_s16vector::elements " - -Params: (len)" - -%feature("docstring") pmt_s16vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_s16vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_s16vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_s16vector::pmt_s16vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_s16vector::is_s16vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s16vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s16vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_s16vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_s16vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s16vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s16vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s16vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_s32vector::pmt_s32vector " - -Params: (k, fill)" - -%feature("docstring") pmt_s32vector::is_s32vector " - -Params: (NONE)" - -%feature("docstring") pmt_s32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_s32vector::ref " - -Params: (k)" - -%feature("docstring") pmt_s32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_s32vector::elements " - -Params: (len)" - -%feature("docstring") pmt_s32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_s32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_s32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_s32vector::pmt_s32vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_s32vector::is_s32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s32vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_s32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_s32vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_s64vector::pmt_s64vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_s64vector::is_s64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s64vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_s64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_s64vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_s64vector::pmt_s64vector " - -Params: (k, fill)" - -%feature("docstring") pmt_s64vector::is_s64vector " - -Params: (NONE)" - -%feature("docstring") pmt_s64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_s64vector::ref " - -Params: (k)" - -%feature("docstring") pmt_s64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_s64vector::elements " - -Params: (len)" - -%feature("docstring") pmt_s64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_s64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_s64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_s8vector::pmt_s8vector " - -Params: (k, fill)" - -%feature("docstring") pmt_s8vector::is_s8vector " - -Params: (NONE)" - -%feature("docstring") pmt_s8vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_s8vector::ref " - -Params: (k)" - -%feature("docstring") pmt_s8vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_s8vector::elements " - -Params: (len)" - -%feature("docstring") pmt_s8vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_s8vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_s8vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_s8vector::pmt_s8vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_s8vector::is_s8vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s8vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_s8vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_s8vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_s8vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s8vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s8vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_s8vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_symbol::pmt_symbol " - -Params: (name)" - -%feature("docstring") pmt::pmt_symbol::is_symbol " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_symbol::name " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_symbol::next " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_symbol::set_next " - -Params: (next)" - - - -%feature("docstring") pmt::pmt_tuple::pmt_tuple " - -Params: (len)" - -%feature("docstring") pmt::pmt_tuple::is_tuple " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_tuple::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_tuple::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_tuple::_ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_tuple::_set " - -Params: (k, v)" - - - -%feature("docstring") pmt::pmt_u16vector::pmt_u16vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_u16vector::is_u16vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u16vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u16vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_u16vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_u16vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u16vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u16vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u16vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_u16vector::pmt_u16vector " - -Params: (k, fill)" - -%feature("docstring") pmt_u16vector::is_u16vector " - -Params: (NONE)" - -%feature("docstring") pmt_u16vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_u16vector::ref " - -Params: (k)" - -%feature("docstring") pmt_u16vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_u16vector::elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_u16vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_u32vector::pmt_u32vector " - -Params: (k, fill)" - -%feature("docstring") pmt_u32vector::is_u32vector " - -Params: (NONE)" - -%feature("docstring") pmt_u32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_u32vector::ref " - -Params: (k)" - -%feature("docstring") pmt_u32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_u32vector::elements " - -Params: (len)" - -%feature("docstring") pmt_u32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_u32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_u32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_u32vector::pmt_u32vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_u32vector::is_u32vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u32vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u32vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_u32vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_u32vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u32vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u32vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u32vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_u64vector::pmt_u64vector " - -Params: (k, fill)" - -%feature("docstring") pmt_u64vector::is_u64vector " - -Params: (NONE)" - -%feature("docstring") pmt_u64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_u64vector::ref " - -Params: (k)" - -%feature("docstring") pmt_u64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_u64vector::elements " - -Params: (len)" - -%feature("docstring") pmt_u64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_u64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_u64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_u64vector::pmt_u64vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_u64vector::is_u64vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u64vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u64vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_u64vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_u64vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u64vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u64vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u64vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt_u8vector::pmt_u8vector " - -Params: (k, fill)" - -%feature("docstring") pmt_u8vector::is_u8vector " - -Params: (NONE)" - -%feature("docstring") pmt_u8vector::length " - -Params: (NONE)" - -%feature("docstring") pmt_u8vector::ref " - -Params: (k)" - -%feature("docstring") pmt_u8vector::set " - -Params: (k, x)" - -%feature("docstring") pmt_u8vector::elements " - -Params: (len)" - -%feature("docstring") pmt_u8vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt_u8vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt_u8vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_u8vector::pmt_u8vector " - -Params: (k, fill)" - -%feature("docstring") pmt::pmt_u8vector::is_u8vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u8vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_u8vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_u8vector::set " - -Params: (k, x)" - -%feature("docstring") pmt::pmt_u8vector::elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u8vector::writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u8vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_u8vector::uniform_writable_elements " - -Params: (len)" - - - -%feature("docstring") pmt::pmt_uint64::pmt_uint64 " - -Params: (value)" - -%feature("docstring") pmt::pmt_uint64::is_number " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_uint64::is_uint64 " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_uint64::value " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_uniform_vector::is_uniform_vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_uniform_vector::uniform_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_uniform_vector::uniform_writable_elements " - -Params: (len)" - -%feature("docstring") pmt::pmt_uniform_vector::length " - -Params: (NONE)" - - - -%feature("docstring") pmt::pmt_vector::pmt_vector " - -Params: (len, fill)" - -%feature("docstring") pmt::pmt_vector::is_vector " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_vector::ref " - -Params: (k)" - -%feature("docstring") pmt::pmt_vector::set " - -Params: (k, obj)" - -%feature("docstring") pmt::pmt_vector::fill " - -Params: (fill)" - -%feature("docstring") pmt::pmt_vector::length " - -Params: (NONE)" - -%feature("docstring") pmt::pmt_vector::_ref " - -Params: (k)" - - - -%feature("docstring") pmt::pmt_wrong_type::pmt_wrong_type " - -Params: (msg, obj)" - -%feature("docstring") ppio "abstract class that provides low level access to parallel port bits" - -%feature("docstring") ppio::ppio " - -Params: (NONE)" - -%feature("docstring") ppio::~ppio " - -Params: (NONE)" - -%feature("docstring") ppio::write_data " - -Params: (v)" - -%feature("docstring") ppio::read_data " - -Params: (NONE)" - -%feature("docstring") ppio::write_control " - -Params: (v)" - -%feature("docstring") ppio::read_control " - -Params: (NONE)" - -%feature("docstring") ppio::read_status " - -Params: (NONE)" - -%feature("docstring") ppio::lock " - -Params: (NONE)" - -%feature("docstring") ppio::unlock " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev "access to parallel port bits using the linux ppdev interface" - -%feature("docstring") ppio_ppdev::ppio_ppdev " - -Params: (which)" - -%feature("docstring") ppio_ppdev::~ppio_ppdev " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev::write_data " - -Params: (v)" - -%feature("docstring") ppio_ppdev::read_data " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev::write_control " - -Params: (v)" - -%feature("docstring") ppio_ppdev::read_control " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev::read_status " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev::lock " - -Params: (NONE)" - -%feature("docstring") ppio_ppdev::unlock " - -Params: (NONE)" - -%feature("docstring") std::priority_queue "STL class." - - - -%feature("docstring") psk::psk " - -Params: (gr_constell)" - - - -%feature("docstring") qam::qam " - -Params: (gr_constell)" - -%feature("docstring") sssr::quad_filter "quad filter (used to compute timing error)" - -%feature("docstring") sssr::quad_filter::quad_filter " - -Params: (NONE)" - -%feature("docstring") sssr::quad_filter::reset "called on channel change - -Params: (NONE)" - -%feature("docstring") sssr::quad_filter::update " - -Params: (sample)" - -%feature("docstring") std::queue "STL class." - -%feature("docstring") std::range_error "STL class." - -%feature("docstring") std::wstring::reverse_iterator "STL iterator class." - -%feature("docstring") std::multimap::reverse_iterator "STL iterator class." - -%feature("docstring") std::vector::reverse_iterator "STL iterator class." - -%feature("docstring") std::deque::reverse_iterator "STL iterator class." - -%feature("docstring") std::multiset::reverse_iterator "STL iterator class." - -%feature("docstring") std::basic_string::reverse_iterator "STL iterator class." - -%feature("docstring") std::set::reverse_iterator "STL iterator class." - -%feature("docstring") std::map::reverse_iterator "STL iterator class." - -%feature("docstring") std::list::reverse_iterator "STL iterator class." - -%feature("docstring") std::string::reverse_iterator "STL iterator class." - - - -%feature("docstring") usrp2::ring::inc_read_ind " - -Params: (NONE)" - -%feature("docstring") usrp2::ring::inc_write_ind " - -Params: (NONE)" - -%feature("docstring") usrp2::ring::empty " - -Params: (NONE)" - -%feature("docstring") usrp2::ring::full " - -Params: (NONE)" - -%feature("docstring") usrp2::ring::ring " - -Params: (entries)" - -%feature("docstring") usrp2::ring::wait_for_not_empty " - -Params: (NONE)" - -%feature("docstring") usrp2::ring::enqueue " - -Params: (p, len)" - -%feature("docstring") usrp2::ring::dequeue " - -Params: (p, len)" - -%feature("docstring") std::runtime_error "STL class." - - - -%feature("docstring") rx_16sc_handler::rx_16sc_handler " - -Params: (max_samples, max_quantum, dest)" - -%feature("docstring") rx_16sc_handler::make " - -Params: (max_samples, max_quantum, dest)" - -%feature("docstring") rx_16sc_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. - - - points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. - -Params: (items, nitems, metadata)" - -%feature("docstring") rx_16sc_handler::~rx_16sc_handler " - -Params: (NONE)" - - - -%feature("docstring") rx_32fc_handler::rx_32fc_handler " - -Params: (max_samples, max_quantum, dest)" - -%feature("docstring") rx_32fc_handler::make " - -Params: (max_samples, max_quantum, dest)" - -%feature("docstring") rx_32fc_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. - - - points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. - -Params: (items, nitems, metadata)" - -%feature("docstring") rx_32fc_handler::~rx_32fc_handler " - -Params: (NONE)" - - - -%feature("docstring") usrp2::rx_nop_handler::rx_nop_handler "Constructor - -Params: (max_samples, max_quantum)" - -%feature("docstring") usrp2::rx_nop_handler::~rx_nop_handler "Destructor. Derived classes must implement their own, non-inline destructor. - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::nframes "Returns number of frames this copier was called with. - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::nsamples "Returns actual number of samples copied. - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::max_samples "Returns maximum number of samples that will be copied. - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::has_errored_p "Returns true if an error has occurred. Derived classes must set d_err to true when an error occurs in the () operator - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::has_finished_p "Returns true if this instance has reached the maximum number of samples. - -Params: (NONE)" - -%feature("docstring") usrp2::rx_nop_handler::operator() "Function operator invoked by USRP2 RX API. Derived classes must override this method but then invoke it at the start of their processing. This operator will always be called at least once. - - - points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. - -Params: (items, nitems, metadata)" - -%feature("docstring") usrp2::rx_sample_handler "Abstract function object called to handle received data blocks. - -An object derived from this class is passed to usrp2::rx_samples to process the received frames of samples." - -%feature("docstring") usrp2::rx_sample_handler::~rx_sample_handler " - -Params: (NONE)" - -%feature("docstring") usrp2::rx_sample_handler::operator() "points to the raw sample data received off of the ethernet. The data is packed into big-endian 32-bit unsigned ints for transport, but the actual format of the data is dependent on the current configuration of the USRP2. The most common format is 16-bit I & Q, with I in the top of the 32-bit word. - -This is the general purpose, low level interface and relies on other functions to handle all required endian-swapping and format conversion. - -Params: (items, nitems, metadata)" - - - -%feature("docstring") s_both::s_both " - -Params: (l_node, l_this)" - -%feature("docstring") s_both::~s_both " - -Params: (NONE)" - -%feature("docstring") s_both::node " - -Params: (NONE)" - -%feature("docstring") s_both::This " - -Params: (NONE)" - -%feature("docstring") s_both::set " - -Params: (l_node, l_this)" - - - -%feature("docstring") s_buffer::s_buffer " - -Params: (n_alloc)" - -%feature("docstring") s_buffer::~s_buffer " - -Params: (NONE)" - -%feature("docstring") s_buffer::n_used " - -Params: (NONE)" - -%feature("docstring") s_buffer::n_alloc " - -Params: (NONE)" - -%feature("docstring") s_buffer::buffer " - -Params: (l_buffer, bufLen)" - -%feature("docstring") s_buffer::reset " - -Params: (NONE)" - - - -%feature("docstring") s_node::s_node " - -Params: (l_object, l_prev, l_next)" - -%feature("docstring") s_node::~s_node " - -Params: (NONE)" - -%feature("docstring") s_node::remove " - -Params: (NONE)" - -%feature("docstring") s_node::insert_before " - -Params: (l_next)" - -%feature("docstring") s_node::insert_after " - -Params: (l_prev)" - -%feature("docstring") s_node::object " - -Params: (NONE)" - -%feature("docstring") s_node::available " - -Params: (NONE)" - -%feature("docstring") s_node::set_available " - -Params: (NONE)" - -%feature("docstring") s_node::set_not_available " - -Params: (NONE)" - -%feature("docstring") s_node::next " - -Params: (NONE)" - -%feature("docstring") s_node::prev " - -Params: (NONE)" - -%feature("docstring") s_node::both " - -Params: (NONE)" - -%feature("docstring") sdr_1000_base "Very low level interface to SDR 1000 xcvr hardware." - -%feature("docstring") sdr_1000_base::sdr_1000_base " - -Params: (which_pp)" - -%feature("docstring") sdr_1000_base::~sdr_1000_base " - -Params: (NONE)" - -%feature("docstring") sdr_1000_base::reset " - -Params: (NONE)" - -%feature("docstring") sdr_1000_base::write_latch " - -Params: (which, value, mask)" - -%feature("docstring") sssr::seg_sync_integrator "segment sync integrator" - -%feature("docstring") sssr::seg_sync_integrator::seg_sync_integrator " - -Params: (NONE)" - -%feature("docstring") sssr::seg_sync_integrator::reset "called on channel change - -Params: (NONE)" - -%feature("docstring") sssr::seg_sync_integrator::update "update current tap with weight and return integrated correlation value - -Params: (weight, index)" - -%feature("docstring") sssr::seg_sync_integrator::find_max "return index of maximum correlation value - -Params: (value)" - -%feature("docstring") std::set "STL class." - -%feature("docstring") boost::shared_ptr "shared_ptr documentation stub - -An enhanced relative of scoped_ptr with reference counted copy semantics. The object pointed to is deleted when the last shared_ptr pointing to it is destroyed or reset." - - - -%feature("docstring") atsci_sliding_correlator::shift_reg::shift_reg " - -Params: (NONE)" - -%feature("docstring") atsci_sliding_correlator::shift_reg::reset " - -Params: (NONE)" - -%feature("docstring") atsci_sliding_correlator::shift_reg::shift_in " - -Params: (bit)" - - - -%feature("docstring") std::stack "STL class." - -%feature("docstring") std::string "STL class." - -%feature("docstring") std::stringstream "STL class." - - - -%feature("docstring") gruel::thread_body_wrapper::thread_body_wrapper " - -Params: (f, name)" - -%feature("docstring") gruel::thread_body_wrapper::operator() " - -Params: (NONE)" - - - -%feature("docstring") gruel::thread_group::thread_group " - -Params: (NONE)" - -%feature("docstring") gruel::thread_group::~thread_group " - -Params: (NONE)" - -%feature("docstring") gruel::thread_group::create_thread " - -Params: (threadfunc)" - -%feature("docstring") gruel::thread_group::add_thread " - -Params: (thrd)" - -%feature("docstring") gruel::thread_group::remove_thread " - -Params: (thrd)" - -%feature("docstring") gruel::thread_group::join_all " - -Params: (NONE)" - -%feature("docstring") gruel::thread_group::interrupt_all " - -Params: (NONE)" - -%feature("docstring") gruel::thread_group::size " - -Params: (NONE)" - - - -%feature("docstring") usrp2::tune_result::tune_result " - -Params: (baseband, dxc, residual, inverted)" - - - -%feature("docstring") uhd_multi_usrp_sink::uhd_multi_usrp_sink "Set the IO signature for this block. - -Params: (sig)" - -%feature("docstring") uhd_multi_usrp_sink::set_subdev_spec "Set the subdevice specification. - -Params: (spec, mboard)" - -%feature("docstring") uhd_multi_usrp_sink::set_samp_rate "Set the sample rate for the usrp device. - -Params: (rate)" - -%feature("docstring") uhd_multi_usrp_sink::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. - -Params: ()" - -%feature("docstring") uhd_multi_usrp_sink::set_center_freq "Tune the usrp device to the desired center frequency. - -Params: (tune_request, chan)" - -%feature("docstring") uhd_multi_usrp_sink::get_freq_range "Get the tunable frequency range. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_sink::set_gain "Set the gain for the dboard. - -Params: (gain, chan)" - -%feature("docstring") uhd_multi_usrp_sink::get_gain "Get the actual dboard gain setting. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_sink::get_gain_range "Get the settable gain range. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_sink::set_antenna "Set the antenna to use. - -Params: (ant, chan)" - -%feature("docstring") uhd_multi_usrp_sink::get_antenna "Get the antenna in use. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_sink::get_antennas "Get a list of possible antennas. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_sink::set_bandwidth "Set the subdevice bandpass filter. - -Params: (bandwidth, chan)" - -%feature("docstring") uhd_multi_usrp_sink::set_clock_config "Set the clock configuration. - -Params: (clock_config, mboard)" - -%feature("docstring") uhd_multi_usrp_sink::get_time_now "Get the current time registers. - -Params: ()" - -%feature("docstring") uhd_multi_usrp_sink::set_time_next_pps "Set the time registers at the next pps. - -Params: (time_spec)" - -%feature("docstring") uhd_multi_usrp_sink::set_time_unknown_pps "Sync the time registers with an unknown pps edge. - -Params: (time_spec)" - -%feature("docstring") uhd_multi_usrp_sink::get_device "Get access to the underlying uhd device object. - -Params: ()" - - - -%feature("docstring") uhd_multi_usrp_source::uhd_multi_usrp_source "Set the IO signature for this block. - -Params: (sig)" - -%feature("docstring") uhd_multi_usrp_source::set_subdev_spec "Set the subdevice specification. - -Params: (spec, mboard)" - -%feature("docstring") uhd_multi_usrp_source::set_samp_rate "Set the sample rate for the usrp device. - -Params: (rate)" - -%feature("docstring") uhd_multi_usrp_source::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. - -Params: ()" - -%feature("docstring") uhd_multi_usrp_source::set_center_freq "Tune the usrp device to the desired center frequency. - -Params: (tune_request, chan)" - -%feature("docstring") uhd_multi_usrp_source::get_freq_range "Get the tunable frequency range. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_source::set_gain "Set the gain for the dboard. - -Params: (gain, chan)" - -%feature("docstring") uhd_multi_usrp_source::get_gain "Get the actual dboard gain setting. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_source::get_gain_range "Get the settable gain range. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_source::set_antenna "Set the antenna to use. - -Params: (ant, chan)" - -%feature("docstring") uhd_multi_usrp_source::get_antenna "Get the antenna in use. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_source::get_antennas "Get a list of possible antennas. - -Params: (chan)" - -%feature("docstring") uhd_multi_usrp_source::set_bandwidth "Set the subdevice bandpass filter. - -Params: (bandwidth, chan)" - -%feature("docstring") uhd_multi_usrp_source::set_clock_config "Set the clock configuration. - -Params: (clock_config, mboard)" - -%feature("docstring") uhd_multi_usrp_source::get_time_now "Get the current time registers. - -Params: ()" - -%feature("docstring") uhd_multi_usrp_source::set_time_next_pps "Set the time registers at the next pps. - -Params: (time_spec)" - -%feature("docstring") uhd_multi_usrp_source::set_time_unknown_pps "Sync the time registers with an unknown pps edge. - -Params: (time_spec)" - -%feature("docstring") uhd_multi_usrp_source::get_device "Get access to the underlying uhd device object. - -Params: ()" - - - -%feature("docstring") uhd_single_usrp_sink::uhd_single_usrp_sink "Set the IO signature for this block. - -Params: (sig)" - -%feature("docstring") uhd_single_usrp_sink::set_subdev_spec "Set the subdevice specification. - -Params: (spec)" - -%feature("docstring") uhd_single_usrp_sink::set_samp_rate "Set the sample rate for the usrp device. - -Params: (rate)" - -%feature("docstring") uhd_single_usrp_sink::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. - -Params: ()" - -%feature("docstring") uhd_single_usrp_sink::set_center_freq "Tune the usrp device to the desired center frequency. - -Params: (tune_request, chan)" - -%feature("docstring") uhd_single_usrp_sink::get_freq_range "Get the tunable frequency range. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_sink::set_gain "Set the gain for the dboard. - -Params: (gain, chan)" - -%feature("docstring") uhd_single_usrp_sink::get_gain "Get the actual dboard gain setting. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_sink::get_gain_range "Get the settable gain range. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_sink::set_antenna "Set the antenna to use. - -Params: (ant, chan)" - -%feature("docstring") uhd_single_usrp_sink::get_antenna "Get the antenna in use. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_sink::get_antennas "Get a list of possible antennas. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_sink::set_bandwidth "Set the subdevice bandpass filter. - -Params: (bandwidth, chan)" - -%feature("docstring") uhd_single_usrp_sink::set_clock_config "Set the clock configuration. - -Params: (clock_config)" - -%feature("docstring") uhd_single_usrp_sink::get_time_now "Get the current time registers. - -Params: ()" - -%feature("docstring") uhd_single_usrp_sink::set_time_now "Set the time registers asap. - -Params: (time_spec)" - -%feature("docstring") uhd_single_usrp_sink::set_time_next_pps "Set the time registers at the next pps. - -Params: (time_spec)" - -%feature("docstring") uhd_single_usrp_sink::get_device "Get access to the underlying uhd device object. - -Params: ()" - - - -%feature("docstring") uhd_single_usrp_source::uhd_single_usrp_source "Set the IO signature for this block. - -Params: (sig)" - -%feature("docstring") uhd_single_usrp_source::set_subdev_spec "Set the subdevice specification. - -Params: (spec)" - -%feature("docstring") uhd_single_usrp_source::set_samp_rate "Set the sample rate for the usrp device. - -Params: (rate)" - -%feature("docstring") uhd_single_usrp_source::get_samp_rate "Get the sample rate for the usrp device. This is the actual sample rate and may differ from the rate set. - -Params: ()" - -%feature("docstring") uhd_single_usrp_source::set_center_freq "Tune the usrp device to the desired center frequency. - -Params: (tune_request, chan)" - -%feature("docstring") uhd_single_usrp_source::get_freq_range "Get the tunable frequency range. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_source::set_gain "Set the gain for the dboard. - -Params: (gain, chan)" - -%feature("docstring") uhd_single_usrp_source::get_gain "Get the actual dboard gain setting. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_source::get_gain_range "Get the settable gain range. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_source::set_antenna "Set the antenna to use. - -Params: (ant, chan)" - -%feature("docstring") uhd_single_usrp_source::get_antenna "Get the antenna in use. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_source::get_antennas "Get a list of possible antennas. - -Params: (chan)" - -%feature("docstring") uhd_single_usrp_source::set_bandwidth "Set the subdevice bandpass filter. - -Params: (bandwidth, chan)" - -%feature("docstring") uhd_single_usrp_source::set_clock_config "Set the clock configuration. - -Params: (clock_config)" - -%feature("docstring") uhd_single_usrp_source::get_time_now "Get the current time registers. - -Params: ()" - -%feature("docstring") uhd_single_usrp_source::set_time_now "Set the time registers asap. - -Params: (time_spec)" - -%feature("docstring") uhd_single_usrp_source::set_time_next_pps "Set the time registers at the next pps. - -Params: (time_spec)" - -%feature("docstring") uhd_single_usrp_source::get_device "Get access to the underlying uhd device object. - -Params: ()" - -%feature("docstring") std::underflow_error "STL class." - -%feature("docstring") usrp2::usrp2 "standard C++ interface to USRP2" - -%feature("docstring") usrp2::usrp2::make "Static function to return an instance of usrp2 as a shared pointer - -Params: (ifc, addr, rx_bufsize)" - -%feature("docstring") usrp2::usrp2::~usrp2 "Class destructor - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::mac_addr "Returns the MAC address associated with this USRP - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::interface_name "Returns the GbE interface name associated with this USRP - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_rx_antenna "Set the rx antenna - -Params: (ant)" - -%feature("docstring") usrp2::usrp2::set_rx_gain "Set receiver gain - -Params: (gain)" - -%feature("docstring") usrp2::usrp2::rx_gain_min "return minimum Rx gain - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::rx_gain_max "return maximum Rx gain - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::rx_gain_db_per_step "return Rx gain db_per_step - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_rx_lo_offset "Set receive daughterboard LO offset frequency. - -Params: (frequency)" - -%feature("docstring") usrp2::usrp2::set_rx_center_freq "Set receiver center frequency - -Params: (frequency, result)" - -%feature("docstring") usrp2::usrp2::rx_freq_min "return minimum Rx center frequency - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::rx_freq_max "return maximum Rx center frequency - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_rx_decim "Set receiver sample rate decimation - -Params: (decimation_factor)" - -%feature("docstring") usrp2::usrp2::rx_decim "Return current decimation factor. - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_rx_scale_iq "Set receiver IQ magnitude scaling - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::start_rx_streaming "Set received sample format - -domain: complex or real type: floating, fixed point, or raw depth: bits per sample - -Sets format over the wire for samples from USRP2. - -Start streaming receive mode. USRP2 will send a continuous stream of DSP pipeline samples to host. Call rx_samples(...) to access. - -Params: (channel, items_per_frame)" - -%feature("docstring") usrp2::usrp2::start_rx_streaming_at "Start streaming receive mode at specified timestamp. USRP2 will send a continuous stream of DSP pipeline samples to host. Call rx_samples(...) to access. - -Params: (channel, items_per_frame, time)" - -%feature("docstring") usrp2::usrp2::sync_and_start_rx_streaming_at "Sync to PPS and start streaming receive mode at specified timestamp. Just like calling sync_to_pps() and start_rx_streaming_at(). - -Params: (channel, items_per_frame, time)" - -%feature("docstring") usrp2::usrp2::stop_rx_streaming "Stop streaming receive mode. - -Params: (channel)" - -%feature("docstring") usrp2::usrp2::rx_samples "Receive data from the specified channel This method is used to receive all data: streaming or discrete. - -Params: (channel, handler)" - -%feature("docstring") usrp2::usrp2::rx_overruns "Returns number of times receive overruns have occurred - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::rx_missing "Returns total number of missing frames from overruns. - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_tx_antenna "Set the tx antenna - -Params: (ant)" - -%feature("docstring") usrp2::usrp2::set_tx_gain "Set transmitter gain - -Params: (gain)" - -%feature("docstring") usrp2::usrp2::tx_gain_min "return minimum Tx gain - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::tx_gain_max "return maximum Tx gain - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::tx_gain_db_per_step "return Tx gain db_per_step - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_tx_lo_offset " - -Params: (frequency)" - -%feature("docstring") usrp2::usrp2::set_tx_center_freq "Set transmitter center frequency - -Params: (frequency, result)" - -%feature("docstring") usrp2::usrp2::tx_freq_min "return minimum Tx center frequency - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::tx_freq_max "return maximum Tx center frequency - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::set_tx_interp "Set transmitter sample rate interpolation - -Params: (interpolation_factor)" - -%feature("docstring") usrp2::usrp2::tx_interp "Return current interpolation factor. - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::default_tx_scale_iq " - -Params: (interpolation_factor, scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::set_tx_scale_iq "Set transmit IQ magnitude scaling - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2::usrp2::tx_32fc "transmit complex samples to USRP2 - -Set transmit sample format - -domain: complex or real type: floating, fixed point, or raw depth: bits per sample - -Sets format over the wire for samples to USRP2. - - -The complex samples are converted to the appropriate \"on the wire\" representation, depending on the current USRP2 configuration. Typically, this is big-endian 16-bit I & Q. - -Params: (channel, samples, nsamples, metadata)" - -%feature("docstring") usrp2::usrp2::tx_16sc "transmit complex samples to USRP2 - -The complex samples are converted to the appropriate \"on the wire\" representation, depending on the current USRP2 configuration. Typically, this is big-endian 16-bit I & Q. - -Params: (channel, samples, nsamples, metadata)" - -%feature("docstring") usrp2::usrp2::tx_raw "transmit raw uint32_t data items to USRP2 - -The caller is responsible for ensuring that the items are formatted appropriately for the USRP2 and its configuration. This method is used primarily by the system itself. Users should call tx_32fc or tx_16sc instead. - -Params: (channel, items, nitems, metadata)" - -%feature("docstring") usrp2::usrp2::config_mimo "MIMO configuration. - -Params: (flags)" - -%feature("docstring") usrp2::usrp2::fpga_master_clock_freq "Get frequency of master oscillator in Hz. - -Params: (freq)" - -%feature("docstring") usrp2::usrp2::adc_rate " - -Params: (rate)" - -%feature("docstring") usrp2::usrp2::dac_rate " - -Params: (rate)" - -%feature("docstring") usrp2::usrp2::tx_daughterboard_id "Get Tx daughterboard ID. - -daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. - -Params: (dbid)" - -%feature("docstring") usrp2::usrp2::rx_daughterboard_id "Get Rx daughterboard ID. - -daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. - -Params: (dbid)" - -%feature("docstring") usrp2::usrp2::burn_mac_addr "Burn new mac address into EEPROM on USRP2 - -Params: (new_addr)" - -%feature("docstring") usrp2::usrp2::sync_to_pps "Reset master time to 0 at next PPS edge - -Params: (NONE)" - -%feature("docstring") usrp2::usrp2::sync_every_pps "Reset master time to 0 at every PPS edge - -Params: (enable)" - -%feature("docstring") usrp2::usrp2::peek32 "Read memory from Wishbone bus as 32-bit words. Handles endian swapping if needed. - - - -WARNING: Attempts to read memory from addresses that do not correspond to RAM or memory-mapped peripherals may cause the USRP2 to hang, requiring a power cycle. - -Params: (addr, words)" - -%feature("docstring") usrp2::usrp2::poke32 "Write memory to Wishbone bus as 32-bit words. Handles endian swapping if needed. - - - -WARNING: Attempts to read memory from addresses that do not correspond to RAM or memory-mapped peripherals may cause the USRP2 to hang, requiring a power cycle. - -Params: (addr, data)" - -%feature("docstring") usrp2::usrp2::set_gpio_ddr "Set daughterboard GPIO data direction register. - - - -WARNING: Improper usage of this function may result in damage to the USRP2 - -Params: (bank, value, mask)" - -%feature("docstring") usrp2::usrp2::set_gpio_sels "Set daughterboard GPIO output selection register. For those GPIO pins that are configured as outputs in the DDR, this settings configures the source of the pin value. - - - -WARNING: Improper usage of this function may result in damage to the USRP2 - -Params: (bank, sels)" - -%feature("docstring") usrp2::usrp2::write_gpio "Set daughterboard GPIO pin values. - - - -WARNING: Improper usage of this function may result in damage to the USRP2 - -Params: (bank, value, mask)" - -%feature("docstring") usrp2::usrp2::read_gpio "Read daughterboard GPIO pin values - -Params: (bank, value)" - -%feature("docstring") usrp2::usrp2::enable_gpio_streaming "Set GPIO streaming mode - -Individually enables streaming GPIO pins through LSBs of DSP samples. - -On receive, io_rx[15] replaces I[0], io_rx[14] replaces Q[0] On transmit, I[0] maps to io_tx[15], Q[0] maps to io_tx[14] (Transmit streaming is not yet implemented.) - -The selected GPIO pins must have been set as inputs or outputs and, for transmit, set to software control. - -When enabled, the replaced DSP sample LSBs become 0. - - - -WARNING: Improper usage of this function may result in damage to the USRP2 - -Params: (bank, enable)" - -%feature("docstring") usrp2::usrp2::find_existing_or_make_new " - -Params: (ifc, p, rx_bufsize)" - -%feature("docstring") usrp2::usrp2::usrp2 " - -Params: (ifc, p, rx_bufsize)" - -%feature("docstring") usrp2_base "Base class for all USRP2 blocks" - -%feature("docstring") usrp2_base::usrp2_base " - -Params: (name, input_signature, output_signature, ifc, mac)" - -%feature("docstring") usrp2_base::~usrp2_base " - -Params: (NONE)" - -%feature("docstring") usrp2_base::mac_addr "Get USRP2 hardware MAC address. - -Params: (NONE)" - -%feature("docstring") usrp2_base::interface_name "Get interface name used to communicat with USRP2. - -Params: (NONE)" - -%feature("docstring") usrp2_base::fpga_master_clock_freq "Get USRP2 master clock rate. - -Params: (freq)" - -%feature("docstring") usrp2_base::config_mimo "MIMO configuration. - -Params: (flags)" - -%feature("docstring") usrp2_base::sync_to_pps "Set master time to 0 at next PPS rising edge. - -Params: (NONE)" - -%feature("docstring") usrp2_base::sync_every_pps "Reset master time to 0 at every PPS edge - -Params: (enable)" - -%feature("docstring") usrp2_base::peek32 "Read memory from Wishbone bus as words. - -Params: (addr, words)" - -%feature("docstring") usrp2_base::poke32 "Write memory to Wishbone bus as words. - -Params: (addr, data)" - -%feature("docstring") usrp2_base::start "Called by scheduler when starting flowgraph. - -Params: (NONE)" - -%feature("docstring") usrp2_base::stop "Called by scheduler when stopping flowgraph. - -Params: (NONE)" - -%feature("docstring") usrp2_base::work "Derived class must override this. - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp2_sink_base "Base class for all USRP2 transmit blocks" - -%feature("docstring") usrp2_sink_base::usrp2_sink_base " - -Params: (name, input_signature, ifc, mac)" - -%feature("docstring") usrp2_sink_base::~usrp2_sink_base " - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::set_antenna "Set antenna. - -Params: (ant)" - -%feature("docstring") usrp2_sink_base::set_gain "Set transmitter gain. - -Params: (gain)" - -%feature("docstring") usrp2_sink_base::set_lo_offset "Set transmitter LO offset frequency. - -Params: (frequency)" - -%feature("docstring") usrp2_sink_base::set_center_freq "Set transmitter center frequency. - -Params: (frequency, tr)" - -%feature("docstring") usrp2_sink_base::set_interp "Set transmit interpolation rate. - -Params: (interp_factor)" - -%feature("docstring") usrp2_sink_base::default_scale_iq "Calculate default scale_iq for given interpolation factor. - -Params: (interpolation_factor, scale_i, scale_q)" - -%feature("docstring") usrp2_sink_base::set_scale_iq "Set transmit IQ scale factors. - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2_sink_base::interp "Get transmit interpolation rate. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::dac_rate "Get DAC sample rate in Hz. - -Params: (rate)" - -%feature("docstring") usrp2_sink_base::gain_min "Returns minimum Tx gain. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::gain_max "Returns maximum Tx gain. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::gain_db_per_step "Returns Tx gain db_per_step. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::freq_min "Returns minimum Tx center frequency. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::freq_max "Returns maximum Tx center frequency. - -Params: (NONE)" - -%feature("docstring") usrp2_sink_base::daughterboard_id "Get Tx daughterboard ID. - -daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. - -Params: (dbid)" - -%feature("docstring") usrp2_sink_base::set_gpio_ddr "Set daughterboard GPIO data direction register. - -Params: (value, mask)" - -%feature("docstring") usrp2_sink_base::set_gpio_sels "Set daughterboard GPIO output selection register. - -Params: (sels)" - -%feature("docstring") usrp2_sink_base::write_gpio "Set daughterboard GPIO pin values. - -Params: (value, mask)" - -%feature("docstring") usrp2_sink_base::read_gpio "Read daughterboard GPIO pin values. - -Params: (value)" - -%feature("docstring") usrp2_sink_base::start_streaming_at "First samples begin streaming to USRP2 at given time. - -Params: (time)" - -%feature("docstring") usrp2_source_base "Base class for all USRP2 source blocks" - -%feature("docstring") usrp2_source_base::usrp2_source_base " - -Params: (name, output_signature, ifc, mac)" - -%feature("docstring") usrp2_source_base::~usrp2_source_base " - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::set_antenna "Set antenna. - -Params: (ant)" - -%feature("docstring") usrp2_source_base::set_gain "Set receiver gain. - -Params: (gain)" - -%feature("docstring") usrp2_source_base::set_lo_offset "Set receive LO offset frequency. - -Params: (frequency)" - -%feature("docstring") usrp2_source_base::set_center_freq "Set receiver center frequency. - -Params: (frequency, tr)" - -%feature("docstring") usrp2_source_base::set_decim "Set receive decimation rate. - -Params: (decimation_factor)" - -%feature("docstring") usrp2_source_base::set_scale_iq "Set receive IQ scale factors. - -Params: (scale_i, scale_q)" - -%feature("docstring") usrp2_source_base::decim "Get receive decimation rate. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::adc_rate "Get the ADC sample rate. - -Params: (rate)" - -%feature("docstring") usrp2_source_base::gain_min "Returns minimum Rx gain. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::gain_max "Returns maximum Rx gain. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::gain_db_per_step "Returns Rx gain db_per_step. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::freq_min "Returns minimum Rx center frequency. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::freq_max "Returns maximum Rx center frequency. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::daughterboard_id "Get Rx daughterboard ID. - -daughterboard id >= 0 if successful, -1 if no daugherboard installed, -2 if invalid EEPROM on daughterboard. - -Params: (dbid)" - -%feature("docstring") usrp2_source_base::overruns "Returns number of receiver overruns. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::missing "Returns number of missing sequence numbers. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::start "Called by scheduler when starting flowgraph. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::stop "Called by scheduler when stopping flowgraph. - -Params: (NONE)" - -%feature("docstring") usrp2_source_base::set_gpio_ddr "Set daughterboard GPIO data direction register. - -Params: (value, mask)" - -%feature("docstring") usrp2_source_base::set_gpio_sels "Set daughterboard GPIO output selection register. - -Params: (sels)" - -%feature("docstring") usrp2_source_base::write_gpio "Set daughterboard GPIO pin values. - -Params: (value, mask)" - -%feature("docstring") usrp2_source_base::read_gpio "Read daughterboard GPIO pin values. - -Params: (value)" - -%feature("docstring") usrp2_source_base::enable_gpio_streaming "Enable streaming GPIO in sample LSBs. - -Params: (enable)" - -%feature("docstring") usrp_base "base class for GNU Radio interface to the USRP" - -%feature("docstring") usrp_base::usrp_base " - -Params: (name, input_signature, output_signature)" - -%feature("docstring") usrp_base::set_usrp_basic " - -Params: (u)" - -%feature("docstring") usrp_base::~usrp_base " - -Params: (NONE)" - -%feature("docstring") usrp_base::db " - -Params: (NONE)" - -%feature("docstring") usrp_base::selected_subdev "given a usrp_subdev_spec, return the corresponding daughterboard object. - -Params: (ss)" - -%feature("docstring") usrp_base::fpga_master_clock_freq "return frequency of master oscillator on USRP - -Params: (NONE)" - -%feature("docstring") usrp_base::set_fpga_master_clock_freq "Tell API that the master oscillator on the USRP is operating at a non-standard fixed frequency. This is only needed for custom USRP hardware modified to operate at a different frequency from the default factory configuration. This function must be called prior to any other API function. - -Params: (master_clock)" - -%feature("docstring") usrp_base::set_verbose " - -Params: (on)" - -%feature("docstring") usrp_base::write_eeprom "Write EEPROM on motherboard or any daughterboard. - -Params: (i2c_addr, eeprom_offset, buf)" - -%feature("docstring") usrp_base::read_eeprom "Read EEPROM on motherboard or any daughterboard. - -Params: (i2c_addr, eeprom_offset, len)" - -%feature("docstring") usrp_base::write_i2c "Write to I2C peripheral. - -Params: (i2c_addr, buf)" - -%feature("docstring") usrp_base::read_i2c "Read from I2C peripheral. - -Params: (i2c_addr, len)" - -%feature("docstring") usrp_base::set_adc_offset "Set ADC offset correction. - -Params: (which_adc, offset)" - -%feature("docstring") usrp_base::set_dac_offset "Set DAC offset correction. - -Params: (which_dac, offset, offset_pin)" - -%feature("docstring") usrp_base::set_adc_buffer_bypass "Control ADC input buffer. - -Params: (which_adc, bypass)" - -%feature("docstring") usrp_base::set_dc_offset_cl_enable "Enable/disable automatic DC offset removal control loop in FPGA. - -If the corresponding bit is set, enable the automatic DC offset correction control loop. - - - - - -By default the control loop is enabled on all ADC's. - -Params: (bits, mask)" - -%feature("docstring") usrp_base::serial_number "return the usrp's serial number. - -Params: (NONE)" - -%feature("docstring") usrp_base::daughterboard_id "Return daughterboard ID for given side [0,1]. - -Params: (which_side)" - -%feature("docstring") usrp_base::write_atr_tx_delay "Clock ticks to delay rising of T/R signal. - -Params: (value)" - -%feature("docstring") usrp_base::write_atr_rx_delay "Clock ticks to delay falling edge of T/R signal. - -Params: (value)" - -%feature("docstring") usrp_base::set_pga "Set Programmable Gain Amplifier (PGA). - -gain is rounded to closest setting supported by hardware. - -Params: (which_amp, gain_in_db)" - -%feature("docstring") usrp_base::pga "Return programmable gain amplifier gain setting in dB. - -Params: (which_amp)" - -%feature("docstring") usrp_base::pga_min "Return minimum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_base::pga_max "Return maximum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_base::pga_db_per_step "Return hardware step size of PGA (linear in dB). - -Params: (NONE)" - -%feature("docstring") usrp_base::_write_oe "Write direction register (output enables) for pins that go to daughterboard. - -Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. - -This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_base::write_io "Write daughterboard i/o pin value. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_base::read_io "Read daughterboard i/o pin value. - -Params: (which_side)" - -%feature("docstring") usrp_base::write_refclk "Write daughterboard refclk config register. - -Params: (which_side, value)" - -%feature("docstring") usrp_base::write_atr_mask " - -Params: (which_side, value)" - -%feature("docstring") usrp_base::write_atr_txval " - -Params: (which_side, value)" - -%feature("docstring") usrp_base::write_atr_rxval " - -Params: (which_side, value)" - -%feature("docstring") usrp_base::write_aux_dac "Write auxiliary digital to analog converter. - -Params: (which_side, which_dac, value)" - -%feature("docstring") usrp_base::read_aux_adc "Read auxiliary analog to digital converter. - -Params: (which_side, which_adc)" - -%feature("docstring") usrp_base::converter_rate "returns A/D or D/A converter rate in Hz - -Params: (NONE)" - -%feature("docstring") usrp_base::_set_led " - -Params: (which_led, on)" - -%feature("docstring") usrp_base::_write_fpga_reg "Write FPGA register. - -Params: (regno, value)" - -%feature("docstring") usrp_base::_read_fpga_reg "Read FPGA register. - -Params: (regno, value)" - -%feature("docstring") usrp_base::_write_fpga_reg_masked "Write FPGA register with mask. - -Params: (regno, value, mask)" - -%feature("docstring") usrp_base::_write_9862 "Write AD9862 register. - -Params: (which_codec, regno, value)" - -%feature("docstring") usrp_base::_read_9862 "Read AD9862 register. - -Params: (which_codec, regno)" - -%feature("docstring") usrp_base::_write_spi "Write data to SPI bus peripheral. - -If specifies that optional_header bytes are present, they are written to the peripheral immediately prior to writing . - -Params: (optional_header, enables, format, buf)" - -%feature("docstring") usrp_base::_read_spi " - -Params: (optional_header, enables, format, len)" - -%feature("docstring") usrp_base::pick_subdev "Return an existing daughterboard from list of candidate dbids, or the first found on side A or side B. - - -Throws std::runtime_error if not found - -Params: (candidates)" - -%feature("docstring") usrp_basic "abstract base class for usrp operations" - -%feature("docstring") usrp_basic::shutdown_daughterboards " - -Params: (NONE)" - -%feature("docstring") usrp_basic::init_db " - -Params: (u)" - -%feature("docstring") usrp_basic::usrp_basic " - -Params: (which_board, open_interface, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_basic::set_usb_data_rate "advise usrp_basic of usb data rate (bytes/sec) - -N.B., this doesn't tweak any hardware. Derived classes should call this to inform us of the data rate whenever it's first set or if it changes. - -Params: (usb_data_rate)" - -%feature("docstring") usrp_basic::_write_aux_dac "Write auxiliary digital to analog converter. - -Params: (slot, which_dac, value)" - -%feature("docstring") usrp_basic::_read_aux_adc "Read auxiliary analog to digital converter. - -Params: (slot, which_adc, value)" - -%feature("docstring") usrp_basic::~usrp_basic " - -Params: (NONE)" - -%feature("docstring") usrp_basic::db "Return a vector of vectors that contain shared pointers to the daughterboard instance(s) associated with the specified side. - -It is an error to use the returned objects after the usrp_basic object has been destroyed. - -Params: (NONE)" - -%feature("docstring") usrp_basic::is_valid "is the subdev_spec valid? - -Params: (ss)" - -%feature("docstring") usrp_basic::selected_subdev "given a subdev_spec, return the corresponding daughterboard object. - -Params: (ss)" - -%feature("docstring") usrp_basic::fpga_master_clock_freq "return frequency of master oscillator on USRP - -Params: (NONE)" - -%feature("docstring") usrp_basic::set_fpga_master_clock_freq "Tell API that the master oscillator on the USRP is operating at a non-standard fixed frequency. This is only needed for custom USRP hardware modified to operate at a different frequency from the default factory configuration. This function must be called prior to any other API function. - -Params: (master_clock)" - -%feature("docstring") usrp_basic::usb_data_rate " - -Params: (NONE)" - -%feature("docstring") usrp_basic::set_verbose " - -Params: (on)" - -%feature("docstring") usrp_basic::write_eeprom "Write EEPROM on motherboard or any daughterboard. - -Params: (i2c_addr, eeprom_offset, buf)" - -%feature("docstring") usrp_basic::read_eeprom "Read EEPROM on motherboard or any daughterboard. - -Params: (i2c_addr, eeprom_offset, len)" - -%feature("docstring") usrp_basic::write_i2c "Write to I2C peripheral. - -Params: (i2c_addr, buf)" - -%feature("docstring") usrp_basic::read_i2c "Read from I2C peripheral. - -Params: (i2c_addr, len)" - -%feature("docstring") usrp_basic::set_adc_offset "Set ADC offset correction. - -Params: (which_adc, offset)" - -%feature("docstring") usrp_basic::set_dac_offset "Set DAC offset correction. - -Params: (which_dac, offset, offset_pin)" - -%feature("docstring") usrp_basic::set_adc_buffer_bypass "Control ADC input buffer. - -Params: (which_adc, bypass)" - -%feature("docstring") usrp_basic::set_dc_offset_cl_enable "Enable/disable automatic DC offset removal control loop in FPGA. - -If the corresponding bit is set, enable the automatic DC offset correction control loop. - - - - - -By default the control loop is enabled on all ADC's. - -Params: (bits, mask)" - -%feature("docstring") usrp_basic::serial_number "return the usrp's serial number. - -Params: (NONE)" - -%feature("docstring") usrp_basic::daughterboard_id "Return daughterboard ID for given side [0,1]. - -Params: (which_side)" - -%feature("docstring") usrp_basic::write_atr_tx_delay "Clock ticks to delay rising of T/R signal. - -Params: (value)" - -%feature("docstring") usrp_basic::write_atr_rx_delay "Clock ticks to delay falling edge of T/R signal. - -Params: (value)" - -%feature("docstring") usrp_basic::common_set_pga "Set Programmable Gain Amplifier(PGA). - -gain is rounded to closest setting supported by hardware. - -Params: (txrx, which_amp, gain_in_db)" - -%feature("docstring") usrp_basic::common_pga "Return programmable gain amplifier gain setting in dB. - -Params: (txrx, which_amp)" - -%feature("docstring") usrp_basic::common_pga_min "Return minimum legal PGA gain in dB. - -Params: (txrx)" - -%feature("docstring") usrp_basic::common_pga_max "Return maximum legal PGA gain in dB. - -Params: (txrx)" - -%feature("docstring") usrp_basic::common_pga_db_per_step "Return hardware step size of PGA(linear in dB). - -Params: (txrx)" - -%feature("docstring") usrp_basic::_common_write_oe "Write direction register(output enables) for pins that go to daughterboard. - -Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. - -This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. - -Params: (txrx, which_side, value, mask)" - -%feature("docstring") usrp_basic::common_write_io "Write daughterboard i/o pin value. - -Params: (txrx, which_side, value, mask)" - -%feature("docstring") usrp_basic::common_read_io "Read daughterboard i/o pin value. - -Params: (txrx, which_side, value)" - -%feature("docstring") usrp_basic::common_write_refclk "Write daughterboard refclk config register. - -Params: (txrx, which_side, value)" - -%feature("docstring") usrp_basic::common_write_atr_mask "Automatic Transmit/Receive switching. - -Params: (txrx, which_side, value)" - -%feature("docstring") usrp_basic::common_write_atr_txval " - -Params: (txrx, which_side, value)" - -%feature("docstring") usrp_basic::common_write_atr_rxval " - -Params: (txrx, which_side, value)" - -%feature("docstring") usrp_basic::common_write_aux_dac "Write auxiliary digital to analog converter. - -Params: (txrx, which_side, which_dac, value)" - -%feature("docstring") usrp_basic::common_read_aux_adc "Read auxiliary analog to digital converter. - -Params: (txrx, which_side, which_adc, value)" - -%feature("docstring") usrp_basic::set_pga "Set Programmable Gain Amplifier (PGA). - -gain is rounded to closest setting supported by hardware. - -Params: (which_amp, gain_in_db)" - -%feature("docstring") usrp_basic::pga "Return programmable gain amplifier gain setting in dB. - -Params: (which_amp)" - -%feature("docstring") usrp_basic::pga_min "Return minimum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic::pga_max "Return maximum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic::pga_db_per_step "Return hardware step size of PGA (linear in dB). - -Params: (NONE)" - -%feature("docstring") usrp_basic::_write_oe "Write direction register (output enables) for pins that go to daughterboard. - -Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. - -This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic::write_io "Write daughterboard i/o pin value. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic::read_io "Read daughterboard i/o pin value. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic::write_refclk "Write daughterboard refclk config register. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic::write_atr_mask " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic::write_atr_txval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic::write_atr_rxval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic::write_aux_dac "Write auxiliary digital to analog converter. - -Params: (which_side, which_dac, value)" - -%feature("docstring") usrp_basic::read_aux_adc "Read auxiliary analog to digital converter. - -Params: (which_side, which_adc, value)" - -%feature("docstring") usrp_basic::block_size "returns current fusb block size - -Params: (NONE)" - -%feature("docstring") usrp_basic::converter_rate "returns A/D or D/A converter rate in Hz - -Params: (NONE)" - -%feature("docstring") usrp_basic::_set_led " - -Params: (which_led, on)" - -%feature("docstring") usrp_basic::_write_fpga_reg "Write FPGA register. - -Params: (regno, value)" - -%feature("docstring") usrp_basic::_read_fpga_reg "Read FPGA register. - -Params: (regno, value)" - -%feature("docstring") usrp_basic::_write_fpga_reg_masked "Write FPGA register with mask. - -Params: (regno, value, mask)" - -%feature("docstring") usrp_basic::_write_9862 "Write AD9862 register. - -Params: (which_codec, regno, value)" - -%feature("docstring") usrp_basic::_read_9862 "Read AD9862 register. - -Params: (which_codec, regno, value)" - -%feature("docstring") usrp_basic::_write_spi "Write data to SPI bus peripheral. - -If specifies that optional_header bytes are present, they are written to the peripheral immediately prior to writing . - -Params: (optional_header, enables, format, buf)" - -%feature("docstring") usrp_basic::_read_spi " - -Params: (optional_header, enables, format, len)" - -%feature("docstring") usrp_basic::start "Start data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic::stop "Stop data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx "class for accessing the receive side of the USRP" - -%feature("docstring") usrp_basic_rx::usrp_basic_rx " - -Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_basic_rx::set_rx_enable " - -Params: (on)" - -%feature("docstring") usrp_basic_rx::rx_enable " - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::disable_rx " - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::restore_rx " - -Params: (on)" - -%feature("docstring") usrp_basic_rx::probe_rx_slots " - -Params: (verbose)" - -%feature("docstring") usrp_basic_rx::~usrp_basic_rx " - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::set_fpga_rx_sample_rate_divisor "tell the fpga the rate rx samples are coming from the A/D's - -div = fpga_master_clock_freq () / sample_rate - -sample_rate is determined by a myriad of registers in the 9862. That's why you have to tell us, so we can tell the fpga. - -Params: (div)" - -%feature("docstring") usrp_basic_rx::read "read data from the D/A's via the FPGA. must be a multiple of 512 bytes. - -If overrun is non-NULL it will be set true iff an RX overrun is detected. - -Params: (buf, len, overrun)" - -%feature("docstring") usrp_basic_rx::converter_rate "sampling rate of A/D converter - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::adc_rate " - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::daughterboard_id "Return daughterboard ID for given side [0,1]. - -Params: (which_side)" - -%feature("docstring") usrp_basic_rx::set_pga "Set Programmable Gain Amplifier (PGA). - -gain is rounded to closest setting supported by hardware. - -Params: (which_amp, gain_in_db)" - -%feature("docstring") usrp_basic_rx::pga "Return programmable gain amplifier gain setting in dB. - -Params: (which_amp)" - -%feature("docstring") usrp_basic_rx::pga_min "Return minimum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::pga_max "Return maximum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::pga_db_per_step "Return hardware step size of PGA (linear in dB). - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::_write_oe "Write direction register (output enables) for pins that go to daughterboard. - -Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. - -This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic_rx::write_io "Write daughterboard i/o pin value. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic_rx::read_io "Read daughterboard i/o pin value. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_rx::write_refclk "Write daughterboard refclk config register. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_rx::write_atr_mask " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_rx::write_atr_txval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_rx::write_atr_rxval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_rx::write_aux_dac "Write auxiliary digital to analog converter. - -Params: (which_side, which_dac, value)" - -%feature("docstring") usrp_basic_rx::read_aux_adc "Read auxiliary analog to digital converter. - -Params: (which_side, which_adc, value)" - -%feature("docstring") usrp_basic_rx::block_size "returns current fusb block size - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::start "Start data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::stop "Stop data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic_rx::make "invokes constructor, returns instance or 0 if trouble - -Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_basic_tx "class for accessing the transmit side of the USRP" - -%feature("docstring") usrp_basic_tx::usrp_basic_tx " - -Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_basic_tx::set_tx_enable " - -Params: (on)" - -%feature("docstring") usrp_basic_tx::tx_enable " - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::disable_tx " - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::restore_tx " - -Params: (on)" - -%feature("docstring") usrp_basic_tx::probe_tx_slots " - -Params: (verbose)" - -%feature("docstring") usrp_basic_tx::~usrp_basic_tx " - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::set_fpga_tx_sample_rate_divisor "tell the fpga the rate tx samples are going to the D/A's - -div = fpga_master_clock_freq () * 2 - -sample_rate is determined by a myriad of registers in the 9862. That's why you have to tell us, so we can tell the fpga. - -Params: (div)" - -%feature("docstring") usrp_basic_tx::write "Write data to the A/D's via the FPGA. - -must be a multiple of 512 bytes. -if is non-NULL, it will be set to true iff a transmit underrun condition is detected. - -Params: (buf, len, underrun)" - -%feature("docstring") usrp_basic_tx::wait_for_completion " - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::converter_rate "sampling rate of D/A converter - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::dac_rate " - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::daughterboard_id "Return daughterboard ID for given side [0,1]. - -Params: (which_side)" - -%feature("docstring") usrp_basic_tx::set_pga "Set Programmable Gain Amplifier (PGA). - -gain is rounded to closest setting supported by hardware. - -Params: (which_amp, gain_in_db)" - -%feature("docstring") usrp_basic_tx::pga "Return programmable gain amplifier gain setting in dB. - -Params: (which_amp)" - -%feature("docstring") usrp_basic_tx::pga_min "Return minimum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::pga_max "Return maximum legal PGA gain in dB. - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::pga_db_per_step "Return hardware step size of PGA (linear in dB). - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::_write_oe "Write direction register (output enables) for pins that go to daughterboard. - -Each d'board has 16-bits of general purpose i/o. Setting the bit makes it an output from the FPGA to the d'board. - -This register is initialized based on a value stored in the d'board EEPROM. In general, you shouldn't be using this routine without a very good reason. Using this method incorrectly will kill your USRP motherboard and/or daughterboard. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic_tx::write_io "Write daughterboard i/o pin value. - -Params: (which_side, value, mask)" - -%feature("docstring") usrp_basic_tx::read_io "Read daughterboard i/o pin value. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_tx::write_refclk "Write daughterboard refclk config register. - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_tx::write_atr_mask " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_tx::write_atr_txval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_tx::write_atr_rxval " - -Params: (which_side, value)" - -%feature("docstring") usrp_basic_tx::write_aux_dac "Write auxiliary digital to analog converter. - -Params: (which_side, which_dac, value)" - -%feature("docstring") usrp_basic_tx::read_aux_adc "Read auxiliary analog to digital converter. - -Params: (which_side, which_adc, value)" - -%feature("docstring") usrp_basic_tx::block_size "returns current fusb block size - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::start "Start data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::stop "Stop data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_basic_tx::make "invokes constructor, returns instance or 0 if trouble - -Params: (which_board, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_local_sighandler "Get and set signal handler. - -Constructor installs new handler, destructor reinstalls original value." - -%feature("docstring") usrp_local_sighandler::usrp_local_sighandler " - -Params: (signum, new_handler)" - -%feature("docstring") usrp_local_sighandler::~usrp_local_sighandler " - -Params: (NONE)" - -%feature("docstring") usrp_local_sighandler::throw_signal " - -Params: (signum)" - - - -%feature("docstring") usrp_rx_cfile::usrp_rx_cfile " - -Params: (which, spec, decim, freq, gain, width8, nohb, output_shorts, nsamples, filename)" - - - -%feature("docstring") usrp_siggen::usrp_siggen " - -Params: (which, spec, rf_freq, interp, wfreq, waveform, amp, gain, offset, nsamples)" - -%feature("docstring") usrp_signal "Representation of signal." - -%feature("docstring") usrp_signal::usrp_signal " - -Params: (signum)" - -%feature("docstring") usrp_signal::signal " - -Params: (NONE)" - -%feature("docstring") usrp_signal::name " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base "abstract interface to Universal Software Radio Peripheral Tx path (Rev 1)" - -%feature("docstring") usrp_sink_base::usrp_sink_base " - -Params: (name, input_signature, which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_sink_base::copy_to_usrp_buffer "convert between input item format and usrp native format - -Params: (input_items, input_index, input_items_available, input_items_consumed, usrp_buffer, usrp_buffer_length, bytes_written)" - -%feature("docstring") usrp_sink_base::~usrp_sink_base " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp_sink_base::set_interp_rate "Set interpolator rate. must be in [4, 1024] and a multiple of 4. - -The final complex sample rate across the USB is dac_freq () / interp_rate () * nchannels () - -Params: (rate)" - -%feature("docstring") usrp_sink_base::set_nchannels " - -Params: (nchan)" - -%feature("docstring") usrp_sink_base::set_mux " - -Params: (mux)" - -%feature("docstring") usrp_sink_base::determine_tx_mux_value " - -Params: (ss)" - -%feature("docstring") usrp_sink_base::set_tx_freq "set the frequency of the digital up converter. - -must be 0. is the center frequency in Hz. It must be in the range [-44M, 44M]. The frequency specified is quantized. Use tx_freq to retrieve the actual value used. - -Params: (channel, freq)" - -%feature("docstring") usrp_sink_base::dac_rate " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::dac_freq " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::interp_rate " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::nchannels " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::mux " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::tx_freq " - -Params: (channel)" - -%feature("docstring") usrp_sink_base::nunderruns " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::has_rx_halfband " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::has_tx_halfband " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::nddcs " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::nducs " - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") usrp_sink_base::tune "High-level \"tune\" method. Works for the single channel case. - -This method adjusts both the daughterboard LO and the DUC so that DC in the complex baseband samples ends up at RF target_freq. - -Params: (chan, db, target_freq, result)" - -%feature("docstring") usrp_sink_base::pick_tx_subdevice "Select suitable Tx daughterboard. - -Params: (NONE)" - -%feature("docstring") usrp_source_base "abstract interface to Universal Software Radio Peripheral Rx path (Rev 1)" - -%feature("docstring") usrp_source_base::usrp_source_base " - -Params: (name, output_signature, which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_source_base::ninput_bytes_reqd_for_noutput_items "return number of usrp input bytes required to produce noutput items. - -Params: (noutput_items)" - -%feature("docstring") usrp_source_base::sizeof_basic_sample "number of bytes in a low-level sample - -Params: (NONE)" - -%feature("docstring") usrp_source_base::copy_from_usrp_buffer "convert between native usrp format and output item format - -The copy must consume all bytes available. That is, must equal . - -Params: (output_items, output_index, output_items_available, output_items_produced, usrp_buffer, usrp_buffer_length, bytes_read)" - -%feature("docstring") usrp_source_base::~usrp_source_base " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") usrp_source_base::set_decim_rate "Set decimator rate. must be EVEN and in [8, 256]. - -The final complex sample rate across the USB is adc_freq () / decim_rate () - -Params: (rate)" - -%feature("docstring") usrp_source_base::set_nchannels " - -Params: (nchan)" - -%feature("docstring") usrp_source_base::set_mux " - -Params: (mux)" - -%feature("docstring") usrp_source_base::determine_rx_mux_value " - -Params: (ss)" - -%feature("docstring") usrp_source_base::set_rx_freq "set the center frequency of the digital down converter. - -must be 0. is the center frequency in Hz. It must be in the range [-FIXME, FIXME]. The frequency specified is quantized. Use rx_freq to retrieve the actual value used. - -Params: (channel, freq)" - -%feature("docstring") usrp_source_base::set_fpga_mode "set fpga special modes - -Params: (mode)" - -%feature("docstring") usrp_source_base::set_ddc_phase "Set the digital down converter phase register. - -Params: (channel, phase)" - -%feature("docstring") usrp_source_base::adc_rate " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::adc_freq " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::decim_rate " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::nchannels " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::mux " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::rx_freq " - -Params: (channel)" - -%feature("docstring") usrp_source_base::noverruns " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::has_rx_halfband " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::has_tx_halfband " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::nddcs " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::nducs " - -Params: (NONE)" - -%feature("docstring") usrp_source_base::start "Called to enable drivers, etc for i/o devices. - -This allows a block to enable an associated driver to begin transfering data just before we start to execute the scheduler. The end result is that this reduces latency in the pipeline when dealing with audio devices, usrps, etc. - -Params: (NONE)" - -%feature("docstring") usrp_source_base::stop "Called to disable drivers, etc for i/o devices. - -Params: (NONE)" - -%feature("docstring") usrp_source_base::set_format "Specify Rx data format. - -Rx data format control register - -3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-----------------------------------------+-+-+---------+-------+ | Reserved (Must be zero) |B|Q| WIDTH | SHIFT | +-----------------------------------------+-+-+---------+-------+ - -SHIFT specifies arithmetic right shift [0, 15] WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not all valid) Q if set deliver both I & Q, else just I B if set bypass half-band filter. - -Right now the acceptable values are: - -B Q WIDTH SHIFT 0 1 16 0 0 1 8 8 - -More valid combos to come. - -Default value is 0x00000300 16-bits, 0 shift, deliver both I & Q. - -Params: (format)" - -%feature("docstring") usrp_source_base::format "return current format - -Params: (NONE)" - -%feature("docstring") usrp_source_base::tune "High-level \"tune\" method. Works for the single channel case. - -This method adjusts both the daughterboard LO and the DDC so that target_freq ends up at DC in the complex baseband samples. - -Params: (chan, db, target_freq, result)" - -%feature("docstring") usrp_source_base::pick_rx_subdevice "Select suitable Rx daughterboard. - -Params: (NONE)" - -%feature("docstring") usrp_source_base::make_format " - -Params: (width, shift, want_q, bypass_halfband)" - -%feature("docstring") usrp_source_base::format_width " - -Params: (format)" - -%feature("docstring") usrp_source_base::format_shift " - -Params: (format)" - -%feature("docstring") usrp_source_base::format_want_q " - -Params: (format)" - -%feature("docstring") usrp_source_base::format_bypass_halfband " - -Params: (format)" - - - -%feature("docstring") usrp_standard_common::usrp_standard_common " - -Params: (parent)" - -%feature("docstring") usrp_standard_common::has_rx_halfband "does the FPGA implement the final Rx half-band filter? If it doesn't, the maximum decimation factor with proper gain is 1/2 of what it would otherwise be. - -Params: (NONE)" - -%feature("docstring") usrp_standard_common::nddcs "number of digital downconverters implemented in the FPGA This will be 0, 1, 2 or 4. - -Params: (NONE)" - -%feature("docstring") usrp_standard_common::has_tx_halfband "does the FPGA implement the initial Tx half-band filter? - -Params: (NONE)" - -%feature("docstring") usrp_standard_common::nducs "number of digital upconverters implemented in the FPGA This will be 0, 1, or 2. - -Params: (NONE)" - -%feature("docstring") usrp_standard_common::calc_dxc_freq "Calculate the frequency to use for setting the digital up or down converter. - -Params: (target_freq, baseband_freq, fs, dxc_freq, inverted)" - -%feature("docstring") usrp_standard_rx "The C++ interface the receive side of the USRP - -This is the recommended interface to USRP receive functionality for applications that use the USRP but not GNU Radio." - -%feature("docstring") usrp_standard_rx::usrp_standard_rx " - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_standard_rx::write_hw_mux_reg " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::~usrp_standard_rx " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::set_decim_rate "Set decimator rate. MUST BE EVEN and in [8, 256]. - -The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels () - -Params: (rate)" - -%feature("docstring") usrp_standard_rx::set_nchannels "Set number of active channels. must be 1, 2 or 4. - -The final complex sample rate across the USB is adc_freq () / decim_rate () * nchannels () - -Params: (nchannels)" - -%feature("docstring") usrp_standard_rx::set_mux "Set input mux configuration. - -This determines which ADC (or constant zero) is connected to each DDC input. There are 4 DDCs. Each has two inputs. - -Params: (mux)" - -%feature("docstring") usrp_standard_rx::determine_rx_mux_value "Determine the appropriate Rx mux value as a function of the subdevice choosen and the characteristics of the respective daughterboard. - -Params: (ss)" - -%feature("docstring") usrp_standard_rx::set_rx_freq "set the frequency of the digital down converter. - -must be in the range [0,3]. is the center frequency in Hz. may be either negative or postive. The frequency specified is quantized. Use rx_freq to retrieve the actual value used. - -Params: (channel, freq)" - -%feature("docstring") usrp_standard_rx::set_fpga_mode "set fpga mode - -Params: (mode)" - -%feature("docstring") usrp_standard_rx::set_ddc_phase "Set the digital down converter phase register. - -Params: (channel, phase)" - -%feature("docstring") usrp_standard_rx::set_format "Specify Rx data format. - -Rx data format control register - -3 2 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-----------------------------------------+-+-+---------+-------+ | Reserved (Must be zero) |B|Q| WIDTH | SHIFT | +-----------------------------------------+-+-+---------+-------+ - -SHIFT specifies arithmetic right shift [0, 15] WIDTH specifies bit-width of I & Q samples across the USB [1, 16] (not all valid) Q if set deliver both I & Q, else just I B if set bypass half-band filter. - -Right now the acceptable values are: - -B Q WIDTH SHIFT 0 1 16 0 0 1 8 8 - -More valid combos to come. - -Default value is 0x00000300 16-bits, 0 shift, deliver both I & Q. - -Params: (format)" - -%feature("docstring") usrp_standard_rx::tune "High-level \"tune\" method. Works for the single channel case. - -This method adjusts both the daughterboard LO and the DDC so that target_freq ends up at DC in the complex baseband samples. - -Params: (chan, db, target_freq, result)" - -%feature("docstring") usrp_standard_rx::decim_rate " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::rx_freq " - -Params: (channel)" - -%feature("docstring") usrp_standard_rx::nchannels " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::mux " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::format " - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::start "Start data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::stop "Stop data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_standard_rx::make "invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble - -Params: (which_board, decim_rate, nchan, mux, mode, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_standard_rx::make_format " - -Params: (width, shift, want_q, bypass_halfband)" - -%feature("docstring") usrp_standard_rx::format_width " - -Params: (format)" - -%feature("docstring") usrp_standard_rx::format_shift " - -Params: (format)" - -%feature("docstring") usrp_standard_rx::format_want_q " - -Params: (format)" - -%feature("docstring") usrp_standard_rx::format_bypass_halfband " - -Params: (format)" - -%feature("docstring") usrp_standard_tx "The C++ interface the transmit side of the USRP - -This is the recommended interface to USRP transmit functionality for applications that use the USRP but not GNU Radio. - -Uses digital upconverter (coarse & fine modulators) in AD9862..." - -%feature("docstring") usrp_standard_tx::set_coarse_modulator " - -Params: (channel, cm)" - -%feature("docstring") usrp_standard_tx::coarse_modulator " - -Params: (channel)" - -%feature("docstring") usrp_standard_tx::usrp_standard_tx " - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - -%feature("docstring") usrp_standard_tx::write_hw_mux_reg " - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::~usrp_standard_tx " - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::set_interp_rate "Set interpolator rate. must be in [4, 512] and a multiple of 4. - -The final complex sample rate across the USB is dac_freq () / interp_rate () * nchannels () - -Params: (rate)" - -%feature("docstring") usrp_standard_tx::set_nchannels "Set number of active channels. must be 1 or 2. - -The final complex sample rate across the USB is dac_freq () / decim_rate () * nchannels () - -Params: (nchannels)" - -%feature("docstring") usrp_standard_tx::set_mux "Set output mux configuration. - -Params: (mux)" - -%feature("docstring") usrp_standard_tx::determine_tx_mux_value "Determine the appropriate Tx mux value as a function of the subdevice choosen and the characteristics of the respective daughterboard. - -Params: (ss)" - -%feature("docstring") usrp_standard_tx::set_tx_freq "set the frequency of the digital up converter. - -must be in the range [0,1]. is the center frequency in Hz. It must be in the range [-44M, 44M]. The frequency specified is quantized. Use tx_freq to retrieve the actual value used. - -Params: (channel, freq)" - -%feature("docstring") usrp_standard_tx::interp_rate " - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::tx_freq " - -Params: (channel)" - -%feature("docstring") usrp_standard_tx::nchannels " - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::mux " - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::tune "High-level \"tune\" method. Works for the single channel case. - -This method adjusts both the daughterboard LO and the DUC so that DC in the complex baseband samples ends up at RF target_freq. - -Params: (chan, db, target_freq, result)" - -%feature("docstring") usrp_standard_tx::start "Start data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::stop "Stop data transfers. Called in base class to derived class order. - -Params: (NONE)" - -%feature("docstring") usrp_standard_tx::make "invokes constructor, returns shared_ptr or shared_ptr equivalent of 0 if trouble - -Params: (which_board, interp_rate, nchan, mux, fusb_block_size, fusb_nblocks, fpga_filename, firmware_filename)" - - - -%feature("docstring") usrp_tune_result::usrp_tune_result " - -Params: (baseband, dxc, residual, _inverted)" - -%feature("docstring") std::valarray "STL class." - -%feature("docstring") std::vector "vector documentation stub - -STL class." - -%feature("docstring") video_sdl_sink_s "video sink using SDL - -input signature is one, two or three streams of signed short. One stream: stream is grey (Y) two streems: first is grey (Y), second is alternating U and V Three streams: first is grey (Y), second is U, third is V Input samples must be in the range [0,255]." - -%feature("docstring") video_sdl_sink_s::video_sdl_sink_s " - -Params: (framerate, width, height, format, dst_width, dst_height)" - -%feature("docstring") video_sdl_sink_s::copy_line_pixel_interleaved " - -Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_s::copy_line_line_interleaved " - -Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_s::copy_line_single_plane " - -Params: (dst_pixels, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_s::copy_line_single_plane_dec2 " - -Params: (dst_pixels, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_s::copy_plane_to_surface " - -Params: (plane, noutput_items, src_pixels)" - -%feature("docstring") video_sdl_sink_s::~video_sdl_sink_s " - -Params: (NONE)" - -%feature("docstring") video_sdl_sink_s::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - -%feature("docstring") video_sdl_sink_uc "video sink using SDL - -input signature is one, two or three streams of uchar. One stream: stream is grey (Y) two streems: first is grey (Y), second is alternating U and V Three streams: first is grey (Y), second is U, third is V Input samples must be in the range [0,255]." - -%feature("docstring") video_sdl_sink_uc::video_sdl_sink_uc " - -Params: (framerate, width, height, format, dst_width, dst_height)" - -%feature("docstring") video_sdl_sink_uc::copy_line_pixel_interleaved " - -Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_uc::copy_line_line_interleaved " - -Params: (dst_pixels_u, dst_pixels_v, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_uc::copy_line_single_plane " - -Params: (dst_pixels, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_uc::copy_line_single_plane_dec2 " - -Params: (dst_pixels, src_pixels, src_width)" - -%feature("docstring") video_sdl_sink_uc::copy_plane_to_surface " - -Params: (plane, noutput_items, src_pixels)" - -%feature("docstring") video_sdl_sink_uc::~video_sdl_sink_uc " - -Params: (NONE)" - -%feature("docstring") video_sdl_sink_uc::work "just like gr_block::general_work, only this arranges to call consume_each for you - -The user must override work to define the signal processing code - -Params: (noutput_items, input_items, output_items)" - - - -%feature("docstring") wbx_base::shutdown "Called to shutdown daughterboard. Called from dtor and usrp_basic dtor. - -N.B., any class that overrides shutdown MUST call shutdown in its destructor. - -Params: (NONE)" - -%feature("docstring") wbx_base::_lock_detect " - -Params: (NONE)" - -%feature("docstring") wbx_base::_tx_write_oe " - -Params: (value, mask)" - -%feature("docstring") wbx_base::_rx_write_oe " - -Params: (value, mask)" - -%feature("docstring") wbx_base::_tx_write_io " - -Params: (value, mask)" - -%feature("docstring") wbx_base::_rx_write_io " - -Params: (value, mask)" - -%feature("docstring") wbx_base::_rx_read_io " - -Params: (NONE)" - -%feature("docstring") wbx_base::_tx_read_io " - -Params: (NONE)" - -%feature("docstring") wbx_base::_compute_regs " - -Params: (freq)" - -%feature("docstring") wbx_base::_refclk_freq " - -Params: (NONE)" - -%feature("docstring") wbx_base::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") wbx_base::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") wbx_base::wbx_base " - -Params: (usrp, which)" - -%feature("docstring") wbx_base::~wbx_base " - -Params: (NONE)" - -%feature("docstring") wbx_base::set_freq " - -Params: (freq)" - -%feature("docstring") wbx_base::gain_min " - -Params: (NONE)" - -%feature("docstring") wbx_base::gain_max " - -Params: (NONE)" - -%feature("docstring") wbx_base::gain_db_per_step " - -Params: (NONE)" - -%feature("docstring") wbx_base::set_gain " - -Params: (gain)" - -%feature("docstring") wbx_base::is_quadrature " - -Params: (NONE)" - - - -%feature("docstring") wbx_base_rx::wbx_base_rx " - -Params: (usrp, which)" - -%feature("docstring") wbx_base_rx::~wbx_base_rx " - -Params: (NONE)" - -%feature("docstring") wbx_base_rx::set_auto_tr " - -Params: (on)" - -%feature("docstring") wbx_base_rx::select_rx_antenna " - -Params: (which_antenna)" - -%feature("docstring") wbx_base_rx::set_gain " - -Params: (gain)" - -%feature("docstring") wbx_base_rx::i_and_q_swapped " - -Params: (NONE)" - - - -%feature("docstring") wbx_base_tx::wbx_base_tx " - -Params: (usrp, which)" - -%feature("docstring") wbx_base_tx::~wbx_base_tx " - -Params: (NONE)" - -%feature("docstring") wbx_base_tx::set_auto_tr " - -Params: (on)" - -%feature("docstring") wbx_base_tx::set_enable " - -Params: (on)" - - - -%feature("docstring") wbxng_base::wbxng_base " - -Params: (usrp, which)" - -%feature("docstring") wbxng_base::~wbxng_base " - -Params: (NONE)" - -%feature("docstring") wbxng_base::set_freq " - -Params: (freq)" - -%feature("docstring") wbxng_base::is_quadrature " - -Params: (NONE)" - -%feature("docstring") wbxng_base::freq_min " - -Params: (NONE)" - -%feature("docstring") wbxng_base::freq_max " - -Params: (NONE)" - -%feature("docstring") wbxng_base::_write_spi " - -Params: (data)" - -%feature("docstring") wbxng_base::_refclk_divisor " - -Params: (NONE)" - -%feature("docstring") wbxng_base::_get_locked " - -Params: (NONE)" - -%feature("docstring") wbxng_base::_set_pga " - -Params: (pga_gain)" - -%feature("docstring") std::wfstream "STL class." - -%feature("docstring") std::wifstream "STL class." - -%feature("docstring") std::wios "STL class." - -%feature("docstring") std::wistream "STL class." - -%feature("docstring") std::wistringstream "STL class." - -%feature("docstring") std::wofstream "STL class." - -%feature("docstring") std::wostream "STL class." - -%feature("docstring") std::wostringstream "STL class." - -%feature("docstring") std::wstring "STL class." - -%feature("docstring") std::wstringstream "STL class." \ No newline at end of file diff --git a/gnuradio-core/src/lib/swig/swig_doc.py b/gnuradio-core/src/lib/swig/swig_doc.py deleted file mode 100644 index 52989e1bd..000000000 --- a/gnuradio-core/src/lib/swig/swig_doc.py +++ /dev/null @@ -1,195 +0,0 @@ -""" -Creates the swig_doc.i SWIG interface file. -Execute using: python swig_doc.py xml_path outputfilename - -The file instructs SWIG to transfer the doxygen comments into the -python docstrings. - -""" - -import sys - -from gnuradio.utils.doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction - - -def py_name(name): - bits = name.split('_') - return '_'.join(bits[1:]) - -def make_name(name): - bits = name.split('_') - return bits[0] + '_make_' + '_'.join(bits[1:]) - - -class Block(object): - """ - Checks if doxyxml produced objects correspond to a gnuradio block. - """ - - @classmethod - def includes(cls, item): - if not isinstance(item, DoxyClass): - return False - # Check for a parsing error. - if item.error(): - return False - return item.has_member(make_name(item.name()), DoxyFriend) - - -def utoascii(text): - """ - Convert unicode text into ascii and escape quotes. - """ - if text is None: - return '' - out = text.encode('ascii', 'replace') - out = out.replace('"', '\\"') - return out - - -def combine_descriptions(obj): - """ - Combines the brief and detailed descriptions of an object together. - """ - description = [] - bd = obj.brief_description - dd = obj.detailed_description - if bd: - description.append(bd) - if dd: - description.append(dd) - return utoascii('\n\n'.join(description)) - - -entry_templ = '%feature("docstring") {name} "{docstring}"' -def make_entry(obj, name=None, templ="{description}", description=None): - """ - 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 - variable named 'description'. - description - if this optional variable is set then it's value is - used as the description instead of extracting it from obj. - """ - if name is None: - name=obj.name() - if description is None: - description = combine_descriptions(obj) - docstring = templ.format(description=description) - if not docstring: - return '' - return entry_templ.format( - name=name, - docstring=docstring, - ) - - -def make_func_entry(func, name=None, description=None, params=None): - """ - Create a function docstring entry for a swig interface file. - - func - a doxyxml object from which documentation will be extracted. - name - the name of the C object (defaults to func.name()) - description - if this optional variable is set then it's value is - 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) - - -def make_class_entry(klass): - """ - Create a class docstring for a swig interface file. - """ - output = [] - output.append(make_entry(klass)) - for func in klass.in_category(DoxyFunction): - name = klass.name() + '::' + func.name() - output.append(make_func_entry(func, name=name)) - return "\n\n".join(output) - - -def make_block_entry(block): - """ - Create class and function docstrings of a gnuradio block for a - swig interface file. - """ - output = [] - # Get creator function - make_func = di.get_member(make_name(block.name())) - output.append(make_class_entry(block)) - creator = block.get_member(block.name()) - make_func_desc = "Creates a {name} block.\n\n{block_desc}" - description = make_func_desc.format( - block_desc = combine_descriptions(block), - name = py_name(block.name()), - ) - output.append(make_func_entry(make_func, description=description, params=creator.params)) - return "\n\n".join(output) - - -# Parse command line options and set up doxyxml. -err_msg = "Execute using: python swig_doc.py xml_path outputfilename" -if len(sys.argv) != 3: - raise StandardError(err_msg) -xml_path = sys.argv[1] -swigdocfilename = sys.argv[2] -swig_doc = file(swigdocfilename, 'w') -di = DoxyIndex(xml_path) - -output = [] - -# gnuradio.gr.msq_queue.insert_tail and delete_head create errors unless docstrings are defined! -# This is presumably a bug in SWIG. -msg_q = di.get_member(u'gr_msg_queue') -insert_tail = msg_q.get_member(u'insert_tail') -delete_head = msg_q.get_member(u'delete_head') -output.append(make_func_entry(insert_tail, name='gr_py_msg_queue__insert_tail')) -output.append(make_func_entry(delete_head, name='gr_py_msg_queue__delete_head')) - -# Create docstrings for the blocks. -blocks = di.in_category(Block) -make_funcs = set([]) -for block in blocks: - try: - make_func = di.get_member(make_name(block.name())) - make_funcs.add(make_func.name()) - output.append(make_block_entry(block)) - except block.ParsingError: - print('Parsing error for block %s' % block.name()) - -# 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] -for f in funcs: - try: - output.append(make_func_entry(f)) - except f.ParsingError: - print('Parsing error for function %s' % f.name()) - -# 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] -for k in klasses: - try: - output.append(make_class_entry(k)) - except k.ParsingError: - print('Parsing error for class %s' % 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. - -output = "\n\n".join(output) - -swig_doc.write(output) -swig_doc.close() diff --git a/gnuradio-core/src/python/gnuradio/utils/Makefile.am b/gnuradio-core/src/python/gnuradio/utils/Makefile.am index 9191d8d5e..c35951b44 100644 --- a/gnuradio-core/src/python/gnuradio/utils/Makefile.am +++ b/gnuradio-core/src/python/gnuradio/utils/Makefile.am @@ -31,14 +31,5 @@ nobase_utilspython_PYTHON = \ __init__.py \ gray_code.py \ mod_codes.py \ - alignment.py \ - doxyxml/__init__.py \ - doxyxml/base.py \ - doxyxml/doxyindex.py \ - doxyxml/text.py \ - doxyxml/generated/__init__.py \ - doxyxml/generated/index.py \ - doxyxml/generated/indexsuper.py \ - doxyxml/generated/compound.py \ - doxyxml/generated/compoundsuper.py + alignment.py endif \ No newline at end of file diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py deleted file mode 100644 index b2560b6e0..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/__init__.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -Python interface to contents of doxygen xml documentation. - -Example use: -See the contents of the example folder for the C++ and -doxygen-generated xml used in this example. - ->>> # Parse the doxygen docs. ->>> import os ->>> this_dir = os.path.dirname(globals()['__file__']) ->>> xml_path = this_dir + "/example/xml/" ->>> di = DoxyIndex(xml_path) - -Get a list of all top-level objects. - ->>> print([mem.name() for mem in di.members()]) -[u'Aadvark', u'aadvarky_enough', u'main'] - -Get all functions. - ->>> print([mem.name() for mem in di.in_category(DoxyFunction)]) -[u'aadvarky_enough', u'main'] - -Check if an object is present. - ->>> di.has_member(u'Aadvark') -True ->>> di.has_member(u'Fish') -False - -Get an item by name and check its properties. - ->>> aad = di.get_member(u'Aadvark') ->>> print(aad.brief_description) -Models the mammal Aadvark. ->>> print(aad.detailed_description) -Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. - -This line is uninformative and is only to test line breaks in the comments. ->>> [mem.name() for mem in aad.members()] -[u'aadvarkness', u'print', u'Aadvark', u'get_aadvarkness'] ->>> aad.get_member(u'print').brief_description -u'Outputs the vital aadvark statistics.' - -""" - -from gnuradio.utils.doxyxml.doxyindex import DoxyIndex, DoxyFunction, DoxyParam, DoxyClass, DoxyFile, DoxyNamespace, DoxyGroup, DoxyFriend, DoxyOther - -def _test(): - import os - this_dir = os.path.dirname(globals()['__file__']) - xml_path = this_dir + "/example/xml/" - di = DoxyIndex(xml_path) - # Get the Aadvark class - aad = di.get_member('Aadvark') - aad.brief_description - import doctest - return doctest.testmod() - -if __name__ == "__main__": - _test() - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py deleted file mode 100644 index 4d4ea2c75..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/base.py +++ /dev/null @@ -1,198 +0,0 @@ -""" -A base class is created. - -Classes based upon this are used to make more user-friendly interfaces -to the doxygen xml docs than the generated classes provide. -""" - -import os -import pdb - -from xml.parsers.expat import ExpatError - -from gnuradio.utils.doxyxml.generated import compound - - -class Base(object): - - class Duplicate(StandardError): - pass - - class NoSuchMember(StandardError): - pass - - class ParsingError(StandardError): - pass - - def __init__(self, parse_data, top=None): - self._parsed = False - self._error = False - self._parse_data = parse_data - self._members = [] - self._dict_members = {} - self._in_category = {} - self._data = {} - if top is not None: - self._xml_path = top._xml_path - # Set up holder of references - else: - top = self - self._refs = {} - self._xml_path = parse_data - self.top = top - - @classmethod - def from_refid(cls, refid, top=None): - """ Instantiate class from a refid rather than parsing object. """ - # First check to see if its already been instantiated. - if top is not None and refid in top._refs: - return top._refs[refid] - # Otherwise create a new instance and set refid. - inst = cls(None, top=top) - inst.refid = refid - inst.add_ref(inst) - return inst - - @classmethod - def from_parse_data(cls, parse_data, top=None): - refid = getattr(parse_data, 'refid', None) - if refid is not None and top is not None and refid in top._refs: - return top._refs[refid] - inst = cls(parse_data, top=top) - if refid is not None: - inst.refid = refid - inst.add_ref(inst) - return inst - - def add_ref(self, obj): - if hasattr(obj, 'refid'): - self.top._refs[obj.refid] = obj - - mem_classes = [] - - def get_cls(self, mem): - for cls in self.mem_classes: - if cls.can_parse(mem): - return cls - raise StandardError('Did not find a class for this object.') - - def convert_mem(self, mem): - cls = self.get_cls(mem) - converted = cls.from_parse_data(mem, self.top) - if converted is None: - raise StandardError('No class matched this object.') - self.add_ref(converted) - return converted - - @classmethod - def includes(cls, inst): - return isinstance(inst, cls) - - @classmethod - def can_parse(cls, obj): - return False - - def _parse(self): - self._parsed = True - - def _get_dict_members(self, cat=None): - """ - For given category a dictionary is returned mapping member names to - members of that category. For names that are duplicated the name is - mapped to None. - """ - self.confirm_no_error() - if cat not in self._dict_members: - new_dict = {} - for mem in self.in_category(cat): - if mem.name() not in new_dict: - new_dict[mem.name()] = mem - else: - new_dict[mem.name()] = self.Duplicate - self._dict_members[cat] = new_dict - return self._dict_members[cat] - - def in_category(self, cat): - self.confirm_no_error() - if cat is None: - return self._members - if cat not in self._in_category: - self._in_category[cat] = [mem for mem in self._members - if cat.includes(mem)] - return self._in_category[cat] - - def get_member(self, name, cat=None): - self.confirm_no_error() - # Check if it's in a namespace or class. - bits = name.split('::') - first = bits[0] - rest = '::'.join(bits[1:]) - member = self._get_dict_members(cat).get(first, self.NoSuchMember) - # Raise any errors that are returned. - if member in set([self.NoSuchMember, self.Duplicate]): - if member == self.Duplicate: - import pdb - pdb.set_trace() - raise member() - if rest: - return member.get_member(rest, cat=cat) - return member - - def has_member(self, name, cat=None): - try: - mem = self.get_member(name, cat=cat) - return True - except self.NoSuchMember: - return False - - def data(self): - self.confirm_no_error() - return self._data - - def members(self): - self.confirm_no_error() - return self._members - - def process_memberdefs(self): - mdtss = [] - for sec in self._retrieved_data.compounddef.sectiondef: - mdtss += sec.memberdef - # At the moment we lose all information associated with sections. - # Sometimes a memberdef is in several sectiondef. - # We make sure we don't get duplicates here. - uniques = set([]) - for mem in mdtss: - converted = self.convert_mem(mem) - pair = (mem.name, mem.__class__) - if pair not in uniques: - uniques.add(pair) - self._members.append(converted) - - def retrieve_data(self): - filename = os.path.join(self._xml_path, self.refid + '.xml') - try: - self._retrieved_data = compound.parse(filename) - except ExpatError: - print('Error in xml in file %s' % filename) - self._error = True - self._retrieved_data = None - - def check_parsed(self): - if not self._parsed: - self._parse() - - def confirm_no_error(self): - self.check_parsed() - if self._error: - raise self.ParsingError() - - def error(self): - self.check_parsed() - return self._error - - def name(self): - # first see if we can do it without processing. - if self._parse_data is not None: - return self._parse_data.name - self.check_parsed() - return self._retrieved_data.compounddef.name diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py deleted file mode 100644 index c9076a26a..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/doxyindex.py +++ /dev/null @@ -1,216 +0,0 @@ -""" -Classes providing more user-friendly interfaces to the doxygen xml -docs than the generated classes provide. -""" - -import os - -from gnuradio.utils.doxyxml.generated import index -from gnuradio.utils.doxyxml.base import Base -from gnuradio.utils.doxyxml.text import description - -class DoxyIndex(Base): - """ - Parses a doxygen xml directory. - """ - - __module__ = "gnuradio.utils.doxyxml" - - def _parse(self): - if self._parsed: - return - super(DoxyIndex, self)._parse() - 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 - # from the parent rather than having to go through the file - # object. I'm not interested in the file object and will - # not add it to the index. - if self.get_cls(mem) == DoxyFile: - if mem.name.endswith('.h'): - self._members += converted.members() - else: - self._members.append(converted) - - -def generate_swig_doc_i(self): - """ - %feature("docstring") gr_make_align_on_samplenumbers_ss::align_state " - Wraps the C++: gr_align_on_samplenumbers_ss::align_state"; - """ - pass - - -class DoxyCompMem(Base): - - - kind = None - - def __init__(self, *args, **kwargs): - super(DoxyCompMem, self).__init__(*args, **kwargs) - #pd = self._parse_data - #self.name = pd.name - - @classmethod - def can_parse(cls, obj): - return obj.kind == cls.kind - - def set_descriptions(self, parse_data): - bd = description(getattr(parse_data, 'briefdescription', None)) - dd = description(getattr(parse_data, 'detaileddescription', None)) - self._data['brief_description'] = bd - self._data['detailed_description'] = dd - -class DoxyCompound(DoxyCompMem): - pass - -class DoxyMember(DoxyCompMem): - pass - - -class DoxyFunction(DoxyMember): - - __module__ = "gnuradio.utils.doxyxml" - - kind = 'function' - - def _parse(self): - if self._parsed: - 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)) - - 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(DoxyFunction) - - -class DoxyParam(DoxyMember): - - __module__ = "gnuradio.utils.doxyxml" - - def _parse(self): - if self._parsed: - return - super(DoxyParam, self)._parse() - self.set_descriptions(self._parse_data) - self._data['declname'] = self._parse_data.declname - - 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']) - -class DoxyClass(DoxyCompound): - - __module__ = "gnuradio.utils.doxyxml" - - kind = 'class' - - def _parse(self): - if self._parsed: - return - super(DoxyClass, self)._parse() - self.retrieve_data() - if self._error: - return - self.set_descriptions(self._retrieved_data.compounddef) - # Sectiondef.kind tells about whether private or public. - # We just ignore this for now. - self.process_memberdefs() - - brief_description = property(lambda self: self.data()['brief_description']) - detailed_description = property(lambda self: self.data()['detailed_description']) - -Base.mem_classes.append(DoxyClass) - - -class DoxyFile(DoxyCompound): - - __module__ = "gnuradio.utils.doxyxml" - - kind = 'file' - - def _parse(self): - if self._parsed: - return - super(DoxyFile, self)._parse() - self.retrieve_data() - if self._error: - return - self.process_memberdefs() - - -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' - - def _parse(self): - if self._parsed: - return - super(DoxyGroup, self)._parse() - self.retrieve_data() - if self._error: - return - cdef = self._retrieved_data.compounddef - self._data['title'] = description(cdef.title) - # Process inner groups - grps = cdef.innergroup - for grp in grps: - converted = DoxyGroup.from_refid(grp.refid, top=self.top) - self._members.append(converted) - # Process inner classes - klasses = cdef.innerclass - for kls in klasses: - converted = DoxyClass.from_refid(kls.refid, top=self.top) - self._members.append(converted) - # Process normal members - self.process_memberdefs() - - title = property(lambda self: self.data()['title']) - - -Base.mem_classes.append(DoxyGroup) - - -class DoxyFriend(DoxyMember): - - __module__ = "gnuradio.utils.doxyxml" - - kind = 'friend' - -Base.mem_classes.append(DoxyFriend) - - -class DoxyOther(Base): - - __module__ = "gnuradio.utils.doxyxml" - - kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', 'dir', 'page']) - - @classmethod - def can_parse(cls, obj): - return obj.kind in cls.kinds - -Base.mem_classes.append(DoxyOther) - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile deleted file mode 100644 index 9780043be..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/Doxyfile +++ /dev/null @@ -1,1551 +0,0 @@ -# Doxyfile 1.6.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it parses. -# With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this tag. -# The format is ext=language, where ext is a file extension, and language is one of -# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by -# doxygen. The layout file controls the global structure of the generated output files -# in an output format independent way. The create the layout file that represents -# doxygen's defaults, run doxygen with the -l option. You can optionally specify a -# file name after the option, if omitted DoxygenLayout.xml will be used as the name -# of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER -# are set, an additional index file will be generated that can be used as input for -# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated -# HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. -# For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's -# filter section matches. -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = YES - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = FreeSans - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc deleted file mode 100644 index 014b00ef6..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.cc +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include "aadvark.h" - -void Aadvark::print() { - std::cout << "aadvark is " << aadvarkness << "/10 aadvarky" << std::endl; -} - -Aadvark::Aadvark(int aaness): aadvarkness(aaness) {} - -bool aadvarky_enough(Aadvark aad) { - if (aad.get_aadvarkness() > 6) - return true; - else - return false; -} - -int Aadvark::get_aadvarkness() { - return aadvarkness; -} - -int main() { - Aadvark arold = Aadvark(6); - arold.print(); - if (aadvarky_enough(arold)) - std::cout << "He is aadvarky enough" << std::endl; - else - std::cout << "He is not aadvarky enough" << std::endl; -} - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h deleted file mode 100644 index 6a2fd06b2..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/aadvark.h +++ /dev/null @@ -1,23 +0,0 @@ -#include - -/*! - * \brief Models the mammal Aadvark. - * - * Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. - * - * This line is uninformative and is only to test line breaks in the comments. - */ -class Aadvark { -public: - //! \brief Outputs the vital aadvark statistics. - void print(); - //! \param aaness The aadvarkness of an aadvark is a measure of how aadvarky it is. - Aadvark(int aaness); - int get_aadvarkness(); -private: - int aadvarkness; -}; - -bool aadvarky_enough(Aadvark aad); - -int main(); diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml deleted file mode 100644 index f031e01ac..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8cc.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - aadvark.cc - iostream - aadvark.h - aadvark.cc - - - - - - - - - - - - - - bool - bool aadvarky_enough - (Aadvark aad) - aadvarky_enough - - Aadvark - aad - - - - - - - - - - - int - int main - () - main - - - - - - - - - - - - - - -#include<iostream> -#include"aadvark.h" - -voidAadvark::print(){ -std::cout<<"aadvarkis"<<aadvarkness<<"/10aadvarky"<<std::endl; -} - -Aadvark::Aadvark(intaaness):aadvarkness(aaness){} - -boolaadvarky_enough(Aadvarkaad){ -if(aad.get_aadvarkness()>6) -returntrue; -else -returnfalse; -} - -intAadvark::get_aadvarkness(){ -returnaadvarkness; -} - -intmain(){ -Aadvarkarold=Aadvark(6); -arold.print(); -if(aadvarky_enough(arold)) -std::cout<<"Heisaadvarkyenough"<<std::endl; -else -std::cout<<"Heisnotaadvarkyenough"<<std::endl; -} - - - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml deleted file mode 100644 index a1854b685..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/aadvark_8h.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - aadvark.h - iostream - - - - - - - - - - - - Aadvark - - - bool - bool aadvarky_enough - (Aadvark aad) - aadvarky_enough - - Aadvark - aad - - - - - - - - - - - int - int main - () - main - - - - - - - - - - - - - - -#include<iostream> - -classAadvark{ -public: -voidprint(); -Aadvark(intaaness); -intget_aadvarkness(); -private: -intaadvarkness; -}; - -boolaadvarky_enough(Aadvarkaad); - -intmain(); - - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml deleted file mode 100644 index 54fe8b32c..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/classAadvark.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - Aadvark - aadvark.h - - - int - int Aadvark::aadvarkness - - aadvarkness - - - - - - - - - - - - void - void Aadvark::print - () - print - -Outputs the vital aadvark statistics. - - - - - - - - - Aadvark::Aadvark - (int aaness) - Aadvark - - int - aaness - - - - - - -aaness - - -The aadvarkness of an aadvark is a measure of how aadvarky it is. - - - - - - - - - int - int Aadvark::get_aadvarkness - () - get_aadvarkness - - - - - - - - - - -Models the mammal Aadvark. - -Sadly the model is incomplete and cannot capture all aspects of an aadvark yet.This line is uninformative and is only to test line breaks in the comments. - - - AadvarkAadvark - Aadvarkaadvarkness - Aadvarkget_aadvarkness - Aadvarkprint - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt deleted file mode 100644 index abdd9ac75..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/combine.xslt +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd deleted file mode 100644 index 369e2300f..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/compound.xsd +++ /dev/null @@ -1,814 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml deleted file mode 100644 index 13fd53f90..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - Aadvark - aadvarkness - print - Aadvark - get_aadvarkness - - aadvark.cc - aadvarky_enough - main - - aadvark.h - aadvarky_enough - main - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd b/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd deleted file mode 100644 index d7ab2a906..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/example/xml/index.xsd +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py deleted file mode 100644 index 39823979f..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -""" -Contains generated files produced by generateDS.py. - -These do the real work of parsing the doxygen xml files but the -resultant classes are not very friendly to navigate so the rest of the -doxyxml module processes them further. -""" diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py deleted file mode 100644 index 1522ac23f..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compound.py +++ /dev/null @@ -1,503 +0,0 @@ -#!/usr/bin/env python - -""" -Generated Mon Feb 9 19:08:05 2009 by generateDS.py. -""" - -from string import lower as str_lower -from xml.dom import minidom -from xml.dom import Node - -import sys - -import compoundsuper as supermod -from compoundsuper import MixedContainer - - -class DoxygenTypeSub(supermod.DoxygenType): - def __init__(self, version=None, compounddef=None): - supermod.DoxygenType.__init__(self, version, compounddef) - - def find(self, details): - - return self.compounddef.find(details) - -supermod.DoxygenType.subclass = DoxygenTypeSub -# end class DoxygenTypeSub - - -class compounddefTypeSub(supermod.compounddefType): - def __init__(self, kind=None, prot=None, id=None, compoundname='', title='', basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): - supermod.compounddefType.__init__(self, kind, prot, id, compoundname, title, basecompoundref, derivedcompoundref, includes, includedby, incdepgraph, invincdepgraph, innerdir, innerfile, innerclass, innernamespace, innerpage, innergroup, templateparamlist, sectiondef, briefdescription, detaileddescription, inheritancegraph, collaborationgraph, programlisting, location, listofallmembers) - - def find(self, details): - - if self.id == details.refid: - return self - - for sectiondef in self.sectiondef: - result = sectiondef.find(details) - if result: - return result - - -supermod.compounddefType.subclass = compounddefTypeSub -# end class compounddefTypeSub - - -class listofallmembersTypeSub(supermod.listofallmembersType): - def __init__(self, member=None): - supermod.listofallmembersType.__init__(self, member) -supermod.listofallmembersType.subclass = listofallmembersTypeSub -# end class listofallmembersTypeSub - - -class memberRefTypeSub(supermod.memberRefType): - def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope='', name=''): - supermod.memberRefType.__init__(self, virt, prot, refid, ambiguityscope, scope, name) -supermod.memberRefType.subclass = memberRefTypeSub -# end class memberRefTypeSub - - -class compoundRefTypeSub(supermod.compoundRefType): - def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - supermod.compoundRefType.__init__(self, mixedclass_, content_) -supermod.compoundRefType.subclass = compoundRefTypeSub -# end class compoundRefTypeSub - - -class reimplementTypeSub(supermod.reimplementType): - def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): - supermod.reimplementType.__init__(self, mixedclass_, content_) -supermod.reimplementType.subclass = reimplementTypeSub -# end class reimplementTypeSub - - -class incTypeSub(supermod.incType): - def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - supermod.incType.__init__(self, mixedclass_, content_) -supermod.incType.subclass = incTypeSub -# end class incTypeSub - - -class refTypeSub(supermod.refType): - def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - supermod.refType.__init__(self, mixedclass_, content_) -supermod.refType.subclass = refTypeSub -# end class refTypeSub - - - -class refTextTypeSub(supermod.refTextType): - def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): - supermod.refTextType.__init__(self, mixedclass_, content_) - -supermod.refTextType.subclass = refTextTypeSub -# end class refTextTypeSub - -class sectiondefTypeSub(supermod.sectiondefType): - - - def __init__(self, kind=None, header='', description=None, memberdef=None): - supermod.sectiondefType.__init__(self, kind, header, description, memberdef) - - def find(self, details): - - for memberdef in self.memberdef: - if memberdef.id == details.refid: - return memberdef - - return None - - -supermod.sectiondefType.subclass = sectiondefTypeSub -# end class sectiondefTypeSub - - -class memberdefTypeSub(supermod.memberdefType): - def __init__(self, initonly=None, kind=None, volatile=None, const=None, raise_=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition='', argsstring='', name='', read='', write='', bitfield='', reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): - supermod.memberdefType.__init__(self, initonly, kind, volatile, const, raise_, virt, readable, prot, explicit, new, final, writable, add, static, remove, sealed, mutable, gettable, inline, settable, id, templateparamlist, type_, definition, argsstring, name, read, write, bitfield, reimplements, reimplementedby, param, enumvalue, initializer, exceptions, briefdescription, detaileddescription, inbodydescription, location, references, referencedby) -supermod.memberdefType.subclass = memberdefTypeSub -# end class memberdefTypeSub - - -class descriptionTypeSub(supermod.descriptionType): - def __init__(self, title='', para=None, sect1=None, internal=None, mixedclass_=None, content_=None): - supermod.descriptionType.__init__(self, mixedclass_, content_) -supermod.descriptionType.subclass = descriptionTypeSub -# end class descriptionTypeSub - - -class enumvalueTypeSub(supermod.enumvalueType): - def __init__(self, prot=None, id=None, name='', initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): - supermod.enumvalueType.__init__(self, mixedclass_, content_) -supermod.enumvalueType.subclass = enumvalueTypeSub -# end class enumvalueTypeSub - - -class templateparamlistTypeSub(supermod.templateparamlistType): - def __init__(self, param=None): - supermod.templateparamlistType.__init__(self, param) -supermod.templateparamlistType.subclass = templateparamlistTypeSub -# end class templateparamlistTypeSub - - -class paramTypeSub(supermod.paramType): - def __init__(self, type_=None, declname='', defname='', array='', defval=None, briefdescription=None): - supermod.paramType.__init__(self, type_, declname, defname, array, defval, briefdescription) -supermod.paramType.subclass = paramTypeSub -# end class paramTypeSub - - -class linkedTextTypeSub(supermod.linkedTextType): - def __init__(self, ref=None, mixedclass_=None, content_=None): - supermod.linkedTextType.__init__(self, mixedclass_, content_) -supermod.linkedTextType.subclass = linkedTextTypeSub -# end class linkedTextTypeSub - - -class graphTypeSub(supermod.graphType): - def __init__(self, node=None): - supermod.graphType.__init__(self, node) -supermod.graphType.subclass = graphTypeSub -# end class graphTypeSub - - -class nodeTypeSub(supermod.nodeType): - def __init__(self, id=None, label='', link=None, childnode=None): - supermod.nodeType.__init__(self, id, label, link, childnode) -supermod.nodeType.subclass = nodeTypeSub -# end class nodeTypeSub - - -class childnodeTypeSub(supermod.childnodeType): - def __init__(self, relation=None, refid=None, edgelabel=None): - supermod.childnodeType.__init__(self, relation, refid, edgelabel) -supermod.childnodeType.subclass = childnodeTypeSub -# end class childnodeTypeSub - - -class linkTypeSub(supermod.linkType): - def __init__(self, refid=None, external=None, valueOf_=''): - supermod.linkType.__init__(self, refid, external) -supermod.linkType.subclass = linkTypeSub -# end class linkTypeSub - - -class listingTypeSub(supermod.listingType): - def __init__(self, codeline=None): - supermod.listingType.__init__(self, codeline) -supermod.listingType.subclass = listingTypeSub -# end class listingTypeSub - - -class codelineTypeSub(supermod.codelineType): - def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): - supermod.codelineType.__init__(self, external, lineno, refkind, refid, highlight) -supermod.codelineType.subclass = codelineTypeSub -# end class codelineTypeSub - - -class highlightTypeSub(supermod.highlightType): - def __init__(self, class_=None, sp=None, ref=None, mixedclass_=None, content_=None): - supermod.highlightType.__init__(self, mixedclass_, content_) -supermod.highlightType.subclass = highlightTypeSub -# end class highlightTypeSub - - -class referenceTypeSub(supermod.referenceType): - def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): - supermod.referenceType.__init__(self, mixedclass_, content_) -supermod.referenceType.subclass = referenceTypeSub -# end class referenceTypeSub - - -class locationTypeSub(supermod.locationType): - def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): - supermod.locationType.__init__(self, bodystart, line, bodyend, bodyfile, file) -supermod.locationType.subclass = locationTypeSub -# end class locationTypeSub - - -class docSect1TypeSub(supermod.docSect1Type): - def __init__(self, id=None, title='', para=None, sect2=None, internal=None, mixedclass_=None, content_=None): - supermod.docSect1Type.__init__(self, mixedclass_, content_) -supermod.docSect1Type.subclass = docSect1TypeSub -# end class docSect1TypeSub - - -class docSect2TypeSub(supermod.docSect2Type): - def __init__(self, id=None, title='', para=None, sect3=None, internal=None, mixedclass_=None, content_=None): - supermod.docSect2Type.__init__(self, mixedclass_, content_) -supermod.docSect2Type.subclass = docSect2TypeSub -# end class docSect2TypeSub - - -class docSect3TypeSub(supermod.docSect3Type): - def __init__(self, id=None, title='', para=None, sect4=None, internal=None, mixedclass_=None, content_=None): - supermod.docSect3Type.__init__(self, mixedclass_, content_) -supermod.docSect3Type.subclass = docSect3TypeSub -# end class docSect3TypeSub - - -class docSect4TypeSub(supermod.docSect4Type): - def __init__(self, id=None, title='', para=None, internal=None, mixedclass_=None, content_=None): - supermod.docSect4Type.__init__(self, mixedclass_, content_) -supermod.docSect4Type.subclass = docSect4TypeSub -# end class docSect4TypeSub - - -class docInternalTypeSub(supermod.docInternalType): - def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): - supermod.docInternalType.__init__(self, mixedclass_, content_) -supermod.docInternalType.subclass = docInternalTypeSub -# end class docInternalTypeSub - - -class docInternalS1TypeSub(supermod.docInternalS1Type): - def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): - supermod.docInternalS1Type.__init__(self, mixedclass_, content_) -supermod.docInternalS1Type.subclass = docInternalS1TypeSub -# end class docInternalS1TypeSub - - -class docInternalS2TypeSub(supermod.docInternalS2Type): - def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): - supermod.docInternalS2Type.__init__(self, mixedclass_, content_) -supermod.docInternalS2Type.subclass = docInternalS2TypeSub -# end class docInternalS2TypeSub - - -class docInternalS3TypeSub(supermod.docInternalS3Type): - def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): - supermod.docInternalS3Type.__init__(self, mixedclass_, content_) -supermod.docInternalS3Type.subclass = docInternalS3TypeSub -# end class docInternalS3TypeSub - - -class docInternalS4TypeSub(supermod.docInternalS4Type): - def __init__(self, para=None, mixedclass_=None, content_=None): - supermod.docInternalS4Type.__init__(self, mixedclass_, content_) -supermod.docInternalS4Type.subclass = docInternalS4TypeSub -# end class docInternalS4TypeSub - - -class docURLLinkSub(supermod.docURLLink): - def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docURLLink.__init__(self, mixedclass_, content_) -supermod.docURLLink.subclass = docURLLinkSub -# end class docURLLinkSub - - -class docAnchorTypeSub(supermod.docAnchorType): - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docAnchorType.__init__(self, mixedclass_, content_) -supermod.docAnchorType.subclass = docAnchorTypeSub -# end class docAnchorTypeSub - - -class docFormulaTypeSub(supermod.docFormulaType): - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docFormulaType.__init__(self, mixedclass_, content_) -supermod.docFormulaType.subclass = docFormulaTypeSub -# end class docFormulaTypeSub - - -class docIndexEntryTypeSub(supermod.docIndexEntryType): - def __init__(self, primaryie='', secondaryie=''): - supermod.docIndexEntryType.__init__(self, primaryie, secondaryie) -supermod.docIndexEntryType.subclass = docIndexEntryTypeSub -# end class docIndexEntryTypeSub - - -class docListTypeSub(supermod.docListType): - def __init__(self, listitem=None): - supermod.docListType.__init__(self, listitem) -supermod.docListType.subclass = docListTypeSub -# end class docListTypeSub - - -class docListItemTypeSub(supermod.docListItemType): - def __init__(self, para=None): - supermod.docListItemType.__init__(self, para) -supermod.docListItemType.subclass = docListItemTypeSub -# end class docListItemTypeSub - - -class docSimpleSectTypeSub(supermod.docSimpleSectType): - def __init__(self, kind=None, title=None, para=None): - supermod.docSimpleSectType.__init__(self, kind, title, para) -supermod.docSimpleSectType.subclass = docSimpleSectTypeSub -# end class docSimpleSectTypeSub - - -class docVarListEntryTypeSub(supermod.docVarListEntryType): - def __init__(self, term=None): - supermod.docVarListEntryType.__init__(self, term) -supermod.docVarListEntryType.subclass = docVarListEntryTypeSub -# end class docVarListEntryTypeSub - - -class docRefTextTypeSub(supermod.docRefTextType): - def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docRefTextType.__init__(self, mixedclass_, content_) -supermod.docRefTextType.subclass = docRefTextTypeSub -# end class docRefTextTypeSub - - -class docTableTypeSub(supermod.docTableType): - def __init__(self, rows=None, cols=None, row=None, caption=None): - supermod.docTableType.__init__(self, rows, cols, row, caption) -supermod.docTableType.subclass = docTableTypeSub -# end class docTableTypeSub - - -class docRowTypeSub(supermod.docRowType): - def __init__(self, entry=None): - supermod.docRowType.__init__(self, entry) -supermod.docRowType.subclass = docRowTypeSub -# end class docRowTypeSub - - -class docEntryTypeSub(supermod.docEntryType): - def __init__(self, thead=None, para=None): - supermod.docEntryType.__init__(self, thead, para) -supermod.docEntryType.subclass = docEntryTypeSub -# end class docEntryTypeSub - - -class docHeadingTypeSub(supermod.docHeadingType): - def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docHeadingType.__init__(self, mixedclass_, content_) -supermod.docHeadingType.subclass = docHeadingTypeSub -# end class docHeadingTypeSub - - -class docImageTypeSub(supermod.docImageType): - def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docImageType.__init__(self, mixedclass_, content_) -supermod.docImageType.subclass = docImageTypeSub -# end class docImageTypeSub - - -class docDotFileTypeSub(supermod.docDotFileType): - def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docDotFileType.__init__(self, mixedclass_, content_) -supermod.docDotFileType.subclass = docDotFileTypeSub -# end class docDotFileTypeSub - - -class docTocItemTypeSub(supermod.docTocItemType): - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - supermod.docTocItemType.__init__(self, mixedclass_, content_) -supermod.docTocItemType.subclass = docTocItemTypeSub -# end class docTocItemTypeSub - - -class docTocListTypeSub(supermod.docTocListType): - def __init__(self, tocitem=None): - supermod.docTocListType.__init__(self, tocitem) -supermod.docTocListType.subclass = docTocListTypeSub -# end class docTocListTypeSub - - -class docLanguageTypeSub(supermod.docLanguageType): - def __init__(self, langid=None, para=None): - supermod.docLanguageType.__init__(self, langid, para) -supermod.docLanguageType.subclass = docLanguageTypeSub -# end class docLanguageTypeSub - - -class docParamListTypeSub(supermod.docParamListType): - def __init__(self, kind=None, parameteritem=None): - supermod.docParamListType.__init__(self, kind, parameteritem) -supermod.docParamListType.subclass = docParamListTypeSub -# end class docParamListTypeSub - - -class docParamListItemSub(supermod.docParamListItem): - def __init__(self, parameternamelist=None, parameterdescription=None): - supermod.docParamListItem.__init__(self, parameternamelist, parameterdescription) -supermod.docParamListItem.subclass = docParamListItemSub -# end class docParamListItemSub - - -class docParamNameListSub(supermod.docParamNameList): - def __init__(self, parametername=None): - supermod.docParamNameList.__init__(self, parametername) -supermod.docParamNameList.subclass = docParamNameListSub -# end class docParamNameListSub - - -class docParamNameSub(supermod.docParamName): - def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): - supermod.docParamName.__init__(self, mixedclass_, content_) -supermod.docParamName.subclass = docParamNameSub -# end class docParamNameSub - - -class docXRefSectTypeSub(supermod.docXRefSectType): - def __init__(self, id=None, xreftitle=None, xrefdescription=None): - supermod.docXRefSectType.__init__(self, id, xreftitle, xrefdescription) -supermod.docXRefSectType.subclass = docXRefSectTypeSub -# end class docXRefSectTypeSub - - -class docCopyTypeSub(supermod.docCopyType): - def __init__(self, link=None, para=None, sect1=None, internal=None): - supermod.docCopyType.__init__(self, link, para, sect1, internal) -supermod.docCopyType.subclass = docCopyTypeSub -# end class docCopyTypeSub - - -class docCharTypeSub(supermod.docCharType): - def __init__(self, char=None, valueOf_=''): - supermod.docCharType.__init__(self, char) -supermod.docCharType.subclass = docCharTypeSub -# end class docCharTypeSub - -class docParaTypeSub(supermod.docParaType): - def __init__(self, char=None, valueOf_=''): - supermod.docParaType.__init__(self, char) - - self.parameterlist = [] - self.simplesects = [] - self.content = [] - - def buildChildren(self, child_, nodeName_): - supermod.docParaType.buildChildren(self, child_, nodeName_) - - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == "ref": - obj_ = supermod.docRefTextType.factory() - obj_.build(child_) - self.content.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'parameterlist': - obj_ = supermod.docParamListType.factory() - obj_.build(child_) - self.parameterlist.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'simplesect': - obj_ = supermod.docSimpleSectType.factory() - obj_.build(child_) - self.simplesects.append(obj_) - - -supermod.docParaType.subclass = docParaTypeSub -# end class docParaTypeSub - - - -def parse(inFilename): - doc = minidom.parse(inFilename) - rootNode = doc.documentElement - rootObj = supermod.DoxygenType.factory() - rootObj.build(rootNode) - return rootObj - - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py deleted file mode 100644 index 6255dda16..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/compoundsuper.py +++ /dev/null @@ -1,8342 +0,0 @@ -#!/usr/bin/env python - -# -# Generated Thu Jun 11 18:44:25 2009 by generateDS.py. -# - -import sys -import getopt -from string import lower as str_lower -from xml.dom import minidom -from xml.dom import Node - -# -# User methods -# -# Calls to the methods in these classes are generated by generateDS.py. -# You can replace these methods by re-implementing the following class -# in a module named generatedssuper.py. - -try: - from generatedssuper import GeneratedsSuper -except ImportError, exp: - - class GeneratedsSuper: - def format_string(self, input_data, input_name=''): - return input_data - def format_integer(self, input_data, input_name=''): - return '%d' % input_data - def format_float(self, input_data, input_name=''): - return '%f' % input_data - def format_double(self, input_data, input_name=''): - return '%e' % input_data - def format_boolean(self, input_data, input_name=''): - return '%s' % input_data - - -# -# If you have installed IPython you can uncomment and use the following. -# IPython is available from http://ipython.scipy.org/. -# - -## from IPython.Shell import IPShellEmbed -## args = '' -## ipshell = IPShellEmbed(args, -## banner = 'Dropping into IPython', -## exit_msg = 'Leaving Interpreter, back to program.') - -# Then use the following line where and when you want to drop into the -# IPython shell: -# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') - -# -# Globals -# - -ExternalEncoding = 'ascii' - -# -# Support/utility functions. -# - -def showIndent(outfile, level): - for idx in range(level): - outfile.write(' ') - -def quote_xml(inStr): - s1 = (isinstance(inStr, basestring) and inStr or - '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - return s1 - -def quote_attrib(inStr): - s1 = (isinstance(inStr, basestring) and inStr or - '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - if '"' in s1: - if "'" in s1: - s1 = '"%s"' % s1.replace('"', """) - else: - s1 = "'%s'" % s1 - else: - s1 = '"%s"' % s1 - return s1 - -def quote_python(inStr): - s1 = inStr - if s1.find("'") == -1: - if s1.find('\n') == -1: - return "'%s'" % s1 - else: - return "'''%s'''" % s1 - else: - if s1.find('"') != -1: - s1 = s1.replace('"', '\\"') - if s1.find('\n') == -1: - return '"%s"' % s1 - else: - return '"""%s"""' % s1 - - -class MixedContainer: - # Constants for category: - CategoryNone = 0 - CategoryText = 1 - CategorySimple = 2 - CategoryComplex = 3 - # Constants for content_type: - TypeNone = 0 - TypeText = 1 - TypeString = 2 - TypeInteger = 3 - TypeFloat = 4 - TypeDecimal = 5 - TypeDouble = 6 - TypeBoolean = 7 - def __init__(self, category, content_type, name, value): - self.category = category - self.content_type = content_type - self.name = name - self.value = value - def getCategory(self): - return self.category - def getContenttype(self, content_type): - return self.content_type - def getValue(self): - return self.value - def getName(self): - return self.name - def export(self, outfile, level, name, namespace): - if self.category == MixedContainer.CategoryText: - outfile.write(self.value) - elif self.category == MixedContainer.CategorySimple: - self.exportSimple(outfile, level, name) - else: # category == MixedContainer.CategoryComplex - self.value.export(outfile, level, namespace,name) - def exportSimple(self, outfile, level, name): - if self.content_type == MixedContainer.TypeString: - outfile.write('<%s>%s' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeInteger or \ - self.content_type == MixedContainer.TypeBoolean: - outfile.write('<%s>%d' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeFloat or \ - self.content_type == MixedContainer.TypeDecimal: - outfile.write('<%s>%f' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeDouble: - outfile.write('<%s>%g' % (self.name, self.value, self.name)) - def exportLiteral(self, outfile, level, name): - if self.category == MixedContainer.CategoryText: - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ - (self.category, self.content_type, self.name, self.value)) - elif self.category == MixedContainer.CategorySimple: - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ - (self.category, self.content_type, self.name, self.value)) - else: # category == MixedContainer.CategoryComplex - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s",\n' % \ - (self.category, self.content_type, self.name,)) - self.value.exportLiteral(outfile, level + 1) - showIndent(outfile, level) - outfile.write(')\n') - - -class _MemberSpec(object): - def __init__(self, name='', data_type='', container=0): - self.name = name - self.data_type = data_type - self.container = container - def set_name(self, name): self.name = name - def get_name(self): return self.name - def set_data_type(self, data_type): self.data_type = data_type - def get_data_type(self): return self.data_type - def set_container(self, container): self.container = container - def get_container(self): return self.container - - -# -# Data representation classes. -# - -class DoxygenType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, version=None, compounddef=None): - self.version = version - self.compounddef = compounddef - def factory(*args_, **kwargs_): - if DoxygenType.subclass: - return DoxygenType.subclass(*args_, **kwargs_) - else: - return DoxygenType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_compounddef(self): return self.compounddef - def set_compounddef(self, compounddef): self.compounddef = compounddef - def get_version(self): return self.version - def set_version(self, version): self.version = version - def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): - outfile.write(' version=%s' % (quote_attrib(self.version), )) - def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): - if self.compounddef: - self.compounddef.export(outfile, level, namespace_, name_='compounddef') - def hasContent_(self): - if ( - self.compounddef is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='DoxygenType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.version is not None: - showIndent(outfile, level) - outfile.write('version = "%s",\n' % (self.version,)) - def exportLiteralChildren(self, outfile, level, name_): - if self.compounddef: - showIndent(outfile, level) - outfile.write('compounddef=model_.compounddefType(\n') - self.compounddef.exportLiteral(outfile, level, name_='compounddef') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('version'): - self.version = attrs.get('version').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'compounddef': - obj_ = compounddefType.factory() - obj_.build(child_) - self.set_compounddef(obj_) -# end class DoxygenType - - -class compounddefType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, prot=None, id=None, compoundname=None, title=None, basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): - self.kind = kind - self.prot = prot - self.id = id - self.compoundname = compoundname - self.title = title - if basecompoundref is None: - self.basecompoundref = [] - else: - self.basecompoundref = basecompoundref - if derivedcompoundref is None: - self.derivedcompoundref = [] - else: - self.derivedcompoundref = derivedcompoundref - if includes is None: - self.includes = [] - else: - self.includes = includes - if includedby is None: - self.includedby = [] - else: - self.includedby = includedby - self.incdepgraph = incdepgraph - self.invincdepgraph = invincdepgraph - if innerdir is None: - self.innerdir = [] - else: - self.innerdir = innerdir - if innerfile is None: - self.innerfile = [] - else: - self.innerfile = innerfile - if innerclass is None: - self.innerclass = [] - else: - self.innerclass = innerclass - if innernamespace is None: - self.innernamespace = [] - else: - self.innernamespace = innernamespace - if innerpage is None: - self.innerpage = [] - else: - self.innerpage = innerpage - if innergroup is None: - self.innergroup = [] - else: - self.innergroup = innergroup - self.templateparamlist = templateparamlist - if sectiondef is None: - self.sectiondef = [] - else: - self.sectiondef = sectiondef - self.briefdescription = briefdescription - self.detaileddescription = detaileddescription - self.inheritancegraph = inheritancegraph - self.collaborationgraph = collaborationgraph - self.programlisting = programlisting - self.location = location - self.listofallmembers = listofallmembers - def factory(*args_, **kwargs_): - if compounddefType.subclass: - return compounddefType.subclass(*args_, **kwargs_) - else: - return compounddefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_compoundname(self): return self.compoundname - def set_compoundname(self, compoundname): self.compoundname = compoundname - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_basecompoundref(self): return self.basecompoundref - def set_basecompoundref(self, basecompoundref): self.basecompoundref = basecompoundref - def add_basecompoundref(self, value): self.basecompoundref.append(value) - def insert_basecompoundref(self, index, value): self.basecompoundref[index] = value - def get_derivedcompoundref(self): return self.derivedcompoundref - def set_derivedcompoundref(self, derivedcompoundref): self.derivedcompoundref = derivedcompoundref - def add_derivedcompoundref(self, value): self.derivedcompoundref.append(value) - def insert_derivedcompoundref(self, index, value): self.derivedcompoundref[index] = value - def get_includes(self): return self.includes - def set_includes(self, includes): self.includes = includes - def add_includes(self, value): self.includes.append(value) - def insert_includes(self, index, value): self.includes[index] = value - def get_includedby(self): return self.includedby - def set_includedby(self, includedby): self.includedby = includedby - def add_includedby(self, value): self.includedby.append(value) - def insert_includedby(self, index, value): self.includedby[index] = value - def get_incdepgraph(self): return self.incdepgraph - def set_incdepgraph(self, incdepgraph): self.incdepgraph = incdepgraph - def get_invincdepgraph(self): return self.invincdepgraph - def set_invincdepgraph(self, invincdepgraph): self.invincdepgraph = invincdepgraph - def get_innerdir(self): return self.innerdir - def set_innerdir(self, innerdir): self.innerdir = innerdir - def add_innerdir(self, value): self.innerdir.append(value) - def insert_innerdir(self, index, value): self.innerdir[index] = value - def get_innerfile(self): return self.innerfile - def set_innerfile(self, innerfile): self.innerfile = innerfile - def add_innerfile(self, value): self.innerfile.append(value) - def insert_innerfile(self, index, value): self.innerfile[index] = value - def get_innerclass(self): return self.innerclass - def set_innerclass(self, innerclass): self.innerclass = innerclass - def add_innerclass(self, value): self.innerclass.append(value) - def insert_innerclass(self, index, value): self.innerclass[index] = value - def get_innernamespace(self): return self.innernamespace - def set_innernamespace(self, innernamespace): self.innernamespace = innernamespace - def add_innernamespace(self, value): self.innernamespace.append(value) - def insert_innernamespace(self, index, value): self.innernamespace[index] = value - def get_innerpage(self): return self.innerpage - def set_innerpage(self, innerpage): self.innerpage = innerpage - def add_innerpage(self, value): self.innerpage.append(value) - def insert_innerpage(self, index, value): self.innerpage[index] = value - def get_innergroup(self): return self.innergroup - def set_innergroup(self, innergroup): self.innergroup = innergroup - def add_innergroup(self, value): self.innergroup.append(value) - def insert_innergroup(self, index, value): self.innergroup[index] = value - def get_templateparamlist(self): return self.templateparamlist - def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist - def get_sectiondef(self): return self.sectiondef - def set_sectiondef(self, sectiondef): self.sectiondef = sectiondef - def add_sectiondef(self, value): self.sectiondef.append(value) - def insert_sectiondef(self, index, value): self.sectiondef[index] = value - def get_briefdescription(self): return self.briefdescription - def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription - def get_detaileddescription(self): return self.detaileddescription - def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription - def get_inheritancegraph(self): return self.inheritancegraph - def set_inheritancegraph(self, inheritancegraph): self.inheritancegraph = inheritancegraph - def get_collaborationgraph(self): return self.collaborationgraph - def set_collaborationgraph(self, collaborationgraph): self.collaborationgraph = collaborationgraph - def get_programlisting(self): return self.programlisting - def set_programlisting(self, programlisting): self.programlisting = programlisting - def get_location(self): return self.location - def set_location(self, location): self.location = location - def get_listofallmembers(self): return self.listofallmembers - def set_listofallmembers(self, listofallmembers): self.listofallmembers = listofallmembers - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='compounddefType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='compounddefType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='compounddefType'): - if self.kind is not None: - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='compounddefType'): - if self.compoundname is not None: - showIndent(outfile, level) - outfile.write('<%scompoundname>%s\n' % (namespace_, self.format_string(quote_xml(self.compoundname).encode(ExternalEncoding), input_name='compoundname'), namespace_)) - if self.title is not None: - showIndent(outfile, level) - outfile.write('<%stitle>%s\n' % (namespace_, self.format_string(quote_xml(self.title).encode(ExternalEncoding), input_name='title'), namespace_)) - for basecompoundref_ in self.basecompoundref: - basecompoundref_.export(outfile, level, namespace_, name_='basecompoundref') - for derivedcompoundref_ in self.derivedcompoundref: - derivedcompoundref_.export(outfile, level, namespace_, name_='derivedcompoundref') - for includes_ in self.includes: - includes_.export(outfile, level, namespace_, name_='includes') - for includedby_ in self.includedby: - includedby_.export(outfile, level, namespace_, name_='includedby') - if self.incdepgraph: - self.incdepgraph.export(outfile, level, namespace_, name_='incdepgraph') - if self.invincdepgraph: - self.invincdepgraph.export(outfile, level, namespace_, name_='invincdepgraph') - for innerdir_ in self.innerdir: - innerdir_.export(outfile, level, namespace_, name_='innerdir') - for innerfile_ in self.innerfile: - innerfile_.export(outfile, level, namespace_, name_='innerfile') - for innerclass_ in self.innerclass: - innerclass_.export(outfile, level, namespace_, name_='innerclass') - for innernamespace_ in self.innernamespace: - innernamespace_.export(outfile, level, namespace_, name_='innernamespace') - for innerpage_ in self.innerpage: - innerpage_.export(outfile, level, namespace_, name_='innerpage') - for innergroup_ in self.innergroup: - innergroup_.export(outfile, level, namespace_, name_='innergroup') - if self.templateparamlist: - self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') - for sectiondef_ in self.sectiondef: - sectiondef_.export(outfile, level, namespace_, name_='sectiondef') - if self.briefdescription: - self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') - if self.detaileddescription: - self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') - if self.inheritancegraph: - self.inheritancegraph.export(outfile, level, namespace_, name_='inheritancegraph') - if self.collaborationgraph: - self.collaborationgraph.export(outfile, level, namespace_, name_='collaborationgraph') - if self.programlisting: - self.programlisting.export(outfile, level, namespace_, name_='programlisting') - if self.location: - self.location.export(outfile, level, namespace_, name_='location') - if self.listofallmembers: - self.listofallmembers.export(outfile, level, namespace_, name_='listofallmembers') - def hasContent_(self): - if ( - self.compoundname is not None or - self.title is not None or - self.basecompoundref is not None or - self.derivedcompoundref is not None or - self.includes is not None or - self.includedby is not None or - self.incdepgraph is not None or - self.invincdepgraph is not None or - self.innerdir is not None or - self.innerfile is not None or - self.innerclass is not None or - self.innernamespace is not None or - self.innerpage is not None or - self.innergroup is not None or - self.templateparamlist is not None or - self.sectiondef is not None or - self.briefdescription is not None or - self.detaileddescription is not None or - self.inheritancegraph is not None or - self.collaborationgraph is not None or - self.programlisting is not None or - self.location is not None or - self.listofallmembers is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='compounddefType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('compoundname=%s,\n' % quote_python(self.compoundname).encode(ExternalEncoding)) - if self.title: - showIndent(outfile, level) - outfile.write('title=model_.xsd_string(\n') - self.title.exportLiteral(outfile, level, name_='title') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('basecompoundref=[\n') - level += 1 - for basecompoundref in self.basecompoundref: - showIndent(outfile, level) - outfile.write('model_.basecompoundref(\n') - basecompoundref.exportLiteral(outfile, level, name_='basecompoundref') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('derivedcompoundref=[\n') - level += 1 - for derivedcompoundref in self.derivedcompoundref: - showIndent(outfile, level) - outfile.write('model_.derivedcompoundref(\n') - derivedcompoundref.exportLiteral(outfile, level, name_='derivedcompoundref') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('includes=[\n') - level += 1 - for includes in self.includes: - showIndent(outfile, level) - outfile.write('model_.includes(\n') - includes.exportLiteral(outfile, level, name_='includes') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('includedby=[\n') - level += 1 - for includedby in self.includedby: - showIndent(outfile, level) - outfile.write('model_.includedby(\n') - includedby.exportLiteral(outfile, level, name_='includedby') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.incdepgraph: - showIndent(outfile, level) - outfile.write('incdepgraph=model_.graphType(\n') - self.incdepgraph.exportLiteral(outfile, level, name_='incdepgraph') - showIndent(outfile, level) - outfile.write('),\n') - if self.invincdepgraph: - showIndent(outfile, level) - outfile.write('invincdepgraph=model_.graphType(\n') - self.invincdepgraph.exportLiteral(outfile, level, name_='invincdepgraph') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('innerdir=[\n') - level += 1 - for innerdir in self.innerdir: - showIndent(outfile, level) - outfile.write('model_.innerdir(\n') - innerdir.exportLiteral(outfile, level, name_='innerdir') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('innerfile=[\n') - level += 1 - for innerfile in self.innerfile: - showIndent(outfile, level) - outfile.write('model_.innerfile(\n') - innerfile.exportLiteral(outfile, level, name_='innerfile') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('innerclass=[\n') - level += 1 - for innerclass in self.innerclass: - showIndent(outfile, level) - outfile.write('model_.innerclass(\n') - innerclass.exportLiteral(outfile, level, name_='innerclass') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('innernamespace=[\n') - level += 1 - for innernamespace in self.innernamespace: - showIndent(outfile, level) - outfile.write('model_.innernamespace(\n') - innernamespace.exportLiteral(outfile, level, name_='innernamespace') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('innerpage=[\n') - level += 1 - for innerpage in self.innerpage: - showIndent(outfile, level) - outfile.write('model_.innerpage(\n') - innerpage.exportLiteral(outfile, level, name_='innerpage') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('innergroup=[\n') - level += 1 - for innergroup in self.innergroup: - showIndent(outfile, level) - outfile.write('model_.innergroup(\n') - innergroup.exportLiteral(outfile, level, name_='innergroup') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.templateparamlist: - showIndent(outfile, level) - outfile.write('templateparamlist=model_.templateparamlistType(\n') - self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('sectiondef=[\n') - level += 1 - for sectiondef in self.sectiondef: - showIndent(outfile, level) - outfile.write('model_.sectiondef(\n') - sectiondef.exportLiteral(outfile, level, name_='sectiondef') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.briefdescription: - showIndent(outfile, level) - outfile.write('briefdescription=model_.descriptionType(\n') - self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') - showIndent(outfile, level) - outfile.write('),\n') - if self.detaileddescription: - showIndent(outfile, level) - outfile.write('detaileddescription=model_.descriptionType(\n') - self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') - showIndent(outfile, level) - outfile.write('),\n') - if self.inheritancegraph: - showIndent(outfile, level) - outfile.write('inheritancegraph=model_.graphType(\n') - self.inheritancegraph.exportLiteral(outfile, level, name_='inheritancegraph') - showIndent(outfile, level) - outfile.write('),\n') - if self.collaborationgraph: - showIndent(outfile, level) - outfile.write('collaborationgraph=model_.graphType(\n') - self.collaborationgraph.exportLiteral(outfile, level, name_='collaborationgraph') - showIndent(outfile, level) - outfile.write('),\n') - if self.programlisting: - showIndent(outfile, level) - outfile.write('programlisting=model_.listingType(\n') - self.programlisting.exportLiteral(outfile, level, name_='programlisting') - showIndent(outfile, level) - outfile.write('),\n') - if self.location: - showIndent(outfile, level) - outfile.write('location=model_.locationType(\n') - self.location.exportLiteral(outfile, level, name_='location') - showIndent(outfile, level) - outfile.write('),\n') - if self.listofallmembers: - showIndent(outfile, level) - outfile.write('listofallmembers=model_.listofallmembersType(\n') - self.listofallmembers.exportLiteral(outfile, level, name_='listofallmembers') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'compoundname': - compoundname_ = '' - for text__content_ in child_.childNodes: - compoundname_ += text__content_.nodeValue - self.compoundname = compoundname_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - obj_ = docTitleType.factory() - obj_.build(child_) - self.set_title(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'basecompoundref': - obj_ = compoundRefType.factory() - obj_.build(child_) - self.basecompoundref.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'derivedcompoundref': - obj_ = compoundRefType.factory() - obj_.build(child_) - self.derivedcompoundref.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'includes': - obj_ = incType.factory() - obj_.build(child_) - self.includes.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'includedby': - obj_ = incType.factory() - obj_.build(child_) - self.includedby.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'incdepgraph': - obj_ = graphType.factory() - obj_.build(child_) - self.set_incdepgraph(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'invincdepgraph': - obj_ = graphType.factory() - obj_.build(child_) - self.set_invincdepgraph(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innerdir': - obj_ = refType.factory() - obj_.build(child_) - self.innerdir.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innerfile': - obj_ = refType.factory() - obj_.build(child_) - self.innerfile.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innerclass': - obj_ = refType.factory() - obj_.build(child_) - self.innerclass.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innernamespace': - obj_ = refType.factory() - obj_.build(child_) - self.innernamespace.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innerpage': - obj_ = refType.factory() - obj_.build(child_) - self.innerpage.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'innergroup': - obj_ = refType.factory() - obj_.build(child_) - self.innergroup.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'templateparamlist': - obj_ = templateparamlistType.factory() - obj_.build(child_) - self.set_templateparamlist(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sectiondef': - obj_ = sectiondefType.factory() - obj_.build(child_) - self.sectiondef.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'briefdescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_briefdescription(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'detaileddescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_detaileddescription(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'inheritancegraph': - obj_ = graphType.factory() - obj_.build(child_) - self.set_inheritancegraph(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'collaborationgraph': - obj_ = graphType.factory() - obj_.build(child_) - self.set_collaborationgraph(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'programlisting': - obj_ = listingType.factory() - obj_.build(child_) - self.set_programlisting(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'location': - obj_ = locationType.factory() - obj_.build(child_) - self.set_location(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'listofallmembers': - obj_ = listofallmembersType.factory() - obj_.build(child_) - self.set_listofallmembers(obj_) -# end class compounddefType - - -class listofallmembersType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, member=None): - if member is None: - self.member = [] - else: - self.member = member - def factory(*args_, **kwargs_): - if listofallmembersType.subclass: - return listofallmembersType.subclass(*args_, **kwargs_) - else: - return listofallmembersType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_member(self): return self.member - def set_member(self, member): self.member = member - def add_member(self, value): self.member.append(value) - def insert_member(self, index, value): self.member[index] = value - def export(self, outfile, level, namespace_='', name_='listofallmembersType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='listofallmembersType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='listofallmembersType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='listofallmembersType'): - for member_ in self.member: - member_.export(outfile, level, namespace_, name_='member') - def hasContent_(self): - if ( - self.member is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='listofallmembersType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('member=[\n') - level += 1 - for member in self.member: - showIndent(outfile, level) - outfile.write('model_.member(\n') - member.exportLiteral(outfile, level, name_='member') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'member': - obj_ = memberRefType.factory() - obj_.build(child_) - self.member.append(obj_) -# end class listofallmembersType - - -class memberRefType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope=None, name=None): - self.virt = virt - self.prot = prot - self.refid = refid - self.ambiguityscope = ambiguityscope - self.scope = scope - self.name = name - def factory(*args_, **kwargs_): - if memberRefType.subclass: - return memberRefType.subclass(*args_, **kwargs_) - else: - return memberRefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_scope(self): return self.scope - def set_scope(self, scope): self.scope = scope - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_virt(self): return self.virt - def set_virt(self, virt): self.virt = virt - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def get_ambiguityscope(self): return self.ambiguityscope - def set_ambiguityscope(self, ambiguityscope): self.ambiguityscope = ambiguityscope - def export(self, outfile, level, namespace_='', name_='memberRefType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='memberRefType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='memberRefType'): - if self.virt is not None: - outfile.write(' virt=%s' % (quote_attrib(self.virt), )) - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - if self.ambiguityscope is not None: - outfile.write(' ambiguityscope=%s' % (self.format_string(quote_attrib(self.ambiguityscope).encode(ExternalEncoding), input_name='ambiguityscope'), )) - def exportChildren(self, outfile, level, namespace_='', name_='memberRefType'): - if self.scope is not None: - showIndent(outfile, level) - outfile.write('<%sscope>%s\n' % (namespace_, self.format_string(quote_xml(self.scope).encode(ExternalEncoding), input_name='scope'), namespace_)) - if self.name is not None: - showIndent(outfile, level) - outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) - def hasContent_(self): - if ( - self.scope is not None or - self.name is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='memberRefType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.virt is not None: - showIndent(outfile, level) - outfile.write('virt = "%s",\n' % (self.virt,)) - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - if self.ambiguityscope is not None: - showIndent(outfile, level) - outfile.write('ambiguityscope = %s,\n' % (self.ambiguityscope,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('scope=%s,\n' % quote_python(self.scope).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('virt'): - self.virt = attrs.get('virt').value - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - if attrs.get('ambiguityscope'): - self.ambiguityscope = attrs.get('ambiguityscope').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'scope': - scope_ = '' - for text__content_ in child_.childNodes: - scope_ += text__content_.nodeValue - self.scope = scope_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'name': - name_ = '' - for text__content_ in child_.childNodes: - name_ += text__content_.nodeValue - self.name = name_ -# end class memberRefType - - -class scope(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if scope.subclass: - return scope.subclass(*args_, **kwargs_) - else: - return scope(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='scope', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='scope') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='scope'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='scope'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='scope'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class scope - - -class name(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if name.subclass: - return name.subclass(*args_, **kwargs_) - else: - return name(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='name', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='name') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='name'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='name'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='name'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class name - - -class compoundRefType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - self.virt = virt - self.prot = prot - self.refid = refid - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if compoundRefType.subclass: - return compoundRefType.subclass(*args_, **kwargs_) - else: - return compoundRefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_virt(self): return self.virt - def set_virt(self, virt): self.virt = virt - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='compoundRefType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='compoundRefType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='compoundRefType'): - if self.virt is not None: - outfile.write(' virt=%s' % (quote_attrib(self.virt), )) - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='compoundRefType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='compoundRefType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.virt is not None: - showIndent(outfile, level) - outfile.write('virt = "%s",\n' % (self.virt,)) - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('virt'): - self.virt = attrs.get('virt').value - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class compoundRefType - - -class reimplementType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): - self.refid = refid - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if reimplementType.subclass: - return reimplementType.subclass(*args_, **kwargs_) - else: - return reimplementType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='reimplementType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='reimplementType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='reimplementType'): - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='reimplementType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='reimplementType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class reimplementType - - -class incType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - self.local = local - self.refid = refid - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if incType.subclass: - return incType.subclass(*args_, **kwargs_) - else: - return incType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_local(self): return self.local - def set_local(self, local): self.local = local - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='incType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='incType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='incType'): - if self.local is not None: - outfile.write(' local=%s' % (quote_attrib(self.local), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='incType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='incType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.local is not None: - showIndent(outfile, level) - outfile.write('local = "%s",\n' % (self.local,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('local'): - self.local = attrs.get('local').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class incType - - -class refType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): - self.prot = prot - self.refid = refid - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if refType.subclass: - return refType.subclass(*args_, **kwargs_) - else: - return refType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='refType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='refType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='refType'): - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='refType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='refType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class refType - - -class refTextType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): - self.refid = refid - self.kindref = kindref - self.external = external - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if refTextType.subclass: - return refTextType.subclass(*args_, **kwargs_) - else: - return refTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def get_kindref(self): return self.kindref - def set_kindref(self, kindref): self.kindref = kindref - def get_external(self): return self.external - def set_external(self, external): self.external = external - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='refTextType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='refTextType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='refTextType'): - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - if self.kindref is not None: - outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) - if self.external is not None: - outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) - def exportChildren(self, outfile, level, namespace_='', name_='refTextType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='refTextType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - if self.kindref is not None: - showIndent(outfile, level) - outfile.write('kindref = "%s",\n' % (self.kindref,)) - if self.external is not None: - showIndent(outfile, level) - outfile.write('external = %s,\n' % (self.external,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('refid'): - self.refid = attrs.get('refid').value - if attrs.get('kindref'): - self.kindref = attrs.get('kindref').value - if attrs.get('external'): - self.external = attrs.get('external').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class refTextType - - -class sectiondefType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, header=None, description=None, memberdef=None): - self.kind = kind - self.header = header - self.description = description - if memberdef is None: - self.memberdef = [] - else: - self.memberdef = memberdef - def factory(*args_, **kwargs_): - if sectiondefType.subclass: - return sectiondefType.subclass(*args_, **kwargs_) - else: - return sectiondefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_header(self): return self.header - def set_header(self, header): self.header = header - def get_description(self): return self.description - def set_description(self, description): self.description = description - def get_memberdef(self): return self.memberdef - def set_memberdef(self, memberdef): self.memberdef = memberdef - def add_memberdef(self, value): self.memberdef.append(value) - def insert_memberdef(self, index, value): self.memberdef[index] = value - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def export(self, outfile, level, namespace_='', name_='sectiondefType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='sectiondefType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='sectiondefType'): - if self.kind is not None: - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - def exportChildren(self, outfile, level, namespace_='', name_='sectiondefType'): - if self.header is not None: - showIndent(outfile, level) - outfile.write('<%sheader>%s\n' % (namespace_, self.format_string(quote_xml(self.header).encode(ExternalEncoding), input_name='header'), namespace_)) - if self.description: - self.description.export(outfile, level, namespace_, name_='description') - for memberdef_ in self.memberdef: - memberdef_.export(outfile, level, namespace_, name_='memberdef') - def hasContent_(self): - if ( - self.header is not None or - self.description is not None or - self.memberdef is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='sectiondefType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('header=%s,\n' % quote_python(self.header).encode(ExternalEncoding)) - if self.description: - showIndent(outfile, level) - outfile.write('description=model_.descriptionType(\n') - self.description.exportLiteral(outfile, level, name_='description') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('memberdef=[\n') - level += 1 - for memberdef in self.memberdef: - showIndent(outfile, level) - outfile.write('model_.memberdef(\n') - memberdef.exportLiteral(outfile, level, name_='memberdef') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'header': - header_ = '' - for text__content_ in child_.childNodes: - header_ += text__content_.nodeValue - self.header = header_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'description': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_description(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'memberdef': - obj_ = memberdefType.factory() - obj_.build(child_) - self.memberdef.append(obj_) -# end class sectiondefType - - -class memberdefType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, initonly=None, kind=None, volatile=None, const=None, raisexx=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition=None, argsstring=None, name=None, read=None, write=None, bitfield=None, reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): - self.initonly = initonly - self.kind = kind - self.volatile = volatile - self.const = const - self.raisexx = raisexx - self.virt = virt - self.readable = readable - self.prot = prot - self.explicit = explicit - self.new = new - self.final = final - self.writable = writable - self.add = add - self.static = static - self.remove = remove - self.sealed = sealed - self.mutable = mutable - self.gettable = gettable - self.inline = inline - self.settable = settable - self.id = id - self.templateparamlist = templateparamlist - self.type_ = type_ - self.definition = definition - self.argsstring = argsstring - self.name = name - self.read = read - self.write = write - self.bitfield = bitfield - if reimplements is None: - self.reimplements = [] - else: - self.reimplements = reimplements - if reimplementedby is None: - self.reimplementedby = [] - else: - self.reimplementedby = reimplementedby - if param is None: - self.param = [] - else: - self.param = param - if enumvalue is None: - self.enumvalue = [] - else: - self.enumvalue = enumvalue - self.initializer = initializer - self.exceptions = exceptions - self.briefdescription = briefdescription - self.detaileddescription = detaileddescription - self.inbodydescription = inbodydescription - self.location = location - if references is None: - self.references = [] - else: - self.references = references - if referencedby is None: - self.referencedby = [] - else: - self.referencedby = referencedby - def factory(*args_, **kwargs_): - if memberdefType.subclass: - return memberdefType.subclass(*args_, **kwargs_) - else: - return memberdefType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_templateparamlist(self): return self.templateparamlist - def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist - def get_type(self): return self.type_ - def set_type(self, type_): self.type_ = type_ - def get_definition(self): return self.definition - def set_definition(self, definition): self.definition = definition - def get_argsstring(self): return self.argsstring - def set_argsstring(self, argsstring): self.argsstring = argsstring - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_read(self): return self.read - def set_read(self, read): self.read = read - def get_write(self): return self.write - def set_write(self, write): self.write = write - def get_bitfield(self): return self.bitfield - def set_bitfield(self, bitfield): self.bitfield = bitfield - def get_reimplements(self): return self.reimplements - def set_reimplements(self, reimplements): self.reimplements = reimplements - def add_reimplements(self, value): self.reimplements.append(value) - def insert_reimplements(self, index, value): self.reimplements[index] = value - def get_reimplementedby(self): return self.reimplementedby - def set_reimplementedby(self, reimplementedby): self.reimplementedby = reimplementedby - def add_reimplementedby(self, value): self.reimplementedby.append(value) - def insert_reimplementedby(self, index, value): self.reimplementedby[index] = value - def get_param(self): return self.param - def set_param(self, param): self.param = param - def add_param(self, value): self.param.append(value) - def insert_param(self, index, value): self.param[index] = value - def get_enumvalue(self): return self.enumvalue - def set_enumvalue(self, enumvalue): self.enumvalue = enumvalue - def add_enumvalue(self, value): self.enumvalue.append(value) - def insert_enumvalue(self, index, value): self.enumvalue[index] = value - def get_initializer(self): return self.initializer - def set_initializer(self, initializer): self.initializer = initializer - def get_exceptions(self): return self.exceptions - def set_exceptions(self, exceptions): self.exceptions = exceptions - def get_briefdescription(self): return self.briefdescription - def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription - def get_detaileddescription(self): return self.detaileddescription - def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription - def get_inbodydescription(self): return self.inbodydescription - def set_inbodydescription(self, inbodydescription): self.inbodydescription = inbodydescription - def get_location(self): return self.location - def set_location(self, location): self.location = location - def get_references(self): return self.references - def set_references(self, references): self.references = references - def add_references(self, value): self.references.append(value) - def insert_references(self, index, value): self.references[index] = value - def get_referencedby(self): return self.referencedby - def set_referencedby(self, referencedby): self.referencedby = referencedby - def add_referencedby(self, value): self.referencedby.append(value) - def insert_referencedby(self, index, value): self.referencedby[index] = value - def get_initonly(self): return self.initonly - def set_initonly(self, initonly): self.initonly = initonly - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def get_volatile(self): return self.volatile - def set_volatile(self, volatile): self.volatile = volatile - def get_const(self): return self.const - def set_const(self, const): self.const = const - def get_raise(self): return self.raisexx - def set_raise(self, raisexx): self.raisexx = raisexx - def get_virt(self): return self.virt - def set_virt(self, virt): self.virt = virt - def get_readable(self): return self.readable - def set_readable(self, readable): self.readable = readable - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_explicit(self): return self.explicit - def set_explicit(self, explicit): self.explicit = explicit - def get_new(self): return self.new - def set_new(self, new): self.new = new - def get_final(self): return self.final - def set_final(self, final): self.final = final - def get_writable(self): return self.writable - def set_writable(self, writable): self.writable = writable - def get_add(self): return self.add - def set_add(self, add): self.add = add - def get_static(self): return self.static - def set_static(self, static): self.static = static - def get_remove(self): return self.remove - def set_remove(self, remove): self.remove = remove - def get_sealed(self): return self.sealed - def set_sealed(self, sealed): self.sealed = sealed - def get_mutable(self): return self.mutable - def set_mutable(self, mutable): self.mutable = mutable - def get_gettable(self): return self.gettable - def set_gettable(self, gettable): self.gettable = gettable - def get_inline(self): return self.inline - def set_inline(self, inline): self.inline = inline - def get_settable(self): return self.settable - def set_settable(self, settable): self.settable = settable - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='memberdefType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='memberdefType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='memberdefType'): - if self.initonly is not None: - outfile.write(' initonly=%s' % (quote_attrib(self.initonly), )) - if self.kind is not None: - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - if self.volatile is not None: - outfile.write(' volatile=%s' % (quote_attrib(self.volatile), )) - if self.const is not None: - outfile.write(' const=%s' % (quote_attrib(self.const), )) - if self.raisexx is not None: - outfile.write(' raise=%s' % (quote_attrib(self.raisexx), )) - if self.virt is not None: - outfile.write(' virt=%s' % (quote_attrib(self.virt), )) - if self.readable is not None: - outfile.write(' readable=%s' % (quote_attrib(self.readable), )) - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.explicit is not None: - outfile.write(' explicit=%s' % (quote_attrib(self.explicit), )) - if self.new is not None: - outfile.write(' new=%s' % (quote_attrib(self.new), )) - if self.final is not None: - outfile.write(' final=%s' % (quote_attrib(self.final), )) - if self.writable is not None: - outfile.write(' writable=%s' % (quote_attrib(self.writable), )) - if self.add is not None: - outfile.write(' add=%s' % (quote_attrib(self.add), )) - if self.static is not None: - outfile.write(' static=%s' % (quote_attrib(self.static), )) - if self.remove is not None: - outfile.write(' remove=%s' % (quote_attrib(self.remove), )) - if self.sealed is not None: - outfile.write(' sealed=%s' % (quote_attrib(self.sealed), )) - if self.mutable is not None: - outfile.write(' mutable=%s' % (quote_attrib(self.mutable), )) - if self.gettable is not None: - outfile.write(' gettable=%s' % (quote_attrib(self.gettable), )) - if self.inline is not None: - outfile.write(' inline=%s' % (quote_attrib(self.inline), )) - if self.settable is not None: - outfile.write(' settable=%s' % (quote_attrib(self.settable), )) - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='memberdefType'): - if self.templateparamlist: - self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') - if self.type_: - self.type_.export(outfile, level, namespace_, name_='type') - if self.definition is not None: - showIndent(outfile, level) - outfile.write('<%sdefinition>%s\n' % (namespace_, self.format_string(quote_xml(self.definition).encode(ExternalEncoding), input_name='definition'), namespace_)) - if self.argsstring is not None: - showIndent(outfile, level) - outfile.write('<%sargsstring>%s\n' % (namespace_, self.format_string(quote_xml(self.argsstring).encode(ExternalEncoding), input_name='argsstring'), namespace_)) - if self.name is not None: - showIndent(outfile, level) - outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) - if self.read is not None: - showIndent(outfile, level) - outfile.write('<%sread>%s\n' % (namespace_, self.format_string(quote_xml(self.read).encode(ExternalEncoding), input_name='read'), namespace_)) - if self.write is not None: - showIndent(outfile, level) - outfile.write('<%swrite>%s\n' % (namespace_, self.format_string(quote_xml(self.write).encode(ExternalEncoding), input_name='write'), namespace_)) - if self.bitfield is not None: - showIndent(outfile, level) - outfile.write('<%sbitfield>%s\n' % (namespace_, self.format_string(quote_xml(self.bitfield).encode(ExternalEncoding), input_name='bitfield'), namespace_)) - for reimplements_ in self.reimplements: - reimplements_.export(outfile, level, namespace_, name_='reimplements') - for reimplementedby_ in self.reimplementedby: - reimplementedby_.export(outfile, level, namespace_, name_='reimplementedby') - for param_ in self.param: - param_.export(outfile, level, namespace_, name_='param') - for enumvalue_ in self.enumvalue: - enumvalue_.export(outfile, level, namespace_, name_='enumvalue') - if self.initializer: - self.initializer.export(outfile, level, namespace_, name_='initializer') - if self.exceptions: - self.exceptions.export(outfile, level, namespace_, name_='exceptions') - if self.briefdescription: - self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') - if self.detaileddescription: - self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') - if self.inbodydescription: - self.inbodydescription.export(outfile, level, namespace_, name_='inbodydescription') - if self.location: - self.location.export(outfile, level, namespace_, name_='location', ) - for references_ in self.references: - references_.export(outfile, level, namespace_, name_='references') - for referencedby_ in self.referencedby: - referencedby_.export(outfile, level, namespace_, name_='referencedby') - def hasContent_(self): - if ( - self.templateparamlist is not None or - self.type_ is not None or - self.definition is not None or - self.argsstring is not None or - self.name is not None or - self.read is not None or - self.write is not None or - self.bitfield is not None or - self.reimplements is not None or - self.reimplementedby is not None or - self.param is not None or - self.enumvalue is not None or - self.initializer is not None or - self.exceptions is not None or - self.briefdescription is not None or - self.detaileddescription is not None or - self.inbodydescription is not None or - self.location is not None or - self.references is not None or - self.referencedby is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='memberdefType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.initonly is not None: - showIndent(outfile, level) - outfile.write('initonly = "%s",\n' % (self.initonly,)) - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - if self.volatile is not None: - showIndent(outfile, level) - outfile.write('volatile = "%s",\n' % (self.volatile,)) - if self.const is not None: - showIndent(outfile, level) - outfile.write('const = "%s",\n' % (self.const,)) - if self.raisexx is not None: - showIndent(outfile, level) - outfile.write('raisexx = "%s",\n' % (self.raisexx,)) - if self.virt is not None: - showIndent(outfile, level) - outfile.write('virt = "%s",\n' % (self.virt,)) - if self.readable is not None: - showIndent(outfile, level) - outfile.write('readable = "%s",\n' % (self.readable,)) - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.explicit is not None: - showIndent(outfile, level) - outfile.write('explicit = "%s",\n' % (self.explicit,)) - if self.new is not None: - showIndent(outfile, level) - outfile.write('new = "%s",\n' % (self.new,)) - if self.final is not None: - showIndent(outfile, level) - outfile.write('final = "%s",\n' % (self.final,)) - if self.writable is not None: - showIndent(outfile, level) - outfile.write('writable = "%s",\n' % (self.writable,)) - if self.add is not None: - showIndent(outfile, level) - outfile.write('add = "%s",\n' % (self.add,)) - if self.static is not None: - showIndent(outfile, level) - outfile.write('static = "%s",\n' % (self.static,)) - if self.remove is not None: - showIndent(outfile, level) - outfile.write('remove = "%s",\n' % (self.remove,)) - if self.sealed is not None: - showIndent(outfile, level) - outfile.write('sealed = "%s",\n' % (self.sealed,)) - if self.mutable is not None: - showIndent(outfile, level) - outfile.write('mutable = "%s",\n' % (self.mutable,)) - if self.gettable is not None: - showIndent(outfile, level) - outfile.write('gettable = "%s",\n' % (self.gettable,)) - if self.inline is not None: - showIndent(outfile, level) - outfile.write('inline = "%s",\n' % (self.inline,)) - if self.settable is not None: - showIndent(outfile, level) - outfile.write('settable = "%s",\n' % (self.settable,)) - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - if self.templateparamlist: - showIndent(outfile, level) - outfile.write('templateparamlist=model_.templateparamlistType(\n') - self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') - showIndent(outfile, level) - outfile.write('),\n') - if self.type_: - showIndent(outfile, level) - outfile.write('type_=model_.linkedTextType(\n') - self.type_.exportLiteral(outfile, level, name_='type') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('definition=%s,\n' % quote_python(self.definition).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('argsstring=%s,\n' % quote_python(self.argsstring).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('read=%s,\n' % quote_python(self.read).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('write=%s,\n' % quote_python(self.write).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('bitfield=%s,\n' % quote_python(self.bitfield).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('reimplements=[\n') - level += 1 - for reimplements in self.reimplements: - showIndent(outfile, level) - outfile.write('model_.reimplements(\n') - reimplements.exportLiteral(outfile, level, name_='reimplements') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('reimplementedby=[\n') - level += 1 - for reimplementedby in self.reimplementedby: - showIndent(outfile, level) - outfile.write('model_.reimplementedby(\n') - reimplementedby.exportLiteral(outfile, level, name_='reimplementedby') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('param=[\n') - level += 1 - for param in self.param: - showIndent(outfile, level) - outfile.write('model_.param(\n') - param.exportLiteral(outfile, level, name_='param') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('enumvalue=[\n') - level += 1 - for enumvalue in self.enumvalue: - showIndent(outfile, level) - outfile.write('model_.enumvalue(\n') - enumvalue.exportLiteral(outfile, level, name_='enumvalue') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.initializer: - showIndent(outfile, level) - outfile.write('initializer=model_.linkedTextType(\n') - self.initializer.exportLiteral(outfile, level, name_='initializer') - showIndent(outfile, level) - outfile.write('),\n') - if self.exceptions: - showIndent(outfile, level) - outfile.write('exceptions=model_.linkedTextType(\n') - self.exceptions.exportLiteral(outfile, level, name_='exceptions') - showIndent(outfile, level) - outfile.write('),\n') - if self.briefdescription: - showIndent(outfile, level) - outfile.write('briefdescription=model_.descriptionType(\n') - self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') - showIndent(outfile, level) - outfile.write('),\n') - if self.detaileddescription: - showIndent(outfile, level) - outfile.write('detaileddescription=model_.descriptionType(\n') - self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') - showIndent(outfile, level) - outfile.write('),\n') - if self.inbodydescription: - showIndent(outfile, level) - outfile.write('inbodydescription=model_.descriptionType(\n') - self.inbodydescription.exportLiteral(outfile, level, name_='inbodydescription') - showIndent(outfile, level) - outfile.write('),\n') - if self.location: - showIndent(outfile, level) - outfile.write('location=model_.locationType(\n') - self.location.exportLiteral(outfile, level, name_='location') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('references=[\n') - level += 1 - for references in self.references: - showIndent(outfile, level) - outfile.write('model_.references(\n') - references.exportLiteral(outfile, level, name_='references') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('referencedby=[\n') - level += 1 - for referencedby in self.referencedby: - showIndent(outfile, level) - outfile.write('model_.referencedby(\n') - referencedby.exportLiteral(outfile, level, name_='referencedby') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('initonly'): - self.initonly = attrs.get('initonly').value - if attrs.get('kind'): - self.kind = attrs.get('kind').value - if attrs.get('volatile'): - self.volatile = attrs.get('volatile').value - if attrs.get('const'): - self.const = attrs.get('const').value - if attrs.get('raise'): - self.raisexx = attrs.get('raise').value - if attrs.get('virt'): - self.virt = attrs.get('virt').value - if attrs.get('readable'): - self.readable = attrs.get('readable').value - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('explicit'): - self.explicit = attrs.get('explicit').value - if attrs.get('new'): - self.new = attrs.get('new').value - if attrs.get('final'): - self.final = attrs.get('final').value - if attrs.get('writable'): - self.writable = attrs.get('writable').value - if attrs.get('add'): - self.add = attrs.get('add').value - if attrs.get('static'): - self.static = attrs.get('static').value - if attrs.get('remove'): - self.remove = attrs.get('remove').value - if attrs.get('sealed'): - self.sealed = attrs.get('sealed').value - if attrs.get('mutable'): - self.mutable = attrs.get('mutable').value - if attrs.get('gettable'): - self.gettable = attrs.get('gettable').value - if attrs.get('inline'): - self.inline = attrs.get('inline').value - if attrs.get('settable'): - self.settable = attrs.get('settable').value - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'templateparamlist': - obj_ = templateparamlistType.factory() - obj_.build(child_) - self.set_templateparamlist(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'type': - obj_ = linkedTextType.factory() - obj_.build(child_) - self.set_type(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'definition': - definition_ = '' - for text__content_ in child_.childNodes: - definition_ += text__content_.nodeValue - self.definition = definition_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'argsstring': - argsstring_ = '' - for text__content_ in child_.childNodes: - argsstring_ += text__content_.nodeValue - self.argsstring = argsstring_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'name': - name_ = '' - for text__content_ in child_.childNodes: - name_ += text__content_.nodeValue - self.name = name_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'read': - read_ = '' - for text__content_ in child_.childNodes: - read_ += text__content_.nodeValue - self.read = read_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'write': - write_ = '' - for text__content_ in child_.childNodes: - write_ += text__content_.nodeValue - self.write = write_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'bitfield': - bitfield_ = '' - for text__content_ in child_.childNodes: - bitfield_ += text__content_.nodeValue - self.bitfield = bitfield_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'reimplements': - obj_ = reimplementType.factory() - obj_.build(child_) - self.reimplements.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'reimplementedby': - obj_ = reimplementType.factory() - obj_.build(child_) - self.reimplementedby.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'param': - obj_ = paramType.factory() - obj_.build(child_) - self.param.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'enumvalue': - obj_ = enumvalueType.factory() - obj_.build(child_) - self.enumvalue.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'initializer': - obj_ = linkedTextType.factory() - obj_.build(child_) - self.set_initializer(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'exceptions': - obj_ = linkedTextType.factory() - obj_.build(child_) - self.set_exceptions(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'briefdescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_briefdescription(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'detaileddescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_detaileddescription(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'inbodydescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_inbodydescription(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'location': - obj_ = locationType.factory() - obj_.build(child_) - self.set_location(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'references': - obj_ = referenceType.factory() - obj_.build(child_) - self.references.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'referencedby': - obj_ = referenceType.factory() - obj_.build(child_) - self.referencedby.append(obj_) -# end class memberdefType - - -class definition(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if definition.subclass: - return definition.subclass(*args_, **kwargs_) - else: - return definition(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='definition', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='definition') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='definition'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='definition'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='definition'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class definition - - -class argsstring(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if argsstring.subclass: - return argsstring.subclass(*args_, **kwargs_) - else: - return argsstring(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='argsstring', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='argsstring') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='argsstring'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='argsstring'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='argsstring'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class argsstring - - -class read(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if read.subclass: - return read.subclass(*args_, **kwargs_) - else: - return read(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='read', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='read') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='read'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='read'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='read'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class read - - -class write(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if write.subclass: - return write.subclass(*args_, **kwargs_) - else: - return write(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='write', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='write') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='write'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='write'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='write'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class write - - -class bitfield(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if bitfield.subclass: - return bitfield.subclass(*args_, **kwargs_) - else: - return bitfield(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='bitfield', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='bitfield') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='bitfield'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='bitfield'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='bitfield'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class bitfield - - -class descriptionType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, title=None, para=None, sect1=None, internal=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if descriptionType.subclass: - return descriptionType.subclass(*args_, **kwargs_) - else: - return descriptionType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect1(self): return self.sect1 - def set_sect1(self, sect1): self.sect1 = sect1 - def add_sect1(self, value): self.sect1.append(value) - def insert_sect1(self, index, value): self.sect1[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def export(self, outfile, level, namespace_='', name_='descriptionType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='descriptionType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='descriptionType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='descriptionType'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.title is not None or - self.para is not None or - self.sect1 is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='descriptionType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - childobj_ = docTitleType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect1': - childobj_ = docSect1Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect1', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - childobj_ = docInternalType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class descriptionType - - -class enumvalueType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, prot=None, id=None, name=None, initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): - self.prot = prot - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if enumvalueType.subclass: - return enumvalueType.subclass(*args_, **kwargs_) - else: - return enumvalueType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_initializer(self): return self.initializer - def set_initializer(self, initializer): self.initializer = initializer - def get_briefdescription(self): return self.briefdescription - def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription - def get_detaileddescription(self): return self.detaileddescription - def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription - def get_prot(self): return self.prot - def set_prot(self, prot): self.prot = prot - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='enumvalueType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='enumvalueType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='enumvalueType'): - if self.prot is not None: - outfile.write(' prot=%s' % (quote_attrib(self.prot), )) - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='enumvalueType'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.name is not None or - self.initializer is not None or - self.briefdescription is not None or - self.detaileddescription is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='enumvalueType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.prot is not None: - showIndent(outfile, level) - outfile.write('prot = "%s",\n' % (self.prot,)) - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('prot'): - self.prot = attrs.get('prot').value - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'name': - value_ = [] - for text_ in child_.childNodes: - value_.append(text_.nodeValue) - valuestr_ = ''.join(value_) - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'name', valuestr_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'initializer': - childobj_ = linkedTextType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'initializer', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'briefdescription': - childobj_ = descriptionType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'briefdescription', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'detaileddescription': - childobj_ = descriptionType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'detaileddescription', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class enumvalueType - - -class templateparamlistType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, param=None): - if param is None: - self.param = [] - else: - self.param = param - def factory(*args_, **kwargs_): - if templateparamlistType.subclass: - return templateparamlistType.subclass(*args_, **kwargs_) - else: - return templateparamlistType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_param(self): return self.param - def set_param(self, param): self.param = param - def add_param(self, value): self.param.append(value) - def insert_param(self, index, value): self.param[index] = value - def export(self, outfile, level, namespace_='', name_='templateparamlistType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='templateparamlistType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='templateparamlistType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='templateparamlistType'): - for param_ in self.param: - param_.export(outfile, level, namespace_, name_='param') - def hasContent_(self): - if ( - self.param is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='templateparamlistType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('param=[\n') - level += 1 - for param in self.param: - showIndent(outfile, level) - outfile.write('model_.param(\n') - param.exportLiteral(outfile, level, name_='param') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'param': - obj_ = paramType.factory() - obj_.build(child_) - self.param.append(obj_) -# end class templateparamlistType - - -class paramType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, type_=None, declname=None, defname=None, array=None, defval=None, briefdescription=None): - self.type_ = type_ - self.declname = declname - self.defname = defname - self.array = array - self.defval = defval - self.briefdescription = briefdescription - def factory(*args_, **kwargs_): - if paramType.subclass: - return paramType.subclass(*args_, **kwargs_) - else: - return paramType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_type(self): return self.type_ - def set_type(self, type_): self.type_ = type_ - def get_declname(self): return self.declname - def set_declname(self, declname): self.declname = declname - def get_defname(self): return self.defname - def set_defname(self, defname): self.defname = defname - def get_array(self): return self.array - def set_array(self, array): self.array = array - def get_defval(self): return self.defval - def set_defval(self, defval): self.defval = defval - def get_briefdescription(self): return self.briefdescription - def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription - def export(self, outfile, level, namespace_='', name_='paramType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='paramType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='paramType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='paramType'): - if self.type_: - self.type_.export(outfile, level, namespace_, name_='type') - if self.declname is not None: - showIndent(outfile, level) - outfile.write('<%sdeclname>%s\n' % (namespace_, self.format_string(quote_xml(self.declname).encode(ExternalEncoding), input_name='declname'), namespace_)) - if self.defname is not None: - showIndent(outfile, level) - outfile.write('<%sdefname>%s\n' % (namespace_, self.format_string(quote_xml(self.defname).encode(ExternalEncoding), input_name='defname'), namespace_)) - if self.array is not None: - showIndent(outfile, level) - outfile.write('<%sarray>%s\n' % (namespace_, self.format_string(quote_xml(self.array).encode(ExternalEncoding), input_name='array'), namespace_)) - if self.defval: - self.defval.export(outfile, level, namespace_, name_='defval') - if self.briefdescription: - self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') - def hasContent_(self): - if ( - self.type_ is not None or - self.declname is not None or - self.defname is not None or - self.array is not None or - self.defval is not None or - self.briefdescription is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='paramType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - if self.type_: - showIndent(outfile, level) - outfile.write('type_=model_.linkedTextType(\n') - self.type_.exportLiteral(outfile, level, name_='type') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('declname=%s,\n' % quote_python(self.declname).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('defname=%s,\n' % quote_python(self.defname).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('array=%s,\n' % quote_python(self.array).encode(ExternalEncoding)) - if self.defval: - showIndent(outfile, level) - outfile.write('defval=model_.linkedTextType(\n') - self.defval.exportLiteral(outfile, level, name_='defval') - showIndent(outfile, level) - outfile.write('),\n') - if self.briefdescription: - showIndent(outfile, level) - outfile.write('briefdescription=model_.descriptionType(\n') - self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'type': - obj_ = linkedTextType.factory() - obj_.build(child_) - self.set_type(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'declname': - declname_ = '' - for text__content_ in child_.childNodes: - declname_ += text__content_.nodeValue - self.declname = declname_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'defname': - defname_ = '' - for text__content_ in child_.childNodes: - defname_ += text__content_.nodeValue - self.defname = defname_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'array': - array_ = '' - for text__content_ in child_.childNodes: - array_ += text__content_.nodeValue - self.array = array_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'defval': - obj_ = linkedTextType.factory() - obj_.build(child_) - self.set_defval(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'briefdescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_briefdescription(obj_) -# end class paramType - - -class declname(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if declname.subclass: - return declname.subclass(*args_, **kwargs_) - else: - return declname(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='declname', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='declname') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='declname'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='declname'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='declname'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class declname - - -class defname(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if defname.subclass: - return defname.subclass(*args_, **kwargs_) - else: - return defname(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='defname', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='defname') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='defname'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='defname'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='defname'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class defname - - -class array(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if array.subclass: - return array.subclass(*args_, **kwargs_) - else: - return array(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='array', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='array') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='array'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='array'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='array'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class array - - -class linkedTextType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, ref=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if linkedTextType.subclass: - return linkedTextType.subclass(*args_, **kwargs_) - else: - return linkedTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ref(self): return self.ref - def set_ref(self, ref): self.ref = ref - def add_ref(self, value): self.ref.append(value) - def insert_ref(self, index, value): self.ref[index] = value - def export(self, outfile, level, namespace_='', name_='linkedTextType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='linkedTextType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='linkedTextType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='linkedTextType'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.ref is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='linkedTextType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'ref': - childobj_ = docRefTextType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class linkedTextType - - -class graphType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, node=None): - if node is None: - self.node = [] - else: - self.node = node - def factory(*args_, **kwargs_): - if graphType.subclass: - return graphType.subclass(*args_, **kwargs_) - else: - return graphType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_node(self): return self.node - def set_node(self, node): self.node = node - def add_node(self, value): self.node.append(value) - def insert_node(self, index, value): self.node[index] = value - def export(self, outfile, level, namespace_='', name_='graphType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='graphType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='graphType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='graphType'): - for node_ in self.node: - node_.export(outfile, level, namespace_, name_='node') - def hasContent_(self): - if ( - self.node is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='graphType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('node=[\n') - level += 1 - for node in self.node: - showIndent(outfile, level) - outfile.write('model_.node(\n') - node.exportLiteral(outfile, level, name_='node') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'node': - obj_ = nodeType.factory() - obj_.build(child_) - self.node.append(obj_) -# end class graphType - - -class nodeType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, label=None, link=None, childnode=None): - self.id = id - self.label = label - self.link = link - if childnode is None: - self.childnode = [] - else: - self.childnode = childnode - def factory(*args_, **kwargs_): - if nodeType.subclass: - return nodeType.subclass(*args_, **kwargs_) - else: - return nodeType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_label(self): return self.label - def set_label(self, label): self.label = label - def get_link(self): return self.link - def set_link(self, link): self.link = link - def get_childnode(self): return self.childnode - def set_childnode(self, childnode): self.childnode = childnode - def add_childnode(self, value): self.childnode.append(value) - def insert_childnode(self, index, value): self.childnode[index] = value - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='nodeType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='nodeType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='nodeType'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='nodeType'): - if self.label is not None: - showIndent(outfile, level) - outfile.write('<%slabel>%s\n' % (namespace_, self.format_string(quote_xml(self.label).encode(ExternalEncoding), input_name='label'), namespace_)) - if self.link: - self.link.export(outfile, level, namespace_, name_='link') - for childnode_ in self.childnode: - childnode_.export(outfile, level, namespace_, name_='childnode') - def hasContent_(self): - if ( - self.label is not None or - self.link is not None or - self.childnode is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='nodeType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('label=%s,\n' % quote_python(self.label).encode(ExternalEncoding)) - if self.link: - showIndent(outfile, level) - outfile.write('link=model_.linkType(\n') - self.link.exportLiteral(outfile, level, name_='link') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('childnode=[\n') - level += 1 - for childnode in self.childnode: - showIndent(outfile, level) - outfile.write('model_.childnode(\n') - childnode.exportLiteral(outfile, level, name_='childnode') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'label': - label_ = '' - for text__content_ in child_.childNodes: - label_ += text__content_.nodeValue - self.label = label_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'link': - obj_ = linkType.factory() - obj_.build(child_) - self.set_link(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'childnode': - obj_ = childnodeType.factory() - obj_.build(child_) - self.childnode.append(obj_) -# end class nodeType - - -class label(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if label.subclass: - return label.subclass(*args_, **kwargs_) - else: - return label(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='label', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='label') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='label'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='label'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='label'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class label - - -class childnodeType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, relation=None, refid=None, edgelabel=None): - self.relation = relation - self.refid = refid - if edgelabel is None: - self.edgelabel = [] - else: - self.edgelabel = edgelabel - def factory(*args_, **kwargs_): - if childnodeType.subclass: - return childnodeType.subclass(*args_, **kwargs_) - else: - return childnodeType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_edgelabel(self): return self.edgelabel - def set_edgelabel(self, edgelabel): self.edgelabel = edgelabel - def add_edgelabel(self, value): self.edgelabel.append(value) - def insert_edgelabel(self, index, value): self.edgelabel[index] = value - def get_relation(self): return self.relation - def set_relation(self, relation): self.relation = relation - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def export(self, outfile, level, namespace_='', name_='childnodeType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='childnodeType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='childnodeType'): - if self.relation is not None: - outfile.write(' relation=%s' % (quote_attrib(self.relation), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='childnodeType'): - for edgelabel_ in self.edgelabel: - showIndent(outfile, level) - outfile.write('<%sedgelabel>%s\n' % (namespace_, self.format_string(quote_xml(edgelabel_).encode(ExternalEncoding), input_name='edgelabel'), namespace_)) - def hasContent_(self): - if ( - self.edgelabel is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='childnodeType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.relation is not None: - showIndent(outfile, level) - outfile.write('relation = "%s",\n' % (self.relation,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('edgelabel=[\n') - level += 1 - for edgelabel in self.edgelabel: - showIndent(outfile, level) - outfile.write('%s,\n' % quote_python(edgelabel).encode(ExternalEncoding)) - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('relation'): - self.relation = attrs.get('relation').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'edgelabel': - edgelabel_ = '' - for text__content_ in child_.childNodes: - edgelabel_ += text__content_.nodeValue - self.edgelabel.append(edgelabel_) -# end class childnodeType - - -class edgelabel(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if edgelabel.subclass: - return edgelabel.subclass(*args_, **kwargs_) - else: - return edgelabel(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='edgelabel', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='edgelabel') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='edgelabel'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='edgelabel'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='edgelabel'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class edgelabel - - -class linkType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, refid=None, external=None, valueOf_=''): - self.refid = refid - self.external = external - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if linkType.subclass: - return linkType.subclass(*args_, **kwargs_) - else: - return linkType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def get_external(self): return self.external - def set_external(self, external): self.external = external - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='linkType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='linkType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='linkType'): - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - if self.external is not None: - outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) - def exportChildren(self, outfile, level, namespace_='', name_='linkType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='linkType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - if self.external is not None: - showIndent(outfile, level) - outfile.write('external = %s,\n' % (self.external,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('refid'): - self.refid = attrs.get('refid').value - if attrs.get('external'): - self.external = attrs.get('external').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class linkType - - -class listingType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, codeline=None): - if codeline is None: - self.codeline = [] - else: - self.codeline = codeline - def factory(*args_, **kwargs_): - if listingType.subclass: - return listingType.subclass(*args_, **kwargs_) - else: - return listingType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_codeline(self): return self.codeline - def set_codeline(self, codeline): self.codeline = codeline - def add_codeline(self, value): self.codeline.append(value) - def insert_codeline(self, index, value): self.codeline[index] = value - def export(self, outfile, level, namespace_='', name_='listingType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='listingType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='listingType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='listingType'): - for codeline_ in self.codeline: - codeline_.export(outfile, level, namespace_, name_='codeline') - def hasContent_(self): - if ( - self.codeline is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='listingType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('codeline=[\n') - level += 1 - for codeline in self.codeline: - showIndent(outfile, level) - outfile.write('model_.codeline(\n') - codeline.exportLiteral(outfile, level, name_='codeline') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'codeline': - obj_ = codelineType.factory() - obj_.build(child_) - self.codeline.append(obj_) -# end class listingType - - -class codelineType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): - self.external = external - self.lineno = lineno - self.refkind = refkind - self.refid = refid - if highlight is None: - self.highlight = [] - else: - self.highlight = highlight - def factory(*args_, **kwargs_): - if codelineType.subclass: - return codelineType.subclass(*args_, **kwargs_) - else: - return codelineType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_highlight(self): return self.highlight - def set_highlight(self, highlight): self.highlight = highlight - def add_highlight(self, value): self.highlight.append(value) - def insert_highlight(self, index, value): self.highlight[index] = value - def get_external(self): return self.external - def set_external(self, external): self.external = external - def get_lineno(self): return self.lineno - def set_lineno(self, lineno): self.lineno = lineno - def get_refkind(self): return self.refkind - def set_refkind(self, refkind): self.refkind = refkind - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def export(self, outfile, level, namespace_='', name_='codelineType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='codelineType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='codelineType'): - if self.external is not None: - outfile.write(' external=%s' % (quote_attrib(self.external), )) - if self.lineno is not None: - outfile.write(' lineno="%s"' % self.format_integer(self.lineno, input_name='lineno')) - if self.refkind is not None: - outfile.write(' refkind=%s' % (quote_attrib(self.refkind), )) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='codelineType'): - for highlight_ in self.highlight: - highlight_.export(outfile, level, namespace_, name_='highlight') - def hasContent_(self): - if ( - self.highlight is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='codelineType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.external is not None: - showIndent(outfile, level) - outfile.write('external = "%s",\n' % (self.external,)) - if self.lineno is not None: - showIndent(outfile, level) - outfile.write('lineno = %s,\n' % (self.lineno,)) - if self.refkind is not None: - showIndent(outfile, level) - outfile.write('refkind = "%s",\n' % (self.refkind,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('highlight=[\n') - level += 1 - for highlight in self.highlight: - showIndent(outfile, level) - outfile.write('model_.highlight(\n') - highlight.exportLiteral(outfile, level, name_='highlight') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('external'): - self.external = attrs.get('external').value - if attrs.get('lineno'): - try: - self.lineno = int(attrs.get('lineno').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (lineno): %s' % exp) - if attrs.get('refkind'): - self.refkind = attrs.get('refkind').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'highlight': - obj_ = highlightType.factory() - obj_.build(child_) - self.highlight.append(obj_) -# end class codelineType - - -class highlightType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, classxx=None, sp=None, ref=None, mixedclass_=None, content_=None): - self.classxx = classxx - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if highlightType.subclass: - return highlightType.subclass(*args_, **kwargs_) - else: - return highlightType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_sp(self): return self.sp - def set_sp(self, sp): self.sp = sp - def add_sp(self, value): self.sp.append(value) - def insert_sp(self, index, value): self.sp[index] = value - def get_ref(self): return self.ref - def set_ref(self, ref): self.ref = ref - def add_ref(self, value): self.ref.append(value) - def insert_ref(self, index, value): self.ref[index] = value - def get_class(self): return self.classxx - def set_class(self, classxx): self.classxx = classxx - def export(self, outfile, level, namespace_='', name_='highlightType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='highlightType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='highlightType'): - if self.classxx is not None: - outfile.write(' class=%s' % (quote_attrib(self.classxx), )) - def exportChildren(self, outfile, level, namespace_='', name_='highlightType'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.sp is not None or - self.ref is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='highlightType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.classxx is not None: - showIndent(outfile, level) - outfile.write('classxx = "%s",\n' % (self.classxx,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('class'): - self.classxx = attrs.get('class').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sp': - value_ = [] - for text_ in child_.childNodes: - value_.append(text_.nodeValue) - valuestr_ = ''.join(value_) - obj_ = self.mixedclass_(MixedContainer.CategorySimple, - MixedContainer.TypeString, 'sp', valuestr_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'ref': - childobj_ = docRefTextType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class highlightType - - -class sp(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if sp.subclass: - return sp.subclass(*args_, **kwargs_) - else: - return sp(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='sp', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='sp') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='sp'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='sp'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='sp'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class sp - - -class referenceType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): - self.endline = endline - self.startline = startline - self.refid = refid - self.compoundref = compoundref - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if referenceType.subclass: - return referenceType.subclass(*args_, **kwargs_) - else: - return referenceType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_endline(self): return self.endline - def set_endline(self, endline): self.endline = endline - def get_startline(self): return self.startline - def set_startline(self, startline): self.startline = startline - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def get_compoundref(self): return self.compoundref - def set_compoundref(self, compoundref): self.compoundref = compoundref - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='referenceType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='referenceType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='referenceType'): - if self.endline is not None: - outfile.write(' endline="%s"' % self.format_integer(self.endline, input_name='endline')) - if self.startline is not None: - outfile.write(' startline="%s"' % self.format_integer(self.startline, input_name='startline')) - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - if self.compoundref is not None: - outfile.write(' compoundref=%s' % (self.format_string(quote_attrib(self.compoundref).encode(ExternalEncoding), input_name='compoundref'), )) - def exportChildren(self, outfile, level, namespace_='', name_='referenceType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='referenceType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.endline is not None: - showIndent(outfile, level) - outfile.write('endline = %s,\n' % (self.endline,)) - if self.startline is not None: - showIndent(outfile, level) - outfile.write('startline = %s,\n' % (self.startline,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - if self.compoundref is not None: - showIndent(outfile, level) - outfile.write('compoundref = %s,\n' % (self.compoundref,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('endline'): - try: - self.endline = int(attrs.get('endline').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (endline): %s' % exp) - if attrs.get('startline'): - try: - self.startline = int(attrs.get('startline').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (startline): %s' % exp) - if attrs.get('refid'): - self.refid = attrs.get('refid').value - if attrs.get('compoundref'): - self.compoundref = attrs.get('compoundref').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class referenceType - - -class locationType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): - self.bodystart = bodystart - self.line = line - self.bodyend = bodyend - self.bodyfile = bodyfile - self.file = file - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if locationType.subclass: - return locationType.subclass(*args_, **kwargs_) - else: - return locationType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_bodystart(self): return self.bodystart - def set_bodystart(self, bodystart): self.bodystart = bodystart - def get_line(self): return self.line - def set_line(self, line): self.line = line - def get_bodyend(self): return self.bodyend - def set_bodyend(self, bodyend): self.bodyend = bodyend - def get_bodyfile(self): return self.bodyfile - def set_bodyfile(self, bodyfile): self.bodyfile = bodyfile - def get_file(self): return self.file - def set_file(self, file): self.file = file - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='locationType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='locationType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='locationType'): - if self.bodystart is not None: - outfile.write(' bodystart="%s"' % self.format_integer(self.bodystart, input_name='bodystart')) - if self.line is not None: - outfile.write(' line="%s"' % self.format_integer(self.line, input_name='line')) - if self.bodyend is not None: - outfile.write(' bodyend="%s"' % self.format_integer(self.bodyend, input_name='bodyend')) - if self.bodyfile is not None: - outfile.write(' bodyfile=%s' % (self.format_string(quote_attrib(self.bodyfile).encode(ExternalEncoding), input_name='bodyfile'), )) - if self.file is not None: - outfile.write(' file=%s' % (self.format_string(quote_attrib(self.file).encode(ExternalEncoding), input_name='file'), )) - def exportChildren(self, outfile, level, namespace_='', name_='locationType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='locationType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.bodystart is not None: - showIndent(outfile, level) - outfile.write('bodystart = %s,\n' % (self.bodystart,)) - if self.line is not None: - showIndent(outfile, level) - outfile.write('line = %s,\n' % (self.line,)) - if self.bodyend is not None: - showIndent(outfile, level) - outfile.write('bodyend = %s,\n' % (self.bodyend,)) - if self.bodyfile is not None: - showIndent(outfile, level) - outfile.write('bodyfile = %s,\n' % (self.bodyfile,)) - if self.file is not None: - showIndent(outfile, level) - outfile.write('file = %s,\n' % (self.file,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('bodystart'): - try: - self.bodystart = int(attrs.get('bodystart').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (bodystart): %s' % exp) - if attrs.get('line'): - try: - self.line = int(attrs.get('line').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (line): %s' % exp) - if attrs.get('bodyend'): - try: - self.bodyend = int(attrs.get('bodyend').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (bodyend): %s' % exp) - if attrs.get('bodyfile'): - self.bodyfile = attrs.get('bodyfile').value - if attrs.get('file'): - self.file = attrs.get('file').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class locationType - - -class docSect1Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, sect2=None, internal=None, mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docSect1Type.subclass: - return docSect1Type.subclass(*args_, **kwargs_) - else: - return docSect1Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect2(self): return self.sect2 - def set_sect2(self, sect2): self.sect2 = sect2 - def add_sect2(self, value): self.sect2.append(value) - def insert_sect2(self, index, value): self.sect2[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='docSect1Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docSect1Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docSect1Type'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docSect1Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.title is not None or - self.para is not None or - self.sect2 is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docSect1Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - childobj_ = docTitleType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect2': - childobj_ = docSect2Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect2', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - childobj_ = docInternalS1Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docSect1Type - - -class docSect2Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, sect3=None, internal=None, mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docSect2Type.subclass: - return docSect2Type.subclass(*args_, **kwargs_) - else: - return docSect2Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect3(self): return self.sect3 - def set_sect3(self, sect3): self.sect3 = sect3 - def add_sect3(self, value): self.sect3.append(value) - def insert_sect3(self, index, value): self.sect3[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='docSect2Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docSect2Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docSect2Type'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docSect2Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.title is not None or - self.para is not None or - self.sect3 is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docSect2Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - childobj_ = docTitleType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect3': - childobj_ = docSect3Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - childobj_ = docInternalS2Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docSect2Type - - -class docSect3Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, sect4=None, internal=None, mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docSect3Type.subclass: - return docSect3Type.subclass(*args_, **kwargs_) - else: - return docSect3Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect4(self): return self.sect4 - def set_sect4(self, sect4): self.sect4 = sect4 - def add_sect4(self, value): self.sect4.append(value) - def insert_sect4(self, index, value): self.sect4[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='docSect3Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docSect3Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docSect3Type'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docSect3Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.title is not None or - self.para is not None or - self.sect4 is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docSect3Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - childobj_ = docTitleType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect4': - childobj_ = docSect4Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect4', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - childobj_ = docInternalS3Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docSect3Type - - -class docSect4Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, title=None, para=None, internal=None, mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docSect4Type.subclass: - return docSect4Type.subclass(*args_, **kwargs_) - else: - return docSect4Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='docSect4Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docSect4Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docSect4Type'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docSect4Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.title is not None or - self.para is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docSect4Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - childobj_ = docTitleType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'title', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - childobj_ = docInternalS4Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'internal', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docSect4Type - - -class docInternalType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docInternalType.subclass: - return docInternalType.subclass(*args_, **kwargs_) - else: - return docInternalType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect1(self): return self.sect1 - def set_sect1(self, sect1): self.sect1 = sect1 - def add_sect1(self, value): self.sect1.append(value) - def insert_sect1(self, index, value): self.sect1[index] = value - def export(self, outfile, level, namespace_='', name_='docInternalType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docInternalType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docInternalType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docInternalType'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.para is not None or - self.sect1 is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docInternalType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect1': - childobj_ = docSect1Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect1', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docInternalType - - -class docInternalS1Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docInternalS1Type.subclass: - return docInternalS1Type.subclass(*args_, **kwargs_) - else: - return docInternalS1Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect2(self): return self.sect2 - def set_sect2(self, sect2): self.sect2 = sect2 - def add_sect2(self, value): self.sect2.append(value) - def insert_sect2(self, index, value): self.sect2[index] = value - def export(self, outfile, level, namespace_='', name_='docInternalS1Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docInternalS1Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS1Type'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docInternalS1Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.para is not None or - self.sect2 is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docInternalS1Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect2': - childobj_ = docSect2Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect2', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docInternalS1Type - - -class docInternalS2Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docInternalS2Type.subclass: - return docInternalS2Type.subclass(*args_, **kwargs_) - else: - return docInternalS2Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect3(self): return self.sect3 - def set_sect3(self, sect3): self.sect3 = sect3 - def add_sect3(self, value): self.sect3.append(value) - def insert_sect3(self, index, value): self.sect3[index] = value - def export(self, outfile, level, namespace_='', name_='docInternalS2Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docInternalS2Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS2Type'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docInternalS2Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.para is not None or - self.sect3 is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docInternalS2Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect3': - childobj_ = docSect3Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docInternalS2Type - - -class docInternalS3Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docInternalS3Type.subclass: - return docInternalS3Type.subclass(*args_, **kwargs_) - else: - return docInternalS3Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect3(self): return self.sect3 - def set_sect3(self, sect3): self.sect3 = sect3 - def add_sect3(self, value): self.sect3.append(value) - def insert_sect3(self, index, value): self.sect3[index] = value - def export(self, outfile, level, namespace_='', name_='docInternalS3Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docInternalS3Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS3Type'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docInternalS3Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.para is not None or - self.sect3 is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docInternalS3Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect3': - childobj_ = docSect4Type.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'sect3', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docInternalS3Type - - -class docInternalS4Type(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None, mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docInternalS4Type.subclass: - return docInternalS4Type.subclass(*args_, **kwargs_) - else: - return docInternalS4Type(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def export(self, outfile, level, namespace_='', name_='docInternalS4Type', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docInternalS4Type') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS4Type'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docInternalS4Type'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.para is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docInternalS4Type'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - childobj_ = docParaType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'para', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docInternalS4Type - - -class docTitleType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_='', mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docTitleType.subclass: - return docTitleType.subclass(*args_, **kwargs_) - else: - return docTitleType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docTitleType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docTitleType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docTitleType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docTitleType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docTitleType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docTitleType - - -class docParaType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_='', mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docParaType.subclass: - return docParaType.subclass(*args_, **kwargs_) - else: - return docParaType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docParaType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docParaType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docParaType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docParaType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docParaType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docParaType - - -class docMarkupType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_='', mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docMarkupType.subclass: - return docMarkupType.subclass(*args_, **kwargs_) - else: - return docMarkupType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docMarkupType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docMarkupType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docMarkupType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docMarkupType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docMarkupType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docMarkupType - - -class docURLLink(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): - self.url = url - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docURLLink.subclass: - return docURLLink.subclass(*args_, **kwargs_) - else: - return docURLLink(*args_, **kwargs_) - factory = staticmethod(factory) - def get_url(self): return self.url - def set_url(self, url): self.url = url - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docURLLink', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docURLLink') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docURLLink'): - if self.url is not None: - outfile.write(' url=%s' % (self.format_string(quote_attrib(self.url).encode(ExternalEncoding), input_name='url'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docURLLink'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docURLLink'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.url is not None: - showIndent(outfile, level) - outfile.write('url = %s,\n' % (self.url,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('url'): - self.url = attrs.get('url').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docURLLink - - -class docAnchorType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docAnchorType.subclass: - return docAnchorType.subclass(*args_, **kwargs_) - else: - return docAnchorType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_id(self): return self.id - def set_id(self, id): self.id = id - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docAnchorType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docAnchorType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docAnchorType'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docAnchorType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docAnchorType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docAnchorType - - -class docFormulaType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docFormulaType.subclass: - return docFormulaType.subclass(*args_, **kwargs_) - else: - return docFormulaType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_id(self): return self.id - def set_id(self, id): self.id = id - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docFormulaType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docFormulaType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docFormulaType'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docFormulaType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docFormulaType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docFormulaType - - -class docIndexEntryType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, primaryie=None, secondaryie=None): - self.primaryie = primaryie - self.secondaryie = secondaryie - def factory(*args_, **kwargs_): - if docIndexEntryType.subclass: - return docIndexEntryType.subclass(*args_, **kwargs_) - else: - return docIndexEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_primaryie(self): return self.primaryie - def set_primaryie(self, primaryie): self.primaryie = primaryie - def get_secondaryie(self): return self.secondaryie - def set_secondaryie(self, secondaryie): self.secondaryie = secondaryie - def export(self, outfile, level, namespace_='', name_='docIndexEntryType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docIndexEntryType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docIndexEntryType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docIndexEntryType'): - if self.primaryie is not None: - showIndent(outfile, level) - outfile.write('<%sprimaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.primaryie).encode(ExternalEncoding), input_name='primaryie'), namespace_)) - if self.secondaryie is not None: - showIndent(outfile, level) - outfile.write('<%ssecondaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.secondaryie).encode(ExternalEncoding), input_name='secondaryie'), namespace_)) - def hasContent_(self): - if ( - self.primaryie is not None or - self.secondaryie is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docIndexEntryType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('primaryie=%s,\n' % quote_python(self.primaryie).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('secondaryie=%s,\n' % quote_python(self.secondaryie).encode(ExternalEncoding)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'primaryie': - primaryie_ = '' - for text__content_ in child_.childNodes: - primaryie_ += text__content_.nodeValue - self.primaryie = primaryie_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'secondaryie': - secondaryie_ = '' - for text__content_ in child_.childNodes: - secondaryie_ += text__content_.nodeValue - self.secondaryie = secondaryie_ -# end class docIndexEntryType - - -class docListType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, listitem=None): - if listitem is None: - self.listitem = [] - else: - self.listitem = listitem - def factory(*args_, **kwargs_): - if docListType.subclass: - return docListType.subclass(*args_, **kwargs_) - else: - return docListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_listitem(self): return self.listitem - def set_listitem(self, listitem): self.listitem = listitem - def add_listitem(self, value): self.listitem.append(value) - def insert_listitem(self, index, value): self.listitem[index] = value - def export(self, outfile, level, namespace_='', name_='docListType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docListType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docListType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docListType'): - for listitem_ in self.listitem: - listitem_.export(outfile, level, namespace_, name_='listitem') - def hasContent_(self): - if ( - self.listitem is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docListType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('listitem=[\n') - level += 1 - for listitem in self.listitem: - showIndent(outfile, level) - outfile.write('model_.listitem(\n') - listitem.exportLiteral(outfile, level, name_='listitem') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'listitem': - obj_ = docListItemType.factory() - obj_.build(child_) - self.listitem.append(obj_) -# end class docListType - - -class docListItemType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, para=None): - if para is None: - self.para = [] - else: - self.para = para - def factory(*args_, **kwargs_): - if docListItemType.subclass: - return docListItemType.subclass(*args_, **kwargs_) - else: - return docListItemType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def export(self, outfile, level, namespace_='', name_='docListItemType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docListItemType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docListItemType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docListItemType'): - for para_ in self.para: - para_.export(outfile, level, namespace_, name_='para') - def hasContent_(self): - if ( - self.para is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docListItemType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('para=[\n') - level += 1 - for para in self.para: - showIndent(outfile, level) - outfile.write('model_.para(\n') - para.exportLiteral(outfile, level, name_='para') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - obj_ = docParaType.factory() - obj_.build(child_) - self.para.append(obj_) -# end class docListItemType - - -class docSimpleSectType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, title=None, para=None): - self.kind = kind - self.title = title - if para is None: - self.para = [] - else: - self.para = para - def factory(*args_, **kwargs_): - if docSimpleSectType.subclass: - return docSimpleSectType.subclass(*args_, **kwargs_) - else: - return docSimpleSectType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_title(self): return self.title - def set_title(self, title): self.title = title - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def export(self, outfile, level, namespace_='', name_='docSimpleSectType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docSimpleSectType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docSimpleSectType'): - if self.kind is not None: - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - def exportChildren(self, outfile, level, namespace_='', name_='docSimpleSectType'): - if self.title: - self.title.export(outfile, level, namespace_, name_='title') - for para_ in self.para: - para_.export(outfile, level, namespace_, name_='para') - def hasContent_(self): - if ( - self.title is not None or - self.para is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docSimpleSectType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - def exportLiteralChildren(self, outfile, level, name_): - if self.title: - showIndent(outfile, level) - outfile.write('title=model_.docTitleType(\n') - self.title.exportLiteral(outfile, level, name_='title') - showIndent(outfile, level) - outfile.write('),\n') - showIndent(outfile, level) - outfile.write('para=[\n') - level += 1 - for para in self.para: - showIndent(outfile, level) - outfile.write('model_.para(\n') - para.exportLiteral(outfile, level, name_='para') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'title': - obj_ = docTitleType.factory() - obj_.build(child_) - self.set_title(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - obj_ = docParaType.factory() - obj_.build(child_) - self.para.append(obj_) -# end class docSimpleSectType - - -class docVarListEntryType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, term=None): - self.term = term - def factory(*args_, **kwargs_): - if docVarListEntryType.subclass: - return docVarListEntryType.subclass(*args_, **kwargs_) - else: - return docVarListEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_term(self): return self.term - def set_term(self, term): self.term = term - def export(self, outfile, level, namespace_='', name_='docVarListEntryType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docVarListEntryType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docVarListEntryType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docVarListEntryType'): - if self.term: - self.term.export(outfile, level, namespace_, name_='term', ) - def hasContent_(self): - if ( - self.term is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docVarListEntryType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - if self.term: - showIndent(outfile, level) - outfile.write('term=model_.docTitleType(\n') - self.term.exportLiteral(outfile, level, name_='term') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'term': - obj_ = docTitleType.factory() - obj_.build(child_) - self.set_term(obj_) -# end class docVarListEntryType - - -class docVariableListType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if docVariableListType.subclass: - return docVariableListType.subclass(*args_, **kwargs_) - else: - return docVariableListType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docVariableListType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docVariableListType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docVariableListType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docVariableListType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docVariableListType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docVariableListType - - -class docRefTextType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): - self.refid = refid - self.kindref = kindref - self.external = external - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docRefTextType.subclass: - return docRefTextType.subclass(*args_, **kwargs_) - else: - return docRefTextType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def get_kindref(self): return self.kindref - def set_kindref(self, kindref): self.kindref = kindref - def get_external(self): return self.external - def set_external(self, external): self.external = external - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docRefTextType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docRefTextType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docRefTextType'): - if self.refid is not None: - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - if self.kindref is not None: - outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) - if self.external is not None: - outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docRefTextType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docRefTextType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - if self.kindref is not None: - showIndent(outfile, level) - outfile.write('kindref = "%s",\n' % (self.kindref,)) - if self.external is not None: - showIndent(outfile, level) - outfile.write('external = %s,\n' % (self.external,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('refid'): - self.refid = attrs.get('refid').value - if attrs.get('kindref'): - self.kindref = attrs.get('kindref').value - if attrs.get('external'): - self.external = attrs.get('external').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docRefTextType - - -class docTableType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, rows=None, cols=None, row=None, caption=None): - self.rows = rows - self.cols = cols - if row is None: - self.row = [] - else: - self.row = row - self.caption = caption - def factory(*args_, **kwargs_): - if docTableType.subclass: - return docTableType.subclass(*args_, **kwargs_) - else: - return docTableType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_row(self): return self.row - def set_row(self, row): self.row = row - def add_row(self, value): self.row.append(value) - def insert_row(self, index, value): self.row[index] = value - def get_caption(self): return self.caption - def set_caption(self, caption): self.caption = caption - def get_rows(self): return self.rows - def set_rows(self, rows): self.rows = rows - def get_cols(self): return self.cols - def set_cols(self, cols): self.cols = cols - def export(self, outfile, level, namespace_='', name_='docTableType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docTableType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docTableType'): - if self.rows is not None: - outfile.write(' rows="%s"' % self.format_integer(self.rows, input_name='rows')) - if self.cols is not None: - outfile.write(' cols="%s"' % self.format_integer(self.cols, input_name='cols')) - def exportChildren(self, outfile, level, namespace_='', name_='docTableType'): - for row_ in self.row: - row_.export(outfile, level, namespace_, name_='row') - if self.caption: - self.caption.export(outfile, level, namespace_, name_='caption') - def hasContent_(self): - if ( - self.row is not None or - self.caption is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docTableType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.rows is not None: - showIndent(outfile, level) - outfile.write('rows = %s,\n' % (self.rows,)) - if self.cols is not None: - showIndent(outfile, level) - outfile.write('cols = %s,\n' % (self.cols,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('row=[\n') - level += 1 - for row in self.row: - showIndent(outfile, level) - outfile.write('model_.row(\n') - row.exportLiteral(outfile, level, name_='row') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.caption: - showIndent(outfile, level) - outfile.write('caption=model_.docCaptionType(\n') - self.caption.exportLiteral(outfile, level, name_='caption') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('rows'): - try: - self.rows = int(attrs.get('rows').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (rows): %s' % exp) - if attrs.get('cols'): - try: - self.cols = int(attrs.get('cols').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (cols): %s' % exp) - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'row': - obj_ = docRowType.factory() - obj_.build(child_) - self.row.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'caption': - obj_ = docCaptionType.factory() - obj_.build(child_) - self.set_caption(obj_) -# end class docTableType - - -class docRowType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, entry=None): - if entry is None: - self.entry = [] - else: - self.entry = entry - def factory(*args_, **kwargs_): - if docRowType.subclass: - return docRowType.subclass(*args_, **kwargs_) - else: - return docRowType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_entry(self): return self.entry - def set_entry(self, entry): self.entry = entry - def add_entry(self, value): self.entry.append(value) - def insert_entry(self, index, value): self.entry[index] = value - def export(self, outfile, level, namespace_='', name_='docRowType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docRowType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docRowType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docRowType'): - for entry_ in self.entry: - entry_.export(outfile, level, namespace_, name_='entry') - def hasContent_(self): - if ( - self.entry is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docRowType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('entry=[\n') - level += 1 - for entry in self.entry: - showIndent(outfile, level) - outfile.write('model_.entry(\n') - entry.exportLiteral(outfile, level, name_='entry') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'entry': - obj_ = docEntryType.factory() - obj_.build(child_) - self.entry.append(obj_) -# end class docRowType - - -class docEntryType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, thead=None, para=None): - self.thead = thead - if para is None: - self.para = [] - else: - self.para = para - def factory(*args_, **kwargs_): - if docEntryType.subclass: - return docEntryType.subclass(*args_, **kwargs_) - else: - return docEntryType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_thead(self): return self.thead - def set_thead(self, thead): self.thead = thead - def export(self, outfile, level, namespace_='', name_='docEntryType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docEntryType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docEntryType'): - if self.thead is not None: - outfile.write(' thead=%s' % (quote_attrib(self.thead), )) - def exportChildren(self, outfile, level, namespace_='', name_='docEntryType'): - for para_ in self.para: - para_.export(outfile, level, namespace_, name_='para') - def hasContent_(self): - if ( - self.para is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docEntryType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.thead is not None: - showIndent(outfile, level) - outfile.write('thead = "%s",\n' % (self.thead,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('para=[\n') - level += 1 - for para in self.para: - showIndent(outfile, level) - outfile.write('model_.para(\n') - para.exportLiteral(outfile, level, name_='para') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('thead'): - self.thead = attrs.get('thead').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - obj_ = docParaType.factory() - obj_.build(child_) - self.para.append(obj_) -# end class docEntryType - - -class docCaptionType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_='', mixedclass_=None, content_=None): - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docCaptionType.subclass: - return docCaptionType.subclass(*args_, **kwargs_) - else: - return docCaptionType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docCaptionType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docCaptionType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docCaptionType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docCaptionType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docCaptionType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docCaptionType - - -class docHeadingType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): - self.level = level - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docHeadingType.subclass: - return docHeadingType.subclass(*args_, **kwargs_) - else: - return docHeadingType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_level(self): return self.level - def set_level(self, level): self.level = level - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docHeadingType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docHeadingType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docHeadingType'): - if self.level is not None: - outfile.write(' level="%s"' % self.format_integer(self.level, input_name='level')) - def exportChildren(self, outfile, level, namespace_='', name_='docHeadingType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docHeadingType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.level is not None: - showIndent(outfile, level) - outfile.write('level = %s,\n' % (self.level,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('level'): - try: - self.level = int(attrs.get('level').value) - except ValueError, exp: - raise ValueError('Bad integer attribute (level): %s' % exp) - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docHeadingType - - -class docImageType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): - self.width = width - self.type_ = type_ - self.name = name - self.height = height - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docImageType.subclass: - return docImageType.subclass(*args_, **kwargs_) - else: - return docImageType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_width(self): return self.width - def set_width(self, width): self.width = width - def get_type(self): return self.type_ - def set_type(self, type_): self.type_ = type_ - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_height(self): return self.height - def set_height(self, height): self.height = height - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docImageType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docImageType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docImageType'): - if self.width is not None: - outfile.write(' width=%s' % (self.format_string(quote_attrib(self.width).encode(ExternalEncoding), input_name='width'), )) - if self.type_ is not None: - outfile.write(' type=%s' % (quote_attrib(self.type_), )) - if self.name is not None: - outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) - if self.height is not None: - outfile.write(' height=%s' % (self.format_string(quote_attrib(self.height).encode(ExternalEncoding), input_name='height'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docImageType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docImageType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.width is not None: - showIndent(outfile, level) - outfile.write('width = %s,\n' % (self.width,)) - if self.type_ is not None: - showIndent(outfile, level) - outfile.write('type_ = "%s",\n' % (self.type_,)) - if self.name is not None: - showIndent(outfile, level) - outfile.write('name = %s,\n' % (self.name,)) - if self.height is not None: - showIndent(outfile, level) - outfile.write('height = %s,\n' % (self.height,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('width'): - self.width = attrs.get('width').value - if attrs.get('type'): - self.type_ = attrs.get('type').value - if attrs.get('name'): - self.name = attrs.get('name').value - if attrs.get('height'): - self.height = attrs.get('height').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docImageType - - -class docDotFileType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): - self.name = name - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docDotFileType.subclass: - return docDotFileType.subclass(*args_, **kwargs_) - else: - return docDotFileType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_name(self): return self.name - def set_name(self, name): self.name = name - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docDotFileType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docDotFileType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docDotFileType'): - if self.name is not None: - outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docDotFileType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docDotFileType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.name is not None: - showIndent(outfile, level) - outfile.write('name = %s,\n' % (self.name,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('name'): - self.name = attrs.get('name').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docDotFileType - - -class docTocItemType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): - self.id = id - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docTocItemType.subclass: - return docTocItemType.subclass(*args_, **kwargs_) - else: - return docTocItemType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_id(self): return self.id - def set_id(self, id): self.id = id - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docTocItemType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docTocItemType') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docTocItemType'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docTocItemType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docTocItemType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docTocItemType - - -class docTocListType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, tocitem=None): - if tocitem is None: - self.tocitem = [] - else: - self.tocitem = tocitem - def factory(*args_, **kwargs_): - if docTocListType.subclass: - return docTocListType.subclass(*args_, **kwargs_) - else: - return docTocListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_tocitem(self): return self.tocitem - def set_tocitem(self, tocitem): self.tocitem = tocitem - def add_tocitem(self, value): self.tocitem.append(value) - def insert_tocitem(self, index, value): self.tocitem[index] = value - def export(self, outfile, level, namespace_='', name_='docTocListType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docTocListType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docTocListType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docTocListType'): - for tocitem_ in self.tocitem: - tocitem_.export(outfile, level, namespace_, name_='tocitem') - def hasContent_(self): - if ( - self.tocitem is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docTocListType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('tocitem=[\n') - level += 1 - for tocitem in self.tocitem: - showIndent(outfile, level) - outfile.write('model_.tocitem(\n') - tocitem.exportLiteral(outfile, level, name_='tocitem') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'tocitem': - obj_ = docTocItemType.factory() - obj_.build(child_) - self.tocitem.append(obj_) -# end class docTocListType - - -class docLanguageType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, langid=None, para=None): - self.langid = langid - if para is None: - self.para = [] - else: - self.para = para - def factory(*args_, **kwargs_): - if docLanguageType.subclass: - return docLanguageType.subclass(*args_, **kwargs_) - else: - return docLanguageType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_langid(self): return self.langid - def set_langid(self, langid): self.langid = langid - def export(self, outfile, level, namespace_='', name_='docLanguageType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docLanguageType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docLanguageType'): - if self.langid is not None: - outfile.write(' langid=%s' % (self.format_string(quote_attrib(self.langid).encode(ExternalEncoding), input_name='langid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docLanguageType'): - for para_ in self.para: - para_.export(outfile, level, namespace_, name_='para') - def hasContent_(self): - if ( - self.para is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docLanguageType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.langid is not None: - showIndent(outfile, level) - outfile.write('langid = %s,\n' % (self.langid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('para=[\n') - level += 1 - for para in self.para: - showIndent(outfile, level) - outfile.write('model_.para(\n') - para.exportLiteral(outfile, level, name_='para') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('langid'): - self.langid = attrs.get('langid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - obj_ = docParaType.factory() - obj_.build(child_) - self.para.append(obj_) -# end class docLanguageType - - -class docParamListType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, parameteritem=None): - self.kind = kind - if parameteritem is None: - self.parameteritem = [] - else: - self.parameteritem = parameteritem - def factory(*args_, **kwargs_): - if docParamListType.subclass: - return docParamListType.subclass(*args_, **kwargs_) - else: - return docParamListType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_parameteritem(self): return self.parameteritem - def set_parameteritem(self, parameteritem): self.parameteritem = parameteritem - def add_parameteritem(self, value): self.parameteritem.append(value) - def insert_parameteritem(self, index, value): self.parameteritem[index] = value - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def export(self, outfile, level, namespace_='', name_='docParamListType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docParamListType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docParamListType'): - if self.kind is not None: - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - def exportChildren(self, outfile, level, namespace_='', name_='docParamListType'): - for parameteritem_ in self.parameteritem: - parameteritem_.export(outfile, level, namespace_, name_='parameteritem') - def hasContent_(self): - if ( - self.parameteritem is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docParamListType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('parameteritem=[\n') - level += 1 - for parameteritem in self.parameteritem: - showIndent(outfile, level) - outfile.write('model_.parameteritem(\n') - parameteritem.exportLiteral(outfile, level, name_='parameteritem') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'parameteritem': - obj_ = docParamListItem.factory() - obj_.build(child_) - self.parameteritem.append(obj_) -# end class docParamListType - - -class docParamListItem(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, parameternamelist=None, parameterdescription=None): - if parameternamelist is None: - self.parameternamelist = [] - else: - self.parameternamelist = parameternamelist - self.parameterdescription = parameterdescription - def factory(*args_, **kwargs_): - if docParamListItem.subclass: - return docParamListItem.subclass(*args_, **kwargs_) - else: - return docParamListItem(*args_, **kwargs_) - factory = staticmethod(factory) - def get_parameternamelist(self): return self.parameternamelist - def set_parameternamelist(self, parameternamelist): self.parameternamelist = parameternamelist - def add_parameternamelist(self, value): self.parameternamelist.append(value) - def insert_parameternamelist(self, index, value): self.parameternamelist[index] = value - def get_parameterdescription(self): return self.parameterdescription - def set_parameterdescription(self, parameterdescription): self.parameterdescription = parameterdescription - def export(self, outfile, level, namespace_='', name_='docParamListItem', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docParamListItem') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docParamListItem'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docParamListItem'): - for parameternamelist_ in self.parameternamelist: - parameternamelist_.export(outfile, level, namespace_, name_='parameternamelist') - if self.parameterdescription: - self.parameterdescription.export(outfile, level, namespace_, name_='parameterdescription', ) - def hasContent_(self): - if ( - self.parameternamelist is not None or - self.parameterdescription is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docParamListItem'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('parameternamelist=[\n') - level += 1 - for parameternamelist in self.parameternamelist: - showIndent(outfile, level) - outfile.write('model_.parameternamelist(\n') - parameternamelist.exportLiteral(outfile, level, name_='parameternamelist') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.parameterdescription: - showIndent(outfile, level) - outfile.write('parameterdescription=model_.descriptionType(\n') - self.parameterdescription.exportLiteral(outfile, level, name_='parameterdescription') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'parameternamelist': - obj_ = docParamNameList.factory() - obj_.build(child_) - self.parameternamelist.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'parameterdescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_parameterdescription(obj_) -# end class docParamListItem - - -class docParamNameList(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, parametername=None): - if parametername is None: - self.parametername = [] - else: - self.parametername = parametername - def factory(*args_, **kwargs_): - if docParamNameList.subclass: - return docParamNameList.subclass(*args_, **kwargs_) - else: - return docParamNameList(*args_, **kwargs_) - factory = staticmethod(factory) - def get_parametername(self): return self.parametername - def set_parametername(self, parametername): self.parametername = parametername - def add_parametername(self, value): self.parametername.append(value) - def insert_parametername(self, index, value): self.parametername[index] = value - def export(self, outfile, level, namespace_='', name_='docParamNameList', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docParamNameList') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docParamNameList'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docParamNameList'): - for parametername_ in self.parametername: - parametername_.export(outfile, level, namespace_, name_='parametername') - def hasContent_(self): - if ( - self.parametername is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docParamNameList'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('parametername=[\n') - level += 1 - for parametername in self.parametername: - showIndent(outfile, level) - outfile.write('model_.parametername(\n') - parametername.exportLiteral(outfile, level, name_='parametername') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'parametername': - obj_ = docParamName.factory() - obj_.build(child_) - self.parametername.append(obj_) -# end class docParamNameList - - -class docParamName(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): - self.direction = direction - if mixedclass_ is None: - self.mixedclass_ = MixedContainer - else: - self.mixedclass_ = mixedclass_ - if content_ is None: - self.content_ = [] - else: - self.content_ = content_ - def factory(*args_, **kwargs_): - if docParamName.subclass: - return docParamName.subclass(*args_, **kwargs_) - else: - return docParamName(*args_, **kwargs_) - factory = staticmethod(factory) - def get_ref(self): return self.ref - def set_ref(self, ref): self.ref = ref - def get_direction(self): return self.direction - def set_direction(self, direction): self.direction = direction - def export(self, outfile, level, namespace_='', name_='docParamName', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docParamName') - outfile.write('>') - self.exportChildren(outfile, level + 1, namespace_, name_) - outfile.write('\n' % (namespace_, name_)) - def exportAttributes(self, outfile, level, namespace_='', name_='docParamName'): - if self.direction is not None: - outfile.write(' direction=%s' % (quote_attrib(self.direction), )) - def exportChildren(self, outfile, level, namespace_='', name_='docParamName'): - for item_ in self.content_: - item_.export(outfile, level, item_.name, namespace_) - def hasContent_(self): - if ( - self.ref is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docParamName'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.direction is not None: - showIndent(outfile, level) - outfile.write('direction = "%s",\n' % (self.direction,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('content_ = [\n') - for item_ in self.content_: - item_.exportLiteral(outfile, level, name_) - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('direction'): - self.direction = attrs.get('direction').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'ref': - childobj_ = docRefTextType.factory() - childobj_.build(child_) - obj_ = self.mixedclass_(MixedContainer.CategoryComplex, - MixedContainer.TypeNone, 'ref', childobj_) - self.content_.append(obj_) - elif child_.nodeType == Node.TEXT_NODE: - obj_ = self.mixedclass_(MixedContainer.CategoryText, - MixedContainer.TypeNone, '', child_.nodeValue) - self.content_.append(obj_) -# end class docParamName - - -class docXRefSectType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, id=None, xreftitle=None, xrefdescription=None): - self.id = id - if xreftitle is None: - self.xreftitle = [] - else: - self.xreftitle = xreftitle - self.xrefdescription = xrefdescription - def factory(*args_, **kwargs_): - if docXRefSectType.subclass: - return docXRefSectType.subclass(*args_, **kwargs_) - else: - return docXRefSectType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_xreftitle(self): return self.xreftitle - def set_xreftitle(self, xreftitle): self.xreftitle = xreftitle - def add_xreftitle(self, value): self.xreftitle.append(value) - def insert_xreftitle(self, index, value): self.xreftitle[index] = value - def get_xrefdescription(self): return self.xrefdescription - def set_xrefdescription(self, xrefdescription): self.xrefdescription = xrefdescription - def get_id(self): return self.id - def set_id(self, id): self.id = id - def export(self, outfile, level, namespace_='', name_='docXRefSectType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docXRefSectType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docXRefSectType'): - if self.id is not None: - outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docXRefSectType'): - for xreftitle_ in self.xreftitle: - showIndent(outfile, level) - outfile.write('<%sxreftitle>%s\n' % (namespace_, self.format_string(quote_xml(xreftitle_).encode(ExternalEncoding), input_name='xreftitle'), namespace_)) - if self.xrefdescription: - self.xrefdescription.export(outfile, level, namespace_, name_='xrefdescription', ) - def hasContent_(self): - if ( - self.xreftitle is not None or - self.xrefdescription is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docXRefSectType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.id is not None: - showIndent(outfile, level) - outfile.write('id = %s,\n' % (self.id,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('xreftitle=[\n') - level += 1 - for xreftitle in self.xreftitle: - showIndent(outfile, level) - outfile.write('%s,\n' % quote_python(xreftitle).encode(ExternalEncoding)) - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.xrefdescription: - showIndent(outfile, level) - outfile.write('xrefdescription=model_.descriptionType(\n') - self.xrefdescription.exportLiteral(outfile, level, name_='xrefdescription') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('id'): - self.id = attrs.get('id').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'xreftitle': - xreftitle_ = '' - for text__content_ in child_.childNodes: - xreftitle_ += text__content_.nodeValue - self.xreftitle.append(xreftitle_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'xrefdescription': - obj_ = descriptionType.factory() - obj_.build(child_) - self.set_xrefdescription(obj_) -# end class docXRefSectType - - -class docCopyType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, link=None, para=None, sect1=None, internal=None): - self.link = link - if para is None: - self.para = [] - else: - self.para = para - if sect1 is None: - self.sect1 = [] - else: - self.sect1 = sect1 - self.internal = internal - def factory(*args_, **kwargs_): - if docCopyType.subclass: - return docCopyType.subclass(*args_, **kwargs_) - else: - return docCopyType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_para(self): return self.para - def set_para(self, para): self.para = para - def add_para(self, value): self.para.append(value) - def insert_para(self, index, value): self.para[index] = value - def get_sect1(self): return self.sect1 - def set_sect1(self, sect1): self.sect1 = sect1 - def add_sect1(self, value): self.sect1.append(value) - def insert_sect1(self, index, value): self.sect1[index] = value - def get_internal(self): return self.internal - def set_internal(self, internal): self.internal = internal - def get_link(self): return self.link - def set_link(self, link): self.link = link - def export(self, outfile, level, namespace_='', name_='docCopyType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docCopyType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docCopyType'): - if self.link is not None: - outfile.write(' link=%s' % (self.format_string(quote_attrib(self.link).encode(ExternalEncoding), input_name='link'), )) - def exportChildren(self, outfile, level, namespace_='', name_='docCopyType'): - for para_ in self.para: - para_.export(outfile, level, namespace_, name_='para') - for sect1_ in self.sect1: - sect1_.export(outfile, level, namespace_, name_='sect1') - if self.internal: - self.internal.export(outfile, level, namespace_, name_='internal') - def hasContent_(self): - if ( - self.para is not None or - self.sect1 is not None or - self.internal is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docCopyType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.link is not None: - showIndent(outfile, level) - outfile.write('link = %s,\n' % (self.link,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('para=[\n') - level += 1 - for para in self.para: - showIndent(outfile, level) - outfile.write('model_.para(\n') - para.exportLiteral(outfile, level, name_='para') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - showIndent(outfile, level) - outfile.write('sect1=[\n') - level += 1 - for sect1 in self.sect1: - showIndent(outfile, level) - outfile.write('model_.sect1(\n') - sect1.exportLiteral(outfile, level, name_='sect1') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - if self.internal: - showIndent(outfile, level) - outfile.write('internal=model_.docInternalType(\n') - self.internal.exportLiteral(outfile, level, name_='internal') - showIndent(outfile, level) - outfile.write('),\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('link'): - self.link = attrs.get('link').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'para': - obj_ = docParaType.factory() - obj_.build(child_) - self.para.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'sect1': - obj_ = docSect1Type.factory() - obj_.build(child_) - self.sect1.append(obj_) - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'internal': - obj_ = docInternalType.factory() - obj_.build(child_) - self.set_internal(obj_) -# end class docCopyType - - -class docCharType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, char=None, valueOf_=''): - self.char = char - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if docCharType.subclass: - return docCharType.subclass(*args_, **kwargs_) - else: - return docCharType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_char(self): return self.char - def set_char(self, char): self.char = char - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docCharType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docCharType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docCharType'): - if self.char is not None: - outfile.write(' char=%s' % (quote_attrib(self.char), )) - def exportChildren(self, outfile, level, namespace_='', name_='docCharType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docCharType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.char is not None: - showIndent(outfile, level) - outfile.write('char = "%s",\n' % (self.char,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('char'): - self.char = attrs.get('char').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docCharType - - -class docEmptyType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, valueOf_=''): - self.valueOf_ = valueOf_ - def factory(*args_, **kwargs_): - if docEmptyType.subclass: - return docEmptyType.subclass(*args_, **kwargs_) - else: - return docEmptyType(*args_, **kwargs_) - factory = staticmethod(factory) - def getValueOf_(self): return self.valueOf_ - def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ - def export(self, outfile, level, namespace_='', name_='docEmptyType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='docEmptyType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='docEmptyType'): - pass - def exportChildren(self, outfile, level, namespace_='', name_='docEmptyType'): - if self.valueOf_.find('![CDATA')>-1: - value=quote_xml('%s' % self.valueOf_) - value=value.replace('![CDATA','') - outfile.write(value) - else: - outfile.write(quote_xml('%s' % self.valueOf_)) - def hasContent_(self): - if ( - self.valueOf_ is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='docEmptyType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - pass - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - self.valueOf_ = '' - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - pass - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.TEXT_NODE: - self.valueOf_ += child_.nodeValue - elif child_.nodeType == Node.CDATA_SECTION_NODE: - self.valueOf_ += '![CDATA['+child_.nodeValue+']]' -# end class docEmptyType - - -USAGE_TEXT = """ -Usage: python .py [ -s ] -Options: - -s Use the SAX parser, not the minidom parser. -""" - -def usage(): - print USAGE_TEXT - sys.exit(1) - - -def parse(inFileName): - doc = minidom.parse(inFileName) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('\n') - rootObj.export(sys.stdout, 0, name_="doxygen", - namespacedef_='') - return rootObj - - -def parseString(inString): - doc = minidom.parseString(inString) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('\n') - rootObj.export(sys.stdout, 0, name_="doxygen", - namespacedef_='') - return rootObj - - -def parseLiteral(inFileName): - doc = minidom.parse(inFileName) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('from compound import *\n\n') - sys.stdout.write('rootObj = doxygen(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="doxygen") - sys.stdout.write(')\n') - return rootObj - - -def main(): - args = sys.argv[1:] - if len(args) == 1: - parse(args[0]) - else: - usage() - - -if __name__ == '__main__': - main() - #import pdb - #pdb.run('main()') - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py deleted file mode 100644 index 7a70e14a1..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/index.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python - -""" -Generated Mon Feb 9 19:08:05 2009 by generateDS.py. -""" - -from xml.dom import minidom - -import os -import sys -import compound - -import indexsuper as supermod - -class DoxygenTypeSub(supermod.DoxygenType): - def __init__(self, version=None, compound=None): - supermod.DoxygenType.__init__(self, version, compound) - - def find_compounds_and_members(self, details): - """ - Returns a list of all compounds and their members which match details - """ - - results = [] - for compound in self.compound: - members = compound.find_members(details) - if members: - results.append([compound, members]) - else: - if details.match(compound): - results.append([compound, []]) - - return results - -supermod.DoxygenType.subclass = DoxygenTypeSub -# end class DoxygenTypeSub - - -class CompoundTypeSub(supermod.CompoundType): - def __init__(self, kind=None, refid=None, name='', member=None): - supermod.CompoundType.__init__(self, kind, refid, name, member) - - def find_members(self, details): - """ - Returns a list of all members which match details - """ - - results = [] - - for member in self.member: - if details.match(member): - results.append(member) - - return results - -supermod.CompoundType.subclass = CompoundTypeSub -# end class CompoundTypeSub - - -class MemberTypeSub(supermod.MemberType): - - def __init__(self, kind=None, refid=None, name=''): - supermod.MemberType.__init__(self, kind, refid, name) - -supermod.MemberType.subclass = MemberTypeSub -# end class MemberTypeSub - - -def parse(inFilename): - - doc = minidom.parse(inFilename) - rootNode = doc.documentElement - rootObj = supermod.DoxygenType.factory() - rootObj.build(rootNode) - - return rootObj - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py deleted file mode 100644 index a99153019..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/generated/indexsuper.py +++ /dev/null @@ -1,523 +0,0 @@ -#!/usr/bin/env python - -# -# Generated Thu Jun 11 18:43:54 2009 by generateDS.py. -# - -import sys -import getopt -from string import lower as str_lower -from xml.dom import minidom -from xml.dom import Node - -# -# User methods -# -# Calls to the methods in these classes are generated by generateDS.py. -# You can replace these methods by re-implementing the following class -# in a module named generatedssuper.py. - -try: - from generatedssuper import GeneratedsSuper -except ImportError, exp: - - class GeneratedsSuper: - def format_string(self, input_data, input_name=''): - return input_data - def format_integer(self, input_data, input_name=''): - return '%d' % input_data - def format_float(self, input_data, input_name=''): - return '%f' % input_data - def format_double(self, input_data, input_name=''): - return '%e' % input_data - def format_boolean(self, input_data, input_name=''): - return '%s' % input_data - - -# -# If you have installed IPython you can uncomment and use the following. -# IPython is available from http://ipython.scipy.org/. -# - -## from IPython.Shell import IPShellEmbed -## args = '' -## ipshell = IPShellEmbed(args, -## banner = 'Dropping into IPython', -## exit_msg = 'Leaving Interpreter, back to program.') - -# Then use the following line where and when you want to drop into the -# IPython shell: -# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') - -# -# Globals -# - -ExternalEncoding = 'ascii' - -# -# Support/utility functions. -# - -def showIndent(outfile, level): - for idx in range(level): - outfile.write(' ') - -def quote_xml(inStr): - s1 = (isinstance(inStr, basestring) and inStr or - '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - return s1 - -def quote_attrib(inStr): - s1 = (isinstance(inStr, basestring) and inStr or - '%s' % inStr) - s1 = s1.replace('&', '&') - s1 = s1.replace('<', '<') - s1 = s1.replace('>', '>') - if '"' in s1: - if "'" in s1: - s1 = '"%s"' % s1.replace('"', """) - else: - s1 = "'%s'" % s1 - else: - s1 = '"%s"' % s1 - return s1 - -def quote_python(inStr): - s1 = inStr - if s1.find("'") == -1: - if s1.find('\n') == -1: - return "'%s'" % s1 - else: - return "'''%s'''" % s1 - else: - if s1.find('"') != -1: - s1 = s1.replace('"', '\\"') - if s1.find('\n') == -1: - return '"%s"' % s1 - else: - return '"""%s"""' % s1 - - -class MixedContainer: - # Constants for category: - CategoryNone = 0 - CategoryText = 1 - CategorySimple = 2 - CategoryComplex = 3 - # Constants for content_type: - TypeNone = 0 - TypeText = 1 - TypeString = 2 - TypeInteger = 3 - TypeFloat = 4 - TypeDecimal = 5 - TypeDouble = 6 - TypeBoolean = 7 - def __init__(self, category, content_type, name, value): - self.category = category - self.content_type = content_type - self.name = name - self.value = value - def getCategory(self): - return self.category - def getContenttype(self, content_type): - return self.content_type - def getValue(self): - return self.value - def getName(self): - return self.name - def export(self, outfile, level, name, namespace): - if self.category == MixedContainer.CategoryText: - outfile.write(self.value) - elif self.category == MixedContainer.CategorySimple: - self.exportSimple(outfile, level, name) - else: # category == MixedContainer.CategoryComplex - self.value.export(outfile, level, namespace,name) - def exportSimple(self, outfile, level, name): - if self.content_type == MixedContainer.TypeString: - outfile.write('<%s>%s' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeInteger or \ - self.content_type == MixedContainer.TypeBoolean: - outfile.write('<%s>%d' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeFloat or \ - self.content_type == MixedContainer.TypeDecimal: - outfile.write('<%s>%f' % (self.name, self.value, self.name)) - elif self.content_type == MixedContainer.TypeDouble: - outfile.write('<%s>%g' % (self.name, self.value, self.name)) - def exportLiteral(self, outfile, level, name): - if self.category == MixedContainer.CategoryText: - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ - (self.category, self.content_type, self.name, self.value)) - elif self.category == MixedContainer.CategorySimple: - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ - (self.category, self.content_type, self.name, self.value)) - else: # category == MixedContainer.CategoryComplex - showIndent(outfile, level) - outfile.write('MixedContainer(%d, %d, "%s",\n' % \ - (self.category, self.content_type, self.name,)) - self.value.exportLiteral(outfile, level + 1) - showIndent(outfile, level) - outfile.write(')\n') - - -class _MemberSpec(object): - def __init__(self, name='', data_type='', container=0): - self.name = name - self.data_type = data_type - self.container = container - def set_name(self, name): self.name = name - def get_name(self): return self.name - def set_data_type(self, data_type): self.data_type = data_type - def get_data_type(self): return self.data_type - def set_container(self, container): self.container = container - def get_container(self): return self.container - - -# -# Data representation classes. -# - -class DoxygenType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, version=None, compound=None): - self.version = version - if compound is None: - self.compound = [] - else: - self.compound = compound - def factory(*args_, **kwargs_): - if DoxygenType.subclass: - return DoxygenType.subclass(*args_, **kwargs_) - else: - return DoxygenType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_compound(self): return self.compound - def set_compound(self, compound): self.compound = compound - def add_compound(self, value): self.compound.append(value) - def insert_compound(self, index, value): self.compound[index] = value - def get_version(self): return self.version - def set_version(self, version): self.version = version - def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): - outfile.write(' version=%s' % (self.format_string(quote_attrib(self.version).encode(ExternalEncoding), input_name='version'), )) - def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): - for compound_ in self.compound: - compound_.export(outfile, level, namespace_, name_='compound') - def hasContent_(self): - if ( - self.compound is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='DoxygenType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.version is not None: - showIndent(outfile, level) - outfile.write('version = %s,\n' % (self.version,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('compound=[\n') - level += 1 - for compound in self.compound: - showIndent(outfile, level) - outfile.write('model_.compound(\n') - compound.exportLiteral(outfile, level, name_='compound') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('version'): - self.version = attrs.get('version').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'compound': - obj_ = CompoundType.factory() - obj_.build(child_) - self.compound.append(obj_) -# end class DoxygenType - - -class CompoundType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, refid=None, name=None, member=None): - self.kind = kind - self.refid = refid - self.name = name - if member is None: - self.member = [] - else: - self.member = member - def factory(*args_, **kwargs_): - if CompoundType.subclass: - return CompoundType.subclass(*args_, **kwargs_) - else: - return CompoundType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_member(self): return self.member - def set_member(self, member): self.member = member - def add_member(self, value): self.member.append(value) - def insert_member(self, index, value): self.member[index] = value - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def export(self, outfile, level, namespace_='', name_='CompoundType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='CompoundType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='CompoundType'): - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='CompoundType'): - if self.name is not None: - showIndent(outfile, level) - outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) - for member_ in self.member: - member_.export(outfile, level, namespace_, name_='member') - def hasContent_(self): - if ( - self.name is not None or - self.member is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='CompoundType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) - showIndent(outfile, level) - outfile.write('member=[\n') - level += 1 - for member in self.member: - showIndent(outfile, level) - outfile.write('model_.member(\n') - member.exportLiteral(outfile, level, name_='member') - showIndent(outfile, level) - outfile.write('),\n') - level -= 1 - showIndent(outfile, level) - outfile.write('],\n') - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'name': - name_ = '' - for text__content_ in child_.childNodes: - name_ += text__content_.nodeValue - self.name = name_ - elif child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'member': - obj_ = MemberType.factory() - obj_.build(child_) - self.member.append(obj_) -# end class CompoundType - - -class MemberType(GeneratedsSuper): - subclass = None - superclass = None - def __init__(self, kind=None, refid=None, name=None): - self.kind = kind - self.refid = refid - self.name = name - def factory(*args_, **kwargs_): - if MemberType.subclass: - return MemberType.subclass(*args_, **kwargs_) - else: - return MemberType(*args_, **kwargs_) - factory = staticmethod(factory) - def get_name(self): return self.name - def set_name(self, name): self.name = name - def get_kind(self): return self.kind - def set_kind(self, kind): self.kind = kind - def get_refid(self): return self.refid - def set_refid(self, refid): self.refid = refid - def export(self, outfile, level, namespace_='', name_='MemberType', namespacedef_=''): - showIndent(outfile, level) - outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) - self.exportAttributes(outfile, level, namespace_, name_='MemberType') - if self.hasContent_(): - outfile.write('>\n') - self.exportChildren(outfile, level + 1, namespace_, name_) - showIndent(outfile, level) - outfile.write('\n' % (namespace_, name_)) - else: - outfile.write(' />\n') - def exportAttributes(self, outfile, level, namespace_='', name_='MemberType'): - outfile.write(' kind=%s' % (quote_attrib(self.kind), )) - outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) - def exportChildren(self, outfile, level, namespace_='', name_='MemberType'): - if self.name is not None: - showIndent(outfile, level) - outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) - def hasContent_(self): - if ( - self.name is not None - ): - return True - else: - return False - def exportLiteral(self, outfile, level, name_='MemberType'): - level += 1 - self.exportLiteralAttributes(outfile, level, name_) - if self.hasContent_(): - self.exportLiteralChildren(outfile, level, name_) - def exportLiteralAttributes(self, outfile, level, name_): - if self.kind is not None: - showIndent(outfile, level) - outfile.write('kind = "%s",\n' % (self.kind,)) - if self.refid is not None: - showIndent(outfile, level) - outfile.write('refid = %s,\n' % (self.refid,)) - def exportLiteralChildren(self, outfile, level, name_): - showIndent(outfile, level) - outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) - def build(self, node_): - attrs = node_.attributes - self.buildAttributes(attrs) - for child_ in node_.childNodes: - nodeName_ = child_.nodeName.split(':')[-1] - self.buildChildren(child_, nodeName_) - def buildAttributes(self, attrs): - if attrs.get('kind'): - self.kind = attrs.get('kind').value - if attrs.get('refid'): - self.refid = attrs.get('refid').value - def buildChildren(self, child_, nodeName_): - if child_.nodeType == Node.ELEMENT_NODE and \ - nodeName_ == 'name': - name_ = '' - for text__content_ in child_.childNodes: - name_ += text__content_.nodeValue - self.name = name_ -# end class MemberType - - -USAGE_TEXT = """ -Usage: python .py [ -s ] -Options: - -s Use the SAX parser, not the minidom parser. -""" - -def usage(): - print USAGE_TEXT - sys.exit(1) - - -def parse(inFileName): - doc = minidom.parse(inFileName) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('\n') - rootObj.export(sys.stdout, 0, name_="doxygenindex", - namespacedef_='') - return rootObj - - -def parseString(inString): - doc = minidom.parseString(inString) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('\n') - rootObj.export(sys.stdout, 0, name_="doxygenindex", - namespacedef_='') - return rootObj - - -def parseLiteral(inFileName): - doc = minidom.parse(inFileName) - rootNode = doc.documentElement - rootObj = DoxygenType.factory() - rootObj.build(rootNode) - # Enable Python to collect the space used by the DOM. - doc = None - sys.stdout.write('from index import *\n\n') - sys.stdout.write('rootObj = doxygenindex(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="doxygenindex") - sys.stdout.write(')\n') - return rootObj - - -def main(): - args = sys.argv[1:] - if len(args) == 1: - parse(args[0]) - else: - usage() - - - - -if __name__ == '__main__': - main() - #import pdb - #pdb.run('main()') - diff --git a/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py b/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py deleted file mode 100644 index 6705cd1da..000000000 --- a/gnuradio-core/src/python/gnuradio/utils/doxyxml/text.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -Utilities for extracting text from generated classes. -""" - -def is_string(txt): - if isinstance(txt, str): - return True - try: - if isinstance(txt, unicode): - return True - except NameError: - pass - return False - -def description(obj): - if obj is None: - return None - return description_bit(obj).strip() - -def description_bit(obj): - if hasattr(obj, 'content'): - contents = [description_bit(item) for item in obj.content] - result = ''.join(contents) - elif hasattr(obj, 'content_'): - contents = [description_bit(item) for item in obj.content_] - result = ''.join(contents) - elif hasattr(obj, 'value'): - result = description_bit(obj.value) - elif is_string(obj): - return obj - else: - raise StandardError('Expecting a string or something with content, content_ or value attribute') - # If this bit is a paragraph then add one some line breaks. - if hasattr(obj, 'name') and obj.name == 'para': - result += "\n\n" - return result diff --git a/gr-atsc/src/lib/Makefile.swig.gen b/gr-atsc/src/lib/Makefile.swig.gen index 526f6c3f5..67f9c094a 100644 --- a/gr-atsc/src/lib/Makefile.swig.gen +++ b/gr-atsc/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _atsc_la_CXXFLAGS = \ $(atsc_la_swig_cxxflags) python/atsc.cc: atsc.py -atsc.py: atsc.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +atsc.py: atsc.i # Include the python dependencies for this file -include python/atsc.d diff --git a/gr-audio-alsa/src/Makefile.swig.gen b/gr-audio-alsa/src/Makefile.swig.gen index e3f8b7240..785095d96 100644 --- a/gr-audio-alsa/src/Makefile.swig.gen +++ b/gr-audio-alsa/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _audio_alsa_la_CXXFLAGS = \ $(audio_alsa_la_swig_cxxflags) python/audio_alsa.cc: audio_alsa.py -audio_alsa.py: audio_alsa.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +audio_alsa.py: audio_alsa.i # Include the python dependencies for this file -include python/audio_alsa.d diff --git a/gr-audio-oss/src/Makefile.swig.gen b/gr-audio-oss/src/Makefile.swig.gen index b23861197..95b59c58b 100644 --- a/gr-audio-oss/src/Makefile.swig.gen +++ b/gr-audio-oss/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _audio_oss_la_CXXFLAGS = \ $(audio_oss_la_swig_cxxflags) python/audio_oss.cc: audio_oss.py -audio_oss.py: audio_oss.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +audio_oss.py: audio_oss.i # Include the python dependencies for this file -include python/audio_oss.d diff --git a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen index fd3eeb0d6..8e22f0a98 100644 --- a/gr-cvsd-vocoder/src/lib/Makefile.swig.gen +++ b/gr-cvsd-vocoder/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _cvsd_vocoder_la_CXXFLAGS = \ $(cvsd_vocoder_la_swig_cxxflags) python/cvsd_vocoder.cc: cvsd_vocoder.py -cvsd_vocoder.py: cvsd_vocoder.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +cvsd_vocoder.py: cvsd_vocoder.i # Include the python dependencies for this file -include python/cvsd_vocoder.d diff --git a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen index 2bf234bc5..174ef046d 100644 --- a/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen +++ b/gr-gsm-fr-vocoder/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _gsm_full_rate_la_CXXFLAGS = \ $(gsm_full_rate_la_swig_cxxflags) python/gsm_full_rate.cc: gsm_full_rate.py -gsm_full_rate.py: gsm_full_rate.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +gsm_full_rate.py: gsm_full_rate.i # Include the python dependencies for this file -include python/gsm_full_rate.d diff --git a/gr-msdd6000/src/Makefile.swig.gen b/gr-msdd6000/src/Makefile.swig.gen index 4f932f43c..255e11b29 100644 --- a/gr-msdd6000/src/Makefile.swig.gen +++ b/gr-msdd6000/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _msdd_la_CXXFLAGS = \ $(msdd_la_swig_cxxflags) python/msdd.cc: msdd.py -msdd.py: msdd.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +msdd.py: msdd.i # Include the python dependencies for this file -include python/msdd.d @@ -250,7 +250,7 @@ _msdd_rs_la_CXXFLAGS = \ $(msdd_rs_la_swig_cxxflags) python/msdd_rs.cc: msdd_rs.py -msdd_rs.py: msdd_rs.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +msdd_rs.py: msdd_rs.i # Include the python dependencies for this file -include python/msdd_rs.d diff --git a/gr-noaa/swig/Makefile.swig.gen b/gr-noaa/swig/Makefile.swig.gen index f56ec5000..757c368f5 100644 --- a/gr-noaa/swig/Makefile.swig.gen +++ b/gr-noaa/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _noaa_swig_la_CXXFLAGS = \ $(noaa_swig_la_swig_cxxflags) python/noaa_swig.cc: noaa_swig.py -noaa_swig.py: noaa_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +noaa_swig.py: noaa_swig.i # Include the python dependencies for this file -include python/noaa_swig.d diff --git a/gr-pager/swig/Makefile.swig.gen b/gr-pager/swig/Makefile.swig.gen index f85a0f36c..9f7467c1c 100644 --- a/gr-pager/swig/Makefile.swig.gen +++ b/gr-pager/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _pager_swig_la_CXXFLAGS = \ $(pager_swig_la_swig_cxxflags) python/pager_swig.cc: pager_swig.py -pager_swig.py: pager_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +pager_swig.py: pager_swig.i # Include the python dependencies for this file -include python/pager_swig.d diff --git a/gr-qtgui/src/lib/Makefile.swig.gen b/gr-qtgui/src/lib/Makefile.swig.gen index f64fe4334..b7a0f3c07 100644 --- a/gr-qtgui/src/lib/Makefile.swig.gen +++ b/gr-qtgui/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _qtgui_la_CXXFLAGS = \ $(qtgui_la_swig_cxxflags) python/qtgui.cc: qtgui.py -qtgui.py: qtgui.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +qtgui.py: qtgui.i # Include the python dependencies for this file -include python/qtgui.d diff --git a/gr-radio-astronomy/src/lib/Makefile.swig.gen b/gr-radio-astronomy/src/lib/Makefile.swig.gen index 6720f3b38..faad880cf 100644 --- a/gr-radio-astronomy/src/lib/Makefile.swig.gen +++ b/gr-radio-astronomy/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _ra_la_CXXFLAGS = \ $(ra_la_swig_cxxflags) python/ra.cc: ra.py -ra.py: ra.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +ra.py: ra.i # Include the python dependencies for this file -include python/ra.d diff --git a/gr-trellis/src/lib/Makefile.swig.gen b/gr-trellis/src/lib/Makefile.swig.gen index 6f57642f2..2d014b946 100644 --- a/gr-trellis/src/lib/Makefile.swig.gen +++ b/gr-trellis/src/lib/Makefile.swig.gen @@ -105,7 +105,7 @@ _trellis_la_CXXFLAGS = \ $(trellis_la_swig_cxxflags) python/trellis.cc: trellis.py -trellis.py: trellis.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +trellis.py: trellis.i # Include the python dependencies for this file -include python/trellis.d diff --git a/gr-usrp/src/Makefile.swig.gen b/gr-usrp/src/Makefile.swig.gen index f001b3824..00ecfcb54 100644 --- a/gr-usrp/src/Makefile.swig.gen +++ b/gr-usrp/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp_swig_la_CXXFLAGS = \ $(usrp_swig_la_swig_cxxflags) python/usrp_swig.cc: usrp_swig.py -usrp_swig.py: usrp_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +usrp_swig.py: usrp_swig.i # Include the python dependencies for this file -include python/usrp_swig.d diff --git a/gr-usrp2/src/Makefile.swig.gen b/gr-usrp2/src/Makefile.swig.gen index ff451289d..78cb4e5c6 100644 --- a/gr-usrp2/src/Makefile.swig.gen +++ b/gr-usrp2/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp2_swig_la_CXXFLAGS = \ $(usrp2_swig_la_swig_cxxflags) python/usrp2_swig.cc: usrp2_swig.py -usrp2_swig.py: usrp2_swig.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +usrp2_swig.py: usrp2_swig.i # Include the python dependencies for this file -include python/usrp2_swig.d diff --git a/gr-video-sdl/src/Makefile.swig.gen b/gr-video-sdl/src/Makefile.swig.gen index 217a55593..ac66bc9a2 100644 --- a/gr-video-sdl/src/Makefile.swig.gen +++ b/gr-video-sdl/src/Makefile.swig.gen @@ -105,7 +105,7 @@ _video_sdl_la_CXXFLAGS = \ $(video_sdl_la_swig_cxxflags) python/video_sdl.cc: video_sdl.py -video_sdl.py: video_sdl.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +video_sdl.py: video_sdl.i # Include the python dependencies for this file -include python/video_sdl.d diff --git a/usrp/host/swig/Makefile.swig.gen b/usrp/host/swig/Makefile.swig.gen index 080a7c75a..b772e97da 100644 --- a/usrp/host/swig/Makefile.swig.gen +++ b/usrp/host/swig/Makefile.swig.gen @@ -105,7 +105,7 @@ _usrp_prims_la_CXXFLAGS = \ $(usrp_prims_la_swig_cxxflags) python/usrp_prims.cc: usrp_prims.py -usrp_prims.py: usrp_prims.i $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i +usrp_prims.py: usrp_prims.i # Include the python dependencies for this file -include python/usrp_prims.d -- cgit From 3c3aff088447942053e96ae30b766b00d4cd0202 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sun, 27 Feb 2011 17:35:05 -0500 Subject: Fixing missing header file (in prep for future GCC's). ptrdiff_t is defined in stddef.h. --- usrp/host/swig/usrp_prims.i | 1 + 1 file changed, 1 insertion(+) diff --git a/usrp/host/swig/usrp_prims.i b/usrp/host/swig/usrp_prims.i index 0476858da..a58f8aacf 100644 --- a/usrp/host/swig/usrp_prims.i +++ b/usrp/host/swig/usrp_prims.i @@ -37,6 +37,7 @@ %{ #include +#include // ptrdiff_t %} -- cgit From 3a5d052979b8a624f5d290fa2c23486d9d8dc94a Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 17:03:44 -0700 Subject: Minor bug fixes (from last two commits) --- gnuradio-core/src/lib/swig/gnuradio.i | 2 +- .../src/python/gnuradio/gr/qa_constellation_receiver.py | 14 +------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/gnuradio-core/src/lib/swig/gnuradio.i b/gnuradio-core/src/lib/swig/gnuradio.i index ba8357c40..1856d5007 100644 --- a/gnuradio-core/src/lib/swig/gnuradio.i +++ b/gnuradio-core/src/lib/swig/gnuradio.i @@ -35,7 +35,7 @@ #include %} -// %feature("autodoc","1"); +%feature("autodoc","1"); #ifdef SWIGGUILE // Export constants and enums as scheme variables, not functions. diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py index 8d7719739..544c84cd4 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation_receiver.py @@ -94,20 +94,8 @@ class test_constellation_receiver (gr_unittest.TestCase): d2 = data[:int(len(data)*self.ignore_fraction)] correct, overlap, offset, indices = alignment.align_sequences( d1, d2, indices=self.indices) - print(constellation, constellation.arity(), differential, correct, overlap, offset) self.assertTrue(correct > REQ_CORRECT) - def single(self): - constellation = blks2.psk_constellation(64, mod_codes.NO_CODE) - tb = rec_test_tb(constellation, True, DATA_LENGTH) - tb.run() - data = tb.dst.data() - d1 = tb.src_data[:int(len(tb.src_data)*self.ignore_fraction)] - d2 = data[:int(len(data)*self.ignore_fraction)] - seed = random.randint(0, 256) - correct, overlap, offset, indices = alignment.align_sequences(d1, d2, seed=seed) - print(constellation, constellation.arity(), correct, overlap, offset) - class rec_test_tb (gr.top_block): """ @@ -134,7 +122,7 @@ class rec_test_tb (gr.top_block): # Channel channel = gr.channel_model(NOISE_VOLTAGE, FREQUENCY_OFFSET, TIMING_OFFSET) # Receiver Blocks - demod = blks2.generic_demod(constellation, differential=differential, log=True, + demod = blks2.generic_demod(constellation, differential=differential, freq_alpha=FREQ_ALPHA, phase_alpha=PHASE_ALPHA) self.dst = gr.vector_sink_b() -- cgit From 1aa94c0ddbe9f610ed3a431a0980084d85e7311e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 17:04:18 -0700 Subject: Updated copyright notice dates. --- gnuradio-core/src/lib/general/gr_constellation.cc | 2 +- gnuradio-core/src/lib/general/gr_constellation.h | 2 +- gnuradio-core/src/lib/general/gr_constellation.i | 2 +- .../lib/general/gr_constellation_receiver_cb.cc | 2 +- .../src/lib/general/gr_constellation_receiver_cb.h | 2 +- .../src/lib/general/gr_constellation_receiver_cb.i | 2 +- .../src/lib/general/gr_ofdm_frame_sink2.cc | 2 +- .../src/lib/general/gr_ofdm_frame_sink2.h | 2 +- .../src/lib/general/gr_ofdm_frame_sink2.i | 2 +- .../src/python/gnuradio/blks2impl/bpsk.py | 2 +- .../python/gnuradio/blks2impl/generic_mod_demod.py | 2 +- .../src/python/gnuradio/blks2impl/psk2.py | 2 +- gnuradio-core/src/python/gnuradio/blks2impl/qam.py | 2 +- .../src/python/gnuradio/blks2impl/qpsk.py | 2 +- .../src/python/gnuradio/gr/qa_constellation.py | 2 +- .../src/python/gnuradio/utils/__init__.py | 21 +++++++++++++++++++++ .../src/python/gnuradio/utils/gray_code.py | 21 +++++++++++++++++++++ .../src/python/gnuradio/utils/mod_codes.py | 22 ++++++++++++++++++++++ .../src/python/gnuradio/utils/run_tests.in | 7 +------ gr-trellis/src/lib/fsm.h | 2 +- .../src/lib/trellis_constellation_metrics_cf.cc | 2 +- .../src/lib/trellis_constellation_metrics_cf.h | 2 +- .../src/lib/trellis_constellation_metrics_cf.i | 2 +- 23 files changed, 84 insertions(+), 25 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc index 69b6e1bdc..eede99ffd 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ b/gnuradio-core/src/lib/general/gr_constellation.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2010 Free Software Foundation, Inc. + * Copyright 2010, 2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h index 4ae539572..f6726a9b5 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ b/gnuradio-core/src/lib/general/gr_constellation.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2010 Free Software Foundation, Inc. + * Copyright 2010, 2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i index bc1724c3a..179e68136 100644 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ b/gnuradio-core/src/lib/general/gr_constellation.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2010 Free Software Foundation, Inc. + * Copyright 2010, 2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc index dae70d931..c1b56f44f 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005,2006,2007,2010 Free Software Foundation, Inc. + * Copyright 2005,2006,2007,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h index d40d77fff..80ffcc873 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2004,2007,2010 Free Software Foundation, Inc. + * Copyright 2004,2007,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i index 2298d5099..f4df49701 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2004 Free Software Foundation, Inc. + * Copyright 2004,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc index f0cb0fb0a..40574b4e9 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007,2008,2010 Free Software Foundation, Inc. + * Copyright 2007,2008,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h index 647ce7958..de8c6a37e 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i index 24d4b32bd..8fa320089 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py index 222178abb..16524de94 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/bpsk.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py index b88ff72a0..44779754b 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/generic_mod_demod.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006,2007,2009 Free Software Foundation, Inc. +# Copyright 2005,2006,2007,2009,2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py index 95f25e75a..aaa9659a4 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/psk2.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py index bdd27e9bb..9c135b25a 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qam.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qam.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py b/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py index f62ae232c..4af8d0018 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/qpsk.py @@ -1,5 +1,5 @@ # -# Copyright 2005,2006 Free Software Foundation, Inc. +# Copyright 2005,2006,2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py index 6ac3d95b6..054b01804 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2004,2007,2010 Free Software Foundation, Inc. +# Copyright 2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # diff --git a/gnuradio-core/src/python/gnuradio/utils/__init__.py b/gnuradio-core/src/python/gnuradio/utils/__init__.py index e69de29bb..b3e997f9f 100644 --- a/gnuradio-core/src/python/gnuradio/utils/__init__.py +++ b/gnuradio-core/src/python/gnuradio/utils/__init__.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# +# Copyright 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. +# diff --git a/gnuradio-core/src/python/gnuradio/utils/gray_code.py b/gnuradio-core/src/python/gnuradio/utils/gray_code.py index 70cb9d7e2..926a1ded1 100644 --- a/gnuradio-core/src/python/gnuradio/utils/gray_code.py +++ b/gnuradio-core/src/python/gnuradio/utils/gray_code.py @@ -1,3 +1,24 @@ +#!/usr/bin/env python +# +# Copyright 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. +# class GrayCodeGenerator(object): """ diff --git a/gnuradio-core/src/python/gnuradio/utils/mod_codes.py b/gnuradio-core/src/python/gnuradio/utils/mod_codes.py index db3dc252d..caacda5cc 100644 --- a/gnuradio-core/src/python/gnuradio/utils/mod_codes.py +++ b/gnuradio-core/src/python/gnuradio/utils/mod_codes.py @@ -1,3 +1,25 @@ +#!/usr/bin/env python +# +# Copyright 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. +# + GRAY_CODE = 'gray' SET_PARTITION_CODE = 'set-partition' NO_CODE = 'none' diff --git a/gnuradio-core/src/python/gnuradio/utils/run_tests.in b/gnuradio-core/src/python/gnuradio/utils/run_tests.in index 504f33728..adcbdfd21 100644 --- a/gnuradio-core/src/python/gnuradio/utils/run_tests.in +++ b/gnuradio-core/src/python/gnuradio/utils/run_tests.in @@ -8,9 +8,4 @@ # correct, as it will result in a partially bogus PYTHONPATH, but it # does make the correct paths in the second half so all is well. -@PYTHON@ @srcdir@/doxyxml/__init__.py - -# @top_builddir@/run_tests.sh \ -# @abs_top_srcdir@/gnuradio-core \ -# @abs_top_builddir@/gnuradio-core \ -# @srcdir@ +# Nothing in here at the moment. diff --git a/gr-trellis/src/lib/fsm.h b/gr-trellis/src/lib/fsm.h index e5f717af0..8bae91754 100644 --- a/gr-trellis/src/lib/fsm.h +++ b/gr-trellis/src/lib/fsm.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2002 Free Software Foundation, Inc. + * Copyright 2002,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc index 2d6f0ebf2..fb529aaa7 100644 --- a/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2004,2010 Free Software Foundation, Inc. + * Copyright 2004,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.h b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h index eb24ad352..df35f16d2 100644 --- a/gr-trellis/src/lib/trellis_constellation_metrics_cf.h +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2004, 2010 Free Software Foundation, Inc. + * Copyright 2004,2010,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/gr-trellis/src/lib/trellis_constellation_metrics_cf.i b/gr-trellis/src/lib/trellis_constellation_metrics_cf.i index b4a5bbbb7..f863453f2 100644 --- a/gr-trellis/src/lib/trellis_constellation_metrics_cf.i +++ b/gr-trellis/src/lib/trellis_constellation_metrics_cf.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2004 Free Software Foundation, Inc. + * Copyright 2004,2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * -- cgit From d7093fd06d0ec37f6ba2841d202fe90f4fa3661e Mon Sep 17 00:00:00 2001 From: Ben Reynwar Date: Sun, 27 Feb 2011 23:14:26 -0700 Subject: Fixed to make compatible with python 2.4 --- gnuradio-core/src/python/gnuradio/gr/qa_constellation.py | 7 ++++--- gnuradio-core/src/python/gnuradio/gr_xmlrunner.py | 12 +++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py index 054b01804..5c3c04160 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_constellation.py @@ -22,7 +22,6 @@ import random from cmath import exp, pi, log -from itertools import product from gnuradio import gr, gr_unittest, blks2 from gnuradio.utils import mod_codes @@ -52,8 +51,10 @@ def threed_constell(): oned_points = ((1+0j), (0+1j), (-1+0j), (0-1j)) points = [] r4 = range(0, 4) - for ia, ib, ic in product(r4, r4, r4): - points += [oned_points[ia], oned_points[ib], oned_points[ic]] + for ia in r4: + for ib in r4: + for ic in r4: + points += [oned_points[ia], oned_points[ib], oned_points[ic]] rot_sym = 4 dim = 3 return gr.constellation_calcdist(points, [], rot_sym, dim) diff --git a/gnuradio-core/src/python/gnuradio/gr_xmlrunner.py b/gnuradio-core/src/python/gnuradio/gr_xmlrunner.py index ded77f5f3..c3dc5cf13 100644 --- a/gnuradio-core/src/python/gnuradio/gr_xmlrunner.py +++ b/gnuradio-core/src/python/gnuradio/gr_xmlrunner.py @@ -6,8 +6,6 @@ XML Test Runner for PyUnit # the Public Domain. With contributions by Paolo Borelli and others. # Added to GNU Radio Oct. 3, 2010 -from __future__ import with_statement - __version__ = "0.1" import os.path @@ -185,7 +183,9 @@ class XMLTestRunner(object): result = _XMLTestResult(classname) start_time = time.time() - with _fake_std_streams(): + fss = _fake_std_streams() + fss.__enter__() + try: test(result) try: out_s = sys.stdout.getvalue() @@ -195,6 +195,8 @@ class XMLTestRunner(object): err_s = sys.stderr.getvalue() except AttributeError: err_s = "" + finally: + fss.__exit__(None, None, None) time_taken = time.time() - start_time result.print_report(stream, time_taken, out_s, err_s) @@ -218,8 +220,8 @@ class _fake_std_streams(object): def __enter__(self): self._orig_stdout = sys.stdout self._orig_stderr = sys.stderr - sys.stdout = StringIO() - sys.stderr = StringIO() + #sys.stdout = StringIO() + #sys.stderr = StringIO() def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._orig_stdout -- cgit From 42719e65f2a67bd5d7e8a4836783cf954b66b3a0 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 26 Mar 2011 15:27:28 -0400 Subject: gr-qtgui: more robust way of checking for QWT-qt4; checks a different header only in QT4 version and check qwt-qt4 directory first to avoid finding qt3 version in qwt directory. --- config/gr_qwt.m4 | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/config/gr_qwt.m4 b/config/gr_qwt.m4 index 16ec63819..537348ac6 100644 --- a/config/gr_qwt.m4 +++ b/config/gr_qwt.m4 @@ -59,25 +59,25 @@ AC_DEFUN([GR_QWT], dnl if not set by user if test "$qwt_incdir" = "" ; then - dnl check qwt/qwt.h (as in Fedora) + dnl check qwt-qt4/qwt.h (as in Ubuntu) AC_CHECK_HEADER( - [qwt/qwt.h], - [qwt_qwt_h=yes], - [qwt_qwt_h=no] + [qwt-qt4/qwt_double_interval.h], + [qwt_qt4_qwt_h=yes], + [qwt_qt4_qwt_h=no] ) dnl If it was found, set the flags and move on - if test "$qwt_qwt_h" = "yes" ; then - QWT_CFLAGS="$QWT_CFLAGS -I/usr/include/qwt" + if test "$qwt_qt4_qwt_h" = "yes" ; then + QWT_CFLAGS="$QWT_CFLAGS -I/usr/include/qwt-qt4" else - dnl otherwise, check qwt-qt4/qwt.h (as in Ubuntu) + dnl check qwt/qwt.h (as in Fedora) AC_CHECK_HEADER( - [qwt-qt4/qwt.h], - [qwt_qt4_qwt_h=yes], - [qwt_qt4_qwt_h=no] + [qwt/qwt_double_interval.h], + [qwt_qwt_h=yes], + [qwt_qwt_h=no] ) dnl if it was found, set the flags and move on - if test "$qwt_qt4_qwt_h" = "yes" ; then - QWT_CFLAGS="$QWT_CFLAGS -I/usr/include/qwt-qt4" + if test "$qwt_qwt_h" = "yes" ; then + QWT_CFLAGS="$QWT_CFLAGS -I/usr/include/qwt" else dnl otherwise, qwt.h wasn't found, so set the flag to no libqwt_ok=no -- cgit From 7bad5690d486050fa192e8642bbcbbaa091582a6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 26 Mar 2011 17:03:54 -0400 Subject: gr-qtgui: adding QA code for qtgui; remarked out until a fix for the segfault can be found. --- config/grc_gr_qtgui.m4 | 7 +++++- gr-qtgui/src/python/.gitignore | 1 + gr-qtgui/src/python/Makefile.am | 21 ++++++++++++------ gr-qtgui/src/python/qa_qtgui.py | 46 ++++++++++++++++++++++++++++++++++++++++ gr-qtgui/src/python/run_tests.in | 10 +++++++++ 5 files changed, 77 insertions(+), 8 deletions(-) create mode 100755 gr-qtgui/src/python/qa_qtgui.py create mode 100644 gr-qtgui/src/python/run_tests.in diff --git a/config/grc_gr_qtgui.m4 b/config/grc_gr_qtgui.m4 index 92392c883..aa9646b3c 100644 --- a/config/grc_gr_qtgui.m4 +++ b/config/grc_gr_qtgui.m4 @@ -85,7 +85,12 @@ AC_DEFUN([GRC_GR_QTGUI],[ gr-qtgui/src/Makefile \ gr-qtgui/src/lib/Makefile \ gr-qtgui/src/python/Makefile \ + gr-qtgui/src/python/run_tests \ ]) - GRC_BUILD_CONDITIONAL(gr-qtgui) + GRC_BUILD_CONDITIONAL(gr-qtgui,[ + dnl run_tests is created from run_tests.in. Make it executable. + AC_CONFIG_COMMANDS([run_tests_qtgui], + [chmod +x gr-qtgui/src/python/run_tests]) + ]) ]) diff --git a/gr-qtgui/src/python/.gitignore b/gr-qtgui/src/python/.gitignore index b336cc7ce..604b402c5 100644 --- a/gr-qtgui/src/python/.gitignore +++ b/gr-qtgui/src/python/.gitignore @@ -1,2 +1,3 @@ /Makefile /Makefile.in +/run_tests diff --git a/gr-qtgui/src/python/Makefile.am b/gr-qtgui/src/python/Makefile.am index 31df63a44..0953a71e5 100644 --- a/gr-qtgui/src/python/Makefile.am +++ b/gr-qtgui/src/python/Makefile.am @@ -21,18 +21,25 @@ include $(top_srcdir)/Makefile.common +TESTS = +EXTRA_DIST += run_tests.in \ + qt_digital_window.ui + +if PYTHON +TESTS += run_tests +DISTCLEANFILES += run_tests + +qtguipythondir = $(grpythondir)/qtgui + noinst_PYTHON = \ pyqt_example_f.py \ pyqt_example.py \ qt_digital.py \ qt_digital_window.py \ usrp2_display.py \ - usrp_display.py - -EXTRA_DIST += \ - qt_digital_window.ui - -qtguipythondir = $(grpythondir)/qtgui + usrp_display.py \ + qa_qtgui.py -qtguipython_PYTHON = \ +qtguipython_PYTHON = \ __init__.py +endif diff --git a/gr-qtgui/src/python/qa_qtgui.py b/gr-qtgui/src/python/qa_qtgui.py new file mode 100755 index 000000000..fbf0de46e --- /dev/null +++ b/gr-qtgui/src/python/qa_qtgui.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# +# Copyright 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. +# + +from gnuradio import gr, gr_unittest +import qtgui +from PyQt4 import QtGui, QtCore +import sys, sip + +class test_qtgui(gr_unittest.TestCase): + + def setUp (self): + self.tb = gr.top_block () + + def tearDown (self): + self.tb = None + + def test01 (self): + pass + # Test to make sure we can instantiate these + #self.qapp = QtGui.QApplication(sys.argv) + #self.qtsnk = qtgui.sink_c(1024, gr.firdes.WIN_BLACKMAN_hARRIS, + # 0, 1, "Test", + # True, True, False, True, True) + + +if __name__ == '__main__': + gr_unittest.run(test_qtgui, "test_qtgui.xml") diff --git a/gr-qtgui/src/python/run_tests.in b/gr-qtgui/src/python/run_tests.in new file mode 100644 index 000000000..909194752 --- /dev/null +++ b/gr-qtgui/src/python/run_tests.in @@ -0,0 +1,10 @@ +#!/bin/sh + +# 1st parameter is absolute path to component source directory +# 2nd parameter is absolute path to component build directory +# 3rd parameter is path to Python QA directory + +@top_builddir@/run_tests.sh \ + @abs_top_srcdir@/gr-qtgui \ + @abs_top_builddir@/gr-qtgui \ + @srcdir@ -- cgit From dd97932abfd35e60e9374f202aa6c69afcfb35ca Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 26 Mar 2011 18:06:56 -0400 Subject: gruel: using a copy of swig's intrusive_ptr.i to support the PMT wrapping. --- gruel/src/swig/Makefile.am | 7 +-- gruel/src/swig/gr_intrusive_ptr.i | 102 ++++++++++++++++++++++++++++++++++++++ gruel/src/swig/pmt_swig.i | 3 +- 3 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 gruel/src/swig/gr_intrusive_ptr.i diff --git a/gruel/src/swig/Makefile.am b/gruel/src/swig/Makefile.am index 294045567..3261e47c2 100644 --- a/gruel/src/swig/Makefile.am +++ b/gruel/src/swig/Makefile.am @@ -30,9 +30,6 @@ AM_CPPFLAGS = \ $(PYTHON_CPPFLAGS) \ $(WITH_INCLUDES) -TOP_SWIG_IFILES = \ - pmt_swig.i - ############################## # SWIG interface and library TOP_SWIG_IFILES = \ @@ -50,6 +47,6 @@ pmt_swig_la_swig_libadd = \ $(abs_top_builddir)/gruel/src/lib/pmt/libpmt.la # additional SWIG files to be installed -pmt_swig_swiginclude_headers = - +pmt_swig_swiginclude_headers = \ + gr_intrusive_ptr.i diff --git a/gruel/src/swig/gr_intrusive_ptr.i b/gruel/src/swig/gr_intrusive_ptr.i new file mode 100644 index 000000000..eef5bc84d --- /dev/null +++ b/gruel/src/swig/gr_intrusive_ptr.i @@ -0,0 +1,102 @@ +// This file was borrowed from the SWIG project to allow use to +// wrap PMTs that use intrusive pointers. This is only necessary +// to support backwards compatability with older distributions of +// Linux that do not natively support a new enough version of SWIG. +// We do this to prevent having to update our dependency on a new +// SWIG. Eventually, the need for this should go away. + +// Allow for different namespaces for shared_ptr / intrusive_ptr - they could be boost or std or std::tr1 +// For example for std::tr1, use: +// #define SWIG_SHARED_PTR_NAMESPACE std +// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 +// #define SWIG_INTRUSIVE_PTR_NAMESPACE boost +// #define SWIG_INTRUSIVE_PTR_SUBNAMESPACE + +#if !defined(SWIG_INTRUSIVE_PTR_NAMESPACE) +# define SWIG_INTRUSIVE_PTR_NAMESPACE boost +#endif + +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE::SWIG_INTRUSIVE_PTR_SUBNAMESPACE +#else +# define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE +#endif + +namespace SWIG_INTRUSIVE_PTR_NAMESPACE { +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + namespace SWIG_INTRUSIVE_PTR_SUBNAMESPACE { +#endif + template class intrusive_ptr { + }; +#if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) + } +#endif +} + +%fragment("SWIG_intrusive_deleter", "header") { +template struct SWIG_intrusive_deleter { + void operator()(T *p) { + if (p) + intrusive_ptr_release(p); + } +}; +} + +%fragment("SWIG_null_deleter", "header") { +struct SWIG_null_deleter { + void operator() (void const *) const { + } +}; +%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() +%#define SWIG_NO_NULL_DELETER_1 +} + +// Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types +// For plain classes, do not use for derived classes +%define SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE...) +SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, , TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) +%enddef + +// Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types +// For derived classes +%define SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) +SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, , TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) +%types(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > = SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >) %{ + *newmemory = SWIG_CAST_NEW_MEMORY; + return (void *) new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >(*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *)$from); + %} +%extend TYPE { + static SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE > SWIGSharedPtrUpcast(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast) { + return swigSharedPtrUpcast; + } +} +%enddef + +// Extra user macro for including classes in intrusive_ptr typemaps for both const and non-const pointer types +// This caters for classes which cannot be wrapped by intrusive_ptrs but are still part of the class hierarchy +// For plain classes, do not use for derived classes +%define SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE...) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, , TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, const, TYPE) +%enddef + +// Extra user macro for including classes in intrusive_ptr typemaps for both const and non-const pointer types +// This caters for classes which cannot be wrapped by intrusive_ptrs but are still part of the class hierarchy +// For derived classes +%define SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE...) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, , TYPE) +SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, const, TYPE) +%types(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > = SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >) %{ + *newmemory = SWIG_CAST_NEW_MEMORY; + return (void *) new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >(*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *)$from); +%} +%extend TYPE { + static SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE > SWIGSharedPtrUpcast(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast) { + return swigSharedPtrUpcast; + } +} +%enddef + + diff --git a/gruel/src/swig/pmt_swig.i b/gruel/src/swig/pmt_swig.i index 6435e03cc..3b0eb45c8 100644 --- a/gruel/src/swig/pmt_swig.i +++ b/gruel/src/swig/pmt_swig.i @@ -38,7 +38,8 @@ using namespace pmt; // Template intrusive_ptr for Swig to avoid dereferencing issues class pmt_base; -%import +//%import +%import %template(swig_int_ptr) boost::intrusive_ptr; typedef boost::intrusive_ptr pmt_t; -- cgit From 753ee5b99464b83b1319f6cb933d1dc084d18213 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 28 Mar 2011 00:01:42 -0400 Subject: volk: adding BOOST_CPPFLAGS to volk to use boost unit tests. --- volk/Makefile.common | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/volk/Makefile.common b/volk/Makefile.common index e91a55e9c..eca2c6516 100644 --- a/volk/Makefile.common +++ b/volk/Makefile.common @@ -54,7 +54,8 @@ SWIGPYTHONFLAGS = -fvirtual -python -modern SWIGGRFLAGS = -I$(GNURADIO_CORE_INCLUDEDIR)/swig -I$(GNURADIO_CORE_INCLUDEDIR) # standard defins and includes -STD_DEFINES_AND_INCLUDES=-I$(top_srcdir)/include -I$(top_srcdir)/lib $(GNURADIO_CORE_CPPFLAGS) +STD_DEFINES_AND_INCLUDES=-I$(top_srcdir)/include -I$(top_srcdir)/lib \ + $(BOOST_CPPFLAGS) $(GNURADIO_CORE_CPPFLAGS) # Don't assume that make predefines $(RM), because BSD make does # not. We define it now in configure.ac using AM_PATH_PROG, but now -- cgit From 75bbb265948bd0963e796d7ec861a71bbd604d62 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 28 Mar 2011 00:48:24 -0400 Subject: audio: re-adding circular_buffer.h for OSX build. --- gr-audio/lib/osx/circular_buffer.h | 315 +++++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 gr-audio/lib/osx/circular_buffer.h diff --git a/gr-audio/lib/osx/circular_buffer.h b/gr-audio/lib/osx/circular_buffer.h new file mode 100644 index 000000000..48758bf87 --- /dev/null +++ b/gr-audio/lib/osx/circular_buffer.h @@ -0,0 +1,315 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006,2009,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. + */ + +#ifndef _CIRCULAR_BUFFER_H_ +#define _CIRCULAR_BUFFER_H_ + +#include +#include +#include + +#ifndef DO_DEBUG +#define DO_DEBUG 0 +#endif + +#if DO_DEBUG +#define DEBUG(X) do{X} while(0); +#else +#define DEBUG(X) do{} while(0); +#endif + +template +class circular_buffer +{ +private: +// the buffer to use + T* d_buffer; + +// the following are in Items (type T) + size_t d_bufLen_I, d_readNdx_I, d_writeNdx_I; + size_t d_n_avail_write_I, d_n_avail_read_I; + +// stuff to control access to class internals + gruel::mutex* d_internal; + gruel::condition_variable* d_readBlock; + gruel::condition_variable* d_writeBlock; + +// booleans to decide how to control reading, writing, and aborting + bool d_doWriteBlock, d_doFullRead, d_doAbort; + + void delete_mutex_cond () { + if (d_internal) { + delete d_internal; + d_internal = NULL; + } + if (d_readBlock) { + delete d_readBlock; + d_readBlock = NULL; + } + if (d_writeBlock) { + delete d_writeBlock; + d_writeBlock = NULL; + } + }; + +public: + circular_buffer (size_t bufLen_I, + bool doWriteBlock = true, bool doFullRead = false) { + if (bufLen_I == 0) + throw std::runtime_error ("circular_buffer(): " + "Number of items to buffer must be > 0.\n"); + d_bufLen_I = bufLen_I; + d_buffer = (T*) new T[d_bufLen_I]; + d_doWriteBlock = doWriteBlock; + d_doFullRead = doFullRead; + d_internal = NULL; + d_readBlock = d_writeBlock = NULL; + reset (); + DEBUG (std::cerr << "c_b(): buf len (items) = " << d_bufLen_ + << ", doWriteBlock = " << (d_doWriteBlock ? "true" : "false") + << ", doFullRead = " << (d_doFullRead ? "true" : "false") + << std::endl); + }; + + ~circular_buffer () { + delete_mutex_cond (); + delete [] d_buffer; + }; + + inline size_t n_avail_write_items () { + gruel::scoped_lock l (*d_internal); + size_t retVal = d_n_avail_write_I; + return (retVal); + }; + + inline size_t n_avail_read_items () { + gruel::scoped_lock l (*d_internal); + size_t retVal = d_n_avail_read_I; + return (retVal); + }; + + inline size_t buffer_length_items () {return (d_bufLen_I);}; + inline bool do_write_block () {return (d_doWriteBlock);}; + inline bool do_full_read () {return (d_doFullRead);}; + + void reset () { + d_doAbort = false; + bzero (d_buffer, d_bufLen_I * sizeof (T)); + d_readNdx_I = d_writeNdx_I = d_n_avail_read_I = 0; + d_n_avail_write_I = d_bufLen_I; + delete_mutex_cond (); + // create a mutex to handle contention of shared resources; + // any routine needed access to shared resources uses lock() + // before doing anything, then unlock() when finished. + d_internal = new gruel::mutex (); + // link the internal mutex to the read and write conditions; + // when wait() is called, the internal mutex will automatically + // be unlock()'ed. Upon return (from a notify_one() to the condition), + // the internal mutex will be lock()'ed. + d_readBlock = new gruel::condition_variable (); + d_writeBlock = new gruel::condition_variable (); + }; + +/* + * enqueue: add the given buffer of item-length to the queue, + * first-in-first-out (FIFO). + * + * inputs: + * buf: a pointer to the buffer holding the data + * + * bufLen_I: the buffer length in items (of the instantiated type) + * + * returns: + * -1: on overflow (write is not blocking, and data is being + * written faster than it is being read) + * 0: if nothing to do (0 length buffer) + * 1: if success + * 2: in the process of aborting, do doing nothing + * + * will throw runtime errors if inputs are improper: + * buffer pointer is NULL + * buffer length is larger than the instantiated buffer length + */ + + int enqueue (T* buf, size_t bufLen_I) { + DEBUG (std::cerr << "enqueue: buf = " << (void*) buf + << ", bufLen = " << bufLen_I + << ", #av_wr = " << d_n_avail_write_I + << ", #av_rd = " << d_n_avail_read_I << std::endl); + if (bufLen_I > d_bufLen_I) { + std::cerr << "ERROR: cannot add buffer longer (" + << bufLen_I << ") than instantiated length (" + << d_bufLen_I << ")." << std::endl; + throw std::runtime_error ("circular_buffer::enqueue()"); + } + + if (bufLen_I == 0) + return (0); + if (!buf) + throw std::runtime_error ("circular_buffer::enqueue(): " + "input buffer is NULL.\n"); + gruel::scoped_lock l (*d_internal); + if (d_doAbort) { + return (2); + } + // set the return value to 1: success; change if needed + int retval = 1; + if (bufLen_I > d_n_avail_write_I) { + if (d_doWriteBlock) { + while (bufLen_I > d_n_avail_write_I) { + DEBUG (std::cerr << "enqueue: #len > #a, waiting." << std::endl); + // wait; will automatically unlock() the internal mutex via + // the scoped lock + d_writeBlock->wait (l); + // and auto re-lock() it here. + if (d_doAbort) { + DEBUG (std::cerr << "enqueue: #len > #a, aborting." << std::endl); + return (2); + } + DEBUG (std::cerr << "enqueue: #len > #a, done waiting." << std::endl); + } + } else { + d_n_avail_read_I = d_bufLen_I - bufLen_I; + d_n_avail_write_I = bufLen_I; + DEBUG (std::cerr << "circular_buffer::enqueue: overflow" << std::endl); + retval = -1; + } + } + size_t n_now_I = d_bufLen_I - d_writeNdx_I, n_start_I = 0; + if (n_now_I > bufLen_I) + n_now_I = bufLen_I; + else if (n_now_I < bufLen_I) + n_start_I = bufLen_I - n_now_I; + bcopy (buf, &(d_buffer[d_writeNdx_I]), n_now_I * sizeof (T)); + if (n_start_I) { + bcopy (&(buf[n_now_I]), d_buffer, n_start_I * sizeof (T)); + d_writeNdx_I = n_start_I; + } else + d_writeNdx_I += n_now_I; + d_n_avail_read_I += bufLen_I; + d_n_avail_write_I -= bufLen_I; + d_readBlock->notify_one (); + return (retval); + }; + +/* + * dequeue: removes from the queue the number of items requested, or + * available, into the given buffer on a FIFO basis. + * + * inputs: + * buf: a pointer to the buffer into which to copy the data + * + * bufLen_I: pointer to the number of items to remove in items + * (of the instantiated type) + * + * returns: + * 0: if nothing to do (0 length buffer) + * 1: if success + * 2: in the process of aborting, do doing nothing + * + * will throw runtime errors if inputs are improper: + * buffer pointer is NULL + * buffer length pointer is NULL + * buffer length is larger than the instantiated buffer length + */ + + int dequeue (T* buf, size_t* bufLen_I) { + DEBUG (std::cerr << "dequeue: buf = " << ((void*) buf) + << ", *bufLen = " << (*bufLen_I) + << ", #av_wr = " << d_n_avail_write_I + << ", #av_rd = " << d_n_avail_read_I << std::endl); + if (!bufLen_I) + throw std::runtime_error ("circular_buffer::dequeue(): " + "input bufLen pointer is NULL.\n"); + if (!buf) + throw std::runtime_error ("circular_buffer::dequeue(): " + "input buffer pointer is NULL.\n"); + size_t l_bufLen_I = *bufLen_I; + if (l_bufLen_I == 0) + return (0); + if (l_bufLen_I > d_bufLen_I) { + std::cerr << "ERROR: cannot remove buffer longer (" + << l_bufLen_I << ") than instantiated length (" + << d_bufLen_I << ")." << std::endl; + throw std::runtime_error ("circular_buffer::dequeue()"); + } + + gruel::scoped_lock l (*d_internal); + if (d_doAbort) { + return (2); + } + if (d_doFullRead) { + while (d_n_avail_read_I < l_bufLen_I) { + DEBUG (std::cerr << "dequeue: #a < #len, waiting." << std::endl); + // wait; will automatically unlock() the internal mutex via + // the scoped lock + d_readBlock->wait (l); + // and re-lock() it here. + if (d_doAbort) { + DEBUG (std::cerr << "dequeue: #a < #len, aborting." << std::endl); + return (2); + } + DEBUG (std::cerr << "dequeue: #a < #len, done waiting." << std::endl); + } + } else { + while (d_n_avail_read_I == 0) { + DEBUG (std::cerr << "dequeue: #a == 0, waiting." << std::endl); + // wait; will automatically unlock() the internal mutex via + // the scoped lock + d_readBlock->wait (l); + // and re-lock() it here. + if (d_doAbort) { + DEBUG (std::cerr << "dequeue: #a == 0, aborting." << std::endl); + return (2); + } + DEBUG (std::cerr << "dequeue: #a == 0, done waiting." << std::endl); + } + } + if (l_bufLen_I > d_n_avail_read_I) + l_bufLen_I = d_n_avail_read_I; + size_t n_now_I = d_bufLen_I - d_readNdx_I, n_start_I = 0; + if (n_now_I > l_bufLen_I) + n_now_I = l_bufLen_I; + else if (n_now_I < l_bufLen_I) + n_start_I = l_bufLen_I - n_now_I; + bcopy (&(d_buffer[d_readNdx_I]), buf, n_now_I * sizeof (T)); + if (n_start_I) { + bcopy (d_buffer, &(buf[n_now_I]), n_start_I * sizeof (T)); + d_readNdx_I = n_start_I; + } else + d_readNdx_I += n_now_I; + *bufLen_I = l_bufLen_I; + d_n_avail_read_I -= l_bufLen_I; + d_n_avail_write_I += l_bufLen_I; + d_writeBlock->notify_one (); + return (1); + }; + + void abort () { + gruel::scoped_lock l (*d_internal); + d_doAbort = true; + d_writeBlock->notify_one (); + d_readBlock->notify_one (); + }; +}; + +#endif /* _CIRCULAR_BUFFER_H_ */ -- cgit From 2b852ae681b3536f167dc4222a191743c6572299 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 28 Mar 2011 00:48:41 -0400 Subject: audio: fixing class typo for OSX audio driver. --- gr-audio/lib/osx/audio_osx_source.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gr-audio/lib/osx/audio_osx_source.h b/gr-audio/lib/osx/audio_osx_source.h index 754f0d928..a373ea94f 100644 --- a/gr-audio/lib/osx/audio_osx_source.h +++ b/gr-audio/lib/osx/audio_osx_source.h @@ -36,7 +36,7 @@ * Samples must be in the range [-1,1]. */ -class audio_osx_source : public gr_sync_block { +class audio_osx_source : public audio_source { Float64 d_deviceSampleRate, d_outputSampleRate; int d_channel_config; -- cgit From a111deb45559296d6eadded9226df68af21c0477 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 16 Mar 2011 14:51:58 -0700 Subject: runtime: changes to block headers to allow pure virtual sub-classes (interfaces) --- gnuradio-core/src/lib/runtime/gr_basic_block.h | 2 ++ gnuradio-core/src/lib/runtime/gr_block.h | 2 +- gnuradio-core/src/lib/runtime/gr_sync_block.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h index ce7a1aa1d..3b0cd51dd 100644 --- a/gnuradio-core/src/lib/runtime/gr_basic_block.h +++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h @@ -73,6 +73,8 @@ protected: long d_unique_id; vcolor d_color; + gr_basic_block(void){} //allows pure virtual interface sub-classes + //! Protected constructor prevents instantiation by non-derived classes gr_basic_block(const std::string &name, gr_io_signature_sptr input_signature, diff --git a/gnuradio-core/src/lib/runtime/gr_block.h b/gnuradio-core/src/lib/runtime/gr_block.h index ad7fa9555..fc22f9ea8 100644 --- a/gnuradio-core/src/lib/runtime/gr_block.h +++ b/gnuradio-core/src/lib/runtime/gr_block.h @@ -236,7 +236,7 @@ class gr_block : public gr_basic_block { tag_propagation_policy_t d_tag_propagation_policy; // policy for moving tags downstream protected: - + gr_block (void){} //allows pure virtual interface sub-classes gr_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); diff --git a/gnuradio-core/src/lib/runtime/gr_sync_block.h b/gnuradio-core/src/lib/runtime/gr_sync_block.h index 3a5d89d19..c5a6a50f1 100644 --- a/gnuradio-core/src/lib/runtime/gr_sync_block.h +++ b/gnuradio-core/src/lib/runtime/gr_sync_block.h @@ -34,7 +34,7 @@ class gr_sync_block : public gr_block { protected: - + gr_sync_block (void){} //allows pure virtual interface sub-classes gr_sync_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); -- cgit From 3ff8f7a5545592a9dac201a27d18bfdae4cdcb7b Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 16 Mar 2011 15:36:36 -0700 Subject: throttle: cleanup conditional code and reimplement with boost posix time This greatly cleans up gr_throttle and moves the implementation into the .cc file. The implementation uses boost's posix time library so it will work on all systems. Also added set_sample_rate() method and support for callback in grc. --- gnuradio-core/src/lib/general/gr_throttle.cc | 136 +++++++++++---------------- gnuradio-core/src/lib/general/gr_throttle.h | 33 ++----- gnuradio-core/src/lib/general/gr_throttle.i | 13 ++- 3 files changed, 67 insertions(+), 115 deletions(-) diff --git a/gnuradio-core/src/lib/general/gr_throttle.cc b/gnuradio-core/src/lib/general/gr_throttle.cc index 3189e01c0..a24b1da8c 100644 --- a/gnuradio-core/src/lib/general/gr_throttle.cc +++ b/gnuradio-core/src/lib/general/gr_throttle.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005,2010 Free Software Foundation, Inc. + * Copyright 2005-2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,92 +26,64 @@ #include #include -#include -#include -#include -#include -#ifdef HAVE_TIME_H -#include -#endif -#if !defined(HAVE_NANOSLEEP) && defined(HAVE_SSLEEP) -#include -#endif - +#include +#include -#ifdef HAVE_NANOSLEEP -void -gr_nanosleep(struct timespec *ts) -{ - struct timespec *req = ts; - struct timespec rem; - int r = nanosleep(req, &rem); - while (r < 0 && errno == EINTR){ - req = &rem; - r = nanosleep(req, &rem); - } - if (r < 0) - perror ("gr_nanosleep"); -} -#endif - -gr_throttle_sptr -gr_make_throttle(size_t itemsize, double samples_per_sec) -{ - return gnuradio::get_initial_sptr(new gr_throttle(itemsize, samples_per_sec)); -} +class gr_throttle_impl : public gr_throttle{ +public: + gr_throttle_impl(size_t itemsize): + gr_sync_block("throttle", + gr_make_io_signature(1, 1, itemsize), + gr_make_io_signature(1, 1, itemsize)), + d_itemsize(itemsize) + { + /* NOP */ + } -gr_throttle::gr_throttle(size_t itemsize, double samples_per_sec) - : gr_sync_block("throttle", - gr_make_io_signature(1, 1, itemsize), - gr_make_io_signature(1, 1, itemsize)), - d_itemsize(itemsize), d_samples_per_sec(samples_per_sec), - d_total_samples(0) -{ -#ifdef HAVE_GETTIMEOFDAY - gettimeofday(&d_start, 0); -#endif -} + void set_sample_rate(double rate){ + //changing the sample rate performs a reset of state params + d_start = boost::get_system_time(); + d_total_samples = 0; + d_samps_per_tick = rate/boost::posix_time::time_duration::ticks_per_second(); + d_samps_per_us = rate/1e6; + } -gr_throttle::~gr_throttle() -{ -} + int work ( + int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items + ){ + //calculate the expected number of samples to have passed through + boost::system_time now = boost::get_system_time(); + boost::int64_t ticks = (now - d_start).ticks(); + uint64_t expected_samps = uint64_t(d_samps_per_tick*ticks); -int -gr_throttle::work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) -{ - const char *in = (const char *) input_items[0]; - char *out = (char *) output_items[0]; + //if the expected samples was less, we need to throttle back + if (d_total_samples > expected_samps){ + boost::this_thread::sleep(boost::posix_time::microseconds( + long((d_total_samples - expected_samps)/d_samps_per_us) + )); + } -#if defined(HAVE_GETTIMEOFDAY) - // - // If our average sample rate exceeds our target sample rate, - // delay long enough to reduce to our target rate. - // - struct timeval now; - gettimeofday(&now, 0); - long t_usec = now.tv_usec - d_start.tv_usec; - long t_sec = now.tv_sec - d_start.tv_sec; - double t = (double)t_sec + (double)t_usec * 1e-6; - if (t < 1e-6) // avoid unlikely divide by zero - t = 1e-6; + //copy all samples output[i] <= input[i] + const char *in = (const char *) input_items[0]; + char *out = (char *) output_items[0]; + std::memcpy(out, in, noutput_items * d_itemsize); + d_total_samples += noutput_items; + return noutput_items; + } - double actual_samples_per_sec = d_total_samples / t; - if (actual_samples_per_sec > d_samples_per_sec){ // need to delay - double delay = d_total_samples / d_samples_per_sec - t; -#ifdef HAVE_NANOSLEEP - struct timespec ts; - ts.tv_sec = (time_t)floor(delay); - ts.tv_nsec = (long)((delay - floor(delay)) * 1e9); - gr_nanosleep(&ts); -#elif HAVE_SSLEEP - Sleep( (DWORD)(delay*1000) ); -#endif - } -#endif +private: + boost::system_time d_start; + size_t d_itemsize; + uint64_t d_total_samples; + double d_samps_per_tick, d_samps_per_us; +}; - memcpy(out, in, noutput_items * d_itemsize); - d_total_samples += noutput_items; - return noutput_items; +gr_throttle::sptr +gr_make_throttle(size_t itemsize, double samples_per_sec) +{ + gr_throttle::sptr throttle(new gr_throttle_impl(itemsize)); + throttle->set_sample_rate(samples_per_sec); + return throttle; } diff --git a/gnuradio-core/src/lib/general/gr_throttle.h b/gnuradio-core/src/lib/general/gr_throttle.h index a1c9773c9..a82821f77 100644 --- a/gnuradio-core/src/lib/general/gr_throttle.h +++ b/gnuradio-core/src/lib/general/gr_throttle.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005 Free Software Foundation, Inc. + * Copyright 2005-2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,15 +23,6 @@ #define INCLUDED_GR_THROTTLE_H #include -#ifdef HAVE_SYS_TIME_H -#include -#endif - -class gr_throttle; -typedef boost::shared_ptr gr_throttle_sptr; - - -gr_throttle_sptr gr_make_throttle(size_t itemsize, double samples_per_sec); /*! * \brief throttle flow of samples such that the average rate does not exceed samples_per_sec. @@ -44,25 +35,15 @@ gr_throttle_sptr gr_make_throttle(size_t itemsize, double samples_per_sec); * controlling the rate of samples. That should be controlled by a * source or sink tied to sample clock. E.g., a USRP or audio card. */ -class gr_throttle : public gr_sync_block +class gr_throttle : virtual public gr_sync_block { - friend gr_throttle_sptr gr_make_throttle(size_t itemsize, double samples_per_sec); - size_t d_itemsize; - double d_samples_per_sec; - double d_total_samples; -#ifdef HAVE_SYS_TIME_H - struct timeval d_start; -#endif - - gr_throttle(size_t itemsize, double samples_per_sec); - public: - ~gr_throttle(); + typedef boost::shared_ptr sptr; - int work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); + //! Sets the sample rate in samples per second + virtual void set_sample_rate(double rate) = 0; }; - + +gr_throttle::sptr gr_make_throttle(size_t itemsize, double samples_per_sec); #endif /* INCLUDED_GR_THROTTLE_H */ diff --git a/gnuradio-core/src/lib/general/gr_throttle.i b/gnuradio-core/src/lib/general/gr_throttle.i index 21f7703ef..0b1ec165f 100644 --- a/gnuradio-core/src/lib/general/gr_throttle.i +++ b/gnuradio-core/src/lib/general/gr_throttle.i @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2005 Free Software Foundation, Inc. + * Copyright 2005-2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -20,11 +20,10 @@ * Boston, MA 02110-1301, USA. */ -GR_SWIG_BLOCK_MAGIC(gr,throttle); +%{ +#include +%} -gr_throttle_sptr gr_make_throttle (size_t itemsize, double samples_per_sec); +GR_SWIG_BLOCK_MAGIC(gr,throttle); -class gr_throttle : public gr_sync_block -{ - gr_throttle (size_t itemsize, double samples_per_sec); -}; +%include -- cgit From 35a4938e598f6be6034e21ef1818c412a16a22d1 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 16 Mar 2011 14:51:58 -0700 Subject: runtime: changes to block headers to allow pure virtual sub-classes (interfaces) --- gnuradio-core/src/lib/runtime/gr_basic_block.h | 2 ++ gnuradio-core/src/lib/runtime/gr_block.h | 2 +- gnuradio-core/src/lib/runtime/gr_sync_block.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h index ce7a1aa1d..3b0cd51dd 100644 --- a/gnuradio-core/src/lib/runtime/gr_basic_block.h +++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h @@ -73,6 +73,8 @@ protected: long d_unique_id; vcolor d_color; + gr_basic_block(void){} //allows pure virtual interface sub-classes + //! Protected constructor prevents instantiation by non-derived classes gr_basic_block(const std::string &name, gr_io_signature_sptr input_signature, diff --git a/gnuradio-core/src/lib/runtime/gr_block.h b/gnuradio-core/src/lib/runtime/gr_block.h index ad7fa9555..fc22f9ea8 100644 --- a/gnuradio-core/src/lib/runtime/gr_block.h +++ b/gnuradio-core/src/lib/runtime/gr_block.h @@ -236,7 +236,7 @@ class gr_block : public gr_basic_block { tag_propagation_policy_t d_tag_propagation_policy; // policy for moving tags downstream protected: - + gr_block (void){} //allows pure virtual interface sub-classes gr_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); diff --git a/gnuradio-core/src/lib/runtime/gr_sync_block.h b/gnuradio-core/src/lib/runtime/gr_sync_block.h index 3a5d89d19..c5a6a50f1 100644 --- a/gnuradio-core/src/lib/runtime/gr_sync_block.h +++ b/gnuradio-core/src/lib/runtime/gr_sync_block.h @@ -34,7 +34,7 @@ class gr_sync_block : public gr_block { protected: - + gr_sync_block (void){} //allows pure virtual interface sub-classes gr_sync_block (const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); -- cgit From f8ce10742ab6b9ac170432ae78d2ee2d6c538d72 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 16 Mar 2011 15:07:37 -0700 Subject: audio: cleanup audio source/sink with virtual inheritance The audio implementations now inherit from sync block (as they used to). And the redundant constructor in audio source/sink has been removed. --- gr-audio/include/gr_audio_sink.h | 9 +-------- gr-audio/include/gr_audio_source.h | 9 +-------- gr-audio/lib/alsa/audio_alsa_sink.cc | 2 +- gr-audio/lib/alsa/audio_alsa_source.cc | 2 +- gr-audio/lib/gr_audio_registry.cc | 21 --------------------- gr-audio/lib/jack/audio_jack_sink.cc | 2 +- gr-audio/lib/jack/audio_jack_source.cc | 2 +- gr-audio/lib/oss/audio_oss_sink.cc | 2 +- gr-audio/lib/oss/audio_oss_source.cc | 2 +- gr-audio/lib/osx/audio_osx_sink.cc | 2 +- gr-audio/lib/osx/audio_osx_source.cc | 2 +- gr-audio/lib/portaudio/audio_portaudio_sink.cc | 2 +- gr-audio/lib/portaudio/audio_portaudio_source.cc | 2 +- gr-audio/lib/windows/audio_windows_sink.cc | 2 +- gr-audio/lib/windows/audio_windows_source.cc | 2 +- 15 files changed, 14 insertions(+), 49 deletions(-) diff --git a/gr-audio/include/gr_audio_sink.h b/gr-audio/include/gr_audio_sink.h index c76ec6550..ca3b15a37 100644 --- a/gr-audio/include/gr_audio_sink.h +++ b/gr-audio/include/gr_audio_sink.h @@ -25,16 +25,9 @@ #include #include -class GR_AUDIO_API audio_sink : public gr_sync_block{ +class GR_AUDIO_API audio_sink : virtual public gr_sync_block{ public: typedef boost::shared_ptr sptr; - - audio_sink( - const std::string &name, - gr_io_signature_sptr insig, - gr_io_signature_sptr outsig - ); - }; GR_AUDIO_API audio_sink::sptr audio_make_sink( diff --git a/gr-audio/include/gr_audio_source.h b/gr-audio/include/gr_audio_source.h index ed3c31c10..b8ae2ca5f 100644 --- a/gr-audio/include/gr_audio_source.h +++ b/gr-audio/include/gr_audio_source.h @@ -25,16 +25,9 @@ #include #include -class GR_AUDIO_API audio_source : public gr_sync_block{ +class GR_AUDIO_API audio_source : virtual public gr_sync_block{ public: typedef boost::shared_ptr sptr; - - audio_source( - const std::string &name, - gr_io_signature_sptr insig, - gr_io_signature_sptr outsig - ); - }; GR_AUDIO_API audio_source::sptr audio_make_source( diff --git a/gr-audio/lib/alsa/audio_alsa_sink.cc b/gr-audio/lib/alsa/audio_alsa_sink.cc index 0728f421c..5fd197ec7 100644 --- a/gr-audio/lib/alsa/audio_alsa_sink.cc +++ b/gr-audio/lib/alsa/audio_alsa_sink.cc @@ -74,7 +74,7 @@ default_nperiods () audio_alsa_sink::audio_alsa_sink (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_sink ("audio_alsa_sink", + : gr_sync_block ("audio_alsa_sink", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/alsa/audio_alsa_source.cc b/gr-audio/lib/alsa/audio_alsa_source.cc index e46a7fdd4..4f0042b22 100644 --- a/gr-audio/lib/alsa/audio_alsa_source.cc +++ b/gr-audio/lib/alsa/audio_alsa_source.cc @@ -73,7 +73,7 @@ default_nperiods () audio_alsa_source::audio_alsa_source (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_source ("audio_alsa_source", + : gr_sync_block ("audio_alsa_source", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/gr_audio_registry.cc b/gr-audio/lib/gr_audio_registry.cc index c47db8289..da4b16b35 100644 --- a/gr-audio/lib/gr_audio_registry.cc +++ b/gr-audio/lib/gr_audio_registry.cc @@ -130,24 +130,3 @@ audio_sink::sptr audio_make_sink( //std::cout << "Audio sink arch: " << entry.name << std::endl; return entry.sink(sampling_rate, device_name, ok_to_block); } - -/*********************************************************************** - * Default constructors - **********************************************************************/ -#include - -audio_sink::audio_sink( - const std::string &name, - gr_io_signature_sptr insig, - gr_io_signature_sptr outsig -): - gr_sync_block(name, insig, outsig) -{} - -audio_source::audio_source( - const std::string &name, - gr_io_signature_sptr insig, - gr_io_signature_sptr outsig -): - gr_sync_block(name, insig, outsig) -{} diff --git a/gr-audio/lib/jack/audio_jack_sink.cc b/gr-audio/lib/jack/audio_jack_sink.cc index db365a1f8..f06e77bd5 100644 --- a/gr-audio/lib/jack/audio_jack_sink.cc +++ b/gr-audio/lib/jack/audio_jack_sink.cc @@ -94,7 +94,7 @@ jack_sink_process (jack_nframes_t nframes, void *arg) audio_jack_sink::audio_jack_sink (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_sink ("audio_jack_sink", + : gr_sync_block ("audio_jack_sink", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/jack/audio_jack_source.cc b/gr-audio/lib/jack/audio_jack_source.cc index 415c7f22b..dcd41c3ac 100644 --- a/gr-audio/lib/jack/audio_jack_source.cc +++ b/gr-audio/lib/jack/audio_jack_source.cc @@ -95,7 +95,7 @@ jack_source_process (jack_nframes_t nframes, void *arg) audio_jack_source::audio_jack_source (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_source ("audio_jack_source", + : gr_sync_block ("audio_jack_source", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/oss/audio_oss_sink.cc b/gr-audio/lib/oss/audio_oss_sink.cc index 4e9e7cd79..34af16cce 100644 --- a/gr-audio/lib/oss/audio_oss_sink.cc +++ b/gr-audio/lib/oss/audio_oss_sink.cc @@ -53,7 +53,7 @@ default_device_name () audio_oss_sink::audio_oss_sink (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_sink ("audio_oss_sink", + : gr_sync_block ("audio_oss_sink", gr_make_io_signature (1, 2, sizeof (float)), gr_make_io_signature (0, 0, 0)), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/oss/audio_oss_source.cc b/gr-audio/lib/oss/audio_oss_source.cc index b7d53931d..eefe4dd04 100644 --- a/gr-audio/lib/oss/audio_oss_source.cc +++ b/gr-audio/lib/oss/audio_oss_source.cc @@ -53,7 +53,7 @@ default_device_name () audio_oss_source::audio_oss_source (int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_source ("audio_oss_source", + : gr_sync_block ("audio_oss_source", gr_make_io_signature (0, 0, 0), gr_make_io_signature (1, 2, sizeof (float))), d_sampling_rate (sampling_rate), diff --git a/gr-audio/lib/osx/audio_osx_sink.cc b/gr-audio/lib/osx/audio_osx_sink.cc index f7aeb54f8..901881da6 100644 --- a/gr-audio/lib/osx/audio_osx_sink.cc +++ b/gr-audio/lib/osx/audio_osx_sink.cc @@ -43,7 +43,7 @@ audio_osx_sink::audio_osx_sink (int sample_rate, bool do_block, int channel_config, int max_sample_count) - : audio_sink ("audio_osx_sink", + : gr_sync_block ("audio_osx_sink", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_sample_rate (0.0), d_channel_config (0), d_n_channels (0), diff --git a/gr-audio/lib/osx/audio_osx_source.cc b/gr-audio/lib/osx/audio_osx_source.cc index e380156d6..61f8eb4a6 100644 --- a/gr-audio/lib/osx/audio_osx_source.cc +++ b/gr-audio/lib/osx/audio_osx_source.cc @@ -65,7 +65,7 @@ audio_osx_source::audio_osx_source (int sample_rate, bool do_block, int channel_config, int max_sample_count) - : audio_source ("audio_osx_source", + : gr_sync_block ("audio_osx_source", gr_make_io_signature (0, 0, 0), gr_make_io_signature (0, 0, 0)), d_deviceSampleRate (0.0), d_outputSampleRate (0.0), diff --git a/gr-audio/lib/portaudio/audio_portaudio_sink.cc b/gr-audio/lib/portaudio/audio_portaudio_sink.cc index 515cd04d9..7fdb99577 100644 --- a/gr-audio/lib/portaudio/audio_portaudio_sink.cc +++ b/gr-audio/lib/portaudio/audio_portaudio_sink.cc @@ -130,7 +130,7 @@ portaudio_sink_callback (const void *inputBuffer, audio_portaudio_sink::audio_portaudio_sink(int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_sink ("audio_portaudio_sink", + : gr_sync_block ("audio_portaudio_sink", gr_make_io_signature(0, 0, 0), gr_make_io_signature(0, 0, 0)), d_sampling_rate(sampling_rate), diff --git a/gr-audio/lib/portaudio/audio_portaudio_source.cc b/gr-audio/lib/portaudio/audio_portaudio_source.cc index bdb8b3b3d..55828ad21 100644 --- a/gr-audio/lib/portaudio/audio_portaudio_source.cc +++ b/gr-audio/lib/portaudio/audio_portaudio_source.cc @@ -129,7 +129,7 @@ portaudio_source_callback (const void *inputBuffer, audio_portaudio_source::audio_portaudio_source(int sampling_rate, const std::string device_name, bool ok_to_block) - : audio_source ("audio_portaudio_source", + : gr_sync_block ("audio_portaudio_source", gr_make_io_signature(0, 0, 0), gr_make_io_signature(0, 0, 0)), d_sampling_rate(sampling_rate), diff --git a/gr-audio/lib/windows/audio_windows_sink.cc b/gr-audio/lib/windows/audio_windows_sink.cc index e3f67a8f4..5284ce173 100644 --- a/gr-audio/lib/windows/audio_windows_sink.cc +++ b/gr-audio/lib/windows/audio_windows_sink.cc @@ -54,7 +54,7 @@ default_device_name () } audio_windows_sink::audio_windows_sink (int sampling_freq, const std::string device_name) - : audio_sink ("audio_windows_sink", + : gr_sync_block ("audio_windows_sink", gr_make_io_signature (1, 2, sizeof (float)), gr_make_io_signature (0, 0, 0)), d_sampling_freq (sampling_freq), diff --git a/gr-audio/lib/windows/audio_windows_source.cc b/gr-audio/lib/windows/audio_windows_source.cc index 4b657a0e3..75b0a33bb 100644 --- a/gr-audio/lib/windows/audio_windows_source.cc +++ b/gr-audio/lib/windows/audio_windows_source.cc @@ -54,7 +54,7 @@ default_device_name () } audio_windows_source::audio_windows_source (int sampling_freq, const std::string device_name) - : audio_source ("audio_windows_source", + : gr_sync_block ("audio_windows_source", gr_make_io_signature (0, 0, 0), gr_make_io_signature (1, 2, sizeof (float))), d_sampling_freq (sampling_freq), -- cgit From 25ee0ce936a3088bfef694810ea6322f19dac3f2 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 16 Mar 2011 15:20:44 -0700 Subject: uhd: cleanup uhd usrp source/sink with virtual inheritance The uhd block implementations now inherit from sync block. And the redundant constructor in source/sink has been removed. --- gr-uhd/include/gr_uhd_usrp_sink.h | 8 +------- gr-uhd/include/gr_uhd_usrp_source.h | 8 +------- gr-uhd/lib/gr_uhd_usrp_sink.cc | 16 +++++----------- gr-uhd/lib/gr_uhd_usrp_source.cc | 16 +++++----------- 4 files changed, 12 insertions(+), 36 deletions(-) diff --git a/gr-uhd/include/gr_uhd_usrp_sink.h b/gr-uhd/include/gr_uhd_usrp_sink.h index 557cb2cdb..0475957de 100644 --- a/gr-uhd/include/gr_uhd_usrp_sink.h +++ b/gr-uhd/include/gr_uhd_usrp_sink.h @@ -34,15 +34,9 @@ GR_UHD_API boost::shared_ptr uhd_make_usrp_sink( size_t num_channels ); -class GR_UHD_API uhd_usrp_sink : public gr_sync_block{ +class GR_UHD_API uhd_usrp_sink : virtual public gr_sync_block{ public: - /*! - * Set the IO signature for this block. - * \param sig the input signature - */ - uhd_usrp_sink(gr_io_signature_sptr sig); - /*! * Set the subdevice specification. * \param spec the subdev spec markup string diff --git a/gr-uhd/include/gr_uhd_usrp_source.h b/gr-uhd/include/gr_uhd_usrp_source.h index 3b36bf45d..038f9a91e 100644 --- a/gr-uhd/include/gr_uhd_usrp_source.h +++ b/gr-uhd/include/gr_uhd_usrp_source.h @@ -34,15 +34,9 @@ GR_UHD_API boost::shared_ptr uhd_make_usrp_source( size_t num_channels ); -class GR_UHD_API uhd_usrp_source : public gr_sync_block{ +class GR_UHD_API uhd_usrp_source : virtual public gr_sync_block{ public: - /*! - * Set the IO signature for this block. - * \param sig the output signature - */ - uhd_usrp_source(gr_io_signature_sptr sig); - /*! * Set the subdevice specification. * \param spec the subdev spec markup string diff --git a/gr-uhd/lib/gr_uhd_usrp_sink.cc b/gr-uhd/lib/gr_uhd_usrp_sink.cc index b8b99a41a..d44af25ab 100644 --- a/gr-uhd/lib/gr_uhd_usrp_sink.cc +++ b/gr-uhd/lib/gr_uhd_usrp_sink.cc @@ -23,14 +23,6 @@ #include #include -/*********************************************************************** - * UHD Multi USRP Sink - **********************************************************************/ -uhd_usrp_sink::uhd_usrp_sink(gr_io_signature_sptr sig) -:gr_sync_block("gr uhd usrp sink", sig, gr_make_io_signature(0, 0, 0)){ - /* NOP */ -} - /*********************************************************************** * UHD Multi USRP Sink Impl **********************************************************************/ @@ -41,9 +33,11 @@ public: const uhd::io_type_t &io_type, size_t num_channels ): - uhd_usrp_sink(gr_make_io_signature( - num_channels, num_channels, io_type.size - )), + gr_sync_block( + "gr uhd usrp sink", + gr_make_io_signature(num_channels, num_channels, io_type.size), + gr_make_io_signature(0, 0, 0) + ), _type(io_type), _nchan(num_channels), _has_time_spec(_nchan > 1) diff --git a/gr-uhd/lib/gr_uhd_usrp_source.cc b/gr-uhd/lib/gr_uhd_usrp_source.cc index 1234ed7fe..fed8e6624 100644 --- a/gr-uhd/lib/gr_uhd_usrp_source.cc +++ b/gr-uhd/lib/gr_uhd_usrp_source.cc @@ -25,14 +25,6 @@ #include #include -/*********************************************************************** - * UHD Multi USRP Source - **********************************************************************/ -uhd_usrp_source::uhd_usrp_source(gr_io_signature_sptr sig) -:gr_sync_block("gr uhd usrp source", gr_make_io_signature(0, 0, 0), sig){ - /* NOP */ -} - /*********************************************************************** * UHD Multi USRP Source Impl **********************************************************************/ @@ -43,9 +35,11 @@ public: const uhd::io_type_t &io_type, size_t num_channels ): - uhd_usrp_source(gr_make_io_signature( - num_channels, num_channels, io_type.size - )), + gr_sync_block( + "gr uhd usrp source", + gr_make_io_signature(0, 0, 0), + gr_make_io_signature(num_channels, num_channels, io_type.size) + ), _type(io_type), _nchan(num_channels), _stream_now(_nchan == 1), -- cgit From 113a144a09f7620bc7a3bf03eda23c7bdc1b19f6 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 28 Mar 2011 16:34:36 -0400 Subject: audio: added missing header to Makefile. --- gr-audio/lib/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gr-audio/lib/Makefile.am b/gr-audio/lib/Makefile.am index 42a2b867b..3ddfbd1fc 100644 --- a/gr-audio/lib/Makefile.am +++ b/gr-audio/lib/Makefile.am @@ -129,7 +129,8 @@ libgnuradio_audio_la_SOURCES += \ noinst_HEADERS += \ osx/audio_osx.h \ osx/audio_osx_source.h \ - osx/audio_osx_sink.h + osx/audio_osx_sink.h \ + osx/circular_buffer.h endif -- cgit From b57a41327409d9f93e5c896d0a7a3327b61f2f8b Mon Sep 17 00:00:00 2001 From: Don Ward Date: Wed, 30 Mar 2011 15:32:11 -0700 Subject: volk: fix missing Boost flags --- volk/lib/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/volk/lib/Makefile.am b/volk/lib/Makefile.am index 3e5502369..cfafe42c5 100644 --- a/volk/lib/Makefile.am +++ b/volk/lib/Makefile.am @@ -119,7 +119,8 @@ noinst_PROGRAMS = \ testqa testqa_SOURCES = testqa.cc qa_utils.cc -testqa_CPPFLAGS = -DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN $(AM_CPPFLAGS) +testqa_CPPFLAGS = -DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN $(AM_CPPFLAGS) \ + $(BOOST_CPPFLAGS) testqa_LDFLAGS = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) if LV_HAVE_ORC testqa_LDADD = \ -- cgit From 2431806a922c58e7f1b262f7d2696289b71e5c5c Mon Sep 17 00:00:00 2001 From: Don Ward Date: Wed, 30 Mar 2011 15:36:36 -0700 Subject: usrp: cleanup misc usage --- usrp/host/misc/Makefile.am | 2 -- 1 file changed, 2 deletions(-) diff --git a/usrp/host/misc/Makefile.am b/usrp/host/misc/Makefile.am index 935dc74b5..d238311e3 100644 --- a/usrp/host/misc/Makefile.am +++ b/usrp/host/misc/Makefile.am @@ -24,10 +24,8 @@ include $(top_srcdir)/Makefile.common EXTRA_DIST += \ getopt.c getopt.h \ gettimeofday.c \ - tempname.c mkstemp.c \ usleep.c noinst_LTLIBRARIES = libmisc.la libmisc_la_SOURCES = bug_work_around_8.cc -libmisc_la_LIBADD = @LTLIBOBJS@ -- cgit From 833a93d071b6183d8a3b07f892992919885b459f Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Wed, 30 Mar 2011 15:41:20 -0700 Subject: build: update config.guess and config.sub from canonical source In volk, these are now actual files instead of symlinks --- config.guess | 210 +++-- config.sub | 101 +- gr-howto-write-a-block/config.guess | 214 +++-- gr-howto-write-a-block/config.sub | 157 ++-- volk/config.guess | 1512 +++++++++++++++++++++++++++++- volk/config.sub | 1759 ++++++++++++++++++++++++++++++++++- 6 files changed, 3654 insertions(+), 299 deletions(-) mode change 100755 => 100644 config.guess mode change 100755 => 100644 config.sub mode change 100755 => 100644 gr-howto-write-a-block/config.guess mode change 100755 => 100644 gr-howto-write-a-block/config.sub mode change 120000 => 100644 volk/config.guess mode change 120000 => 100644 volk/config.sub diff --git a/config.guess b/config.guess old mode 100755 new mode 100644 index 285237846..187cd54ed --- a/config.guess +++ b/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2010-08-21' +timestamp='2011-02-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -57,7 +57,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -92,7 +92,7 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' HUP INT TERM +trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -106,7 +106,7 @@ trap 'exit 1' HUP INT TERM set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || @@ -181,7 +181,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -224,7 +224,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -270,7 +270,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -296,7 +299,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} @@ -395,23 +398,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -481,8 +484,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -495,7 +498,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -595,52 +598,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -731,22 +734,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -770,14 +773,14 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -805,14 +808,14 @@ EOF echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; @@ -867,7 +870,7 @@ EOF EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; - esac + esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} @@ -892,7 +895,7 @@ EOF echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu @@ -960,7 +963,7 @@ EOF echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -978,7 +981,7 @@ EOF echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -987,11 +990,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1023,7 +1026,7 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1051,13 +1054,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp - exit ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1092,8 +1095,8 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ @@ -1136,10 +1139,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1165,11 +1168,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1234,6 +1237,9 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1279,13 +1285,13 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1325,11 +1331,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif diff --git a/config.sub b/config.sub old mode 100755 new mode 100644 index 320e30388..18b17aa46 --- a/config.sub +++ b/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2010-09-11' +timestamp='2011-03-23' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -76,7 +76,7 @@ version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -158,8 +158,8 @@ case $os in os= basic_machine=$1 ;; - -bluegene*) - os=-cnk + -bluegene*) + os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= @@ -175,10 +175,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -288,7 +288,7 @@ case $basic_machine in | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rx \ | score \ @@ -296,12 +296,12 @@ case $basic_machine in | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; @@ -325,6 +325,18 @@ case $basic_machine in basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -384,22 +396,22 @@ case $basic_machine in | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -424,7 +436,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -507,7 +519,7 @@ case $basic_machine in basic_machine=c90-cray os=-unicos ;; - cegcc) + cegcc) basic_machine=arm-unknown os=-cegcc ;; @@ -539,7 +551,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -755,7 +767,7 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze) basic_machine=microblaze-xilinx ;; mingw32) @@ -862,10 +874,10 @@ case $basic_machine in np1) basic_machine=np1-gould ;; - neo-tandem) + neo-tandem) basic_machine=neo-tandem ;; - nse-tandem) + nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) @@ -950,9 +962,10 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -1046,6 +1059,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1102,8 +1118,8 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - # This must be matched before tile*. - tilegx*) + # This must be matched before tile*. + tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; @@ -1178,6 +1194,9 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1275,11 +1294,11 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + -auroraux) + os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` @@ -1364,7 +1383,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1413,7 +1432,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1458,8 +1477,8 @@ case $os in -dicos*) os=-dicos ;; - -nacl*) - ;; + -nacl*) + ;; -none) ;; *) @@ -1482,10 +1501,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1497,8 +1516,8 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff ;; tic54x-*) os=-coff @@ -1534,7 +1553,7 @@ case $basic_machine in m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1561,7 +1580,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) diff --git a/gr-howto-write-a-block/config.guess b/gr-howto-write-a-block/config.guess old mode 100755 new mode 100644 index dc84c68ef..187cd54ed --- a/gr-howto-write-a-block/config.guess +++ b/gr-howto-write-a-block/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2009-11-20' +timestamp='2011-02-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -56,8 +56,9 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -180,7 +181,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -223,7 +224,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -269,7 +270,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead @@ -295,7 +299,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} @@ -394,23 +398,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; @@ -480,8 +484,8 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -494,7 +498,7 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -551,7 +555,7 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[456]) + *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -594,52 +598,52 @@ EOF 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -730,22 +734,22 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; @@ -769,14 +773,14 @@ EOF exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} @@ -804,14 +808,14 @@ EOF echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; @@ -866,7 +870,7 @@ EOF EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; - esac + esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} @@ -891,7 +895,7 @@ EOF echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu @@ -959,7 +963,7 @@ EOF echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu @@ -967,6 +971,9 @@ EOF sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; @@ -974,7 +981,7 @@ EOF echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -983,11 +990,11 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) @@ -1019,7 +1026,7 @@ EOF fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; @@ -1047,13 +1054,13 @@ EOF exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp - exit ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1088,8 +1095,8 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ @@ -1132,10 +1139,10 @@ EOF echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1161,11 +1168,11 @@ EOF exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1230,6 +1237,9 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; @@ -1275,13 +1285,13 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` + UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; @@ -1321,11 +1331,11 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif diff --git a/gr-howto-write-a-block/config.sub b/gr-howto-write-a-block/config.sub old mode 100755 new mode 100644 index 2a55a5075..18b17aa46 --- a/gr-howto-write-a-block/config.sub +++ b/gr-howto-write-a-block/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. -timestamp='2009-11-20' +timestamp='2011-03-23' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -75,8 +75,9 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -123,8 +124,9 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -156,8 +158,8 @@ case $os in os= basic_machine=$1 ;; - -bluegene*) - os=-cnk + -bluegene*) + os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= @@ -173,10 +175,10 @@ case $os in os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -281,11 +283,12 @@ case $basic_machine in | moxie \ | mt \ | msp430 \ + | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rx \ | score \ @@ -293,15 +296,24 @@ case $basic_machine in | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown @@ -313,6 +325,18 @@ case $basic_machine in basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -333,7 +357,7 @@ case $basic_machine in | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ @@ -367,25 +391,27 @@ case $basic_machine in | mmix-* \ | mt-* \ | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -410,7 +436,7 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -480,11 +506,20 @@ case $basic_machine in basic_machine=powerpc-ibm os=-cnk ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; c90) basic_machine=c90-cray os=-unicos ;; - cegcc) + cegcc) basic_machine=arm-unknown os=-cegcc ;; @@ -516,7 +551,7 @@ case $basic_machine in basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -732,7 +767,7 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze) basic_machine=microblaze-xilinx ;; mingw32) @@ -839,6 +874,12 @@ case $basic_machine in np1) basic_machine=np1-gould ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -921,9 +962,10 @@ case $basic_machine in ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -1017,6 +1059,9 @@ case $basic_machine in basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1073,17 +1118,10 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu ;; tile*) basic_machine=tile-unknown @@ -1156,6 +1194,9 @@ case $basic_machine in xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1253,11 +1294,11 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + -auroraux) + os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` @@ -1294,7 +1335,8 @@ case $os in | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ @@ -1341,7 +1383,7 @@ case $os in -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1390,7 +1432,7 @@ case $os in -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1435,6 +1477,8 @@ case $os in -dicos*) os=-dicos ;; + -nacl*) + ;; -none) ;; *) @@ -1457,10 +1501,10 @@ else # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1472,8 +1516,17 @@ case $basic_machine in arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1500,7 +1553,7 @@ case $basic_machine in m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1527,7 +1580,7 @@ case $basic_machine in *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) diff --git a/volk/config.guess b/volk/config.guess deleted file mode 120000 index 405bc3235..000000000 --- a/volk/config.guess +++ /dev/null @@ -1 +0,0 @@ -/usr/share/automake-1.11/config.guess \ No newline at end of file diff --git a/volk/config.guess b/volk/config.guess new file mode 100644 index 000000000..187cd54ed --- /dev/null +++ b/volk/config.guess @@ -0,0 +1,1511 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-02-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/volk/config.sub b/volk/config.sub deleted file mode 120000 index 4d47fbcbc..000000000 --- a/volk/config.sub +++ /dev/null @@ -1 +0,0 @@ -/usr/share/automake-1.11/config.sub \ No newline at end of file diff --git a/volk/config.sub b/volk/config.sub new file mode 100644 index 000000000..18b17aa46 --- /dev/null +++ b/volk/config.sub @@ -0,0 +1,1758 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-03-23' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile-* | tilegx-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: -- cgit From 9166da7a6250da1026d19c4220a7a7244d4b06cf Mon Sep 17 00:00:00 2001 From: Don Ward Date: Wed, 30 Mar 2011 16:34:34 -0700 Subject: build: add missing linker defines for Win32 --- gr-audio/lib/Makefile.am | 2 +- gr-uhd/lib/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gr-audio/lib/Makefile.am b/gr-audio/lib/Makefile.am index 3ddfbd1fc..2bec73ff0 100644 --- a/gr-audio/lib/Makefile.am +++ b/gr-audio/lib/Makefile.am @@ -35,7 +35,7 @@ libgnuradio_audio_la_SOURCES = \ libgnuradio_audio_la_LIBADD = \ $(GNURADIO_CORE_LA) -libgnuradio_audio_la_LDFLAGS = $(LTVERSIONFLAGS) +libgnuradio_audio_la_LDFLAGS = $(NO_UNDEFINED) $(LTVERSIONFLAGS) noinst_HEADERS = gr_audio_registry.h diff --git a/gr-uhd/lib/Makefile.am b/gr-uhd/lib/Makefile.am index d93b243e2..c27682f7f 100644 --- a/gr-uhd/lib/Makefile.am +++ b/gr-uhd/lib/Makefile.am @@ -37,6 +37,6 @@ libgnuradio_uhd_la_LIBADD = \ $(GNURADIO_CORE_LA) \ $(UHD_LIBS) -libgnuradio_uhd_la_LDFLAGS = $(LTVERSIONFLAGS) +libgnuradio_uhd_la_LDFLAGS = $(NO_UNDEFINED) $(LTVERSIONFLAGS) noinst_HEADERS = -- cgit From 0966037079d9e2af5778f1418c17d29352286406 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 1 Apr 2011 10:02:21 -0400 Subject: build: updating Makefiles for newer linker requirements. --- gr-usrp/apps/Makefile.am | 2 ++ gruel/src/lib/Makefile.am | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gr-usrp/apps/Makefile.am b/gr-usrp/apps/Makefile.am index 0f3a21bb4..c3955ad9d 100644 --- a/gr-usrp/apps/Makefile.am +++ b/gr-usrp/apps/Makefile.am @@ -33,6 +33,8 @@ GR_USRP_LA=$(top_builddir)/gr-usrp/src/libgnuradio-usrp.la # For compiling outside the tree, these will get fished out by pkgconfig LDADD = \ + $(GNURADIO_CORE_LA) \ + $(USRP_LA) \ $(GR_USRP_LA) \ $(BOOST_LDFLAGS) \ $(BOOST_PROGRAM_OPTIONS_LIB) diff --git a/gruel/src/lib/Makefile.am b/gruel/src/lib/Makefile.am index f37ab27a1..773f3aefd 100644 --- a/gruel/src/lib/Makefile.am +++ b/gruel/src/lib/Makefile.am @@ -60,5 +60,9 @@ libgruel_la_LIBADD = \ # ---------------------------------------------------------------- test_gruel_SOURCES = test_gruel.cc -test_gruel_LDADD = pmt/libpmt-qa.la libgruel.la +test_gruel_LDADD = \ + $(BOOST_THREAD_LIB) \ + $(BOOST_SYSTEM_LIB) \ + $(BOOST_FILESYSTEM_LIB) \ + pmt/libpmt-qa.la libgruel.la -- cgit From eca5501969aa6175562b7e70b350cf3e6ddec603 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 4 Apr 2011 08:12:21 -0400 Subject: pfb: fixed documentation for PFB-based clock sync. --- gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 4e6ef5fc4..684ac85ce 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -84,7 +84,7 @@ class gr_fir_ccf; * the block constructor, we just ask for "gain," which is d_alpha while d_beta is * equal to (gain^2)/4. * - * The clock sync block needs to know the number of samples per second (sps), because it + * The clock sync block needs to know the number of samples per symbol (sps), because it * only returns a single point representing the sample. The sps can be any positive real * number and does not need to be an integer. The filter taps must also be specified. The * taps are generated by first conceiving of the prototype filter that would be the signal's @@ -115,7 +115,7 @@ class gr_pfb_clock_sync_ccf : public gr_block private: /*! * Build the polyphase filterbank timing synchronizer. - * \param sps (double) The number of samples per second in the incoming signal + * \param sps (double) The number of samples per symbol in the incoming signal * \param gain (float) The alpha gain of the control loop; beta = (gain^2)/4 by default. * \param taps (vector) The filter taps. * \param filter_size (uint) The number of filters in the filterbank (default = 32). -- cgit From 4a5c3dd3efaa5a57835e3561b33215d1fcfc7646 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Wed, 6 Apr 2011 17:27:44 -0400 Subject: volk: adding missing boost library flags for alternative installs of boost libs. --- volk/lib/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/volk/lib/Makefile.am b/volk/lib/Makefile.am index cfafe42c5..473acd2a6 100644 --- a/volk/lib/Makefile.am +++ b/volk/lib/Makefile.am @@ -121,7 +121,7 @@ noinst_PROGRAMS = \ testqa_SOURCES = testqa.cc qa_utils.cc testqa_CPPFLAGS = -DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN $(AM_CPPFLAGS) \ $(BOOST_CPPFLAGS) -testqa_LDFLAGS = $(BOOST_UNIT_TEST_FRAMEWORK_LIB) +testqa_LDFLAGS = $(BOOST_LDFLAGS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) if LV_HAVE_ORC testqa_LDADD = \ libvolk.la \ -- cgit From 209bf6ec91df1f54120b1745edb225c1c7cc2aa5 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 09:51:57 -0400 Subject: gr-digital: getting rid of warnings from costas loop block. --- gr-digital/lib/digital_costas_loop_cc.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gr-digital/lib/digital_costas_loop_cc.cc b/gr-digital/lib/digital_costas_loop_cc.cc index d7f98e142..b41b08cba 100644 --- a/gr-digital/lib/digital_costas_loop_cc.cc +++ b/gr-digital/lib/digital_costas_loop_cc.cc @@ -49,9 +49,9 @@ digital_costas_loop_cc::digital_costas_loop_cc (float damping, float nat_freq, gr_make_io_signature (1, 1, sizeof (gr_complex)), gr_make_io_signature2 (1, 2, sizeof (gr_complex), sizeof(float))), - d_max_freq(1.0), d_min_freq(-1.0), d_freq(0.0), - d_damping(damping), d_nat_freq(nat_freq), - d_phase(0), d_order(order), d_phase_detector(NULL) + d_max_freq(1.0), d_min_freq(-1.0), d_phase(0), d_freq(0.0), + d_nat_freq(nat_freq), d_damping(damping), + d_order(order), d_phase_detector(NULL) { // initialize gains from the natural freq and damping factors update_gains(); -- cgit From 5addd18bf0b5d4900220adc5da571d789a0d7fea Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 09:52:14 -0400 Subject: gr-digital: Adding a ccc version of the adaptive filter (to use complex taps). --- gnuradio-core/src/lib/filter/Makefile.am | 3 + .../src/lib/filter/gr_adaptive_fir_ccc.cc | 84 ++++++++++++++++++++++ gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h | 59 +++++++++++++++ gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.i | 31 ++++++++ 4 files changed, 177 insertions(+) create mode 100644 gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.cc create mode 100644 gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h create mode 100644 gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.i diff --git a/gnuradio-core/src/lib/filter/Makefile.am b/gnuradio-core/src/lib/filter/Makefile.am index dee13e239..777e1158a 100644 --- a/gnuradio-core/src/lib/filter/Makefile.am +++ b/gnuradio-core/src/lib/filter/Makefile.am @@ -188,6 +188,7 @@ EXTRA_DIST += \ # work around automake deficiency libfilter_la_common_SOURCES = \ $(GENERATED_CC) \ + gr_adaptive_fir_ccc.cc \ gr_adaptive_fir_ccf.cc \ gr_cma_equalizer_cc.cc \ gri_fft_filter_fff_generic.cc \ @@ -270,6 +271,7 @@ grinclude_HEADERS = \ ccomplex_dotprod_x86.h \ float_dotprod_generic.h \ float_dotprod_x86.h \ + gr_adaptive_fir_ccc.h \ gr_adaptive_fir_ccf.h \ gr_altivec.h \ gr_cma_equalizer_cc.h \ @@ -353,6 +355,7 @@ noinst_HEADERS = \ swiginclude_HEADERS = \ filter.i \ filter_generated.i \ + gr_adaptive_fir_ccc.i \ gr_adaptive_fir_ccf.i \ gr_cma_equalizer_cc.i \ gr_fft_filter_ccc.i \ diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.cc b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.cc new file mode 100644 index 000000000..179391839 --- /dev/null +++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.cc @@ -0,0 +1,84 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +gr_adaptive_fir_ccc::gr_adaptive_fir_ccc(const char *name, int decimation, + const std::vector &taps) + : gr_sync_decimator (name, + gr_make_io_signature (1, 1, sizeof(gr_complex)), + gr_make_io_signature (1, 1, sizeof(gr_complex)), + decimation), + d_updated(false) +{ + d_taps = taps; + set_history(d_taps.size()); +} + +void +gr_adaptive_fir_ccc::set_taps(const std::vector &taps) +{ + d_new_taps = taps; + d_updated = true; +} + +int +gr_adaptive_fir_ccc::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + gr_complex *in = (gr_complex *)input_items[0]; + gr_complex *out = (gr_complex *)output_items[0]; + + if (d_updated) { + d_taps = d_new_taps; + set_history(d_taps.size()); + d_updated = false; + return 0; // history requirements may have changed. + } + + int j = 0, k, l = d_taps.size(); + for (int i = 0; i < noutput_items; i++) { + // Generic dot product of d_taps[] and in[] + gr_complex sum(0.0, 0.0); + for (k = 0; k < l; k++) + sum += d_taps[l-k-1]*in[j+k]; + out[i] = sum; + + // Adjust taps + d_error = error(sum); + for (k = 0; k < l; k++) { + //printf("%f ", d_taps[k]); + update_tap(d_taps[l-k-1], in[j+k]); + } + //printf("\n"); + + j += decimation(); + } + + return noutput_items; +} diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h new file mode 100644 index 000000000..88b5f9281 --- /dev/null +++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifndef INCLUDED_GR_ADAPTIVE_FIR_CCC_H +#define INCLUDED_GR_ADAPTIVE_FIR_CCC_H + +#include + +/*! + * \brief Adaptive FIR filter with gr_complex input, gr_complex output and float taps + * \ingroup filter_blk + */ +class gr_adaptive_fir_ccc : public gr_sync_decimator +{ +private: + std::vector d_new_taps; + bool d_updated; + +protected: + gr_complex d_error; + std::vector d_taps; + + // Override to calculate error signal per output + virtual gr_complex error(const gr_complex &out) = 0; + + // Override to calculate new weight from old, corresponding input + virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0; + + gr_adaptive_fir_ccc(const char *name, int decimation, + const std::vector &taps); + +public: + void set_taps(const std::vector &taps); + + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.i b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.i new file mode 100644 index 000000000..7e9a3fac3 --- /dev/null +++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.i @@ -0,0 +1,31 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +class gr_adaptive_fir_ccc : public gr_sync_decimator +{ +protected: + gr_adaptive_fir_ccc(char *name, int decimation, + const std::vector &taps); + +public: + void set_taps(const std::vector &taps); +}; -- cgit From 9fc0750bbe5987efe36c571526e432f6ed6858bb Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 09:54:31 -0400 Subject: gr-digital: adding CMA equalizer to gr-digital. This replaces the gr_cma_equalizer_cc in gnuradio-core and uses the complex-in, complex-out, complex-taps version of the gr_adaptive_filter. --- gr-digital/grc/Makefile.am | 3 +- gr-digital/grc/digital_block_tree.xml | 1 + gr-digital/grc/digital_cma_equalizer_cc.xml | 35 ++++++++++++ gr-digital/lib/Makefile.am | 10 ++-- gr-digital/lib/digital_cma_equalizer_cc.cc | 43 +++++++++++++++ gr-digital/lib/digital_cma_equalizer_cc.h | 86 +++++++++++++++++++++++++++++ gr-digital/swig/Makefile.am | 6 +- gr-digital/swig/digital_cma_equalizer_cc.i | 40 ++++++++++++++ gr-digital/swig/digital_swig.i | 2 + 9 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 gr-digital/grc/digital_cma_equalizer_cc.xml create mode 100644 gr-digital/lib/digital_cma_equalizer_cc.cc create mode 100644 gr-digital/lib/digital_cma_equalizer_cc.h create mode 100644 gr-digital/swig/digital_cma_equalizer_cc.i diff --git a/gr-digital/grc/Makefile.am b/gr-digital/grc/Makefile.am index 2807b8f45..a3414c077 100644 --- a/gr-digital/grc/Makefile.am +++ b/gr-digital/grc/Makefile.am @@ -25,4 +25,5 @@ grcblocksdir = $(grc_blocksdir) dist_grcblocks_DATA = \ digital_block_tree.xml \ - digital_costas_loop_cc.xml \ No newline at end of file + digital_costas_loop_cc.xml \ + digital_cma_equalizer_cc.xml \ No newline at end of file diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml index c3c29d232..353aa3e1d 100644 --- a/gr-digital/grc/digital_block_tree.xml +++ b/gr-digital/grc/digital_block_tree.xml @@ -9,5 +9,6 @@ Digital digital_costas_loop_cc + digital_cma_equalizer_cc diff --git a/gr-digital/grc/digital_cma_equalizer_cc.xml b/gr-digital/grc/digital_cma_equalizer_cc.xml new file mode 100644 index 000000000..9de103e76 --- /dev/null +++ b/gr-digital/grc/digital_cma_equalizer_cc.xml @@ -0,0 +1,35 @@ + + + + CMA Equalizer + digital_cma_equalizer_cc + from gnuradio import digital + digital.cma_equalizer_cc($num_taps, $modulus, $mu) + + Num. Taps + num_taps + int + + + Modulus + modulus + real + + + Mu + mu + real + + + in + complex + + + out + complex + + diff --git a/gr-digital/lib/Makefile.am b/gr-digital/lib/Makefile.am index 83a06c898..cd80d7b1c 100644 --- a/gr-digital/lib/Makefile.am +++ b/gr-digital/lib/Makefile.am @@ -24,13 +24,15 @@ include $(top_srcdir)/Makefile.common AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) $(WITH_INCLUDES) # These headers get installed in ${prefix}/include/gnuradio -grinclude_HEADERS = \ - digital_costas_loop_cc.h +grinclude_HEADERS = \ + digital_costas_loop_cc.h \ + digital_cma_equalizer_cc.h lib_LTLIBRARIES = libgnuradio-digital.la -libgnuradio_digital_la_SOURCES = \ - digital_costas_loop_cc.cc +libgnuradio_digital_la_SOURCES = \ + digital_costas_loop_cc.cc \ + digital_cma_equalizer_cc.cc libgnuradio_digital_la_LIBADD = \ $(GNURADIO_CORE_LA) diff --git a/gr-digital/lib/digital_cma_equalizer_cc.cc b/gr-digital/lib/digital_cma_equalizer_cc.cc new file mode 100644 index 000000000..89f56c16f --- /dev/null +++ b/gr-digital/lib/digital_cma_equalizer_cc.cc @@ -0,0 +1,43 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +digital_cma_equalizer_cc_sptr +digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu) +{ + return gnuradio::get_initial_sptr(new digital_cma_equalizer_cc(num_taps, modulus, mu)); +} + +digital_cma_equalizer_cc::digital_cma_equalizer_cc(int num_taps, float modulus, float mu) + : gr_adaptive_fir_ccc("cma_equalizer_cc", 1, std::vector(num_taps)) +{ + set_modulus(modulus); + set_gain(mu); + if (num_taps > 0) + d_taps[0] = 1.0; +} + diff --git a/gr-digital/lib/digital_cma_equalizer_cc.h b/gr-digital/lib/digital_cma_equalizer_cc.h new file mode 100644 index 000000000..45883eb03 --- /dev/null +++ b/gr-digital/lib/digital_cma_equalizer_cc.h @@ -0,0 +1,86 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H +#define INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H + +#include +#include + +class digital_cma_equalizer_cc; +typedef boost::shared_ptr digital_cma_equalizer_cc_sptr; + +digital_cma_equalizer_cc_sptr +digital_make_cma_equalizer_cc(int num_taps, float modulus, float mu); + +/*! + * \brief Implements constant modulus adaptive filter on complex stream + * \ingroup eq_blk + * + * The error value and tap update equations (for p=2) can be found in: + * + * D. Godard, "Self-Recovering Equalization and Carrier Tracking in + * Two-Dimensional Data Communication Systems," IEEE Transactions on + * Communications, Vol. 28, No. 11, pp. 1867 - 1875, 1980, + */ +class digital_cma_equalizer_cc : public gr_adaptive_fir_ccc +{ +private: + float d_modulus; + float d_mu; + + friend digital_cma_equalizer_cc_sptr digital_make_cma_equalizer_cc(int num_taps, + float modulus, + float mu); + digital_cma_equalizer_cc(int num_taps, float modulus, float mu); + +protected: + + virtual gr_complex error(const gr_complex &out) + { + gr_complex error = out*(norm(out) - d_modulus); + return error; + } + + virtual void update_tap(gr_complex &tap, const gr_complex &in) + { + // Hn+1 = Hn - mu*conj(Xn)*zn*(|zn|^2 - 1) + tap -= d_mu*conj(in)*d_error; + } + +public: + void set_gain(float mu) + { + if(mu < 0) + throw std::out_of_range("digital_cma_equalizer::set_gain: Gain value must be >= 0"); + d_mu = mu; + } + + void set_modulus(float mod) + { + if(mod < 0) + throw std::out_of_range("digital_cma_equalizer::set_modulus: Modulus value must be >= 0"); + d_modulus = mod; + } +}; + +#endif diff --git a/gr-digital/swig/Makefile.am b/gr-digital/swig/Makefile.am index 737d348b7..918c8b52e 100644 --- a/gr-digital/swig/Makefile.am +++ b/gr-digital/swig/Makefile.am @@ -56,8 +56,10 @@ digital_swig_la_swig_libadd = \ $(abs_top_builddir)/gr-digital/lib/libgnuradio-digital.la # additional SWIG files to be installed -digital_swig_swiginclude_headers = \ - digital_costas_loop_cc.i +digital_swig_swiginclude_headers = \ + digital_costas_loop_cc.i \ + digital_cma_equalizer_cc.i + if GUILE TESTS += run_guile_tests endif \ No newline at end of file diff --git a/gr-digital/swig/digital_cma_equalizer_cc.i b/gr-digital/swig/digital_cma_equalizer_cc.i new file mode 100644 index 000000000..698e57fbb --- /dev/null +++ b/gr-digital/swig/digital_cma_equalizer_cc.i @@ -0,0 +1,40 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +GR_SWIG_BLOCK_MAGIC(digital,cma_equalizer_cc) + +// retrieve info on the base class, without generating wrappers since +// the base class has a pure virual method. +%import "gr_adaptive_fir_ccc.i" + +digital_cma_equalizer_cc_sptr +digital_make_cma_equalizer_cc(int num_taps, + float modulus, + float mu); + +class digital_cma_equalizer_cc : public gr_adaptive_fir_ccc +{ +private: + digital_cma_equalizer_cc(int num_taps, float modulus, float mu); + +public: +}; diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i index c3b049d72..b1eaab571 100644 --- a/gr-digital/swig/digital_swig.i +++ b/gr-digital/swig/digital_swig.i @@ -23,9 +23,11 @@ %{ #include "digital_costas_loop_cc.h" +#include "digital_cma_equalizer_cc.h" %} %include "digital_costas_loop_cc.i" +%include "digital_cma_equalizer_cc.i" #if SWIGGUILE %scheme %{ -- cgit From 6d080314a1e4619f96685f8c4514f4bc37a5c1e3 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 10:53:05 -0400 Subject: gr-digital: exposing accessors of CMA equalizer through swig and into GRC. Also added protection from exploding error calcs by clipping. --- gr-digital/grc/digital_cma_equalizer_cc.xml | 2 ++ gr-digital/lib/digital_cma_equalizer_cc.h | 5 ++++- gr-digital/swig/digital_cma_equalizer_cc.i | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gr-digital/grc/digital_cma_equalizer_cc.xml b/gr-digital/grc/digital_cma_equalizer_cc.xml index 9de103e76..a21d700db 100644 --- a/gr-digital/grc/digital_cma_equalizer_cc.xml +++ b/gr-digital/grc/digital_cma_equalizer_cc.xml @@ -9,6 +9,8 @@ digital_cma_equalizer_cc from gnuradio import digital digital.cma_equalizer_cc($num_taps, $modulus, $mu) + set_gain($mu) + set_modulus($modulus) Num. Taps num_taps diff --git a/gr-digital/lib/digital_cma_equalizer_cc.h b/gr-digital/lib/digital_cma_equalizer_cc.h index 45883eb03..54cba319c 100644 --- a/gr-digital/lib/digital_cma_equalizer_cc.h +++ b/gr-digital/lib/digital_cma_equalizer_cc.h @@ -24,6 +24,7 @@ #define INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H #include +#include #include class digital_cma_equalizer_cc; @@ -58,7 +59,9 @@ protected: virtual gr_complex error(const gr_complex &out) { gr_complex error = out*(norm(out) - d_modulus); - return error; + float re = gr_clip(error.real(), 1.0); + float im = gr_clip(error.imag(), 1.0); + return gr_complex(re, im); } virtual void update_tap(gr_complex &tap, const gr_complex &in) diff --git a/gr-digital/swig/digital_cma_equalizer_cc.i b/gr-digital/swig/digital_cma_equalizer_cc.i index 698e57fbb..346b744db 100644 --- a/gr-digital/swig/digital_cma_equalizer_cc.i +++ b/gr-digital/swig/digital_cma_equalizer_cc.i @@ -37,4 +37,6 @@ private: digital_cma_equalizer_cc(int num_taps, float modulus, float mu); public: + void set_gain(float mu); + void set_modulus(float mod); }; -- cgit From e36dc98e5f5aa82b146007c0379b6e55eca40578 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 11:09:51 -0400 Subject: core: adding a type converter - int -> float. --- gnuradio-core/src/lib/general/Makefile.am | 2 + gnuradio-core/src/lib/general/general.i | 2 + gnuradio-core/src/lib/general/gr_int_to_float.cc | 59 ++++++++++++++++++++++++ gnuradio-core/src/lib/general/gr_int_to_float.h | 51 ++++++++++++++++++++ gnuradio-core/src/lib/general/gr_int_to_float.i | 30 ++++++++++++ 5 files changed, 144 insertions(+) create mode 100644 gnuradio-core/src/lib/general/gr_int_to_float.cc create mode 100644 gnuradio-core/src/lib/general/gr_int_to_float.h create mode 100644 gnuradio-core/src/lib/general/gr_int_to_float.i diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index 3ceea7a6d..c36e7d7e7 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -139,6 +139,7 @@ libgeneral_la_SOURCES = \ gr_rms_cf.cc \ gr_rms_ff.cc \ gr_short_to_float.cc \ + gr_int_to_float.cc \ gr_simple_correlator.cc \ gr_simple_framer.cc \ gr_simple_squelch_cc.cc \ @@ -301,6 +302,7 @@ grinclude_HEADERS = \ gr_rms_cf.h \ gr_rms_ff.h \ gr_short_to_float.h \ + gr_int_to_float.h \ gr_simple_correlator.h \ gr_simple_framer.h \ gr_simple_framer_sync.h \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index fb9c4c0f2..e8a18ab19 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -167,6 +168,7 @@ %include "gr_float_to_char.i" %include "gr_float_to_uchar.i" %include "gr_short_to_float.i" +%include "gr_int_to_float.i" %include "gr_char_to_float.i" %include "gr_uchar_to_float.i" %include "gr_frequency_modulator_fc.i" diff --git a/gnuradio-core/src/lib/general/gr_int_to_float.cc b/gnuradio-core/src/lib/general/gr_int_to_float.cc new file mode 100644 index 000000000..c60157e34 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_int_to_float.cc @@ -0,0 +1,59 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +gr_int_to_float_sptr +gr_make_int_to_float () +{ + return gnuradio::get_initial_sptr(new gr_int_to_float ()); +} + +gr_int_to_float::gr_int_to_float () + : gr_sync_block ("gr_int_to_float", + gr_make_io_signature (1, 1, sizeof (int32_t)), + gr_make_io_signature (1, 1, sizeof (float))) +{ +} + +int +gr_int_to_float::work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + const int32_t *in = (const int32_t *) input_items[0]; + float *out = (float *) output_items[0]; + + for(int i=0; i + +class gr_int_to_float; +typedef boost::shared_ptr gr_int_to_float_sptr; + +gr_int_to_float_sptr +gr_make_int_to_float (); + +/*! + * \brief Convert stream of short to a stream of float + * \ingroup converter_blk + */ + +class gr_int_to_float : public gr_sync_block +{ + friend gr_int_to_float_sptr gr_make_int_to_float (); + gr_int_to_float (); + + public: + virtual int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + + +#endif /* INCLUDED_GR_INT_TO_FLOAT_H */ diff --git a/gnuradio-core/src/lib/general/gr_int_to_float.i b/gnuradio-core/src/lib/general/gr_int_to_float.i new file mode 100644 index 000000000..8cb9e35b5 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_int_to_float.i @@ -0,0 +1,30 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +GR_SWIG_BLOCK_MAGIC(gr,int_to_float) + +gr_int_to_float_sptr gr_make_int_to_float (); + +class gr_int_to_float : public gr_sync_block +{ + gr_int_to_float (); +}; -- cgit From 11837de659a69d1d8aaf353a046f06ef7c260c5c Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 5 Apr 2011 10:38:47 -0700 Subject: grc: fix for generating top block when in run to completion mode --- grc/python/flow_graph.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grc/python/flow_graph.tmpl b/grc/python/flow_graph.tmpl index 5aaa99793..e16e86f5b 100644 --- a/grc/python/flow_graph.tmpl +++ b/grc/python/flow_graph.tmpl @@ -243,9 +243,9 @@ if __name__ == '__main__': tb.show() qapp.exec_() #elif $generate_options == 'no_gui' + tb = $(class_name)($(', '.join($params_eq_list))) #set $run_options = $flow_graph.get_option('run_options') #if $run_options == 'prompt' - tb = $(class_name)($(', '.join($params_eq_list))) tb.start() raw_input('Press Enter to quit: ') tb.stop() -- cgit From f2e366cc4c9929cb2ca70038783b98f9672f6abe Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 30 Mar 2011 19:18:35 -0700 Subject: grc: added python checks for weird python interpreters --- grc/base/Platform.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/grc/base/Platform.py b/grc/base/Platform.py index 51a3b2f87..096fdec41 100644 --- a/grc/base/Platform.py +++ b/grc/base/Platform.py @@ -1,5 +1,5 @@ """ -Copyright 2008, 2009 Free Software Foundation, Inc. +Copyright 2008, 2009, 2011 Free Software Foundation, Inc. This file is part of GNU Radio GNU Radio Companion is free software; you can redistribute it and/or @@ -17,6 +17,16 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA """ +#Perform python integrity checks: +# GRC will not work with interpreters that fail the checks below. +# This can fail on interpreters built with special optimizations. +try: + assert False + raise Exception, 'Failed python integrity check: assert not supported' +except AssertionError: pass +if __doc__ is None: + raise Exception, 'Failed python integrity check: __doc__ not supported' + import os import sys from .. base import ParseXML, odict -- cgit From 82c41716e7ad1642266fefa819b60e674142e79b Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Thu, 7 Apr 2011 16:40:54 -0400 Subject: core: adding QA code for int_to_float block. --- gnuradio-core/src/lib/general/gr_int_to_float.cc | 10 ++--- gnuradio-core/src/python/gnuradio/gr/Makefile.am | 1 + .../src/python/gnuradio/gr/qa_int_to_float.py | 49 ++++++++++++++++++++++ 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_int_to_float.py 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 c60157e34..b5a19e5c0 100644 --- a/gnuradio-core/src/lib/general/gr_int_to_float.cc +++ b/gnuradio-core/src/lib/general/gr_int_to_float.cc @@ -42,15 +42,15 @@ gr_int_to_float::gr_int_to_float () int gr_int_to_float::work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) { const int32_t *in = (const int32_t *) input_items[0]; float *out = (float *) output_items[0]; - for(int i=0; iDigital digital_costas_loop_cc digital_cma_equalizer_cc + digital_kurtotic_equalizer_cc diff --git a/gr-digital/grc/digital_kurtotic_equalizer_cc.xml b/gr-digital/grc/digital_kurtotic_equalizer_cc.xml new file mode 100644 index 000000000..8c4a2012d --- /dev/null +++ b/gr-digital/grc/digital_kurtotic_equalizer_cc.xml @@ -0,0 +1,31 @@ + + + + Kurtotic Equalizer + digital_kurtotic_equalizer_cc + from gnuradio import digital + digital.kurtotic_equalizer_cc($num_taps, $mu) + set_gain($mu) + + Num. Taps + num_taps + int + + + Mu + mu + real + + + in + complex + + + out + complex + + diff --git a/gr-digital/lib/Makefile.am b/gr-digital/lib/Makefile.am index cd80d7b1c..7113f94d2 100644 --- a/gr-digital/lib/Makefile.am +++ b/gr-digital/lib/Makefile.am @@ -26,13 +26,15 @@ AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) $(WITH_INCLUDES) # These headers get installed in ${prefix}/include/gnuradio grinclude_HEADERS = \ digital_costas_loop_cc.h \ - digital_cma_equalizer_cc.h + digital_cma_equalizer_cc.h \ + digital_kurtotic_equalizer_cc.h lib_LTLIBRARIES = libgnuradio-digital.la libgnuradio_digital_la_SOURCES = \ digital_costas_loop_cc.cc \ - digital_cma_equalizer_cc.cc + digital_cma_equalizer_cc.cc \ + digital_kurtotic_equalizer_cc.cc libgnuradio_digital_la_LIBADD = \ $(GNURADIO_CORE_LA) diff --git a/gr-digital/lib/digital_kurtotic_equalizer_cc.cc b/gr-digital/lib/digital_kurtotic_equalizer_cc.cc new file mode 100644 index 000000000..c95b56021 --- /dev/null +++ b/gr-digital/lib/digital_kurtotic_equalizer_cc.cc @@ -0,0 +1,51 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +digital_kurtotic_equalizer_cc_sptr +digital_make_kurtotic_equalizer_cc(int num_taps, float mu) +{ + return gnuradio::get_initial_sptr(new digital_kurtotic_equalizer_cc(num_taps, mu)); +} + +digital_kurtotic_equalizer_cc::digital_kurtotic_equalizer_cc(int num_taps, float mu) + : gr_adaptive_fir_ccc("kurtotic_equalizer_cc", 1, std::vector(num_taps)) +{ + set_gain(mu); + if (num_taps > 0) + d_taps[0] = 1.0; + + d_alpha_p = 0.01; + d_alpha_q = 0.01; + d_alpha_m = 0.01; + + d_p = 0.0f; + d_m = 0.0f; + d_q = gr_complex(0,0); + d_u = gr_complex(0,0); +} + diff --git a/gr-digital/lib/digital_kurtotic_equalizer_cc.h b/gr-digital/lib/digital_kurtotic_equalizer_cc.h new file mode 100644 index 000000000..e01cbd6e6 --- /dev/null +++ b/gr-digital/lib/digital_kurtotic_equalizer_cc.h @@ -0,0 +1,111 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +#ifndef INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H +#define INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H + +#include +#include +#include + +class digital_kurtotic_equalizer_cc; +typedef boost::shared_ptr digital_kurtotic_equalizer_cc_sptr; + +digital_kurtotic_equalizer_cc_sptr +digital_make_kurtotic_equalizer_cc(int num_taps, float mu); + +/*! + * \brief Implements a kurtosis-based adaptive equalizer on complex stream + * \ingroup eq_blk + * + * Y. Guo, J. Zhao, Y. Sun, "Sign kurtosis maximization based blind + * equalization algorithm," IEEE Conf. on Control, Automation, + * Robotics and Vision, Vol. 3, Dec. 2004, pp. 2052 - 2057. + */ +class digital_kurtotic_equalizer_cc : public gr_adaptive_fir_ccc +{ +private: + float d_mu; + float d_p, d_m; + gr_complex d_q, d_u; + float d_alpha_p, d_alpha_q, d_alpha_m; + + friend digital_kurtotic_equalizer_cc_sptr digital_make_kurtotic_equalizer_cc(int num_taps, + float mu); + digital_kurtotic_equalizer_cc(int num_taps, float mu); + + gr_complex sign(gr_complex x) + { + float re = (float)(x.real() >= 0.0f); + float im = (float)(x.imag() >= 0.0f); + return gr_complex(re, im); + } + +protected: + + virtual gr_complex error(const gr_complex &out) + { + + // p = E[|z|^2] + // q = E[z^2] + // m = E[|z|^4] + // u = E[kurtosis(z)] + + float nrm = norm(out); + gr_complex cnj = conj(out); + float epsilon_f = 1e-12; + gr_complex epsilon_c = gr_complex(1e-12, 1e-12); + + + d_p = (1-d_alpha_p)*d_p + (d_alpha_p)*nrm + epsilon_f; + d_q = (1-d_alpha_q)*d_q + (d_alpha_q)*out*out + epsilon_c; + d_m = (1-d_alpha_m)*d_m + (d_alpha_m)*nrm*nrm + epsilon_f; + d_u = d_m - 2.0f*(d_p*d_p) - d_q*d_q; + + gr_complex F = (1.0f / (d_p*d_p*d_p)) * + (sign(d_u) * (nrm*cnj - 2.0f*d_p*cnj - conj(d_q)*out) - + abs(d_u)*cnj); + + //std::cout << "out: " << out << " p: " << d_p << " q: " << d_q; + //std::cout << " m: " << d_m << " u: " << d_u << std::endl; + //std::cout << "error: " << F << std::endl; + + float re = gr_clip(F.real(), 1.0); + float im = gr_clip(F.imag(), 1.0); + return gr_complex(re, im); + } + + virtual void update_tap(gr_complex &tap, const gr_complex &in) + { + tap += d_mu*in*d_error; + } + +public: + void set_gain(float mu) + { + if(mu < 0) + throw std::out_of_range("digital_kurtotic_equalizer::set_gain: Gain value must be >= 0"); + d_mu = mu; + } +}; + +#endif diff --git a/gr-digital/swig/Makefile.am b/gr-digital/swig/Makefile.am index 918c8b52e..d06da3a26 100644 --- a/gr-digital/swig/Makefile.am +++ b/gr-digital/swig/Makefile.am @@ -58,7 +58,8 @@ digital_swig_la_swig_libadd = \ # additional SWIG files to be installed digital_swig_swiginclude_headers = \ digital_costas_loop_cc.i \ - digital_cma_equalizer_cc.i + digital_cma_equalizer_cc.i \ + digital_kurtotic_equalizer_cc.i if GUILE TESTS += run_guile_tests diff --git a/gr-digital/swig/digital_kurtotic_equalizer_cc.i b/gr-digital/swig/digital_kurtotic_equalizer_cc.i new file mode 100644 index 000000000..67a9dc6fd --- /dev/null +++ b/gr-digital/swig/digital_kurtotic_equalizer_cc.i @@ -0,0 +1,40 @@ +/* -*- c++ -*- */ +/* + * Copyright 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. + */ + +GR_SWIG_BLOCK_MAGIC(digital,kurtotic_equalizer_cc) + +// retrieve info on the base class, without generating wrappers since +// the base class has a pure virual method. +%import "gr_adaptive_fir_ccc.i" + +digital_kurtotic_equalizer_cc_sptr +digital_make_kurtotic_equalizer_cc(int num_taps, + float mu); + +class digital_kurtotic_equalizer_cc : public gr_adaptive_fir_ccc +{ +private: + digital_kurtotic_equalizer_cc(int num_taps, float mu); + +public: + void set_gain(float mu); +}; diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i index b1eaab571..c2416c6c2 100644 --- a/gr-digital/swig/digital_swig.i +++ b/gr-digital/swig/digital_swig.i @@ -24,10 +24,12 @@ %{ #include "digital_costas_loop_cc.h" #include "digital_cma_equalizer_cc.h" +#include "digital_kurtotic_equalizer_cc.h" %} %include "digital_costas_loop_cc.i" %include "digital_cma_equalizer_cc.i" +%include "digital_kurtotic_equalizer_cc.i" #if SWIGGUILE %scheme %{ -- cgit From 2ce3ebb921bba17a11eda2253b5670b8a50684e9 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 8 Apr 2011 16:26:54 -0400 Subject: gr-digital: Updated Costas loop QA to work with all tests wth new API. --- gr-digital/python/qa_costas_loop_cc.py | 61 +++++++++++++--------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/gr-digital/python/qa_costas_loop_cc.py b/gr-digital/python/qa_costas_loop_cc.py index 464534723..0a1f4a97d 100644 --- a/gr-digital/python/qa_costas_loop_cc.py +++ b/gr-digital/python/qa_costas_loop_cc.py @@ -34,11 +34,11 @@ class test_digital(gr_unittest.TestCase): def test01 (self): # test basic functionality by setting all gains to 0 - alpha = beta = max_freq = min_freq = 0.0 + damp = 0.4 + natfreq = 0.25 order = 2 - self.test = digital_swig.costas_loop_cc(alpha, beta, - max_freq, min_freq, - order) + self.test = digital_swig.costas_loop_cc(damp, natfreq, order) + data = 100*[complex(1,0),] self.src = gr.vector_source_c(data, False) self.snk = gr.vector_sink_c() @@ -52,14 +52,11 @@ class test_digital(gr_unittest.TestCase): def test02 (self): # Make sure it doesn't diverge given perfect data - alpha = 0.1 - beta = 0.25*alpha*alpha - max_freq = 0.25 - min_freq = -0.25 + damp = 0.4 + natfreq = 0.25 order = 2 - self.test = digital_swig.costas_loop_cc(alpha, beta, - max_freq, min_freq, - order) + self.test = digital_swig.costas_loop_cc(damp, natfreq, order) + data = [complex(2*random.randint(0,1)-1, 0) for i in xrange(100)] self.src = gr.vector_source_c(data, False) self.snk = gr.vector_sink_c() @@ -74,14 +71,11 @@ class test_digital(gr_unittest.TestCase): def test03 (self): # BPSK Convergence test with static rotation - alpha = 0.25 - beta = 0.25*alpha*alpha - max_freq = 0.25 - min_freq = -0.25 + damp = 0.4 + natfreq = 0.25 order = 2 - self.test = digital_swig.costas_loop_cc(alpha, beta, - max_freq, min_freq, - order) + self.test = digital_swig.costas_loop_cc(damp, natfreq, order) + rot = cmath.exp(0.2j) # some small rotation data = [complex(2*random.randint(0,1)-1, 0) for i in xrange(100)] @@ -103,14 +97,11 @@ class test_digital(gr_unittest.TestCase): def test04 (self): # QPSK Convergence test with static rotation - alpha = 0.25 - beta = 0.25*alpha*alpha - max_freq = 0.25 - min_freq = -0.25 + damp = 0.4 + natfreq = 0.25 order = 4 - self.test = digital_swig.costas_loop_cc(alpha, beta, - max_freq, min_freq, - order) + self.test = digital_swig.costas_loop_cc(damp, natfreq, order) + rot = cmath.exp(0.2j) # some small rotation data = [complex(2*random.randint(0,1)-1, 2*random.randint(0,1)-1) for i in xrange(100)] @@ -133,21 +124,20 @@ class test_digital(gr_unittest.TestCase): def test05 (self): # 8PSK Convergence test with static rotation - alpha = 0.25 - beta = 0.25*alpha*alpha - max_freq = 0.25 - min_freq = -0.25 + damp = 0.5 + natfreq = 0.5 order = 8 - self.test = digital_swig.costas_loop_cc(alpha, beta, - max_freq, min_freq, - order) - rot = cmath.exp(cmath.pi/16.0j) # some small rotation + self.test = digital_swig.costas_loop_cc(damp, natfreq, order) + + rot = cmath.exp(-cmath.pi/8.0j) # rotate to match Costas rotation const = blks2.psk.make_constellation(order) data = [random.randint(0,7) for i in xrange(100)] - data = [rot*const[d] for d in data] + data = [2*rot*const[d] for d in data] N = 40 # settling time expected_result = data[N:] + + rot = cmath.exp(0.1j) # some small rotation data = [rot*d for d in data] self.src = gr.vector_source_c(data, False) @@ -157,9 +147,6 @@ class test_digital(gr_unittest.TestCase): self.tb.run() dst_data = self.snk.data()[N:] - - print expected_result - print dst_data # generously compare results; the loop will converge near to, but # not exactly on, the target data -- cgit From 78078fe0015fe87b15777b94858f5110e65244c5 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 8 Apr 2011 21:43:25 -0400 Subject: gr-digital: moved consetellation object into gr-digital space. --- gnuradio-core/src/lib/general/gr_constellation.cc | 368 ---------------------- gnuradio-core/src/lib/general/gr_constellation.h | 322 ------------------- gnuradio-core/src/lib/general/gr_constellation.i | 146 --------- gr-digital/lib/digital_constellation.cc | 368 ++++++++++++++++++++++ gr-digital/lib/digital_constellation.h | 322 +++++++++++++++++++ gr-digital/swig/digital_constellation.i | 146 +++++++++ 6 files changed, 836 insertions(+), 836 deletions(-) delete mode 100644 gnuradio-core/src/lib/general/gr_constellation.cc delete mode 100644 gnuradio-core/src/lib/general/gr_constellation.h delete mode 100644 gnuradio-core/src/lib/general/gr_constellation.i create mode 100644 gr-digital/lib/digital_constellation.cc create mode 100644 gr-digital/lib/digital_constellation.h create mode 100644 gr-digital/swig/digital_constellation.i diff --git a/gnuradio-core/src/lib/general/gr_constellation.cc b/gnuradio-core/src/lib/general/gr_constellation.cc deleted file mode 100644 index eede99ffd..000000000 --- a/gnuradio-core/src/lib/general/gr_constellation.cc +++ /dev/null @@ -1,368 +0,0 @@ -/* -*- c++ -*- */ -/* - * 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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define M_TWOPI (2*M_PI) -#define SQRT_TWO 0.707107 - -// Base Constellation Class - -gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality) : - d_constellation(constellation), - d_pre_diff_code(pre_diff_code), - d_rotational_symmetry(rotational_symmetry), - d_dimensionality(dimensionality) -{ - if (pre_diff_code.size() == 0) - d_apply_pre_diff_code = false; - else if (pre_diff_code.size() != constellation.size()) - throw std::runtime_error ("The constellation and pre-diff code must be of the same length."); - else - d_apply_pre_diff_code = true; - calc_arity(); -} - -gr_constellation::gr_constellation () : - d_apply_pre_diff_code(false), - d_rotational_symmetry(0), - d_dimensionality(1) -{ - calc_arity(); -} - -//! Returns the constellation points for a symbol value -void gr_constellation::map_to_points(unsigned int value, gr_complex *points) { - for (unsigned int i=0; i gr_constellation::map_to_points_v(unsigned int value) { - std::vector points_v; - points_v.resize(d_dimensionality); - map_to_points(value, &(points_v[0])); - return points_v; -} - -float gr_constellation::get_distance(unsigned int index, const gr_complex *sample) { - float dist = 0; - for (unsigned int i=0; i gr_constellation::s_points () { - if (d_dimensionality != 1) - throw std::runtime_error ("s_points only works for dimensionality 1 constellations."); - else - return d_constellation; -} - -std::vector > gr_constellation::v_points () { - std::vector > vv_const; - vv_const.resize(d_arity); - for (unsigned int p=0; p v_const; - v_const.resize(d_dimensionality); - for (unsigned int d=0; d sample) { - assert(sample.size() == d_dimensionality); - return decision_maker (&(sample[0])); -} - -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality) -{ - return gr_constellation_calcdist_sptr(new gr_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, - dimensionality)); -} - -gr_constellation_calcdist::gr_constellation_calcdist(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality) : - gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) -{} - -// Chooses points base on shortest distance. -// Inefficient. -unsigned int gr_constellation_calcdist::decision_maker(const gr_complex *sample) -{ - return get_closest_point(sample); -} - -gr_constellation_sector::gr_constellation_sector (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality, - unsigned int n_sectors) : - gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), - n_sectors(n_sectors) -{ -} - -unsigned int gr_constellation_sector::decision_maker (const gr_complex *sample) { - unsigned int sector; - sector = get_sector(sample); - return sector_values[sector]; -} - -void gr_constellation_sector::find_sector_values () { - unsigned int i; - sector_values.clear(); - for (i=0; i constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) -{ - return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, rotational_symmetry, - real_sectors, imag_sectors, width_real_sectors, - width_imag_sectors)); - } - -gr_constellation_rect::gr_constellation_rect (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) : - gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), - n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), - d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) -{ - find_sector_values(); -} - -unsigned int gr_constellation_rect::get_sector (const gr_complex *sample) { - int real_sector, imag_sector; - unsigned int sector; - real_sector = int(real(*sample)/d_width_real_sectors + n_real_sectors/2.0); - if (real_sector < 0) real_sector = 0; - if (real_sector >= n_real_sectors) real_sector = n_real_sectors-1; - imag_sector = int(imag(*sample)/d_width_imag_sectors + n_imag_sectors/2.0); - if (imag_sector < 0) imag_sector = 0; - if (imag_sector >= n_imag_sectors) imag_sector = n_imag_sectors-1; - sector = real_sector * n_imag_sectors + imag_sector; - return sector; -} - -unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { - unsigned int real_sector, imag_sector; - gr_complex sector_center; - unsigned int closest_point; - real_sector = float(sector)/n_imag_sectors; - imag_sector = sector - real_sector * n_imag_sectors; - sector_center = gr_complex((real_sector + 0.5 - n_real_sectors/2.0) * d_width_real_sectors, - (imag_sector + 0.5 - n_imag_sectors/2.0) * d_width_imag_sectors); - closest_point = get_closest_point(§or_center); - return closest_point; -} - - -gr_constellation_psk_sptr -gr_make_constellation_psk(std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors) -{ - return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, - n_sectors)); -} - -gr_constellation_psk::gr_constellation_psk (std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors) : - gr_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) -{ - find_sector_values(); -} - -unsigned int gr_constellation_psk::get_sector (const gr_complex *sample) { - float phase = arg(*sample); - float width = M_TWOPI / n_sectors; - int sector = floor(phase/width + 0.5); - unsigned int u_sector; - if (sector < 0) sector += n_sectors; - u_sector = sector; - return sector; -} - -unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { - float phase = sector * M_TWOPI / n_sectors; - gr_complex sector_center = gr_complex(cos(phase), sin(phase)); - unsigned int closest_point = get_closest_point(§or_center); - return closest_point; -} - - -gr_constellation_bpsk_sptr -gr_make_constellation_bpsk() -{ - return gr_constellation_bpsk_sptr(new gr_constellation_bpsk ()); -} - -gr_constellation_bpsk::gr_constellation_bpsk () -{ - d_constellation.resize(2); - d_constellation[0] = gr_complex(-1, 0); - d_constellation[1] = gr_complex(1, 0); - d_rotational_symmetry = 2; - d_dimensionality = 1; - calc_arity(); -} - -unsigned int gr_constellation_bpsk::decision_maker(const gr_complex *sample) -{ - return (real(*sample) > 0); -} - - -gr_constellation_qpsk_sptr -gr_make_constellation_qpsk() -{ - return gr_constellation_qpsk_sptr(new gr_constellation_qpsk ()); -} - -gr_constellation_qpsk::gr_constellation_qpsk () -{ - d_constellation.resize(4); - // Gray-coded - d_constellation[0] = gr_complex(-SQRT_TWO, -SQRT_TWO); - d_constellation[1] = gr_complex(SQRT_TWO, -SQRT_TWO); - d_constellation[2] = gr_complex(-SQRT_TWO, SQRT_TWO); - d_constellation[3] = gr_complex(SQRT_TWO, SQRT_TWO); - d_rotational_symmetry = 4; - d_dimensionality = 1; - calc_arity(); -} - -unsigned int gr_constellation_qpsk::decision_maker(const gr_complex *sample) -{ - // Real component determines small bit. - // Imag component determines big bit. - return 2*(imag(*sample)>0) + (real(*sample)>0); -} diff --git a/gnuradio-core/src/lib/general/gr_constellation.h b/gnuradio-core/src/lib/general/gr_constellation.h deleted file mode 100644 index f6726a9b5..000000000 --- a/gnuradio-core/src/lib/general/gr_constellation.h +++ /dev/null @@ -1,322 +0,0 @@ -/* -*- c++ -*- */ -/* - * 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. - */ - -#ifndef INCLUDED_GR_CONSTELLATION_H -#define INCLUDED_GR_CONSTELLATION_H - -#include -#include -#include -#include -#include - -/************************************************************/ -/* gr_constellation */ -/* */ -/* Base class defining interface. */ -/************************************************************/ - -class gr_constellation; -typedef boost::shared_ptr gr_constellation_sptr; - -class gr_constellation : public boost::enable_shared_from_this -{ -public: - gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality); - gr_constellation (); - - //! Returns the constellation points for a symbol value - void map_to_points(unsigned int value, gr_complex *points); - std::vector map_to_points_v(unsigned int value); - - //! Returns the constellation point that matches best. - virtual unsigned int decision_maker (const gr_complex *sample) = 0; - //! Takes a vector rather than a pointer. Better for SWIG wrapping. - unsigned int decision_maker_v (std::vector sample); - //! Also calculates the phase error. - unsigned int decision_maker_pe (const gr_complex *sample, float *phase_error); - //! Calculates distance. - unsigned int decision_maker_e (const gr_complex *sample, float *error); - - //! Calculates metrics for all points in the constellation. - //! For use with the viterbi algorithm. - virtual void calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type); - virtual void calc_euclidean_metric(const gr_complex *sample, float *metric); - virtual void calc_hard_symbol_metric(const gr_complex *sample, float *metric); - - //! Returns the set of points in this constellation. - std::vector points() { return d_constellation;} - //! Returns the vector of points in this constellation. - //! Raise error if dimensionality is not one. - std::vector s_points(); - //! Returns a vector of vectors of points. - std::vector > v_points(); - //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding) - bool apply_pre_diff_code() { return d_apply_pre_diff_code;} - //! Returns the encoding to apply before differential encoding. - std::vector pre_diff_code() { return d_pre_diff_code;} - //! Returns the order of rotational symmetry. - unsigned int rotational_symmetry() { return d_rotational_symmetry;} - //! Returns the number of complex numbers in a single symbol. - unsigned int dimensionality() {return d_dimensionality;} - - unsigned int bits_per_symbol () { - return floor(log(d_constellation.size())/d_dimensionality/log(2)); - } - - unsigned int arity () { - return d_arity; - } - - gr_constellation_sptr base() { - return shared_from_this(); - } - - protected: - - std::vector d_constellation; - std::vector d_pre_diff_code; - bool d_apply_pre_diff_code; - unsigned int d_rotational_symmetry; - unsigned int d_dimensionality; - unsigned int d_arity; - - float get_distance(unsigned int index, const gr_complex *sample); - unsigned int get_closest_point(const gr_complex *sample); - void calc_arity (); -}; - -/************************************************************/ -/* gr_constellation_calcdist */ -/* */ -/* Constellation which calculates the distance to each */ -/* point in the constellation for decision making. */ -/* Inefficient for large constellations. */ -/************************************************************/ - -class gr_constellation_calcdist; -typedef boost::shared_ptr gr_constellation_calcdist_sptr; - -// public constructor -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality); - - -class gr_constellation_calcdist : public gr_constellation -{ - public: - gr_constellation_calcdist (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); - unsigned int decision_maker (const gr_complex *sample); - // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); - // void calc_euclidean_metric(gr_complex *sample, float *metric); - // void calc_hard_symbol_metric(gr_complex *sample, float *metric); - - private: - friend gr_constellation_calcdist_sptr - gr_make_constellation_calcdist (std::vector constellation); -}; - -/************************************************************/ -/* gr_constellation_sector */ -/* */ -/* An abstract class. */ -/* Constellation space is divided into sectors. */ -/* Each sector is associated with the nearest constellation */ -/* point. */ -/************************************************************/ - -class gr_constellation_sector : public gr_constellation -{ - public: - - gr_constellation_sector (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality, - unsigned int n_sectors); - - unsigned int decision_maker (const gr_complex *sample); - - protected: - - virtual unsigned int get_sector (const gr_complex *sample) = 0; - virtual unsigned int calc_sector_value (unsigned int sector) = 0; - void find_sector_values (); - - unsigned int n_sectors; - - private: - - std::vector sector_values; - -}; - -/************************************************************/ -/* gr_constellation_rect */ -/* */ -/* Only implemented for 1-(complex)dimensional */ -/* constellation. */ -/* Constellation space is divided into rectangular sectors. */ -/* Each sector is associated with the nearest constellation */ -/* point. */ -/* Works well for square QAM. */ -/* Works for any generic constellation provided sectors are */ -/* not too large. */ -/************************************************************/ - -class gr_constellation_rect; -typedef boost::shared_ptr gr_constellation_rect_sptr; - -// public constructor -gr_constellation_rect_sptr -gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); - -class gr_constellation_rect : public gr_constellation_sector -{ - public: - - gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); - - protected: - - unsigned int get_sector (const gr_complex *sample); - - unsigned int calc_sector_value (unsigned int sector); - - private: - - unsigned int n_real_sectors; - unsigned int n_imag_sectors; - float d_width_real_sectors; - float d_width_imag_sectors; - - friend gr_constellation_rect_sptr - gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); - -}; - -/************************************************************/ -/* gr_constellation_psk */ -/* */ -/* Constellation space is divided into pie slices sectors. */ -/* Each slice is associated with the nearest constellation */ -/* point. */ -/* Works well for PSK but nothing else. */ -/* Assumes that there is a constellation point at 1. */ -/************************************************************/ - -class gr_constellation_psk; -typedef boost::shared_ptr gr_constellation_psk_sptr; - -// public constructor -gr_constellation_psk_sptr -gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); - -class gr_constellation_psk : public gr_constellation_sector -{ - public: - - gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); - - protected: - - unsigned int get_sector (const gr_complex *sample); - - unsigned int calc_sector_value (unsigned int sector); - - private: - - friend gr_constellation_psk_sptr - gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); - -}; - -/************************************************************/ -/* gr_constellation_bpsk */ -/* */ -/* Only works for BPSK. */ -/* */ -/************************************************************/ - -class gr_constellation_bpsk; -typedef boost::shared_ptr gr_constellation_bpsk_sptr; - -// public constructor -gr_constellation_bpsk_sptr -gr_make_constellation_bpsk (); - -class gr_constellation_bpsk : public gr_constellation -{ - public: - - gr_constellation_bpsk (); - unsigned int decision_maker (const gr_complex *sample); - - friend gr_constellation_bpsk_sptr - gr_make_constellation_bpsk (); - -}; - -/************************************************************/ -/* gr_constellation_qpsk */ -/* */ -/* Only works for QPSK. */ -/* */ -/************************************************************/ - -class gr_constellation_qpsk; -typedef boost::shared_ptr gr_constellation_qpsk_sptr; - -// public constructor -gr_constellation_qpsk_sptr -gr_make_constellation_qpsk (); - -class gr_constellation_qpsk : public gr_constellation -{ - public: - - gr_constellation_qpsk (); - unsigned int decision_maker (const gr_complex *sample); - - friend gr_constellation_qpsk_sptr - gr_make_constellation_qpsk (); - -}; - -#endif diff --git a/gnuradio-core/src/lib/general/gr_constellation.i b/gnuradio-core/src/lib/general/gr_constellation.i deleted file mode 100644 index 179e68136..000000000 --- a/gnuradio-core/src/lib/general/gr_constellation.i +++ /dev/null @@ -1,146 +0,0 @@ -/* -*- c++ -*- */ -/* - * 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. - */ - -%template(gr_complex_vector) std::vector; -%template(unsigned_int_vector) std::vector; - -// Make sure metric types get SWIGed. -%include gr_metric_type.h - -class gr_constellation; -typedef boost::shared_ptr gr_constellation_sptr; -%template(gr_constellation_sptr) boost::shared_ptr; - -class gr_constellation -{ -public: - gr_constellation (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); - std::vector points(); - std::vector s_points(); - std::vector > v_points(); - virtual unsigned int decision_maker (gr_complex *sample) = 0; - unsigned int decision_maker_v (std::vector sample); - // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); - // void calc_euclidean_metric(gr_complex *sample, float *metric); - // void calc_hard_symbol_metric(gr_complex *sample, float *metric); - std::vector map_to_points_v(unsigned int value); - unsigned int bits_per_symbol (); - unsigned int arity (); - gr_constellation_sptr base (); - bool apply_pre_diff_code(); - std::vector pre_diff_code(); - unsigned int rotational_symmetry(); - unsigned int dimensionality(); -}; - -class gr_constellation_calcdist; -typedef boost::shared_ptr gr_constellation_calcdist_sptr; -%template(gr_constellation_calcdist_sptr) boost::shared_ptr; -%rename(constellation_calcdist) gr_make_constellation_calcdist; -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); -%ignore gr_constellation_calcdist; - -class gr_constellation_calcdist: public gr_constellation -{ - public: - gr_constellation_calcdist (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); - unsigned int decision_maker (const gr_complex *sample); -}; - -class gr_constellation_sector: public gr_constellation -{ -}; - -class gr_constellation_rect; -typedef boost::shared_ptr gr_constellation_rect_sptr; -%template(gr_constellation_rect_sptr) boost::shared_ptr; -%rename(constellation_rect) gr_make_constellation_rect; -gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); -%ignore gr_constellation_rect; - -class gr_constellation_rect : public gr_constellation_sector -{ -public: - gr_constellation_rect (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); -}; - -class gr_constellation_psk; -typedef boost::shared_ptr gr_constellation_psk_sptr; -%template(gr_constellation_psk_sptr) boost::shared_ptr; -%rename(constellation_psk) gr_make_constellation_psk; -gr_constellation_psk_sptr gr_make_constellation_psk(std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors); -%ignore gr_constellation_psk; - -class gr_constellation_psk : public gr_constellation_sector -{ -public: - gr_constellation_psk (std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors); -}; - -class gr_constellation_bpsk; -typedef boost::shared_ptr gr_constellation_bpsk_sptr; -%template(gr_constellation_bpsk_sptr) boost::shared_ptr; -%rename(constellation_bpsk) gr_make_constellation_bpsk; -gr_constellation_bpsk_sptr gr_make_constellation_bpsk(); -%ignore gr_constellation_bpsk; - -class gr_constellation_bpsk : public gr_constellation -{ -public: - gr_constellation_bpsk (); -}; - -class gr_constellation_qpsk; -typedef boost::shared_ptr gr_constellation_qpsk_sptr; -%template(gr_constellation_qpsk_sptr) boost::shared_ptr; -%rename(constellation_qpsk) gr_make_constellation_qpsk; -gr_constellation_qpsk_sptr gr_make_constellation_qpsk(); -%ignore gr_constellation_qpsk; - -class gr_constellation_qpsk : public gr_constellation -{ -public: - gr_constellation_qpsk (); -}; - diff --git a/gr-digital/lib/digital_constellation.cc b/gr-digital/lib/digital_constellation.cc new file mode 100644 index 000000000..eede99ffd --- /dev/null +++ b/gr-digital/lib/digital_constellation.cc @@ -0,0 +1,368 @@ +/* -*- c++ -*- */ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define M_TWOPI (2*M_PI) +#define SQRT_TWO 0.707107 + +// Base Constellation Class + +gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality) : + d_constellation(constellation), + d_pre_diff_code(pre_diff_code), + d_rotational_symmetry(rotational_symmetry), + d_dimensionality(dimensionality) +{ + if (pre_diff_code.size() == 0) + d_apply_pre_diff_code = false; + else if (pre_diff_code.size() != constellation.size()) + throw std::runtime_error ("The constellation and pre-diff code must be of the same length."); + else + d_apply_pre_diff_code = true; + calc_arity(); +} + +gr_constellation::gr_constellation () : + d_apply_pre_diff_code(false), + d_rotational_symmetry(0), + d_dimensionality(1) +{ + calc_arity(); +} + +//! Returns the constellation points for a symbol value +void gr_constellation::map_to_points(unsigned int value, gr_complex *points) { + for (unsigned int i=0; i gr_constellation::map_to_points_v(unsigned int value) { + std::vector points_v; + points_v.resize(d_dimensionality); + map_to_points(value, &(points_v[0])); + return points_v; +} + +float gr_constellation::get_distance(unsigned int index, const gr_complex *sample) { + float dist = 0; + for (unsigned int i=0; i gr_constellation::s_points () { + if (d_dimensionality != 1) + throw std::runtime_error ("s_points only works for dimensionality 1 constellations."); + else + return d_constellation; +} + +std::vector > gr_constellation::v_points () { + std::vector > vv_const; + vv_const.resize(d_arity); + for (unsigned int p=0; p v_const; + v_const.resize(d_dimensionality); + for (unsigned int d=0; d sample) { + assert(sample.size() == d_dimensionality); + return decision_maker (&(sample[0])); +} + +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality) +{ + return gr_constellation_calcdist_sptr(new gr_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, + dimensionality)); +} + +gr_constellation_calcdist::gr_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality) : + gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) +{} + +// Chooses points base on shortest distance. +// Inefficient. +unsigned int gr_constellation_calcdist::decision_maker(const gr_complex *sample) +{ + return get_closest_point(sample); +} + +gr_constellation_sector::gr_constellation_sector (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality, + unsigned int n_sectors) : + gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), + n_sectors(n_sectors) +{ +} + +unsigned int gr_constellation_sector::decision_maker (const gr_complex *sample) { + unsigned int sector; + sector = get_sector(sample); + return sector_values[sector]; +} + +void gr_constellation_sector::find_sector_values () { + unsigned int i; + sector_values.clear(); + for (i=0; i constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) +{ + return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, rotational_symmetry, + real_sectors, imag_sectors, width_real_sectors, + width_imag_sectors)); + } + +gr_constellation_rect::gr_constellation_rect (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) : + gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), + n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), + d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) +{ + find_sector_values(); +} + +unsigned int gr_constellation_rect::get_sector (const gr_complex *sample) { + int real_sector, imag_sector; + unsigned int sector; + real_sector = int(real(*sample)/d_width_real_sectors + n_real_sectors/2.0); + if (real_sector < 0) real_sector = 0; + if (real_sector >= n_real_sectors) real_sector = n_real_sectors-1; + imag_sector = int(imag(*sample)/d_width_imag_sectors + n_imag_sectors/2.0); + if (imag_sector < 0) imag_sector = 0; + if (imag_sector >= n_imag_sectors) imag_sector = n_imag_sectors-1; + sector = real_sector * n_imag_sectors + imag_sector; + return sector; +} + +unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { + unsigned int real_sector, imag_sector; + gr_complex sector_center; + unsigned int closest_point; + real_sector = float(sector)/n_imag_sectors; + imag_sector = sector - real_sector * n_imag_sectors; + sector_center = gr_complex((real_sector + 0.5 - n_real_sectors/2.0) * d_width_real_sectors, + (imag_sector + 0.5 - n_imag_sectors/2.0) * d_width_imag_sectors); + closest_point = get_closest_point(§or_center); + return closest_point; +} + + +gr_constellation_psk_sptr +gr_make_constellation_psk(std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors) +{ + return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, + n_sectors)); +} + +gr_constellation_psk::gr_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors) : + gr_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) +{ + find_sector_values(); +} + +unsigned int gr_constellation_psk::get_sector (const gr_complex *sample) { + float phase = arg(*sample); + float width = M_TWOPI / n_sectors; + int sector = floor(phase/width + 0.5); + unsigned int u_sector; + if (sector < 0) sector += n_sectors; + u_sector = sector; + return sector; +} + +unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { + float phase = sector * M_TWOPI / n_sectors; + gr_complex sector_center = gr_complex(cos(phase), sin(phase)); + unsigned int closest_point = get_closest_point(§or_center); + return closest_point; +} + + +gr_constellation_bpsk_sptr +gr_make_constellation_bpsk() +{ + return gr_constellation_bpsk_sptr(new gr_constellation_bpsk ()); +} + +gr_constellation_bpsk::gr_constellation_bpsk () +{ + d_constellation.resize(2); + d_constellation[0] = gr_complex(-1, 0); + d_constellation[1] = gr_complex(1, 0); + d_rotational_symmetry = 2; + d_dimensionality = 1; + calc_arity(); +} + +unsigned int gr_constellation_bpsk::decision_maker(const gr_complex *sample) +{ + return (real(*sample) > 0); +} + + +gr_constellation_qpsk_sptr +gr_make_constellation_qpsk() +{ + return gr_constellation_qpsk_sptr(new gr_constellation_qpsk ()); +} + +gr_constellation_qpsk::gr_constellation_qpsk () +{ + d_constellation.resize(4); + // Gray-coded + d_constellation[0] = gr_complex(-SQRT_TWO, -SQRT_TWO); + d_constellation[1] = gr_complex(SQRT_TWO, -SQRT_TWO); + d_constellation[2] = gr_complex(-SQRT_TWO, SQRT_TWO); + d_constellation[3] = gr_complex(SQRT_TWO, SQRT_TWO); + d_rotational_symmetry = 4; + d_dimensionality = 1; + calc_arity(); +} + +unsigned int gr_constellation_qpsk::decision_maker(const gr_complex *sample) +{ + // Real component determines small bit. + // Imag component determines big bit. + return 2*(imag(*sample)>0) + (real(*sample)>0); +} diff --git a/gr-digital/lib/digital_constellation.h b/gr-digital/lib/digital_constellation.h new file mode 100644 index 000000000..f6726a9b5 --- /dev/null +++ b/gr-digital/lib/digital_constellation.h @@ -0,0 +1,322 @@ +/* -*- c++ -*- */ +/* + * 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. + */ + +#ifndef INCLUDED_GR_CONSTELLATION_H +#define INCLUDED_GR_CONSTELLATION_H + +#include +#include +#include +#include +#include + +/************************************************************/ +/* gr_constellation */ +/* */ +/* Base class defining interface. */ +/************************************************************/ + +class gr_constellation; +typedef boost::shared_ptr gr_constellation_sptr; + +class gr_constellation : public boost::enable_shared_from_this +{ +public: + gr_constellation (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality); + gr_constellation (); + + //! Returns the constellation points for a symbol value + void map_to_points(unsigned int value, gr_complex *points); + std::vector map_to_points_v(unsigned int value); + + //! Returns the constellation point that matches best. + virtual unsigned int decision_maker (const gr_complex *sample) = 0; + //! Takes a vector rather than a pointer. Better for SWIG wrapping. + unsigned int decision_maker_v (std::vector sample); + //! Also calculates the phase error. + unsigned int decision_maker_pe (const gr_complex *sample, float *phase_error); + //! Calculates distance. + unsigned int decision_maker_e (const gr_complex *sample, float *error); + + //! Calculates metrics for all points in the constellation. + //! For use with the viterbi algorithm. + virtual void calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type); + virtual void calc_euclidean_metric(const gr_complex *sample, float *metric); + virtual void calc_hard_symbol_metric(const gr_complex *sample, float *metric); + + //! Returns the set of points in this constellation. + std::vector points() { return d_constellation;} + //! Returns the vector of points in this constellation. + //! Raise error if dimensionality is not one. + std::vector s_points(); + //! Returns a vector of vectors of points. + std::vector > v_points(); + //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding) + bool apply_pre_diff_code() { return d_apply_pre_diff_code;} + //! Returns the encoding to apply before differential encoding. + std::vector pre_diff_code() { return d_pre_diff_code;} + //! Returns the order of rotational symmetry. + unsigned int rotational_symmetry() { return d_rotational_symmetry;} + //! Returns the number of complex numbers in a single symbol. + unsigned int dimensionality() {return d_dimensionality;} + + unsigned int bits_per_symbol () { + return floor(log(d_constellation.size())/d_dimensionality/log(2)); + } + + unsigned int arity () { + return d_arity; + } + + gr_constellation_sptr base() { + return shared_from_this(); + } + + protected: + + std::vector d_constellation; + std::vector d_pre_diff_code; + bool d_apply_pre_diff_code; + unsigned int d_rotational_symmetry; + unsigned int d_dimensionality; + unsigned int d_arity; + + float get_distance(unsigned int index, const gr_complex *sample); + unsigned int get_closest_point(const gr_complex *sample); + void calc_arity (); +}; + +/************************************************************/ +/* gr_constellation_calcdist */ +/* */ +/* Constellation which calculates the distance to each */ +/* point in the constellation for decision making. */ +/* Inefficient for large constellations. */ +/************************************************************/ + +class gr_constellation_calcdist; +typedef boost::shared_ptr gr_constellation_calcdist_sptr; + +// public constructor +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, unsigned int dimensionality); + + +class gr_constellation_calcdist : public gr_constellation +{ + public: + gr_constellation_calcdist (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); + unsigned int decision_maker (const gr_complex *sample); + // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); + // void calc_euclidean_metric(gr_complex *sample, float *metric); + // void calc_hard_symbol_metric(gr_complex *sample, float *metric); + + private: + friend gr_constellation_calcdist_sptr + gr_make_constellation_calcdist (std::vector constellation); +}; + +/************************************************************/ +/* gr_constellation_sector */ +/* */ +/* An abstract class. */ +/* Constellation space is divided into sectors. */ +/* Each sector is associated with the nearest constellation */ +/* point. */ +/************************************************************/ + +class gr_constellation_sector : public gr_constellation +{ + public: + + gr_constellation_sector (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality, + unsigned int n_sectors); + + unsigned int decision_maker (const gr_complex *sample); + + protected: + + virtual unsigned int get_sector (const gr_complex *sample) = 0; + virtual unsigned int calc_sector_value (unsigned int sector) = 0; + void find_sector_values (); + + unsigned int n_sectors; + + private: + + std::vector sector_values; + +}; + +/************************************************************/ +/* gr_constellation_rect */ +/* */ +/* Only implemented for 1-(complex)dimensional */ +/* constellation. */ +/* Constellation space is divided into rectangular sectors. */ +/* Each sector is associated with the nearest constellation */ +/* point. */ +/* Works well for square QAM. */ +/* Works for any generic constellation provided sectors are */ +/* not too large. */ +/************************************************************/ + +class gr_constellation_rect; +typedef boost::shared_ptr gr_constellation_rect_sptr; + +// public constructor +gr_constellation_rect_sptr +gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + +class gr_constellation_rect : public gr_constellation_sector +{ + public: + + gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + + protected: + + unsigned int get_sector (const gr_complex *sample); + + unsigned int calc_sector_value (unsigned int sector); + + private: + + unsigned int n_real_sectors; + unsigned int n_imag_sectors; + float d_width_real_sectors; + float d_width_imag_sectors; + + friend gr_constellation_rect_sptr + gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); + +}; + +/************************************************************/ +/* gr_constellation_psk */ +/* */ +/* Constellation space is divided into pie slices sectors. */ +/* Each slice is associated with the nearest constellation */ +/* point. */ +/* Works well for PSK but nothing else. */ +/* Assumes that there is a constellation point at 1. */ +/************************************************************/ + +class gr_constellation_psk; +typedef boost::shared_ptr gr_constellation_psk_sptr; + +// public constructor +gr_constellation_psk_sptr +gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); + +class gr_constellation_psk : public gr_constellation_sector +{ + public: + + gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); + + protected: + + unsigned int get_sector (const gr_complex *sample); + + unsigned int calc_sector_value (unsigned int sector); + + private: + + friend gr_constellation_psk_sptr + gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, + unsigned int n_sectors); + +}; + +/************************************************************/ +/* gr_constellation_bpsk */ +/* */ +/* Only works for BPSK. */ +/* */ +/************************************************************/ + +class gr_constellation_bpsk; +typedef boost::shared_ptr gr_constellation_bpsk_sptr; + +// public constructor +gr_constellation_bpsk_sptr +gr_make_constellation_bpsk (); + +class gr_constellation_bpsk : public gr_constellation +{ + public: + + gr_constellation_bpsk (); + unsigned int decision_maker (const gr_complex *sample); + + friend gr_constellation_bpsk_sptr + gr_make_constellation_bpsk (); + +}; + +/************************************************************/ +/* gr_constellation_qpsk */ +/* */ +/* Only works for QPSK. */ +/* */ +/************************************************************/ + +class gr_constellation_qpsk; +typedef boost::shared_ptr gr_constellation_qpsk_sptr; + +// public constructor +gr_constellation_qpsk_sptr +gr_make_constellation_qpsk (); + +class gr_constellation_qpsk : public gr_constellation +{ + public: + + gr_constellation_qpsk (); + unsigned int decision_maker (const gr_complex *sample); + + friend gr_constellation_qpsk_sptr + gr_make_constellation_qpsk (); + +}; + +#endif diff --git a/gr-digital/swig/digital_constellation.i b/gr-digital/swig/digital_constellation.i new file mode 100644 index 000000000..179e68136 --- /dev/null +++ b/gr-digital/swig/digital_constellation.i @@ -0,0 +1,146 @@ +/* -*- c++ -*- */ +/* + * 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. + */ + +%template(gr_complex_vector) std::vector; +%template(unsigned_int_vector) std::vector; + +// Make sure metric types get SWIGed. +%include gr_metric_type.h + +class gr_constellation; +typedef boost::shared_ptr gr_constellation_sptr; +%template(gr_constellation_sptr) boost::shared_ptr; + +class gr_constellation +{ +public: + gr_constellation (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); + std::vector points(); + std::vector s_points(); + std::vector > v_points(); + virtual unsigned int decision_maker (gr_complex *sample) = 0; + unsigned int decision_maker_v (std::vector sample); + // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type); + // void calc_euclidean_metric(gr_complex *sample, float *metric); + // void calc_hard_symbol_metric(gr_complex *sample, float *metric); + std::vector map_to_points_v(unsigned int value); + unsigned int bits_per_symbol (); + unsigned int arity (); + gr_constellation_sptr base (); + bool apply_pre_diff_code(); + std::vector pre_diff_code(); + unsigned int rotational_symmetry(); + unsigned int dimensionality(); +}; + +class gr_constellation_calcdist; +typedef boost::shared_ptr gr_constellation_calcdist_sptr; +%template(gr_constellation_calcdist_sptr) boost::shared_ptr; +%rename(constellation_calcdist) gr_make_constellation_calcdist; +gr_constellation_calcdist_sptr +gr_make_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); +%ignore gr_constellation_calcdist; + +class gr_constellation_calcdist: public gr_constellation +{ + public: + gr_constellation_calcdist (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); + unsigned int decision_maker (const gr_complex *sample); +}; + +class gr_constellation_sector: public gr_constellation +{ +}; + +class gr_constellation_rect; +typedef boost::shared_ptr gr_constellation_rect_sptr; +%template(gr_constellation_rect_sptr) boost::shared_ptr; +%rename(constellation_rect) gr_make_constellation_rect; +gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); +%ignore gr_constellation_rect; + +class gr_constellation_rect : public gr_constellation_sector +{ +public: + gr_constellation_rect (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); +}; + +class gr_constellation_psk; +typedef boost::shared_ptr gr_constellation_psk_sptr; +%template(gr_constellation_psk_sptr) boost::shared_ptr; +%rename(constellation_psk) gr_make_constellation_psk; +gr_constellation_psk_sptr gr_make_constellation_psk(std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); +%ignore gr_constellation_psk; + +class gr_constellation_psk : public gr_constellation_sector +{ +public: + gr_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); +}; + +class gr_constellation_bpsk; +typedef boost::shared_ptr gr_constellation_bpsk_sptr; +%template(gr_constellation_bpsk_sptr) boost::shared_ptr; +%rename(constellation_bpsk) gr_make_constellation_bpsk; +gr_constellation_bpsk_sptr gr_make_constellation_bpsk(); +%ignore gr_constellation_bpsk; + +class gr_constellation_bpsk : public gr_constellation +{ +public: + gr_constellation_bpsk (); +}; + +class gr_constellation_qpsk; +typedef boost::shared_ptr gr_constellation_qpsk_sptr; +%template(gr_constellation_qpsk_sptr) boost::shared_ptr; +%rename(constellation_qpsk) gr_make_constellation_qpsk; +gr_constellation_qpsk_sptr gr_make_constellation_qpsk(); +%ignore gr_constellation_qpsk; + +class gr_constellation_qpsk : public gr_constellation +{ +public: + gr_constellation_qpsk (); +}; + -- cgit From c6d7be41abc63a9e5b52a12ef05d578f09797054 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 8 Apr 2011 21:44:52 -0400 Subject: gr-digital: updating build for consetellation object move. --- gnuradio-core/src/lib/general/Makefile.am | 12 -- gnuradio-core/src/lib/general/general.i | 10 +- .../lib/general/gr_constellation_receiver_cb.cc | 1 - .../src/lib/general/gr_constellation_receiver_cb.h | 2 +- gr-digital/lib/Makefile.am | 2 + gr-digital/lib/digital_constellation.cc | 104 +++++++-------- gr-digital/lib/digital_constellation.h | 114 ++++++++--------- gr-digital/swig/Makefile.am | 1 + gr-digital/swig/digital_constellation.i | 142 ++++++++++----------- gr-digital/swig/digital_swig.i | 2 + 10 files changed, 189 insertions(+), 201 deletions(-) diff --git a/gnuradio-core/src/lib/general/Makefile.am b/gnuradio-core/src/lib/general/Makefile.am index 3b8997d8c..de1e50f0e 100644 --- a/gnuradio-core/src/lib/general/Makefile.am +++ b/gnuradio-core/src/lib/general/Makefile.am @@ -56,10 +56,7 @@ libgeneral_la_SOURCES = \ gr_complex_to_xxx.cc \ gr_conjugate_cc.cc \ gr_copy.cc \ - gr_constellation.cc \ gr_constellation_decoder_cb.cc \ - gr_constellation_decoder2_cb.cc \ - gr_constellation_receiver_cb.cc \ gr_correlate_access_code_bb.cc \ gr_costas_loop_cc.cc \ gr_count_bits.cc \ @@ -114,7 +111,6 @@ libgeneral_la_SOURCES = \ gr_ofdm_demapper_vcb.cc \ gr_ofdm_mapper_bcv.cc \ gr_ofdm_frame_sink.cc \ - gr_ofdm_frame_sink2.cc \ gr_ofdm_insert_preamble.cc \ gr_ofdm_sampler.cc \ gr_pa_2x2_phase_combiner.cc \ @@ -217,10 +213,7 @@ grinclude_HEADERS = \ gr_complex_to_interleaved_short.h \ gr_complex_to_xxx.h \ gr_conjugate_cc.h \ - gr_constellation.h \ gr_constellation_decoder_cb.h \ - gr_constellation_decoder2_cb.h \ - gr_constellation_receiver_cb.h \ gr_copy.h \ gr_correlate_access_code_bb.h \ gr_costas_loop_cc.h \ @@ -281,7 +274,6 @@ grinclude_HEADERS = \ gr_ofdm_demapper_vcb.h \ gr_ofdm_mapper_bcv.h \ gr_ofdm_frame_sink.h \ - gr_ofdm_frame_sink2.h \ gr_ofdm_insert_preamble.h \ gr_ofdm_sampler.h \ gr_pa_2x2_phase_combiner.h \ @@ -396,10 +388,7 @@ swiginclude_HEADERS = \ gr_complex_to_interleaved_short.i \ gr_complex_to_xxx.i \ gr_conjugate_cc.i \ - gr_constellation.i \ gr_constellation_decoder_cb.i \ - gr_constellation_decoder2_cb.i \ - gr_constellation_receiver_cb.i \ gr_copy.i \ gr_correlate_access_code_bb.i \ gr_costas_loop_cc.i \ @@ -450,7 +439,6 @@ swiginclude_HEADERS = \ gr_ofdm_demapper_vcb.i \ gr_ofdm_mapper_bcv.i \ gr_ofdm_frame_sink.i \ - gr_ofdm_frame_sink2.i \ gr_ofdm_insert_preamble.i \ gr_ofdm_sampler.i \ gr_pa_2x2_phase_combiner.i \ diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i index d9648ef64..5a5534129 100644 --- a/gnuradio-core/src/lib/general/general.i +++ b/gnuradio-core/src/lib/general/general.i @@ -70,8 +70,6 @@ #include #include #include -#include -#include #include #include #include @@ -100,7 +98,7 @@ #include #include #include -#include + //#include #include #include #include @@ -115,7 +113,6 @@ #include #include #include -#include #include #include #include @@ -200,8 +197,6 @@ %include "gr_fake_channel_coder_pp.i" %include "gr_throttle.i" %include "gr_mpsk_receiver_cc.i" -%include "gr_constellation_receiver_cb.i" -%include "gr_constellation.i" %include "gr_stream_mux.i" %include "gr_stream_to_streams.i" %include "gr_streams_to_stream.i" @@ -230,7 +225,7 @@ %include "gr_ofdm_cyclic_prefixer.i" %include "gr_ofdm_mapper_bcv.i" %include "gr_ofdm_frame_sink.i" -%include "gr_ofdm_frame_sink2.i" + //%include "gr_ofdm_frame_sink2.i" %include "gr_ofdm_insert_preamble.i" %include "gr_ofdm_sampler.i" %include "gr_regenerate_bb.i" @@ -245,7 +240,6 @@ %include "gr_correlate_access_code_bb.i" %include "gr_diff_phasor_cc.i" %include "gr_constellation_decoder_cb.i" -%include "gr_constellation_decoder2_cb.i" %include "gr_binary_slicer_fb.i" %include "gr_diff_encoder_bb.i" %include "gr_diff_decoder_bb.i" diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc index c1b56f44f..be6d3bfe4 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.cc @@ -26,7 +26,6 @@ #include #include -#include #include #include #include diff --git a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h index 80ffcc873..c5670e839 100644 --- a/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h +++ b/gnuradio-core/src/lib/general/gr_constellation_receiver_cb.h @@ -24,7 +24,7 @@ #define INCLUDED_GR_CONSTELLATION_RECEIVER_CB_H #include -#include +#include #include #include #include diff --git a/gr-digital/lib/Makefile.am b/gr-digital/lib/Makefile.am index 7113f94d2..6f641b745 100644 --- a/gr-digital/lib/Makefile.am +++ b/gr-digital/lib/Makefile.am @@ -25,6 +25,7 @@ AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) $(WITH_INCLUDES) # These headers get installed in ${prefix}/include/gnuradio grinclude_HEADERS = \ + digital_constellation.h \ digital_costas_loop_cc.h \ digital_cma_equalizer_cc.h \ digital_kurtotic_equalizer_cc.h @@ -32,6 +33,7 @@ grinclude_HEADERS = \ lib_LTLIBRARIES = libgnuradio-digital.la libgnuradio_digital_la_SOURCES = \ + digital_constellation.cc \ digital_costas_loop_cc.cc \ digital_cma_equalizer_cc.cc \ digital_kurtotic_equalizer_cc.cc diff --git a/gr-digital/lib/digital_constellation.cc b/gr-digital/lib/digital_constellation.cc index eede99ffd..804a65ac8 100644 --- a/gr-digital/lib/digital_constellation.cc +++ b/gr-digital/lib/digital_constellation.cc @@ -21,7 +21,7 @@ */ #include -#include +#include #include #include #include @@ -36,8 +36,10 @@ // Base Constellation Class -gr_constellation::gr_constellation (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality) : +digital_constellation::digital_constellation (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality) : d_constellation(constellation), d_pre_diff_code(pre_diff_code), d_rotational_symmetry(rotational_symmetry), @@ -52,7 +54,7 @@ gr_constellation::gr_constellation (std::vector constellation, std:: calc_arity(); } -gr_constellation::gr_constellation () : +digital_constellation::digital_constellation () : d_apply_pre_diff_code(false), d_rotational_symmetry(0), d_dimensionality(1) @@ -61,19 +63,19 @@ gr_constellation::gr_constellation () : } //! Returns the constellation points for a symbol value -void gr_constellation::map_to_points(unsigned int value, gr_complex *points) { +void digital_constellation::map_to_points(unsigned int value, gr_complex *points) { for (unsigned int i=0; i gr_constellation::map_to_points_v(unsigned int value) { +std::vector digital_constellation::map_to_points_v(unsigned int value) { std::vector points_v; points_v.resize(d_dimensionality); map_to_points(value, &(points_v[0])); return points_v; } -float gr_constellation::get_distance(unsigned int index, const gr_complex *sample) { +float digital_constellation::get_distance(unsigned int index, const gr_complex *sample) { float dist = 0; for (unsigned int i=0; i gr_constellation::s_points () { +std::vector digital_constellation::s_points () { if (d_dimensionality != 1) throw std::runtime_error ("s_points only works for dimensionality 1 constellations."); else return d_constellation; } -std::vector > gr_constellation::v_points () { +std::vector > digital_constellation::v_points () { std::vector > vv_const; vv_const.resize(d_arity); for (unsigned int p=0; p > gr_constellation::v_points () { return vv_const; } -void gr_constellation::calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type) { +void digital_constellation::calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type) { switch (type){ case TRELLIS_EUCLIDEAN: calc_euclidean_metric(sample, metric); @@ -156,13 +158,13 @@ void gr_constellation::calc_metric(const gr_complex *sample, float *metric, trel } } -void gr_constellation::calc_euclidean_metric(const gr_complex *sample, float *metric) { +void digital_constellation::calc_euclidean_metric(const gr_complex *sample, float *metric) { for (unsigned int o=0; o sample) { +unsigned int digital_constellation::decision_maker_v (std::vector sample) { assert(sample.size() == d_dimensionality); return decision_maker (&(sample[0])); } -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, +digital_constellation_calcdist_sptr +digital_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality) { - return gr_constellation_calcdist_sptr(new gr_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, + return digital_constellation_calcdist_sptr(new digital_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, dimensionality)); } -gr_constellation_calcdist::gr_constellation_calcdist(std::vector constellation, +digital_constellation_calcdist::digital_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality) : - gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) + digital_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) {} // Chooses points base on shortest distance. // Inefficient. -unsigned int gr_constellation_calcdist::decision_maker(const gr_complex *sample) +unsigned int digital_constellation_calcdist::decision_maker(const gr_complex *sample) { return get_closest_point(sample); } -gr_constellation_sector::gr_constellation_sector (std::vector constellation, +digital_constellation_sector::digital_constellation_sector (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality, unsigned int n_sectors) : - gr_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), + digital_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), n_sectors(n_sectors) { } -unsigned int gr_constellation_sector::decision_maker (const gr_complex *sample) { +unsigned int digital_constellation_sector::decision_maker (const gr_complex *sample) { unsigned int sector; sector = get_sector(sample); return sector_values[sector]; } -void gr_constellation_sector::find_sector_values () { +void digital_constellation_sector::find_sector_values () { unsigned int i; sector_values.clear(); for (i=0; i constellation, +digital_constellation_rect_sptr +digital_make_constellation_rect(std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) { - return gr_constellation_rect_sptr(new gr_constellation_rect (constellation, pre_diff_code, rotational_symmetry, + return digital_constellation_rect_sptr(new digital_constellation_rect (constellation, pre_diff_code, rotational_symmetry, real_sectors, imag_sectors, width_real_sectors, width_imag_sectors)); } -gr_constellation_rect::gr_constellation_rect (std::vector constellation, +digital_constellation_rect::digital_constellation_rect (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors) : - gr_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), + digital_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) { find_sector_values(); } -unsigned int gr_constellation_rect::get_sector (const gr_complex *sample) { +unsigned int digital_constellation_rect::get_sector (const gr_complex *sample) { int real_sector, imag_sector; unsigned int sector; real_sector = int(real(*sample)/d_width_real_sectors + n_real_sectors/2.0); @@ -271,7 +273,7 @@ unsigned int gr_constellation_rect::get_sector (const gr_complex *sample) { return sector; } -unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { +unsigned int digital_constellation_rect::calc_sector_value (unsigned int sector) { unsigned int real_sector, imag_sector; gr_complex sector_center; unsigned int closest_point; @@ -284,24 +286,24 @@ unsigned int gr_constellation_rect::calc_sector_value (unsigned int sector) { } -gr_constellation_psk_sptr -gr_make_constellation_psk(std::vector constellation, +digital_constellation_psk_sptr +digital_make_constellation_psk(std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors) { - return gr_constellation_psk_sptr(new gr_constellation_psk (constellation, pre_diff_code, + return digital_constellation_psk_sptr(new digital_constellation_psk (constellation, pre_diff_code, n_sectors)); } -gr_constellation_psk::gr_constellation_psk (std::vector constellation, +digital_constellation_psk::digital_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors) : - gr_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) + digital_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) { find_sector_values(); } -unsigned int gr_constellation_psk::get_sector (const gr_complex *sample) { +unsigned int digital_constellation_psk::get_sector (const gr_complex *sample) { float phase = arg(*sample); float width = M_TWOPI / n_sectors; int sector = floor(phase/width + 0.5); @@ -311,7 +313,7 @@ unsigned int gr_constellation_psk::get_sector (const gr_complex *sample) { return sector; } -unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { +unsigned int digital_constellation_psk::calc_sector_value (unsigned int sector) { float phase = sector * M_TWOPI / n_sectors; gr_complex sector_center = gr_complex(cos(phase), sin(phase)); unsigned int closest_point = get_closest_point(§or_center); @@ -319,13 +321,13 @@ unsigned int gr_constellation_psk::calc_sector_value (unsigned int sector) { } -gr_constellation_bpsk_sptr -gr_make_constellation_bpsk() +digital_constellation_bpsk_sptr +digital_make_constellation_bpsk() { - return gr_constellation_bpsk_sptr(new gr_constellation_bpsk ()); + return digital_constellation_bpsk_sptr(new digital_constellation_bpsk ()); } -gr_constellation_bpsk::gr_constellation_bpsk () +digital_constellation_bpsk::digital_constellation_bpsk () { d_constellation.resize(2); d_constellation[0] = gr_complex(-1, 0); @@ -335,19 +337,19 @@ gr_constellation_bpsk::gr_constellation_bpsk () calc_arity(); } -unsigned int gr_constellation_bpsk::decision_maker(const gr_complex *sample) +unsigned int digital_constellation_bpsk::decision_maker(const gr_complex *sample) { return (real(*sample) > 0); } -gr_constellation_qpsk_sptr -gr_make_constellation_qpsk() +digital_constellation_qpsk_sptr +digital_make_constellation_qpsk() { - return gr_constellation_qpsk_sptr(new gr_constellation_qpsk ()); + return digital_constellation_qpsk_sptr(new digital_constellation_qpsk ()); } -gr_constellation_qpsk::gr_constellation_qpsk () +digital_constellation_qpsk::digital_constellation_qpsk () { d_constellation.resize(4); // Gray-coded @@ -360,7 +362,7 @@ gr_constellation_qpsk::gr_constellation_qpsk () calc_arity(); } -unsigned int gr_constellation_qpsk::decision_maker(const gr_complex *sample) +unsigned int digital_constellation_qpsk::decision_maker(const gr_complex *sample) { // Real component determines small bit. // Imag component determines big bit. diff --git a/gr-digital/lib/digital_constellation.h b/gr-digital/lib/digital_constellation.h index f6726a9b5..73cc888f9 100644 --- a/gr-digital/lib/digital_constellation.h +++ b/gr-digital/lib/digital_constellation.h @@ -20,8 +20,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef INCLUDED_GR_CONSTELLATION_H -#define INCLUDED_GR_CONSTELLATION_H +#ifndef INCLUDED_DIGITAL_CONSTELLATION_H +#define INCLUDED_DIGITAL_CONSTELLATION_H #include #include @@ -30,20 +30,20 @@ #include /************************************************************/ -/* gr_constellation */ +/* digital_constellation */ /* */ /* Base class defining interface. */ /************************************************************/ -class gr_constellation; -typedef boost::shared_ptr gr_constellation_sptr; +class digital_constellation; +typedef boost::shared_ptr digital_constellation_sptr; -class gr_constellation : public boost::enable_shared_from_this +class digital_constellation : public boost::enable_shared_from_this { public: - gr_constellation (std::vector constellation, std::vector pre_diff_code, + digital_constellation (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality); - gr_constellation (); + digital_constellation (); //! Returns the constellation points for a symbol value void map_to_points(unsigned int value, gr_complex *points); @@ -88,7 +88,7 @@ public: return d_arity; } - gr_constellation_sptr base() { + digital_constellation_sptr base() { return shared_from_this(); } @@ -107,26 +107,26 @@ public: }; /************************************************************/ -/* gr_constellation_calcdist */ +/* digital_constellation_calcdist */ /* */ /* Constellation which calculates the distance to each */ /* point in the constellation for decision making. */ /* Inefficient for large constellations. */ /************************************************************/ -class gr_constellation_calcdist; -typedef boost::shared_ptr gr_constellation_calcdist_sptr; +class digital_constellation_calcdist; +typedef boost::shared_ptr digital_constellation_calcdist_sptr; // public constructor -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, +digital_constellation_calcdist_sptr +digital_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality); -class gr_constellation_calcdist : public gr_constellation +class digital_constellation_calcdist : public digital_constellation { public: - gr_constellation_calcdist (std::vector constellation, + digital_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality); @@ -136,12 +136,12 @@ class gr_constellation_calcdist : public gr_constellation // void calc_hard_symbol_metric(gr_complex *sample, float *metric); private: - friend gr_constellation_calcdist_sptr - gr_make_constellation_calcdist (std::vector constellation); + friend digital_constellation_calcdist_sptr + digital_make_constellation_calcdist (std::vector constellation); }; /************************************************************/ -/* gr_constellation_sector */ +/* digital_constellation_sector */ /* */ /* An abstract class. */ /* Constellation space is divided into sectors. */ @@ -149,11 +149,11 @@ class gr_constellation_calcdist : public gr_constellation /* point. */ /************************************************************/ -class gr_constellation_sector : public gr_constellation +class digital_constellation_sector : public digital_constellation { public: - gr_constellation_sector (std::vector constellation, + digital_constellation_sector (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality, @@ -176,7 +176,7 @@ class gr_constellation_sector : public gr_constellation }; /************************************************************/ -/* gr_constellation_rect */ +/* digital_constellation_rect */ /* */ /* Only implemented for 1-(complex)dimensional */ /* constellation. */ @@ -188,21 +188,21 @@ class gr_constellation_sector : public gr_constellation /* not too large. */ /************************************************************/ -class gr_constellation_rect; -typedef boost::shared_ptr gr_constellation_rect_sptr; +class digital_constellation_rect; +typedef boost::shared_ptr digital_constellation_rect_sptr; // public constructor -gr_constellation_rect_sptr -gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, +digital_constellation_rect_sptr +digital_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); -class gr_constellation_rect : public gr_constellation_sector +class digital_constellation_rect : public digital_constellation_sector { public: - gr_constellation_rect (std::vector constellation, std::vector pre_diff_code, + digital_constellation_rect (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); @@ -220,8 +220,8 @@ class gr_constellation_rect : public gr_constellation_sector float d_width_real_sectors; float d_width_imag_sectors; - friend gr_constellation_rect_sptr - gr_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, + friend digital_constellation_rect_sptr + digital_make_constellation_rect (std::vector constellation, std::vector pre_diff_code, unsigned int rotational_symmetry, unsigned int real_sectors, unsigned int imag_sectors, float width_real_sectors, float width_imag_sectors); @@ -229,7 +229,7 @@ class gr_constellation_rect : public gr_constellation_sector }; /************************************************************/ -/* gr_constellation_psk */ +/* digital_constellation_psk */ /* */ /* Constellation space is divided into pie slices sectors. */ /* Each slice is associated with the nearest constellation */ @@ -238,19 +238,19 @@ class gr_constellation_rect : public gr_constellation_sector /* Assumes that there is a constellation point at 1. */ /************************************************************/ -class gr_constellation_psk; -typedef boost::shared_ptr gr_constellation_psk_sptr; +class digital_constellation_psk; +typedef boost::shared_ptr digital_constellation_psk_sptr; // public constructor -gr_constellation_psk_sptr -gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, +digital_constellation_psk_sptr +digital_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors); -class gr_constellation_psk : public gr_constellation_sector +class digital_constellation_psk : public digital_constellation_sector { public: - gr_constellation_psk (std::vector constellation, std::vector pre_diff_code, + digital_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors); protected: @@ -261,61 +261,61 @@ class gr_constellation_psk : public gr_constellation_sector private: - friend gr_constellation_psk_sptr - gr_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, + friend digital_constellation_psk_sptr + digital_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, unsigned int n_sectors); }; /************************************************************/ -/* gr_constellation_bpsk */ +/* digital_constellation_bpsk */ /* */ /* Only works for BPSK. */ /* */ /************************************************************/ -class gr_constellation_bpsk; -typedef boost::shared_ptr gr_constellation_bpsk_sptr; +class digital_constellation_bpsk; +typedef boost::shared_ptr digital_constellation_bpsk_sptr; // public constructor -gr_constellation_bpsk_sptr -gr_make_constellation_bpsk (); +digital_constellation_bpsk_sptr +digital_make_constellation_bpsk (); -class gr_constellation_bpsk : public gr_constellation +class digital_constellation_bpsk : public digital_constellation { public: - gr_constellation_bpsk (); + digital_constellation_bpsk (); unsigned int decision_maker (const gr_complex *sample); - friend gr_constellation_bpsk_sptr - gr_make_constellation_bpsk (); + friend digital_constellation_bpsk_sptr + digital_make_constellation_bpsk (); }; /************************************************************/ -/* gr_constellation_qpsk */ +/* digital_constellation_qpsk */ /* */ /* Only works for QPSK. */ /* */ /************************************************************/ -class gr_constellation_qpsk; -typedef boost::shared_ptr gr_constellation_qpsk_sptr; +class digital_constellation_qpsk; +typedef boost::shared_ptr digital_constellation_qpsk_sptr; // public constructor -gr_constellation_qpsk_sptr -gr_make_constellation_qpsk (); +digital_constellation_qpsk_sptr +digital_make_constellation_qpsk (); -class gr_constellation_qpsk : public gr_constellation +class digital_constellation_qpsk : public digital_constellation { public: - gr_constellation_qpsk (); + digital_constellation_qpsk (); unsigned int decision_maker (const gr_complex *sample); - friend gr_constellation_qpsk_sptr - gr_make_constellation_qpsk (); + friend digital_constellation_qpsk_sptr + digital_make_constellation_qpsk (); }; diff --git a/gr-digital/swig/Makefile.am b/gr-digital/swig/Makefile.am index d06da3a26..edbda6bda 100644 --- a/gr-digital/swig/Makefile.am +++ b/gr-digital/swig/Makefile.am @@ -57,6 +57,7 @@ digital_swig_la_swig_libadd = \ # additional SWIG files to be installed digital_swig_swiginclude_headers = \ + digital_constellation.i \ digital_costas_loop_cc.i \ digital_cma_equalizer_cc.i \ digital_kurtotic_equalizer_cc.i diff --git a/gr-digital/swig/digital_constellation.i b/gr-digital/swig/digital_constellation.i index 179e68136..0eb0c59e2 100644 --- a/gr-digital/swig/digital_constellation.i +++ b/gr-digital/swig/digital_constellation.i @@ -26,17 +26,17 @@ // Make sure metric types get SWIGed. %include gr_metric_type.h -class gr_constellation; -typedef boost::shared_ptr gr_constellation_sptr; -%template(gr_constellation_sptr) boost::shared_ptr; +class digital_constellation; +typedef boost::shared_ptr digital_constellation_sptr; +%template(digital_constellation_sptr) boost::shared_ptr; -class gr_constellation +class digital_constellation { public: - gr_constellation (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); + digital_constellation (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); std::vector points(); std::vector s_points(); std::vector > v_points(); @@ -48,99 +48,99 @@ public: std::vector map_to_points_v(unsigned int value); unsigned int bits_per_symbol (); unsigned int arity (); - gr_constellation_sptr base (); + digital_constellation_sptr base (); bool apply_pre_diff_code(); std::vector pre_diff_code(); unsigned int rotational_symmetry(); unsigned int dimensionality(); }; -class gr_constellation_calcdist; -typedef boost::shared_ptr gr_constellation_calcdist_sptr; -%template(gr_constellation_calcdist_sptr) boost::shared_ptr; -%rename(constellation_calcdist) gr_make_constellation_calcdist; -gr_constellation_calcdist_sptr -gr_make_constellation_calcdist(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); -%ignore gr_constellation_calcdist; - -class gr_constellation_calcdist: public gr_constellation +class digital_constellation_calcdist; +typedef boost::shared_ptr digital_constellation_calcdist_sptr; +%template(digital_constellation_calcdist_sptr) boost::shared_ptr; +%rename(constellation_calcdist) digital_make_constellation_calcdist; +digital_constellation_calcdist_sptr +digital_make_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); +%ignore digital_constellation_calcdist; + +class digital_constellation_calcdist: public digital_constellation { public: - gr_constellation_calcdist (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality); + digital_constellation_calcdist (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality); unsigned int decision_maker (const gr_complex *sample); }; -class gr_constellation_sector: public gr_constellation +class digital_constellation_sector: public digital_constellation { }; -class gr_constellation_rect; -typedef boost::shared_ptr gr_constellation_rect_sptr; -%template(gr_constellation_rect_sptr) boost::shared_ptr; -%rename(constellation_rect) gr_make_constellation_rect; -gr_constellation_rect_sptr gr_make_constellation_rect(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); -%ignore gr_constellation_rect; - -class gr_constellation_rect : public gr_constellation_sector +class digital_constellation_rect; +typedef boost::shared_ptr digital_constellation_rect_sptr; +%template(digital_constellation_rect_sptr) boost::shared_ptr; +%rename(constellation_rect) digital_make_constellation_rect; +digital_constellation_rect_sptr digital_make_constellation_rect(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); +%ignore digital_constellation_rect; + +class digital_constellation_rect : public digital_constellation_sector { public: - gr_constellation_rect (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors); + digital_constellation_rect (std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors); }; -class gr_constellation_psk; -typedef boost::shared_ptr gr_constellation_psk_sptr; -%template(gr_constellation_psk_sptr) boost::shared_ptr; -%rename(constellation_psk) gr_make_constellation_psk; -gr_constellation_psk_sptr gr_make_constellation_psk(std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors); -%ignore gr_constellation_psk; +class digital_constellation_psk; +typedef boost::shared_ptr digital_constellation_psk_sptr; +%template(digital_constellation_psk_sptr) boost::shared_ptr; +%rename(constellation_psk) digital_make_constellation_psk; +digital_constellation_psk_sptr digital_make_constellation_psk(std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); +%ignore digital_constellation_psk; -class gr_constellation_psk : public gr_constellation_sector +class digital_constellation_psk : public digital_constellation_sector { public: - gr_constellation_psk (std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors); + digital_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); }; -class gr_constellation_bpsk; -typedef boost::shared_ptr gr_constellation_bpsk_sptr; -%template(gr_constellation_bpsk_sptr) boost::shared_ptr; -%rename(constellation_bpsk) gr_make_constellation_bpsk; -gr_constellation_bpsk_sptr gr_make_constellation_bpsk(); -%ignore gr_constellation_bpsk; +class digital_constellation_bpsk; +typedef boost::shared_ptr digital_constellation_bpsk_sptr; +%template(digital_constellation_bpsk_sptr) boost::shared_ptr; +%rename(constellation_bpsk) digital_make_constellation_bpsk; +digital_constellation_bpsk_sptr digital_make_constellation_bpsk(); +%ignore digital_constellation_bpsk; -class gr_constellation_bpsk : public gr_constellation +class digital_constellation_bpsk : public digital_constellation { public: - gr_constellation_bpsk (); + digital_constellation_bpsk (); }; -class gr_constellation_qpsk; -typedef boost::shared_ptr gr_constellation_qpsk_sptr; -%template(gr_constellation_qpsk_sptr) boost::shared_ptr; -%rename(constellation_qpsk) gr_make_constellation_qpsk; -gr_constellation_qpsk_sptr gr_make_constellation_qpsk(); -%ignore gr_constellation_qpsk; +class digital_constellation_qpsk; +typedef boost::shared_ptr digital_constellation_qpsk_sptr; +%template(digital_constellation_qpsk_sptr) boost::shared_ptr; +%rename(constellation_qpsk) digital_make_constellation_qpsk; +digital_constellation_qpsk_sptr digital_make_constellation_qpsk(); +%ignore digital_constellation_qpsk; -class gr_constellation_qpsk : public gr_constellation +class digital_constellation_qpsk : public digital_constellation { public: - gr_constellation_qpsk (); + digital_constellation_qpsk (); }; diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i index c2416c6c2..73d8edd8d 100644 --- a/gr-digital/swig/digital_swig.i +++ b/gr-digital/swig/digital_swig.i @@ -22,11 +22,13 @@ %include "gnuradio.i" %{ +#include "digital_constellation.h" #include "digital_costas_loop_cc.h" #include "digital_cma_equalizer_cc.h" #include "digital_kurtotic_equalizer_cc.h" %} +%include "digital_constellation.i" %include "digital_costas_loop_cc.i" %include "digital_cma_equalizer_cc.i" %include "digital_kurtotic_equalizer_cc.i" -- cgit From d543b6847b02371c3e63fcc517333a2e41aed15d Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 8 Apr 2011 22:36:16 -0400 Subject: gr-digital: formatting constellation block for our style; adding 8PSK constellation. --- gr-digital/lib/digital_constellation.cc | 204 +++++++++++++++++++++++--------- gr-digital/lib/digital_constellation.h | 58 ++++++--- 2 files changed, 193 insertions(+), 69 deletions(-) diff --git a/gr-digital/lib/digital_constellation.cc b/gr-digital/lib/digital_constellation.cc index 804a65ac8..bfed84320 100644 --- a/gr-digital/lib/digital_constellation.cc +++ b/gr-digital/lib/digital_constellation.cc @@ -63,19 +63,25 @@ digital_constellation::digital_constellation () : } //! Returns the constellation points for a symbol value -void digital_constellation::map_to_points(unsigned int value, gr_complex *points) { +void +digital_constellation::map_to_points(unsigned int value, gr_complex *points) +{ for (unsigned int i=0; i digital_constellation::map_to_points_v(unsigned int value) { +std::vector +digital_constellation::map_to_points_v(unsigned int value) +{ std::vector points_v; points_v.resize(d_dimensionality); map_to_points(value, &(points_v[0])); return points_v; } -float digital_constellation::get_distance(unsigned int index, const gr_complex *sample) { +float +digital_constellation::get_distance(unsigned int index, const gr_complex *sample) +{ float dist = 0; for (unsigned int i=0; i digital_constellation::s_points () { return d_constellation; } -std::vector > digital_constellation::v_points () { +std::vector > +digital_constellation::v_points () +{ std::vector > vv_const; vv_const.resize(d_arity); for (unsigned int p=0; p > digital_constellation::v_points () { return vv_const; } -void digital_constellation::calc_metric(const gr_complex *sample, float *metric, trellis_metric_type_t type) { +void +digital_constellation::calc_metric(const gr_complex *sample, float *metric, + trellis_metric_type_t type) +{ switch (type){ case TRELLIS_EUCLIDEAN: calc_euclidean_metric(sample, metric); @@ -158,13 +171,17 @@ void digital_constellation::calc_metric(const gr_complex *sample, float *metric, } } -void digital_constellation::calc_euclidean_metric(const gr_complex *sample, float *metric) { +void +digital_constellation::calc_euclidean_metric(const gr_complex *sample, float *metric) +{ for (unsigned int o=0; o sample) { +unsigned int +digital_constellation::decision_maker_v (std::vector sample) +{ assert(sample.size() == d_dimensionality); return decision_maker (&(sample[0])); } digital_constellation_calcdist_sptr -digital_make_constellation_calcdist(std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality) +digital_make_constellation_calcdist(std::vector constellation, + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality) { - return digital_constellation_calcdist_sptr(new digital_constellation_calcdist (constellation, pre_diff_code, rotational_symmetry, - dimensionality)); + return digital_constellation_calcdist_sptr(new digital_constellation_calcdist + (constellation, pre_diff_code, + rotational_symmetry, dimensionality)); } digital_constellation_calcdist::digital_constellation_calcdist(std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality) : + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality) : digital_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality) {} // Chooses points base on shortest distance. // Inefficient. -unsigned int digital_constellation_calcdist::decision_maker(const gr_complex *sample) +unsigned int +digital_constellation_calcdist::decision_maker(const gr_complex *sample) { return get_closest_point(sample); } digital_constellation_sector::digital_constellation_sector (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int dimensionality, - unsigned int n_sectors) : + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int dimensionality, + unsigned int n_sectors) : digital_constellation(constellation, pre_diff_code, rotational_symmetry, dimensionality), n_sectors(n_sectors) { } -unsigned int digital_constellation_sector::decision_maker (const gr_complex *sample) { +unsigned int +digital_constellation_sector::decision_maker (const gr_complex *sample) +{ unsigned int sector; sector = get_sector(sample); return sector_values[sector]; } -void digital_constellation_sector::find_sector_values () { +void +digital_constellation_sector::find_sector_values () +{ unsigned int i; sector_values.clear(); for (i=0; i constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) -{ - return digital_constellation_rect_sptr(new digital_constellation_rect (constellation, pre_diff_code, rotational_symmetry, - real_sectors, imag_sectors, width_real_sectors, - width_imag_sectors)); + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) +{ + return digital_constellation_rect_sptr(new digital_constellation_rect + (constellation, pre_diff_code, + rotational_symmetry, + real_sectors, imag_sectors, + width_real_sectors, + width_imag_sectors)); } digital_constellation_rect::digital_constellation_rect (std::vector constellation, - std::vector pre_diff_code, - unsigned int rotational_symmetry, - unsigned int real_sectors, unsigned int imag_sectors, - float width_real_sectors, float width_imag_sectors) : + std::vector pre_diff_code, + unsigned int rotational_symmetry, + unsigned int real_sectors, unsigned int imag_sectors, + float width_real_sectors, float width_imag_sectors) : digital_constellation_sector(constellation, pre_diff_code, rotational_symmetry, 1, real_sectors * imag_sectors), n_real_sectors(real_sectors), n_imag_sectors(imag_sectors), d_width_real_sectors(width_real_sectors), d_width_imag_sectors(width_imag_sectors) @@ -260,20 +292,31 @@ digital_constellation_rect::digital_constellation_rect (std::vector find_sector_values(); } -unsigned int digital_constellation_rect::get_sector (const gr_complex *sample) { +unsigned int +digital_constellation_rect::get_sector (const gr_complex *sample) +{ int real_sector, imag_sector; unsigned int sector; + real_sector = int(real(*sample)/d_width_real_sectors + n_real_sectors/2.0); - if (real_sector < 0) real_sector = 0; - if (real_sector >= n_real_sectors) real_sector = n_real_sectors-1; + if(real_sector < 0) + real_sector = 0; + if(real_sector >= (int)n_real_sectors) + real_sector = n_real_sectors-1; + imag_sector = int(imag(*sample)/d_width_imag_sectors + n_imag_sectors/2.0); - if (imag_sector < 0) imag_sector = 0; - if (imag_sector >= n_imag_sectors) imag_sector = n_imag_sectors-1; + if(imag_sector < 0) + imag_sector = 0; + if(imag_sector >= (int)n_imag_sectors) + imag_sector = n_imag_sectors-1; + sector = real_sector * n_imag_sectors + imag_sector; return sector; } -unsigned int digital_constellation_rect::calc_sector_value (unsigned int sector) { +unsigned int +digital_constellation_rect::calc_sector_value (unsigned int sector) +{ unsigned int real_sector, imag_sector; gr_complex sector_center; unsigned int closest_point; @@ -288,32 +331,38 @@ unsigned int digital_constellation_rect::calc_sector_value (unsigned int sector) digital_constellation_psk_sptr digital_make_constellation_psk(std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors) + std::vector pre_diff_code, + unsigned int n_sectors) { - return digital_constellation_psk_sptr(new digital_constellation_psk (constellation, pre_diff_code, - n_sectors)); + return digital_constellation_psk_sptr(new digital_constellation_psk + (constellation, pre_diff_code, + n_sectors)); } digital_constellation_psk::digital_constellation_psk (std::vector constellation, - std::vector pre_diff_code, - unsigned int n_sectors) : + std::vector pre_diff_code, + unsigned int n_sectors) : digital_constellation_sector(constellation, pre_diff_code, constellation.size(), 1, n_sectors) { find_sector_values(); } -unsigned int digital_constellation_psk::get_sector (const gr_complex *sample) { +unsigned int +digital_constellation_psk::get_sector (const gr_complex *sample) +{ float phase = arg(*sample); float width = M_TWOPI / n_sectors; int sector = floor(phase/width + 0.5); unsigned int u_sector; - if (sector < 0) sector += n_sectors; + if (sector < 0) + sector += n_sectors; u_sector = sector; return sector; } -unsigned int digital_constellation_psk::calc_sector_value (unsigned int sector) { +unsigned int +digital_constellation_psk::calc_sector_value (unsigned int sector) +{ float phase = sector * M_TWOPI / n_sectors; gr_complex sector_center = gr_complex(cos(phase), sin(phase)); unsigned int closest_point = get_closest_point(§or_center); @@ -337,7 +386,8 @@ digital_constellation_bpsk::digital_constellation_bpsk () calc_arity(); } -unsigned int digital_constellation_bpsk::decision_maker(const gr_complex *sample) +unsigned int +digital_constellation_bpsk::decision_maker(const gr_complex *sample) { return (real(*sample) > 0); } @@ -362,9 +412,53 @@ digital_constellation_qpsk::digital_constellation_qpsk () calc_arity(); } -unsigned int digital_constellation_qpsk::decision_maker(const gr_complex *sample) +unsigned int +digital_constellation_qpsk::decision_maker(const gr_complex *sample) +{ + // Real component determines small bit. + // Imag component determines big bit. + return 2*(imag(*sample)>0) + (real(*sample)>0); +} + + +digital_constellation_8psk_sptr +digital_make_constellation_8psk() +{ + return digital_constellation_8psk_sptr(new digital_constellation_8psk ()); +} + +digital_constellation_8psk::digital_constellation_8psk () +{ + float angle = M_PI/8.0; + d_constellation.resize(8); + // Gray-coded + d_constellation[0] = gr_complex(cos( 1*angle), sin( 1*angle)); + d_constellation[1] = gr_complex(cos( 7*angle), sin( 3*angle)); + d_constellation[2] = gr_complex(cos(15*angle), sin(15*angle)); + d_constellation[3] = gr_complex(cos( 9*angle), sin( 9*angle)); + d_constellation[4] = gr_complex(cos( 3*angle), sin( 3*angle)); + d_constellation[5] = gr_complex(cos( 5*angle), sin( 5*angle)); + d_constellation[6] = gr_complex(cos(13*angle), sin(13*angle)); + d_constellation[7] = gr_complex(cos(11*angle), sin(11*angle)); + d_rotational_symmetry = 8; + d_dimensionality = 1; + calc_arity(); +} + +unsigned int +digital_constellation_8psk::decision_maker(const gr_complex *sample) { // Real component determines small bit. // Imag component determines big bit. return 2*(imag(*sample)>0) + (real(*sample)>0); + + unsigned int real, imag; + imag = 2*(sample->imag()<=0); + real = (sample->real()<=0); + if(abs(sample->real()) >= abs(sample->imag())) { + return 0 + imag + real; + } + else { + return 4 + imag + real; + } } diff --git a/gr-digital/lib/digital_constellation.h b/gr-digital/lib/digital_constellation.h index 73cc888f9..9da87a4de 100644 --- a/gr-digital/lib/digital_constellation.h +++ b/gr-digital/lib/digital_constellation.h @@ -30,7 +30,7 @@ #include /************************************************************/ -/* digital_constellation */ +/* digital_constellation */ /* */ /* Base class defining interface. */ /************************************************************/ @@ -42,7 +42,7 @@ class digital_constellation : public boost::enable_shared_from_this constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality); + unsigned int rotational_symmetry, unsigned int dimensionality); digital_constellation (); //! Returns the constellation points for a symbol value @@ -120,7 +120,7 @@ typedef boost::shared_ptr digital_constellation_ // public constructor digital_constellation_calcdist_sptr digital_make_constellation_calcdist (std::vector constellation, std::vector pre_diff_code, - unsigned int rotational_symmetry, unsigned int dimensionality); + unsigned int rotational_symmetry, unsigned int dimensionality); class digital_constellation_calcdist : public digital_constellation @@ -141,7 +141,7 @@ class digital_constellation_calcdist : public digital_constellation }; /************************************************************/ -/* digital_constellation_sector */ +/* digital_constellation_sector */ /* */ /* An abstract class. */ /* Constellation space is divided into sectors. */ @@ -176,7 +176,7 @@ class digital_constellation_sector : public digital_constellation }; /************************************************************/ -/* digital_constellation_rect */ +/* digital_constellation_rect */ /* */ /* Only implemented for 1-(complex)dimensional */ /* constellation. */ @@ -229,7 +229,7 @@ class digital_constellation_rect : public digital_constellation_sector }; /************************************************************/ -/* digital_constellation_psk */ +/* digital_constellation_psk */ /* */ /* Constellation space is divided into pie slices sectors. */ /* Each slice is associated with the nearest constellation */ @@ -243,15 +243,17 @@ typedef boost::shared_ptr digital_constellation_psk_s // public constructor digital_constellation_psk_sptr -digital_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); +digital_make_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); class digital_constellation_psk : public digital_constellation_sector { public: - digital_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); + digital_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); protected: @@ -262,13 +264,14 @@ class digital_constellation_psk : public digital_constellation_sector private: friend digital_constellation_psk_sptr - digital_make_constellation_psk (std::vector constellation, std::vector pre_diff_code, - unsigned int n_sectors); + digital_make_constellation_psk (std::vector constellation, + std::vector pre_diff_code, + unsigned int n_sectors); }; /************************************************************/ -/* digital_constellation_bpsk */ +/* digital_constellation_bpsk */ /* */ /* Only works for BPSK. */ /* */ @@ -294,7 +297,7 @@ class digital_constellation_bpsk : public digital_constellation }; /************************************************************/ -/* digital_constellation_qpsk */ +/* digital_constellation_qpsk */ /* */ /* Only works for QPSK. */ /* */ @@ -319,4 +322,31 @@ class digital_constellation_qpsk : public digital_constellation }; + +/************************************************************/ +/* digital_constellation_8psk */ +/* */ +/* Only works for 8PSK. */ +/* */ +/************************************************************/ + +class digital_constellation_8psk; +typedef boost::shared_ptr digital_constellation_8psk_sptr; + +// public constructor +digital_constellation_8psk_sptr +digital_make_constellation_8psk (); + +class digital_constellation_8psk : public digital_constellation +{ + public: + + digital_constellation_8psk (); + unsigned int decision_maker (const gr_complex *sample); + + friend digital_constellation_8psk_sptr + digital_make_constellation_8psk (); + +}; + #endif -- cgit From cd73f4af9ed50369c47655f9ebb29a4a1ad56f1d Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 9 Apr 2011 16:24:16 -0400 Subject: gr-digital: moved dbpsk, dqpsk, d8psk into the gr-digital space. Mods tested and working in GRC. --- gr-digital/grc/Makefile.am | 9 +- gr-digital/grc/digital_block_tree.xml | 4 + gr-digital/grc/digital_dxpsk_mod.xml | 121 +++++++++++ gr-digital/python/Makefile.am | 7 +- gr-digital/python/__init__.py | 5 +- gr-digital/python/d8psk.py | 368 +++++++++++++++++++++++++++++++++ gr-digital/python/dbpsk.py | 370 +++++++++++++++++++++++++++++++++ gr-digital/python/dqpsk.py | 373 ++++++++++++++++++++++++++++++++++ gr-digital/python/psk.py | 94 +++++++++ 9 files changed, 1344 insertions(+), 7 deletions(-) create mode 100644 gr-digital/grc/digital_dxpsk_mod.xml create mode 100644 gr-digital/python/d8psk.py create mode 100644 gr-digital/python/dbpsk.py create mode 100644 gr-digital/python/dqpsk.py create mode 100644 gr-digital/python/psk.py diff --git a/gr-digital/grc/Makefile.am b/gr-digital/grc/Makefile.am index 4cc2e8d9d..748511c1c 100644 --- a/gr-digital/grc/Makefile.am +++ b/gr-digital/grc/Makefile.am @@ -24,7 +24,8 @@ include $(top_srcdir)/Makefile.common grcblocksdir = $(grc_blocksdir) dist_grcblocks_DATA = \ - digital_block_tree.xml \ - digital_costas_loop_cc.xml \ - digital_cma_equalizer_cc.xml \ - digital_kurtotic_equalizer_cc.xml \ No newline at end of file + digital_block_tree.xml \ + digital_costas_loop_cc.xml \ + digital_cma_equalizer_cc.xml \ + digital_kurtotic_equalizer_cc.xml \ + digital_dxpsk_mod.xml \ No newline at end of file diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml index ee2a0377f..d36858991 100644 --- a/gr-digital/grc/digital_block_tree.xml +++ b/gr-digital/grc/digital_block_tree.xml @@ -12,4 +12,8 @@ digital_cma_equalizer_cc digital_kurtotic_equalizer_cc + + Digital Mods + digital_dxpsk_mod + diff --git a/gr-digital/grc/digital_dxpsk_mod.xml b/gr-digital/grc/digital_dxpsk_mod.xml new file mode 100644 index 000000000..5d59f36e0 --- /dev/null +++ b/gr-digital/grc/digital_dxpsk_mod.xml @@ -0,0 +1,121 @@ + + + + + + + DPSK Mod + digital_dxpsk_mod + from gnuradio import digital + digital.$(type)_mod( + samples_per_symbol=$samples_per_symbol, + excess_bw=$excess_bw, + gray_code=$gray_code, + verbose=$verbose, + log=$log) + + + Type + type + enum + + + + + + Samples/Symbol + samples_per_symbol + 2 + int + + + Excess BW + excess_bw + 0.35 + real + + + Gray Code + gray_code + True + bool + + + + + Verbose + verbose + False + bool + #if str($verbose) == 'False' then 'part' else 'none'# + + + + + Logging + log + False + bool + #if str($log) == 'False' then 'part' else 'none'# + + + + + in + byte + + + out + complex + + diff --git a/gr-digital/python/Makefile.am b/gr-digital/python/Makefile.am index 9db82b608..13a3d1157 100644 --- a/gr-digital/python/Makefile.am +++ b/gr-digital/python/Makefile.am @@ -34,6 +34,9 @@ noinst_PYTHON = \ qa_costas_loop_cc.py digital_PYTHON = \ - __init__.py - + __init__.py \ + psk.py \ + dbpsk.py \ + dqpsk.py \ + d8psk.py endif diff --git a/gr-digital/python/__init__.py b/gr-digital/python/__init__.py index c1aed10f9..4bbb9850b 100644 --- a/gr-digital/python/__init__.py +++ b/gr-digital/python/__init__.py @@ -1,5 +1,5 @@ # -# Copyright 2006 Free Software Foundation, Inc. +# Copyright 2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,3 +22,6 @@ # The presence of this file turns this directory into a Python package from digital_swig import * +from dbpsk import * +from dqpsk import * +from d8psk import * diff --git a/gr-digital/python/d8psk.py b/gr-digital/python/d8psk.py new file mode 100644 index 000000000..f386fff89 --- /dev/null +++ b/gr-digital/python/d8psk.py @@ -0,0 +1,368 @@ +# +# Copyright 2005,2006,2007,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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential 8PSK modulation and demodulation. +""" + +from gnuradio import gr, modulation_utils2 +from math import pi, sqrt +import digital_swig, psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 3 +_def_excess_bw = 0.35 +_def_gray_code = True +_def_verbose = False +_def_log = False + +_def_freq_alpha = 0.010 +_def_phase_damping = 0.4 +_def_phase_natfreq = 0.25 +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 +_def_timing_max_dev = 1.5 + +# ///////////////////////////////////////////////////////////////////////////// +# D8PSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class d8psk_mod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential 8PSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Log modulation data to files? + @type log: bool + """ + + gr.hier_block2.__init__(self, "d8psk_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._gray_code = gray_code + + if not isinstance(samples_per_symbol, int) or samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % samples_per_symbol) + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.binary_to_ungray[arity]) + + self.diffenc = gr.diff_encoder_bb(arity) + + rot = 1 + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) + + # pulse shaping filter + nfilts = 32 + ntaps = 11 * int(nfilts * self._samples_per_symbol) # make nfilts filters of ntaps each + self.rrc_taps = gr.firdes.root_raised_cosine( + nfilts, # gain + nfilts, # sampling rate based on 32 filters in resampler + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + self.rrc_filter = gr.pfb_arb_resampler_ccf(self._samples_per_symbol, self.rrc_taps) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect & Initialize base class + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 3 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_graycoder.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + def add_options(parser): + """ + Adds 8PSK modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + add_options=staticmethod(add_options) + + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options(d8psk_mod.__init__, + ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# ///////////////////////////////////////////////////////////////////////////// +# D8PSK demodulator +# +# Differentially coherent detection of differentially encoded 8psk +# ///////////////////////////////////////////////////////////////////////////// + +class d8psk_demod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + freq_alpha=_def_freq_alpha, + phase_damping=_def_phase_damping, + phase_natfreq=_def_phase_natfreq, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log, + sync_out=False): + """ + Hierarchical block for RRC-filtered DQPSK demodulation + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param freq_alpha: loop filter gain for frequency recovery + @type freq_alpha: float + @param phase_damping: loop filter damping factor for phase/fine frequency recovery + @type phase_damping: float + @param phase_natfreq: loop filter natural frequency for phase/fine frequency recovery + @type phase_natfreq: float + @param timing_alpha: timing loop alpha gain + @type timing_alpha: float + @param timing_max: timing loop maximum rate deviations + @type timing_max: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + if sync_out: io_sig_out = gr.io_signaturev(2, 2, (gr.sizeof_char, gr.sizeof_gr_complex)) + else: io_sig_out = gr.io_signature(1, 1, gr.sizeof_char) + + gr.hier_block2.__init__(self, "d8psk_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + io_sig_out) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._freq_alpha = freq_alpha + self._freq_beta = 0.25*self._freq_alpha**2 + self._phase_alpha = phase_alpha + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_beta + self._timing_max_dev=timing_max_dev + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, "sbp must be >= 2, is %d" % samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + #self.agc = gr.feedforward_agc_cc(16, 2.0) + + # Frequency correction + self.freq_recov = gr.fll_band_edge_cc(self._samples_per_symbol, self._excess_bw, + 11*int(self._samples_per_symbol), + self._freq_alpha, self._freq_beta) + + # symbol timing recovery with RRC data filter + nfilts = 32 + ntaps = 11 * int(samples_per_symbol*nfilts) + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, + 1.0/float(self._samples_per_symbol), + self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + # Perform phase / fine frequency correction + self.phase_recov = digital_swig.costas_loop_cc(self._phase_damping, + self._phase_natfreq, + arity) + + # Perform Differential decoding on the constellation + self.diffdec = gr.diff_phasor_cc() + + # find closest constellation point + rot = cmath.exp(1j*cmath.pi/8.0) + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.slicer = gr.constellation_decoder_cb(rotated_const, range(arity)) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.ungray_to_binary[arity]) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect + self.connect(self, self.agc, + self.freq_recov, self.time_recov, self.phase_recov, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + if sync_out: self.connect(self.time_recov, (self, 1)) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 3 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + print "FLL gain: %.2f" % self._freq_alpha + print "Timing alpha gain: %.2f" % self._timing_alpha + print "Timing beta gain: %.2f" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + print "Phase track alpha: %.2e" % self._phase_alpha + print "Phase track beta: %.2e" % self._phase_beta + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.freq_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_freq_recov.dat")) + self.connect(self.time_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) + self.connect(self.phase_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_phase_recov.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, + gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_gray_decoder.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds D8PSK demodulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, + help="set frequency lock loop alpha gain value [default=%default] (PSK)") + parser.add_option("", "--phase-alpha", type="float", default=_def_phase_alpha, + help="set phase tracking loop alpha value [default=%default] (PSK)") + parser.add_option("", "--timing-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options( + d8psk_demod.__init__, ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('d8psk', d8psk_mod) +modulation_utils2.add_type_1_demod('d8psk', d8psk_demod) diff --git a/gr-digital/python/dbpsk.py b/gr-digital/python/dbpsk.py new file mode 100644 index 000000000..91d439563 --- /dev/null +++ b/gr-digital/python/dbpsk.py @@ -0,0 +1,370 @@ +# +# Copyright 2009,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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential BPSK modulation and demodulation. +""" + +from gnuradio import gr, modulation_utils2 +from math import pi, sqrt, ceil +import digital_swig, psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_gray_code = True +_def_verbose = False +_def_log = False + +_def_freq_alpha = 0.010 +_def_phase_damping = 0.4 +_def_phase_natfreq = 0.25 +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 +_def_timing_max_dev = 1.5 + + +# ///////////////////////////////////////////////////////////////////////////// +# DBPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class dbpsk_mod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered differential BPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Log modulation data to files? + @type log: bool + """ + + gr.hier_block2.__init__(self, "dbpsk_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._gray_code = gray_code + + if self._samples_per_symbol < 2: + raise TypeError, ("sbp must be an integer >= 2, is %d" % self._samples_per_symbol) + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.binary_to_ungray[arity]) + + self.diffenc = gr.diff_encoder_bb(arity) + + self.chunks2symbols = gr.chunks_to_symbols_bc(psk.constellation[arity]) + + # pulse shaping filter + nfilts = 32 + ntaps = nfilts * 11 * int(self._samples_per_symbol) # make nfilts filters of ntaps each + self.rrc_taps = gr.firdes.root_raised_cosine( + nfilts, # gain + nfilts, # sampling rate based on 32 filters in resampler + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + self.rrc_filter = gr.pfb_arb_resampler_ccf(self._samples_per_symbol, self.rrc_taps) + + # Connect + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # static method that's also callable on an instance + return 1 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def add_options(parser): + """ + Adds DBPSK modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default]") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=True, + help="disable gray coding on modulated bits (PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options(dbpsk_mod.__init__, + ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_graycoder.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + +# ///////////////////////////////////////////////////////////////////////////// +# DBPSK demodulator +# +# Differentially coherent detection of differentially encoded BPSK +# ///////////////////////////////////////////////////////////////////////////// + +class dbpsk_demod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + freq_alpha=_def_freq_alpha, + phase_damping=_def_phase_damping, + phase_natfreq=_def_phase_natfreq, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log, + sync_out=False): + """ + Hierarchical block for RRC-filtered differential BPSK demodulation + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param freq_alpha: loop filter gain for frequency recovery + @type freq_alpha: float + @param phase_damping: loop filter damping factor for phase/fine frequency recovery + @type phase_damping: float + @param phase_natfreq: loop filter natural frequency for phase/fine frequency recovery + @type phase_natfreq: float + @param timing_alpha: loop alpha gain for timing recovery + @type timing_alpha: float + @param timing_max: timing loop maximum rate deviations + @type timing_max: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Print modualtion data to files? + @type log: bool + @param sync_out: Output a sync signal on :1? + @type sync_out: bool + """ + if sync_out: io_sig_out = gr.io_signaturev(2, 2, (gr.sizeof_char, gr.sizeof_gr_complex)) + else: io_sig_out = gr.io_signature(1, 1, gr.sizeof_char) + + gr.hier_block2.__init__(self, "dbpsk_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + io_sig_out) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._freq_alpha = freq_alpha + self._freq_beta = 0.10*self._freq_alpha + self._phase_damping = phase_damping + self._phase_natfreq = phase_natfreq + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_beta + self._timing_max_dev=timing_max_dev + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, "samples_per_symbol must be >= 2, is %r" % (samples_per_symbol,) + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + #self.agc = gr.feedforward_agc_cc(16, 1.0) + + # Frequency correction + self.freq_recov = gr.fll_band_edge_cc(self._samples_per_symbol, self._excess_bw, + 11*int(self._samples_per_symbol), + self._freq_alpha, self._freq_beta) + + # symbol timing recovery with RRC data filter + nfilts = 32 + ntaps = 11 * int(self._samples_per_symbol*nfilts) + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, + 1.0/float(self._samples_per_symbol), + self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + # Perform phase / fine frequency correction + self.phase_recov = digital_swig.costas_loop_cc(self._phase_damping, + self._phase_natfreq, + arity) + + # Do differential decoding based on phase change of symbols + self.diffdec = gr.diff_phasor_cc() + + # find closest constellation point + rot = 1 + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.slicer = gr.constellation_decoder_cb(rotated_const, range(arity)) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.ungray_to_binary[arity]) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect + self.connect(self, self.agc, + self.freq_recov, self.time_recov, self.phase_recov, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + if sync_out: self.connect(self.time_recov, (self, 1)) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 1 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + print "FLL gain: %.2e" % self._freq_alpha + print "Timing alpha gain: %.2e" % self._timing_alpha + print "Timing beta gain: %.2e" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + print "Phase track alpha: %.2e" % self._phase_alpha + print "Phase track beta: %.2e" % self._phase_beta + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.freq_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_freq_recov.dat")) + self.connect(self.time_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) + self.connect(self.phase_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_phase_recov.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, + gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_symbol_mapper.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds DBPSK demodulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, + help="set frequency lock loop alpha gain value [default=%default] (PSK)") + parser.add_option("", "--phase-alpha", type="float", default=_def_phase_alpha, + help="set phase tracking loop alpha value [default=%default] (PSK)") + parser.add_option("", "--timing-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options( + dbpsk_demod.__init__, ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('dbpsk3', dbpsk_mod) +modulation_utils2.add_type_1_demod('dbpsk3', dbpsk_demod) diff --git a/gr-digital/python/dqpsk.py b/gr-digital/python/dqpsk.py new file mode 100644 index 000000000..33eb6733e --- /dev/null +++ b/gr-digital/python/dqpsk.py @@ -0,0 +1,373 @@ +# +# Copyright 2009,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. +# + +# See gnuradio-examples/python/digital for examples + +""" +differential QPSK modulation and demodulation. +""" + +from gnuradio import gr, modulation_utils2 +from math import pi, sqrt +import digital_swig, psk +import cmath +from pprint import pprint + +# default values (used in __init__ and add_options) +_def_samples_per_symbol = 2 +_def_excess_bw = 0.35 +_def_gray_code = True +_def_verbose = False +_def_log = False + +_def_freq_alpha = 0.010 +_def_phase_damping = 0.4 +_def_phase_natfreq = 0.25 +_def_timing_alpha = 0.100 +_def_timing_beta = 0.010 +_def_timing_max_dev = 1.5 + + +# ///////////////////////////////////////////////////////////////////////////// +# DQPSK modulator +# ///////////////////////////////////////////////////////////////////////////// + +class dqpsk_mod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log): + """ + Hierarchical block for RRC-filtered QPSK modulation. + + The input is a byte stream (unsigned char) and the + output is the complex modulated signal at baseband. + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: integer + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param debug: Print modualtion data to files? + @type debug: bool + """ + + gr.hier_block2.__init__(self, "dqpsk_mod", + gr.io_signature(1, 1, gr.sizeof_char), # Input signature + gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, ("sbp must be >= 2, is %f" % samples_per_symbol) + + arity = pow(2,self.bits_per_symbol()) + + # turn bytes into k-bit vectors + self.bytes2chunks = \ + gr.packed_to_unpacked_bb(self.bits_per_symbol(), gr.GR_MSB_FIRST) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.binary_to_ungray[arity]) + + self.diffenc = gr.diff_encoder_bb(arity) + + rot = .707 + .707j + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.chunks2symbols = gr.chunks_to_symbols_bc(rotated_const) + + # pulse shaping filter + nfilts = 32 + ntaps = 11 * int(nfilts * self._samples_per_symbol) # make nfilts filters of ntaps each + self.rrc_taps = gr.firdes.root_raised_cosine( + nfilts, # gain + nfilts, # sampling rate based on 32 filters in resampler + 1.0, # symbol rate + self._excess_bw, # excess bandwidth (roll-off factor) + ntaps) + self.rrc_filter = gr.pfb_arb_resampler_ccf(self._samples_per_symbol, self.rrc_taps) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect & Initialize base class + self.connect(self, self.bytes2chunks, self.symbol_mapper, self.diffenc, + self.chunks2symbols, self.rrc_filter, self) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 2 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nModulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %f" % self._excess_bw + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.bytes2chunks, + gr.file_sink(gr.sizeof_char, "tx_bytes2chunks.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "tx_graycoder.dat")) + self.connect(self.diffenc, + gr.file_sink(gr.sizeof_char, "tx_diffenc.dat")) + self.connect(self.chunks2symbols, + gr.file_sink(gr.sizeof_gr_complex, "tx_chunks2symbols.dat")) + self.connect(self.rrc_filter, + gr.file_sink(gr.sizeof_gr_complex, "tx_rrc_filter.dat")) + + def add_options(parser): + """ + Adds QPSK modulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + add_options=staticmethod(add_options) + + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options(dqpsk_mod.__init__, + ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# ///////////////////////////////////////////////////////////////////////////// +# DQPSK demodulator +# +# Differentially coherent detection of differentially encoded qpsk +# ///////////////////////////////////////////////////////////////////////////// + +class dqpsk_demod(gr.hier_block2): + + def __init__(self, + samples_per_symbol=_def_samples_per_symbol, + excess_bw=_def_excess_bw, + freq_alpha=_def_freq_alpha, + phase_damping=_def_phase_damping, + phase_natfreq=_def_phase_natfreq, + timing_alpha=_def_timing_alpha, + timing_max_dev=_def_timing_max_dev, + gray_code=_def_gray_code, + verbose=_def_verbose, + log=_def_log, + sync_out=False): + """ + Hierarchical block for RRC-filtered DQPSK demodulation + + The input is the complex modulated signal at baseband. + The output is a stream of bits packed 1 bit per byte (LSB) + + @param samples_per_symbol: samples per symbol >= 2 + @type samples_per_symbol: float + @param excess_bw: Root-raised cosine filter excess bandwidth + @type excess_bw: float + @param freq_alpha: loop filter gain for frequency recovery + @type freq_alpha: float + @param phase_damping: loop filter damping factor for phase/fine frequency recovery + @type phase_damping: float + @param phase_natfreq: loop filter natural frequency for phase/fine frequency recovery + @type phase_natfreq: float + @param timing_alpha: timing loop alpha gain + @type timing_alpha: float + @param timing_max: timing loop maximum rate deviations + @type timing_max: float + @param gray_code: Tell modulator to Gray code the bits + @type gray_code: bool + @param verbose: Print information about modulator? + @type verbose: bool + @param log: Print modualtion data to files? + @type log: bool + @param sync_out: Output a sync signal on :1? + @type sync_out: bool + """ + if sync_out: io_sig_out = gr.io_signaturev(2, 2, (gr.sizeof_char, gr.sizeof_gr_complex)) + else: io_sig_out = gr.io_signature(1, 1, gr.sizeof_char) + + gr.hier_block2.__init__(self, "dqpsk_demod", + gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature + io_sig_out) # Output signature + + self._samples_per_symbol = samples_per_symbol + self._excess_bw = excess_bw + self._freq_alpha = freq_alpha + self._freq_beta = 0.25*self._freq_alpha**2 + self._phase_alpha = phase_alpha + self._timing_alpha = timing_alpha + self._timing_beta = _def_timing_beta + self._timing_max_dev=timing_max_dev + self._gray_code = gray_code + + if samples_per_symbol < 2: + raise TypeError, "sbp must be >= 2, is %d" % samples_per_symbol + + arity = pow(2,self.bits_per_symbol()) + + # Automatic gain control + self.agc = gr.agc2_cc(0.6e-1, 1e-3, 1, 1, 100) + #self.agc = gr.feedforward_agc_cc(16, 2.0) + + # Frequency correction + self.freq_recov = gr.fll_band_edge_cc(self._samples_per_symbol, self._excess_bw, + 11*int(self._samples_per_symbol), + self._freq_alpha, self._freq_beta) + + + # symbol timing recovery with RRC data filter + nfilts = 32 + ntaps = 11 * int(samples_per_symbol*nfilts) + taps = gr.firdes.root_raised_cosine(nfilts, nfilts, + 1.0/float(self._samples_per_symbol), + self._excess_bw, ntaps) + self.time_recov = gr.pfb_clock_sync_ccf(self._samples_per_symbol, + self._timing_alpha, + taps, nfilts, nfilts/2, self._timing_max_dev) + self.time_recov.set_beta(self._timing_beta) + + + # Perform phase / fine frequency correction + self.phase_recov = digital_swig.costas_loop_cc(self._phase_damping, + self._phase_natfreq, + arity) + + # Perform Differential decoding on the constellation + self.diffdec = gr.diff_phasor_cc() + + # find closest constellation point + rot = 1 + rotated_const = map(lambda pt: pt * rot, psk.constellation[arity]) + self.slicer = gr.constellation_decoder_cb(rotated_const, range(arity)) + + if self._gray_code: + self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity]) + else: + self.symbol_mapper = gr.map_bb(psk.ungray_to_binary[arity]) + + # unpack the k bit vector into a stream of bits + self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol()) + + if verbose: + self._print_verbage() + + if log: + self._setup_logging() + + # Connect + self.connect(self, self.agc, + self.freq_recov, self.time_recov, self.phase_recov, + self.diffdec, self.slicer, self.symbol_mapper, self.unpack, self) + if sync_out: self.connect(self.time_recov, (self, 1)) + + def samples_per_symbol(self): + return self._samples_per_symbol + + def bits_per_symbol(self=None): # staticmethod that's also callable on an instance + return 2 + bits_per_symbol = staticmethod(bits_per_symbol) # make it a static method. RTFM + + def _print_verbage(self): + print "\nDemodulator:" + print "bits per symbol: %d" % self.bits_per_symbol() + print "Gray code: %s" % self._gray_code + print "RRC roll-off factor: %.2f" % self._excess_bw + print "FLL gain: %.2f" % self._freq_alpha + print "Timing alpha gain: %.2f" % self._timing_alpha + print "Timing beta gain: %.2f" % self._timing_beta + print "Timing max dev: %.2f" % self._timing_max_dev + print "Phase track alpha: %.2e" % self._phase_alpha + print "Phase track beta: %.2e" % self._phase_beta + + def _setup_logging(self): + print "Modulation logging turned on." + self.connect(self.agc, + gr.file_sink(gr.sizeof_gr_complex, "rx_agc.dat")) + self.connect(self.freq_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_freq_recov.dat")) + self.connect(self.time_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_time_recov.dat")) + self.connect(self.phase_recov, + gr.file_sink(gr.sizeof_gr_complex, "rx_phase_recov.dat")) + self.connect(self.diffdec, + gr.file_sink(gr.sizeof_gr_complex, "rx_diffdec.dat")) + self.connect(self.slicer, + gr.file_sink(gr.sizeof_char, "rx_slicer.dat")) + self.connect(self.symbol_mapper, + gr.file_sink(gr.sizeof_char, "rx_gray_decoder.dat")) + self.connect(self.unpack, + gr.file_sink(gr.sizeof_char, "rx_unpack.dat")) + + def add_options(parser): + """ + Adds DQPSK demodulation-specific options to the standard parser + """ + parser.add_option("", "--excess-bw", type="float", default=_def_excess_bw, + help="set RRC excess bandwith factor [default=%default] (PSK)") + parser.add_option("", "--no-gray-code", dest="gray_code", + action="store_false", default=_def_gray_code, + help="disable gray coding on modulated bits (PSK)") + parser.add_option("", "--freq-alpha", type="float", default=_def_freq_alpha, + help="set frequency lock loop alpha gain value [default=%default] (PSK)") + parser.add_option("", "--phase-alpha", type="float", default=_def_phase_alpha, + help="set phase tracking loop alpha value [default=%default] (PSK)") + parser.add_option("", "--timing-alpha", type="float", default=_def_timing_alpha, + help="set timing symbol sync loop gain alpha value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-beta", type="float", default=_def_timing_beta, + help="set timing symbol sync loop gain beta value [default=%default] (GMSK/PSK)") + parser.add_option("", "--timing-max-dev", type="float", default=_def_timing_max_dev, + help="set timing symbol sync loop maximum deviation [default=%default] (GMSK/PSK)") + add_options=staticmethod(add_options) + + def extract_kwargs_from_options(options): + """ + Given command line options, create dictionary suitable for passing to __init__ + """ + return modulation_utils2.extract_kwargs_from_options( + dqpsk_demod.__init__, ('self',), options) + extract_kwargs_from_options=staticmethod(extract_kwargs_from_options) + + +# +# Add these to the mod/demod registry +# +modulation_utils2.add_type_1_mod('dqpsk', dqpsk_mod) +modulation_utils2.add_type_1_demod('dqpsk', dqpsk_demod) diff --git a/gr-digital/python/psk.py b/gr-digital/python/psk.py new file mode 100644 index 000000000..acedf3b69 --- /dev/null +++ b/gr-digital/python/psk.py @@ -0,0 +1,94 @@ +# +# Copyright 2005,2006 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from math import pi, sqrt, log10 +import math, cmath + +# The following algorithm generates Gray coded constellations for M-PSK for M=[2,4,8] +def make_gray_constellation(m): + # number of bits/symbol (log2(M)) + k = int(log10(m) / log10(2.0)) + + coeff = 1 + const_map = [] + bits = [0]*3 + for i in range(m): + # get a vector of the k bits to use in this mapping + bits[3-k:3] = [((i&(0x01 << k-j-1)) >> k-j-1) for j in range(k)] + + theta = -(2*bits[0]-1)*(2*pi/m)*(bits[0]+abs(bits[1]-bits[2])+2*bits[1]) + re = math.cos(theta) + im = math.sin(theta) + const_map.append(complex(re, im)) # plug it into the constellation + + # return the constellation; by default, it is normalized + return const_map + +# This makes a constellation that increments around the unit circle +def make_constellation(m): + return [cmath.exp(i * 2 * pi / m * 1j) for i in range(m)] + +# Common definition of constellations for Tx and Rx +constellation = { + 2 : make_constellation(2), # BPSK + 4 : make_constellation(4), # QPSK + 8 : make_constellation(8) # 8PSK + } + +gray_constellation = { + 2 : make_gray_constellation(2), # BPSK + 4 : make_gray_constellation(4), # QPSK + 8 : make_gray_constellation(8) # 8PSK + } + +# ----------------------- +# Do Gray code +# ----------------------- +# binary to gray coding -- constellation does Gray coding +binary_to_gray = { + 2 : range(2), + 4 : [0,1,3,2], + 8 : [0, 1, 3, 2, 7, 6, 4, 5] + } + +# gray to binary +gray_to_binary = { + 2 : range(2), + 4 : [0,1,3,2], + 8 : [0, 1, 3, 2, 6, 7, 5, 4] + } + +# ----------------------- +# Don't Gray code +# ----------------------- +# identity mapping +binary_to_ungray = { + 2 : range(2), + 4 : range(4), + 8 : range(8) + } + +# identity mapping +ungray_to_binary = { + 2 : range(2), + 4 : range(4), + 8 : range(8) + } -- cgit From 6c3623b0b084ce9328557ebd3cd487c484ee1c5b Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Sat, 9 Apr 2011 18:36:27 -0400 Subject: gr-digital: adding dbpsk, dqpsk, and d8psk demodulators to gr-digital. --- gr-digital/grc/Makefile.am | 3 ++- gr-digital/grc/digital_block_tree.xml | 25 ++++++++++++++++++++++++- gr-digital/python/d8psk.py | 5 +++-- gr-digital/python/dbpsk.py | 2 +- gr-digital/python/dqpsk.py | 5 +++-- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/gr-digital/grc/Makefile.am b/gr-digital/grc/Makefile.am index 748511c1c..8d08c3f59 100644 --- a/gr-digital/grc/Makefile.am +++ b/gr-digital/grc/Makefile.am @@ -28,4 +28,5 @@ dist_grcblocks_DATA = \ digital_costas_loop_cc.xml \ digital_cma_equalizer_cc.xml \ digital_kurtotic_equalizer_cc.xml \ - digital_dxpsk_mod.xml \ No newline at end of file + digital_dxpsk_mod.xml \ + digital_dxpsk_demod.xml diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml index d36858991..c132ff5b4 100644 --- a/gr-digital/grc/digital_block_tree.xml +++ b/gr-digital/grc/digital_block_tree.xml @@ -1,4 +1,26 @@ + + +