aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt6
-rw-r--r--cmake/Modules/FindSWIG.cmake4
-rw-r--r--cmake/Modules/UseSWIG.cmake4
-rw-r--r--docs/doxygen/Doxyfile.in3
-rw-r--r--docs/doxygen/other/LICENSE.html490
-rw-r--r--docs/doxygen/other/build_guide.dox9
-rw-r--r--docs/doxygen/other/components.dox9
-rw-r--r--docs/doxygen/other/ctrlport.dox9
-rw-r--r--docs/doxygen/other/group_defs.dox9
-rw-r--r--docs/doxygen/other/license.dox15
-rw-r--r--docs/doxygen/other/logger.dox9
-rw-r--r--docs/doxygen/other/main_page.dox22
-rw-r--r--docs/doxygen/other/metadata.dox9
-rw-r--r--docs/doxygen/other/msg_passing.dox9
-rw-r--r--docs/doxygen/other/ofdm.dox9
-rw-r--r--docs/doxygen/other/oot_config.dox9
-rw-r--r--docs/doxygen/other/operating_fg.dox9
-rw-r--r--docs/doxygen/other/packet_txrx.dox9
-rw-r--r--docs/doxygen/other/perf_counters.dox9
-rw-r--r--docs/doxygen/other/pfb_intro.dox9
-rw-r--r--docs/doxygen/other/pmt.dox9
-rw-r--r--docs/doxygen/other/prefs.dox9
-rw-r--r--docs/doxygen/other/python_blocks.dox11
-rw-r--r--docs/doxygen/other/stream_tags.dox9
-rw-r--r--docs/doxygen/other/tagged_stream_blocks.dox9
-rw-r--r--docs/doxygen/other/thread_affinity.dox9
-rw-r--r--docs/doxygen/other/usage.dox9
-rw-r--r--docs/doxygen/other/volk_guide.dox9
-rw-r--r--gnuradio-runtime/CMakeLists.txt10
-rw-r--r--gnuradio-runtime/lib/controlport/CMakeLists.txt28
-rw-r--r--gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt34
-rw-r--r--gr-blocks/swig/CMakeLists.txt5
-rw-r--r--gr-blocks/swig/blocks_swig.py.in5
-rw-r--r--gr-blocks/swig/blocks_swig0.i1
-rw-r--r--gr-blocks/swig/blocks_swig1.i46
-rw-r--r--gr-blocks/swig/blocks_swig10.i90
-rw-r--r--gr-blocks/swig/blocks_swig2.i75
-rw-r--r--gr-blocks/swig/blocks_swig3.i81
-rw-r--r--gr-blocks/swig/blocks_swig4.i36
-rw-r--r--gr-blocks/swig/blocks_swig5.i72
-rw-r--r--gr-blocks/swig/blocks_swig6.i107
-rw-r--r--gr-blocks/swig/blocks_swig7.i96
-rw-r--r--gr-blocks/swig/blocks_swig8.i93
-rw-r--r--gr-blocks/swig/blocks_swig9.i93
-rw-r--r--gr-dtv/lib/dvbt2/dvbt2_modulator_bc_impl.cc357
-rw-r--r--gr-fec/include/gnuradio/fec/polar_decoder_common.h6
-rw-r--r--gr-uhd/apps/uhd_app.py74
-rwxr-xr-xgr-uhd/apps/uhd_fft5
-rw-r--r--gr-uhd/lib/usrp_source_impl.cc10
-rw-r--r--gr-uhd/lib/usrp_source_impl.h1
-rw-r--r--gr-utils/python/modtool/gr-newmod/cmake/Modules/UseSWIG.cmake4
-rw-r--r--grc/gui/Actions.py10
-rw-r--r--grc/gui/Application.py27
-rw-r--r--grc/gui/Bars.py2
m---------volk0
55 files changed, 1354 insertions, 749 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 051951d8eb..7e590449f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -291,9 +291,11 @@ GR_PYTHON_CHECK_MODULE("six - python 2 and 3 compatibility library" six "True" S
find_package(SWIG)
if(SWIG_FOUND)
- # Minimum SWIG version required is 1.3.31
+ # Minimum SWIG version required is 2.0.4
+ # Recommended revisit: EOL of Ubuntu 12.04 LTS, bump to 2.0.7
+ # see https://github.com/gnuradio/gnuradio/issues/1222
set(SWIG_VERSION_CHECK FALSE)
- if("${SWIG_VERSION}" VERSION_GREATER "1.3.30")
+ if("${SWIG_VERSION}" VERSION_GREATER "2.0.3")
set(SWIG_VERSION_CHECK TRUE)
endif()
endif(SWIG_FOUND)
diff --git a/cmake/Modules/FindSWIG.cmake b/cmake/Modules/FindSWIG.cmake
index 156bd5ed52..ed1ac93341 100644
--- a/cmake/Modules/FindSWIG.cmake
+++ b/cmake/Modules/FindSWIG.cmake
@@ -86,7 +86,7 @@ if(SWIG_FOUND)
# SWIG was found; make sure the version meets GR's needs
message(STATUS "Found SWIG version ${SWIG_VERSION}.")
- if("${SWIG_VERSION}" VERSION_GREATER "1.3.30")
+ if("${SWIG_VERSION}" VERSION_GREATER "2.0.3")
if(NOT "${SWIG_VERSION}" VERSION_EQUAL "3.0.3" AND
NOT "${SWIG_VERSION}" VERSION_EQUAL "3.0.4")
set(SWIG_VERSION_CHECK TRUE)
@@ -94,7 +94,7 @@ if(SWIG_FOUND)
message(STATUS "SWIG versions 3.0.3 and 3.0.4 fail to work with GNU Radio.")
endif()
else()
- message(STATUS "Minimum SWIG version required is 1.3.31 for GNU Radio.")
+ message(STATUS "Minimum SWIG version required is 2.0.4 for GNU Radio.")
endif()
else()
diff --git a/cmake/Modules/UseSWIG.cmake b/cmake/Modules/UseSWIG.cmake
index 43b4bea88f..05eb9fca1a 100644
--- a/cmake/Modules/UseSWIG.cmake
+++ b/cmake/Modules/UseSWIG.cmake
@@ -224,9 +224,9 @@ print(re.sub('\\W', '_', '${name} ${reldir} ' + unique))"
foreach(swig_gen_file ${${outfiles}})
add_custom_command(
OUTPUT ${swig_gen_file}
- COMMAND
+ COMMAND "${CMAKE_COMMAND}" -E touch_nocreate "${swig_gen_file}"
DEPENDS ${_target}
- COMMENT
+ COMMENT "dummy command to show ${_target} dependency of ${swig_gen_file}"
)
endforeach()
diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in
index fa4cb7ebb8..830bf54e9f 100644
--- a/docs/doxygen/Doxyfile.in
+++ b/docs/doxygen/Doxyfile.in
@@ -700,7 +700,8 @@ WARN_LOGFILE =
# with spaces.
INPUT = @top_srcdir@ \
- @top_builddir@
+ @top_builddir@ \
+ @top_srcdir@/docs/doxygen/other/license.dox
# 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
diff --git a/docs/doxygen/other/LICENSE.html b/docs/doxygen/other/LICENSE.html
new file mode 100644
index 0000000000..a279a5f120
--- /dev/null
+++ b/docs/doxygen/other/LICENSE.html
@@ -0,0 +1,490 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>GNU Free Documentation License v1.3 - GNU Project - Free Software Foundation (FSF)</title>
+ <link rel="alternate" type="application/rdf+xml"
+ href="http://www.gnu.org/licenses/fdl-1.3.rdf" />
+</head>
+<body>
+
+<h3 style="text-align: center;">GNU Free Documentation License</h3>
+
+<p style="text-align: center;">Version 1.3, 3 November 2008</p>
+
+<p> Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ &lt;<a href="http://fsf.org/">http://fsf.org/</a>&gt;
+ </p><p>Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.</p>
+
+<h4><a name="section0"></a>0. PREAMBLE</h4>
+
+<p>The purpose of this License is to make a manual, textbook, or other
+functional and useful document &quot;free&quot; in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.</p>
+
+<p>This License is a kind of &quot;copyleft&quot;, which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.</p>
+
+<p>We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.</p>
+
+<h4><a name="section1"></a>1. APPLICABILITY AND DEFINITIONS</h4>
+
+<p>This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The &quot;Document&quot;, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as &quot;you&quot;. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.</p>
+
+<p>A &quot;Modified Version&quot; of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.</p>
+
+<p>A &quot;Secondary Section&quot; is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.</p>
+
+<p>The &quot;Invariant Sections&quot; are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.</p>
+
+<p>The &quot;Cover Texts&quot; are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.</p>
+
+<p>A &quot;Transparent&quot; copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not &quot;Transparent&quot; is called &quot;Opaque&quot;.</p>
+
+<p>Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.</p>
+
+<p>The &quot;Title Page&quot; means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, &quot;Title Page&quot; means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.</p>
+
+<p>The &quot;publisher&quot; means any person or entity that distributes copies of
+the Document to the public.</p>
+
+<p>A section &quot;Entitled XYZ&quot; means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as &quot;Acknowledgements&quot;,
+&quot;Dedications&quot;, &quot;Endorsements&quot;, or &quot;History&quot;.) To &quot;Preserve the Title&quot;
+of such a section when you modify the Document means that it remains a
+section &quot;Entitled XYZ&quot; according to this definition.</p>
+
+<p>The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.</p>
+
+<h4><a name="section2"></a>2. VERBATIM COPYING</h4>
+
+<p>You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no
+other conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.</p>
+
+<p>You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.</p>
+
+<h4><a name="section3"></a>3. COPYING IN QUANTITY</h4>
+
+<p>If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.</p>
+
+<p>If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.</p>
+
+<p>If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.</p>
+
+<p>It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to
+give them a chance to provide you with an updated version of the
+Document.</p>
+
+<h4><a name="section4"></a>4. MODIFICATIONS</h4>
+
+<p>You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:</p>
+
+<ul>
+
+
+<li>A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+</li>
+
+<li>B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+</li>
+
+<li>C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+</li>
+
+<li>D. Preserve all the copyright notices of the Document.
+</li>
+
+<li>E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+</li>
+
+<li>F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+</li>
+
+<li>G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+</li>
+
+<li>H. Include an unaltered copy of this License.
+</li>
+
+<li>I. Preserve the section Entitled &quot;History&quot;, Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled &quot;History&quot; in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+</li>
+
+<li>J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the &quot;History&quot; section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+</li>
+
+<li>K. For any section Entitled &quot;Acknowledgements&quot; or &quot;Dedications&quot;,
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+</li>
+
+<li>L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+</li>
+
+<li>M. Delete any section Entitled &quot;Endorsements&quot;. Such a section
+ may not be included in the Modified Version.
+</li>
+
+<li>N. Do not retitle any existing section to be Entitled &quot;Endorsements&quot;
+ or to conflict in title with any Invariant Section.
+</li>
+
+<li>O. Preserve any Warranty Disclaimers.</li>
+
+</ul>
+
+<p>If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.</p>
+
+<p>You may add a section Entitled &quot;Endorsements&quot;, provided it contains
+nothing but endorsements of your Modified Version by various
+parties&mdash;for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.</p>
+
+<p>You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.</p>
+
+<p>The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.</p>
+
+<h4><a name="section5"></a>5. COMBINING DOCUMENTS</h4>
+
+<p>You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.</p>
+
+<p>The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.</p>
+
+<p>In the combination, you must combine any sections Entitled &quot;History&quot;
+in the various original documents, forming one section Entitled
+&quot;History&quot;; likewise combine any sections Entitled &quot;Acknowledgements&quot;,
+and any sections Entitled &quot;Dedications&quot;. You must delete all sections
+Entitled &quot;Endorsements&quot;.</p>
+
+<h4><a name="section6"></a>6. COLLECTIONS OF DOCUMENTS</h4>
+
+<p>You may make a collection consisting of the Document and other
+documents released under this License, and replace the individual
+copies of this License in the various documents with a single copy
+that is included in the collection, provided that you follow the rules
+of this License for verbatim copying of each of the documents in all
+other respects.</p>
+
+<p>You may extract a single document from such a collection, and
+distribute it individually under this License, provided you insert a
+copy of this License into the extracted document, and follow this
+License in all other respects regarding verbatim copying of that
+document.</p>
+
+<h4><a name="section7"></a>7. AGGREGATION WITH INDEPENDENT WORKS</h4>
+
+<p>A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an &quot;aggregate&quot; if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.</p>
+
+<p>If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.</p>
+
+<h4><a name="section8"></a>8. TRANSLATION</h4>
+
+<p>Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.</p>
+
+<p>If a section in the Document is Entitled &quot;Acknowledgements&quot;,
+&quot;Dedications&quot;, or &quot;History&quot;, the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.</p>
+
+<h4><a name="section9"></a>9. TERMINATION</h4>
+
+<p>You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.</p>
+
+<p>However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.</p>
+
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.</p>
+
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.</p>
+
+<h4><a name="section10"></a>10. FUTURE REVISIONS OF THIS LICENSE</h4>
+
+<p>The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns. See
+<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.</p>
+
+<p>Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License &quot;or any later version&quot; applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.</p>
+
+<h4><a name="section11"></a>11. RELICENSING</h4>
+
+<p>&quot;Massive Multiauthor Collaboration Site&quot; (or &quot;MMC Site&quot;) means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+&quot;Massive Multiauthor Collaboration&quot; (or &quot;MMC&quot;) contained in the site
+means any set of copyrightable works thus published on the MMC site.</p>
+
+<p>&quot;CC-BY-SA&quot; means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.</p>
+
+<p>&quot;Incorporate&quot; means to publish or republish a Document, in whole or in
+part, as part of another Document.</p>
+
+<p>An MMC is &quot;eligible for relicensing&quot; if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.</p>
+
+<p>The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.</p>
+
+<h3><a name="addendum"></a>ADDENDUM: How to use this License for your documents</h3>
+
+<p>To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:</p>
+
+<pre> Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled &quot;GNU
+ Free Documentation License&quot;.
+</pre>
+
+<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the &quot;with &hellip; Texts.&quot; line with this:</p>
+
+<pre> with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+</pre>
+
+<p>If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.</p>
+
+<p>If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</p>
+
+</body></html>
diff --git a/docs/doxygen/other/build_guide.dox b/docs/doxygen/other/build_guide.dox
index b7218a2dbe..bbcb7c7d4a 100644
--- a/docs/doxygen/other/build_guide.dox
+++ b/docs/doxygen/other/build_guide.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page build_guide Build Instructions and Information
\section dependencies Dependencies
diff --git a/docs/doxygen/other/components.dox b/docs/doxygen/other/components.dox
index 564085fc80..b1f88d20b6 100644
--- a/docs/doxygen/other/components.dox
+++ b/docs/doxygen/other/components.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_components Components
\section components_blocks GNU Radio Blocks
diff --git a/docs/doxygen/other/ctrlport.dox b/docs/doxygen/other/ctrlport.dox
index fc0ac70320..d5ba8fdefc 100644
--- a/docs/doxygen/other/ctrlport.dox
+++ b/docs/doxygen/other/ctrlport.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_ctrlport ControlPort
\section ctrlport_introduction Introduction
diff --git a/docs/doxygen/other/group_defs.dox b/docs/doxygen/other/group_defs.dox
index a534473ee4..fecde8c9c6 100644
--- a/docs/doxygen/other/group_defs.dox
+++ b/docs/doxygen/other/group_defs.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*!
* \defgroup block GNU Radio C++ Signal Processing Blocks
* \brief All C++ blocks that can be used in GR graphs are listed here or in
diff --git a/docs/doxygen/other/license.dox b/docs/doxygen/other/license.dox
new file mode 100644
index 0000000000..d1c511a614
--- /dev/null
+++ b/docs/doxygen/other/license.dox
@@ -0,0 +1,15 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
+/*! \page License
+
+\htmlinclude ./LICENSE.html
+
+*/
+
diff --git a/docs/doxygen/other/logger.dox b/docs/doxygen/other/logger.dox
index f057e59d9b..ae6a744d00 100644
--- a/docs/doxygen/other/logger.dox
+++ b/docs/doxygen/other/logger.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_logger Logging
\section logging Logging
diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox
index 67487ddfd6..fede4524fd 100644
--- a/docs/doxygen/other/main_page.dox
+++ b/docs/doxygen/other/main_page.dox
@@ -1,15 +1,24 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \mainpage
\image html gnuradio-logo.svg
-Welcome to GNU Radio!
+<H1> Welcome to GNU Radio! </H1>
For details about GNU Radio and using it, please see the
<a href="http://gnuradio.org" target="_blank"><b>main project page</b></a>.
Other information about the project and discussion about GNU Radio,
software radio, and communication theory in general can be found at
-the <a href="http://www.trondeau.com" target="_blank"><b>GNU Radio blog</b></a>.
+the <a href="http://www.gnuradio.org/blog" target="_blank"><b>GNU Radio blog</b></a>.
This manual is split into two parts: A usage manual and a reference. The usage manual
deals with concepts of GNU Radio, introductions, how to build GNU Radio etc.
@@ -22,4 +31,13 @@ A search function is also available at the top right.
\li \subpage page_usage "Part I - GNU Radio Usage"
\li \subpage page_components "Part II - Reference"
+<H3> Documentation License </H3>
+
+The Free Software Foundation gives permission to use and distribute
+the program source documentation strings, after processing them
+through Doxygen or some comparable program, under the GNU Free
+Documentation License, version 1.3 or later. However, we do not grant
+such permission for the program code in our release (aside from the
+documentation strings).
+
*/
diff --git a/docs/doxygen/other/metadata.dox b/docs/doxygen/other/metadata.dox
index 4958e08aaa..d64f404e96 100644
--- a/docs/doxygen/other/metadata.dox
+++ b/docs/doxygen/other/metadata.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_metadata Metadata Information
\section metadata_introduction Introduction
diff --git a/docs/doxygen/other/msg_passing.dox b/docs/doxygen/other/msg_passing.dox
index 494ca03921..827ad4ee62 100644
--- a/docs/doxygen/other/msg_passing.dox
+++ b/docs/doxygen/other/msg_passing.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_msg_passing Message Passing
\section msg_passing_introduction Introduction
diff --git a/docs/doxygen/other/ofdm.dox b/docs/doxygen/other/ofdm.dox
index 9a3a18fab8..77d80a7441 100644
--- a/docs/doxygen/other/ofdm.dox
+++ b/docs/doxygen/other/ofdm.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_ofdm OFDM
\section ofdm_introduction Introduction
diff --git a/docs/doxygen/other/oot_config.dox b/docs/doxygen/other/oot_config.dox
index bb441c5060..d07c7a2808 100644
--- a/docs/doxygen/other/oot_config.dox
+++ b/docs/doxygen/other/oot_config.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_oot_config Out-of-Tree Configuration
New as of 3.6.5.
diff --git a/docs/doxygen/other/operating_fg.dox b/docs/doxygen/other/operating_fg.dox
index b075ca648a..c2c66cccd9 100644
--- a/docs/doxygen/other/operating_fg.dox
+++ b/docs/doxygen/other/operating_fg.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_operating_fg Handling flow graphs
\section flowgraph Operating a Flowgraph
diff --git a/docs/doxygen/other/packet_txrx.dox b/docs/doxygen/other/packet_txrx.dox
index 2a8aeae51e..c481e7e207 100644
--- a/docs/doxygen/other/packet_txrx.dox
+++ b/docs/doxygen/other/packet_txrx.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_packet_data Packet Data Transmission
\section packet_data_introduction Introduction
diff --git a/docs/doxygen/other/perf_counters.dox b/docs/doxygen/other/perf_counters.dox
index 9bca38268a..7562b11298 100644
--- a/docs/doxygen/other/perf_counters.dox
+++ b/docs/doxygen/other/perf_counters.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_perf_counters Performance Counters
\section pc_introduction Introduction
diff --git a/docs/doxygen/other/pfb_intro.dox b/docs/doxygen/other/pfb_intro.dox
index 43bea77777..83313e9568 100644
--- a/docs/doxygen/other/pfb_intro.dox
+++ b/docs/doxygen/other/pfb_intro.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_pfb Polyphase Filterbanks
\section pfb_introduction Introduction
diff --git a/docs/doxygen/other/pmt.dox b/docs/doxygen/other/pmt.dox
index 6805b27a8a..76f598809d 100644
--- a/docs/doxygen/other/pmt.dox
+++ b/docs/doxygen/other/pmt.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_pmt Polymorphic Types
\section pmt_introduction Introduction
diff --git a/docs/doxygen/other/prefs.dox b/docs/doxygen/other/prefs.dox
index 46f68c447e..d8c2782b1d 100644
--- a/docs/doxygen/other/prefs.dox
+++ b/docs/doxygen/other/prefs.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_prefs Configuration files
\section prefs Configuration / Preference Files
diff --git a/docs/doxygen/other/python_blocks.dox b/docs/doxygen/other/python_blocks.dox
index 49273cdcd8..2381b0cad0 100644
--- a/docs/doxygen/other/python_blocks.dox
+++ b/docs/doxygen/other/python_blocks.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_python_blocks Python Blocks
How to create blocks in Python
@@ -151,4 +160,4 @@ class msg_block(gr.basic_block):
pmt.intern('message received!'))
\endcode
-*/ \ No newline at end of file
+*/
diff --git a/docs/doxygen/other/stream_tags.dox b/docs/doxygen/other/stream_tags.dox
index 2af431b526..8edc598e96 100644
--- a/docs/doxygen/other/stream_tags.dox
+++ b/docs/doxygen/other/stream_tags.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_stream_tags Stream Tags
\section stream_tags_introduction Introduction
diff --git a/docs/doxygen/other/tagged_stream_blocks.dox b/docs/doxygen/other/tagged_stream_blocks.dox
index 4e75b29c6b..1a10483323 100644
--- a/docs/doxygen/other/tagged_stream_blocks.dox
+++ b/docs/doxygen/other/tagged_stream_blocks.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_tagged_stream_blocks Tagged Stream Blocks
\section tsb_introduction Introduction
diff --git a/docs/doxygen/other/thread_affinity.dox b/docs/doxygen/other/thread_affinity.dox
index edac813866..405477b8d3 100644
--- a/docs/doxygen/other/thread_affinity.dox
+++ b/docs/doxygen/other/thread_affinity.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_affinity Block Thread Affinity and Priority
\section affinity Block Thread Affinity
diff --git a/docs/doxygen/other/usage.dox b/docs/doxygen/other/usage.dox
index 717f14e610..2df378c670 100644
--- a/docs/doxygen/other/usage.dox
+++ b/docs/doxygen/other/usage.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page page_usage Usage Manual
Note: Once built, check out <a href="http://gnuradio.org" target="_blank">gnuradio.org</a> for
diff --git a/docs/doxygen/other/volk_guide.dox b/docs/doxygen/other/volk_guide.dox
index a6a24457a6..e5a55c1719 100644
--- a/docs/doxygen/other/volk_guide.dox
+++ b/docs/doxygen/other/volk_guide.dox
@@ -1,3 +1,12 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# Permission is granted to copy, distribute and/or modify this document
+# under the terms of the GNU Free Documentation License, Version 1.3
+# or any later version published by the Free Software Foundation;
+# with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+# A copy of the license is included in the section entitled "GNU
+# Free Documentation License".
+
/*! \page volk_guide Instructions for using VOLK in GNU Radio
Note: Many blocks have already been converted to use VOLK in their calls, so
diff --git a/gnuradio-runtime/CMakeLists.txt b/gnuradio-runtime/CMakeLists.txt
index d24c17a3f9..ee2c43b6eb 100644
--- a/gnuradio-runtime/CMakeLists.txt
+++ b/gnuradio-runtime/CMakeLists.txt
@@ -63,16 +63,6 @@ GR_SET_GLOBAL(GNURADIO_RUNTIME_PYTHONPATH ${GNURADIO_RUNTIME_PYTHONPATH})
FIND_PACKAGE(SWIG)
-if(SWIG_FOUND)
- set(SWIG_VERSION_CHECK FALSE)
- if("${SWIG_VERSION}" VERSION_GREATER "2.0.0")
- set(SWIG_VERSION_CHECK TRUE)
- else("${SWIG_VERSION}" VERSION_GREATER "2.0.0")
- message(STATUS "")
- message(STATUS "Ctrlport requires SWIG version >= 2.0")
- endif()
-endif(SWIG_FOUND)
-
GR_REGISTER_COMPONENT("gr-ctrlport" ENABLE_GR_CTRLPORT
Boost_FOUND
SWIG_FOUND
diff --git a/gnuradio-runtime/lib/controlport/CMakeLists.txt b/gnuradio-runtime/lib/controlport/CMakeLists.txt
index 80d31fc721..0aa8539742 100644
--- a/gnuradio-runtime/lib/controlport/CMakeLists.txt
+++ b/gnuradio-runtime/lib/controlport/CMakeLists.txt
@@ -51,28 +51,28 @@ MATH(EXPR CTRLPORT_BACKENDS "${CTRLPORT_BACKENDS} + 1")
message(STATUS "Found and enabling Thrift backend to ControlPort")
GR_APPEND_SUBCOMPONENT("thrift")
-# Run Thrrift To compile C++ and Python files
+# Run Thrift To compile C++ and Python files
message(STATUS "Running thrift to build C++ bindings")
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/)
-EXECUTE_PROCESS(
- COMMAND ${THRIFT_BIN} --gen cpp -out ${CMAKE_CURRENT_BINARY_DIR}/thrift/ ${CMAKE_CURRENT_SOURCE_DIR}/thrift/gnuradio.thrift
- OUTPUT_VARIABLE THRIFT_CPP_OUTPUT
- ERROR_VARIABLE THRIFT_CPP_ERROR
- )
+list(APPEND gnuradio_thrift_generated_sources
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_types.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_constants.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/thrift/ControlPort.cpp
+ )
+add_custom_command(
+ DEPENDS ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift
+ OUTPUT ${gnuradio_thrift_generated_sources}
+ COMMAND ${THRIFT_BIN} --gen cpp -out ${CMAKE_CURRENT_BINARY_DIR}/thrift/ ${CMAKE_CURRENT_SOURCE_DIR}/thrift/gnuradio.thrift
+ )
list(APPEND gnuradio_ctrlport_sources
${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcserver_thrift.cc
${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcpmtconverters_thrift.cc
${CMAKE_CURRENT_SOURCE_DIR}/thrift/rpcserver_booter_thrift.cc
${CMAKE_CURRENT_SOURCE_DIR}/thrift/thrift_application_base.cc
-)
-
-# add files built by compiling gnuradio.thrift
-list(APPEND gnuradio_ctrlport_sources
- ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_types.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/thrift/gnuradio_constants.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/thrift/ControlPort.cpp
-)
+ # add files built by compiling gnuradio.thrift
+ ${gnuradio_thrift_generated_sources}
+ )
# Add required libraries here
list(APPEND gnuradio_runtime_libs
diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt b/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt
index ecf24178f9..4b0dbf7b8a 100644
--- a/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt
+++ b/gnuradio-runtime/python/gnuradio/ctrlport/CMakeLists.txt
@@ -47,20 +47,7 @@ GR_PYTHON_INSTALL(
if(THRIFT_FOUND)
-EXECUTE_PROCESS(
- COMMAND ${THRIFT_BIN} --gen py -out ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift
- OUTPUT_VARIABLE THRIFT_PY_OUTPUT
- ERROR_VARIABLE THRIFT_PY_ERROR
- )
-
-GR_PYTHON_INSTALL(
- FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/RPCConnectionThrift.py
- DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/
-)
-
-GR_PYTHON_INSTALL(
- FILES
+ list(APPEND thrift_targets
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/__init__.py
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/constants.py
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/ControlPort.py
@@ -68,7 +55,24 @@ GR_PYTHON_INSTALL(
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/StreamReceiver.py
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/StreamReceiver-remote
${CMAKE_CURRENT_BINARY_DIR}/GNURadio/ttypes.py
+ )
+
+ add_custom_command(
+ DEPENDS ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift
+ OUTPUT ${thrift_targets}
+ COMMAND ${THRIFT_BIN} --gen py -out ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/controlport/thrift/gnuradio.thrift
+ )
+
+ GR_PYTHON_INSTALL(
+ FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/RPCConnectionThrift.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/
+ )
+
+ GR_PYTHON_INSTALL(
+ FILES
+ ${thrift_targets}
DESTINATION ${GR_PYTHON_DIR}/gnuradio/ctrlport/GNURadio
-)
+ )
endif(THRIFT_FOUND)
diff --git a/gr-blocks/swig/CMakeLists.txt b/gr-blocks/swig/CMakeLists.txt
index 5aec00ae92..d5e9a8a725 100644
--- a/gr-blocks/swig/CMakeLists.txt
+++ b/gr-blocks/swig/CMakeLists.txt
@@ -52,6 +52,11 @@ set(GR_SWIG_BLOCK_IFILES
blocks_swig3
blocks_swig4
blocks_swig5
+ blocks_swig6
+ blocks_swig7
+ blocks_swig8
+ blocks_swig9
+ blocks_swig10
)
foreach(swigfile ${GR_SWIG_BLOCK_IFILES})
diff --git a/gr-blocks/swig/blocks_swig.py.in b/gr-blocks/swig/blocks_swig.py.in
index 387f0a5d4f..71ab4dac16 100644
--- a/gr-blocks/swig/blocks_swig.py.in
+++ b/gr-blocks/swig/blocks_swig.py.in
@@ -27,3 +27,8 @@ from .blocks_swig2 import *
from .blocks_swig3 import *
from .blocks_swig4 import *
from .blocks_swig5 import *
+from .blocks_swig6 import *
+from .blocks_swig7 import *
+from .blocks_swig8 import *
+from .blocks_swig9 import *
+from .blocks_swig10 import *
diff --git a/gr-blocks/swig/blocks_swig0.i b/gr-blocks/swig/blocks_swig0.i
index 23efa7432f..48551ab06c 100644
--- a/gr-blocks/swig/blocks_swig0.i
+++ b/gr-blocks/swig/blocks_swig0.i
@@ -24,6 +24,7 @@
%include "gnuradio.i"
+//load generated python docstrings
%include "blocks_swig0_doc.i"
%{
diff --git a/gr-blocks/swig/blocks_swig1.i b/gr-blocks/swig/blocks_swig1.i
index 24483fcf91..cbff920d02 100644
--- a/gr-blocks/swig/blocks_swig1.i
+++ b/gr-blocks/swig/blocks_swig1.i
@@ -24,24 +24,10 @@
%include "gnuradio.i"
+//load generated python docstrings
%include "blocks_swig1_doc.i"
%{
-#include "gnuradio/blocks/skiphead.h"
-#include "gnuradio/blocks/stream_mux.h"
-#include "gnuradio/blocks/stream_to_streams.h"
-#include "gnuradio/blocks/stream_to_tagged_stream.h"
-#include "gnuradio/blocks/stream_to_vector.h"
-#include "gnuradio/blocks/streams_to_stream.h"
-#include "gnuradio/blocks/streams_to_vector.h"
-#include "gnuradio/blocks/tag_debug.h"
-#include "gnuradio/blocks/tagged_file_sink.h"
-#include "gnuradio/blocks/tsb_vector_sink_b.h"
-#include "gnuradio/blocks/tsb_vector_sink_c.h"
-#include "gnuradio/blocks/tsb_vector_sink_f.h"
-#include "gnuradio/blocks/tsb_vector_sink_i.h"
-#include "gnuradio/blocks/tsb_vector_sink_s.h"
-#include "gnuradio/blocks/throttle.h"
#include "gnuradio/blocks/vector_map.h"
#include "gnuradio/blocks/vector_to_stream.h"
#include "gnuradio/blocks/vector_to_streams.h"
@@ -64,21 +50,6 @@
#include "gnuradio/blocks/wavfile_source.h"
%}
-%include "gnuradio/blocks/skiphead.h"
-%include "gnuradio/blocks/stream_mux.h"
-%include "gnuradio/blocks/stream_to_streams.h"
-%include "gnuradio/blocks/stream_to_tagged_stream.h"
-%include "gnuradio/blocks/stream_to_vector.h"
-%include "gnuradio/blocks/streams_to_stream.h"
-%include "gnuradio/blocks/streams_to_vector.h"
-%include "gnuradio/blocks/tag_debug.h"
-%include "gnuradio/blocks/tagged_file_sink.h"
-%include "gnuradio/blocks/tsb_vector_sink_b.h"
-%include "gnuradio/blocks/tsb_vector_sink_c.h"
-%include "gnuradio/blocks/tsb_vector_sink_f.h"
-%include "gnuradio/blocks/tsb_vector_sink_i.h"
-%include "gnuradio/blocks/tsb_vector_sink_s.h"
-%include "gnuradio/blocks/throttle.h"
%include "gnuradio/blocks/vector_map.h"
%include "gnuradio/blocks/vector_to_stream.h"
%include "gnuradio/blocks/vector_to_streams.h"
@@ -100,21 +71,6 @@
%include "gnuradio/blocks/wavfile_sink.h"
%include "gnuradio/blocks/wavfile_source.h"
-GR_SWIG_BLOCK_MAGIC2(blocks, skiphead);
-GR_SWIG_BLOCK_MAGIC2(blocks, stream_mux);
-GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_streams);
-GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_tagged_stream);
-GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_vector);
-GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_stream);
-GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_vector);
-GR_SWIG_BLOCK_MAGIC2(blocks, tag_debug);
-GR_SWIG_BLOCK_MAGIC2(blocks, tagged_file_sink);
-GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_b);
-GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_c);
-GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_f);
-GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_i);
-GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_s);
-GR_SWIG_BLOCK_MAGIC2(blocks, throttle);
GR_SWIG_BLOCK_MAGIC2(blocks, vector_map);
GR_SWIG_BLOCK_MAGIC2(blocks, vector_to_stream);
GR_SWIG_BLOCK_MAGIC2(blocks, vector_to_streams);
diff --git a/gr-blocks/swig/blocks_swig10.i b/gr-blocks/swig/blocks_swig10.i
new file mode 100644
index 0000000000..5872b17cf3
--- /dev/null
+++ b/gr-blocks/swig/blocks_swig10.i
@@ -0,0 +1,90 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2017 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.
+ */
+
+#define BLOCKS_API
+
+%include "gnuradio.i"
+
+//load generated python docstrings
+%include "blocks_swig10_doc.i"
+
+%{
+#include "gnuradio/blocks/min_ff.h"
+#include "gnuradio/blocks/min_ii.h"
+#include "gnuradio/blocks/min_ss.h"
+#include "gnuradio/blocks/moving_average_cc.h"
+#include "gnuradio/blocks/moving_average_ff.h"
+#include "gnuradio/blocks/moving_average_ii.h"
+#include "gnuradio/blocks/moving_average_ss.h"
+#include "gnuradio/blocks/nlog10_ff.h"
+#include "gnuradio/blocks/not_bb.h"
+#include "gnuradio/blocks/not_ss.h"
+#include "gnuradio/blocks/not_ii.h"
+#include "gnuradio/blocks/or_bb.h"
+#include "gnuradio/blocks/or_ss.h"
+#include "gnuradio/blocks/or_ii.h"
+#include "gnuradio/blocks/patterned_interleaver.h"
+#include "gnuradio/blocks/pack_k_bits_bb.h"
+#include "gnuradio/blocks/packed_to_unpacked_bb.h"
+#include "gnuradio/blocks/packed_to_unpacked_ss.h"
+#include "gnuradio/blocks/packed_to_unpacked_ii.h"
+%}
+
+%include "gnuradio/blocks/min_ff.h"
+%include "gnuradio/blocks/min_ii.h"
+%include "gnuradio/blocks/min_ss.h"
+%include "gnuradio/blocks/moving_average_cc.h"
+%include "gnuradio/blocks/moving_average_ff.h"
+%include "gnuradio/blocks/moving_average_ii.h"
+%include "gnuradio/blocks/moving_average_ss.h"
+%include "gnuradio/blocks/nlog10_ff.h"
+%include "gnuradio/blocks/not_bb.h"
+%include "gnuradio/blocks/not_ss.h"
+%include "gnuradio/blocks/not_ii.h"
+%include "gnuradio/blocks/or_bb.h"
+%include "gnuradio/blocks/or_ss.h"
+%include "gnuradio/blocks/or_ii.h"
+%include "gnuradio/blocks/patterned_interleaver.h"
+%include "gnuradio/blocks/pack_k_bits_bb.h"
+%include "gnuradio/blocks/packed_to_unpacked_bb.h"
+%include "gnuradio/blocks/packed_to_unpacked_ss.h"
+%include "gnuradio/blocks/packed_to_unpacked_ii.h"
+
+GR_SWIG_BLOCK_MAGIC2(blocks, min_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, min_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, min_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_cc);
+GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, nlog10_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, not_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, not_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, not_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, or_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, or_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, or_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, patterned_interleaver);
+GR_SWIG_BLOCK_MAGIC2(blocks, pack_k_bits_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_ii);
diff --git a/gr-blocks/swig/blocks_swig2.i b/gr-blocks/swig/blocks_swig2.i
index 92db800d95..ea25a6bccc 100644
--- a/gr-blocks/swig/blocks_swig2.i
+++ b/gr-blocks/swig/blocks_swig2.i
@@ -31,26 +31,6 @@
%include "feval.i"
%{
-#include "gnuradio/blocks/abs_ff.h"
-#include "gnuradio/blocks/abs_ss.h"
-#include "gnuradio/blocks/abs_ii.h"
-#include "gnuradio/blocks/add_ff.h"
-#include "gnuradio/blocks/add_ss.h"
-#include "gnuradio/blocks/add_ii.h"
-#include "gnuradio/blocks/add_cc.h"
-#include "gnuradio/blocks/add_const_bb.h"
-#include "gnuradio/blocks/add_const_ff.h"
-#include "gnuradio/blocks/add_const_ss.h"
-#include "gnuradio/blocks/add_const_ii.h"
-#include "gnuradio/blocks/add_const_cc.h"
-#include "gnuradio/blocks/add_const_vbb.h"
-#include "gnuradio/blocks/add_const_vff.h"
-#include "gnuradio/blocks/add_const_vss.h"
-#include "gnuradio/blocks/add_const_vii.h"
-#include "gnuradio/blocks/add_const_vcc.h"
-#include "gnuradio/blocks/and_bb.h"
-#include "gnuradio/blocks/and_ss.h"
-#include "gnuradio/blocks/and_ii.h"
#include "gnuradio/blocks/and_const_bb.h"
#include "gnuradio/blocks/and_const_ss.h"
#include "gnuradio/blocks/and_const_ii.h"
@@ -72,33 +52,8 @@
#include "gnuradio/blocks/complex_to_mag_squared.h"
#include "gnuradio/blocks/complex_to_arg.h"
#include "gnuradio/blocks/conjugate_cc.h"
-#include "gnuradio/blocks/deinterleave.h"
-#include "gnuradio/blocks/divide_ff.h"
-#include "gnuradio/blocks/divide_ss.h"
-#include "gnuradio/blocks/divide_ii.h"
-#include "gnuradio/blocks/divide_cc.h"
%}
-%include "gnuradio/blocks/abs_ff.h"
-%include "gnuradio/blocks/abs_ss.h"
-%include "gnuradio/blocks/abs_ii.h"
-%include "gnuradio/blocks/add_ff.h"
-%include "gnuradio/blocks/add_ss.h"
-%include "gnuradio/blocks/add_ii.h"
-%include "gnuradio/blocks/add_cc.h"
-%include "gnuradio/blocks/add_const_bb.h"
-%include "gnuradio/blocks/add_const_ff.h"
-%include "gnuradio/blocks/add_const_ss.h"
-%include "gnuradio/blocks/add_const_ii.h"
-%include "gnuradio/blocks/add_const_cc.h"
-%include "gnuradio/blocks/add_const_vbb.h"
-%include "gnuradio/blocks/add_const_vff.h"
-%include "gnuradio/blocks/add_const_vss.h"
-%include "gnuradio/blocks/add_const_vii.h"
-%include "gnuradio/blocks/add_const_vcc.h"
-%include "gnuradio/blocks/and_bb.h"
-%include "gnuradio/blocks/and_ss.h"
-%include "gnuradio/blocks/and_ii.h"
%include "gnuradio/blocks/and_const_bb.h"
%include "gnuradio/blocks/and_const_ss.h"
%include "gnuradio/blocks/and_const_ii.h"
@@ -120,32 +75,7 @@
%include "gnuradio/blocks/complex_to_mag_squared.h"
%include "gnuradio/blocks/complex_to_arg.h"
%include "gnuradio/blocks/conjugate_cc.h"
-%include "gnuradio/blocks/deinterleave.h"
-%include "gnuradio/blocks/divide_ff.h"
-%include "gnuradio/blocks/divide_ss.h"
-%include "gnuradio/blocks/divide_ii.h"
-%include "gnuradio/blocks/divide_cc.h"
-GR_SWIG_BLOCK_MAGIC2(blocks, abs_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, abs_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, abs_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vbb);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vff);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vss);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vii);
-GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vcc);
-GR_SWIG_BLOCK_MAGIC2(blocks, and_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, and_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, and_ii);
GR_SWIG_BLOCK_MAGIC2(blocks, and_const_bb);
GR_SWIG_BLOCK_MAGIC2(blocks, and_const_ss);
GR_SWIG_BLOCK_MAGIC2(blocks, and_const_ii);
@@ -167,8 +97,3 @@ GR_SWIG_BLOCK_MAGIC2(blocks, complex_to_mag);
GR_SWIG_BLOCK_MAGIC2(blocks, complex_to_mag_squared);
GR_SWIG_BLOCK_MAGIC2(blocks, complex_to_arg);
GR_SWIG_BLOCK_MAGIC2(blocks, conjugate_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, deinterleave);
-GR_SWIG_BLOCK_MAGIC2(blocks, divide_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, divide_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, divide_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, divide_cc);
diff --git a/gr-blocks/swig/blocks_swig3.i b/gr-blocks/swig/blocks_swig3.i
index 629ada54ea..6794b75d57 100644
--- a/gr-blocks/swig/blocks_swig3.i
+++ b/gr-blocks/swig/blocks_swig3.i
@@ -28,33 +28,6 @@
%include "blocks_swig3_doc.i"
%{
-#include "gnuradio/blocks/float_to_char.h"
-#include "gnuradio/blocks/float_to_complex.h"
-#include "gnuradio/blocks/magphase_to_complex.h"
-#include "gnuradio/blocks/float_to_int.h"
-#include "gnuradio/blocks/float_to_short.h"
-#include "gnuradio/blocks/float_to_uchar.h"
-#include "gnuradio/blocks/int_to_float.h"
-#include "gnuradio/blocks/integrate_ss.h"
-#include "gnuradio/blocks/integrate_ii.h"
-#include "gnuradio/blocks/integrate_ff.h"
-#include "gnuradio/blocks/integrate_cc.h"
-#include "gnuradio/blocks/interleave.h"
-#include "gnuradio/blocks/interleaved_short_to_complex.h"
-#include "gnuradio/blocks/interleaved_char_to_complex.h"
-#include "gnuradio/blocks/keep_m_in_n.h"
-#include "gnuradio/blocks/keep_one_in_n.h"
-#include "gnuradio/blocks/lfsr_32k_source_s.h"
-#include "gnuradio/blocks/max_ff.h"
-#include "gnuradio/blocks/max_ii.h"
-#include "gnuradio/blocks/max_ss.h"
-#include "gnuradio/blocks/min_ff.h"
-#include "gnuradio/blocks/min_ii.h"
-#include "gnuradio/blocks/min_ss.h"
-#include "gnuradio/blocks/moving_average_cc.h"
-#include "gnuradio/blocks/moving_average_ff.h"
-#include "gnuradio/blocks/moving_average_ii.h"
-#include "gnuradio/blocks/moving_average_ss.h"
#include "gnuradio/blocks/multiply_ss.h"
#include "gnuradio/blocks/multiply_ii.h"
#include "gnuradio/blocks/multiply_ff.h"
@@ -77,33 +50,6 @@
#include "gnuradio/blocks/mute_cc.h"
%}
-%include "gnuradio/blocks/float_to_char.h"
-%include "gnuradio/blocks/float_to_complex.h"
-%include "gnuradio/blocks/magphase_to_complex.h"
-%include "gnuradio/blocks/float_to_int.h"
-%include "gnuradio/blocks/float_to_short.h"
-%include "gnuradio/blocks/float_to_uchar.h"
-%include "gnuradio/blocks/int_to_float.h"
-%include "gnuradio/blocks/integrate_ss.h"
-%include "gnuradio/blocks/integrate_ii.h"
-%include "gnuradio/blocks/integrate_ff.h"
-%include "gnuradio/blocks/integrate_cc.h"
-%include "gnuradio/blocks/interleave.h"
-%include "gnuradio/blocks/interleaved_short_to_complex.h"
-%include "gnuradio/blocks/interleaved_char_to_complex.h"
-%include "gnuradio/blocks/keep_m_in_n.h"
-%include "gnuradio/blocks/keep_one_in_n.h"
-%include "gnuradio/blocks/lfsr_32k_source_s.h"
-%include "gnuradio/blocks/max_ff.h"
-%include "gnuradio/blocks/max_ii.h"
-%include "gnuradio/blocks/max_ss.h"
-%include "gnuradio/blocks/min_ff.h"
-%include "gnuradio/blocks/min_ii.h"
-%include "gnuradio/blocks/min_ss.h"
-%include "gnuradio/blocks/moving_average_cc.h"
-%include "gnuradio/blocks/moving_average_ff.h"
-%include "gnuradio/blocks/moving_average_ii.h"
-%include "gnuradio/blocks/moving_average_ss.h"
%include "gnuradio/blocks/multiply_ss.h"
%include "gnuradio/blocks/multiply_ii.h"
%include "gnuradio/blocks/multiply_ff.h"
@@ -125,33 +71,6 @@
%include "gnuradio/blocks/mute_ff.h"
%include "gnuradio/blocks/mute_cc.h"
-GR_SWIG_BLOCK_MAGIC2(blocks, float_to_char);
-GR_SWIG_BLOCK_MAGIC2(blocks, float_to_complex);
-GR_SWIG_BLOCK_MAGIC2(blocks, magphase_to_complex);
-GR_SWIG_BLOCK_MAGIC2(blocks, float_to_int);
-GR_SWIG_BLOCK_MAGIC2(blocks, float_to_short);
-GR_SWIG_BLOCK_MAGIC2(blocks, float_to_uchar);
-GR_SWIG_BLOCK_MAGIC2(blocks, int_to_float);
-GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, integrate_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, interleave);
-GR_SWIG_BLOCK_MAGIC2(blocks, interleaved_short_to_complex);
-GR_SWIG_BLOCK_MAGIC2(blocks, interleaved_char_to_complex);
-GR_SWIG_BLOCK_MAGIC2(blocks, keep_m_in_n);
-GR_SWIG_BLOCK_MAGIC2(blocks, keep_one_in_n);
-GR_SWIG_BLOCK_MAGIC2(blocks, lfsr_32k_source_s);
-GR_SWIG_BLOCK_MAGIC2(blocks, max_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, max_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, max_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, min_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, min_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, min_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, moving_average_ss);
GR_SWIG_BLOCK_MAGIC2(blocks, multiply_ss);
GR_SWIG_BLOCK_MAGIC2(blocks, multiply_ii);
GR_SWIG_BLOCK_MAGIC2(blocks, multiply_ff);
diff --git a/gr-blocks/swig/blocks_swig4.i b/gr-blocks/swig/blocks_swig4.i
index 4c2c93e6b1..bb39740123 100644
--- a/gr-blocks/swig/blocks_swig4.i
+++ b/gr-blocks/swig/blocks_swig4.i
@@ -31,15 +31,6 @@
%include "blocks_swig4_doc.i"
%{
-#include "gnuradio/blocks/nlog10_ff.h"
-#include "gnuradio/blocks/not_bb.h"
-#include "gnuradio/blocks/not_ss.h"
-#include "gnuradio/blocks/not_ii.h"
-#include "gnuradio/blocks/patterned_interleaver.h"
-#include "gnuradio/blocks/pack_k_bits_bb.h"
-#include "gnuradio/blocks/packed_to_unpacked_bb.h"
-#include "gnuradio/blocks/packed_to_unpacked_ss.h"
-#include "gnuradio/blocks/packed_to_unpacked_ii.h"
#include "gnuradio/blocks/pdu_filter.h"
#include "gnuradio/blocks/pdu_set.h"
#include "gnuradio/blocks/pdu_remove.h"
@@ -60,15 +51,8 @@
#include "gnuradio/blocks/probe_signal_vi.h"
#include "gnuradio/blocks/probe_signal_vf.h"
#include "gnuradio/blocks/probe_signal_vc.h"
-#include "gnuradio/blocks/or_bb.h"
-#include "gnuradio/blocks/or_ss.h"
-#include "gnuradio/blocks/or_ii.h"
%}
-%include "gnuradio/blocks/nlog10_ff.h"
-%include "gnuradio/blocks/not_bb.h"
-%include "gnuradio/blocks/not_ss.h"
-%include "gnuradio/blocks/not_ii.h"
%include "gnuradio/blocks/probe_signal_b.h"
%include "gnuradio/blocks/probe_signal_s.h"
%include "gnuradio/blocks/probe_signal_i.h"
@@ -79,14 +63,6 @@
%include "gnuradio/blocks/probe_signal_vi.h"
%include "gnuradio/blocks/probe_signal_vf.h"
%include "gnuradio/blocks/probe_signal_vc.h"
-%include "gnuradio/blocks/or_bb.h"
-%include "gnuradio/blocks/or_ss.h"
-%include "gnuradio/blocks/or_ii.h"
-%include "gnuradio/blocks/pack_k_bits_bb.h"
-%include "gnuradio/blocks/packed_to_unpacked_bb.h"
-%include "gnuradio/blocks/packed_to_unpacked_ss.h"
-%include "gnuradio/blocks/packed_to_unpacked_ii.h"
-%include "gnuradio/blocks/patterned_interleaver.h"
%include "gnuradio/blocks/pdu_filter.h"
%include "gnuradio/blocks/pdu_set.h"
%include "gnuradio/blocks/pdu_remove.h"
@@ -98,15 +74,6 @@
%include "gnuradio/blocks/plateau_detector_fb.h"
%include "gnuradio/blocks/probe_rate.h"
-GR_SWIG_BLOCK_MAGIC2(blocks, nlog10_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, not_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, not_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, not_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, patterned_interleaver);
-GR_SWIG_BLOCK_MAGIC2(blocks, pack_k_bits_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, packed_to_unpacked_ii);
GR_SWIG_BLOCK_MAGIC2(blocks, peak_detector_fb);
GR_SWIG_BLOCK_MAGIC2(blocks, peak_detector_ib);
GR_SWIG_BLOCK_MAGIC2(blocks, peak_detector_sb);
@@ -117,9 +84,6 @@ GR_SWIG_BLOCK_MAGIC2(blocks, pdu_set);
GR_SWIG_BLOCK_MAGIC2(blocks, pdu_remove);
GR_SWIG_BLOCK_MAGIC2(blocks, pdu_to_tagged_stream);
GR_SWIG_BLOCK_MAGIC2(blocks, probe_rate);
-GR_SWIG_BLOCK_MAGIC2(blocks, or_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, or_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, or_ii);
GR_SWIG_BLOCK_MAGIC2(blocks, probe_signal_b);
GR_SWIG_BLOCK_MAGIC2(blocks, probe_signal_s);
GR_SWIG_BLOCK_MAGIC2(blocks, probe_signal_i);
diff --git a/gr-blocks/swig/blocks_swig5.i b/gr-blocks/swig/blocks_swig5.i
index 761b0a855a..da8048370a 100644
--- a/gr-blocks/swig/blocks_swig5.i
+++ b/gr-blocks/swig/blocks_swig5.i
@@ -31,6 +31,7 @@
%include "blocks_swig5_doc.i"
%{
+#include "gnuradio/blocks/pdu.h"
#include "gnuradio/blocks/random_pdu.h"
#include "gnuradio/blocks/regenerate_bb.h"
#include "gnuradio/blocks/repack_bits_bb.h"
@@ -50,30 +51,6 @@
#include "gnuradio/blocks/sub_ss.h"
#include "gnuradio/blocks/sub_ii.h"
#include "gnuradio/blocks/sub_cc.h"
-#include "gnuradio/blocks/tag_gate.h"
-#include "gnuradio/blocks/tagged_stream_align.h"
-#include "gnuradio/blocks/tagged_stream_mux.h"
-#include "gnuradio/blocks/tagged_stream_multiply_length.h"
-#include "gnuradio/blocks/tagged_stream_to_pdu.h"
-#include "gnuradio/blocks/tags_strobe.h"
-#include "gnuradio/blocks/tcp_server_sink.h"
-#include "gnuradio/blocks/test_tag_variable_rate_ff.h"
-#include "gnuradio/blocks/threshold_ff.h"
-#include "gnuradio/blocks/transcendental.h"
-#include "gnuradio/blocks/tuntap_pdu.h"
-#include "gnuradio/blocks/uchar_to_float.h"
-#include "gnuradio/blocks/udp_sink.h"
-#include "gnuradio/blocks/udp_source.h"
-#include "gnuradio/blocks/unpack_k_bits.h"
-#include "gnuradio/blocks/unpack_k_bits_bb.h"
-#include "gnuradio/blocks/unpacked_to_packed_bb.h"
-#include "gnuradio/blocks/unpacked_to_packed_ss.h"
-#include "gnuradio/blocks/unpacked_to_packed_ii.h"
-#include "gnuradio/blocks/vco_f.h"
-#include "gnuradio/blocks/vco_c.h"
-#include "gnuradio/blocks/xor_bb.h"
-#include "gnuradio/blocks/xor_ss.h"
-#include "gnuradio/blocks/xor_ii.h"
%}
%include "gnuradio/blocks/random_pdu.h"
@@ -95,30 +72,6 @@
%include "gnuradio/blocks/sub_ss.h"
%include "gnuradio/blocks/sub_ii.h"
%include "gnuradio/blocks/sub_cc.h"
-%include "gnuradio/blocks/tag_gate.h"
-%include "gnuradio/blocks/tagged_stream_align.h"
-%include "gnuradio/blocks/tagged_stream_mux.h"
-%include "gnuradio/blocks/tagged_stream_multiply_length.h"
-%include "gnuradio/blocks/tagged_stream_to_pdu.h"
-%include "gnuradio/blocks/tags_strobe.h"
-%include "gnuradio/blocks/tcp_server_sink.h"
-%include "gnuradio/blocks/test_tag_variable_rate_ff.h"
-%include "gnuradio/blocks/threshold_ff.h"
-%include "gnuradio/blocks/transcendental.h"
-%include "gnuradio/blocks/tuntap_pdu.h"
-%include "gnuradio/blocks/uchar_to_float.h"
-%include "gnuradio/blocks/udp_sink.h"
-%include "gnuradio/blocks/udp_source.h"
-%include "gnuradio/blocks/unpack_k_bits.h"
-%include "gnuradio/blocks/unpack_k_bits_bb.h"
-%include "gnuradio/blocks/unpacked_to_packed_bb.h"
-%include "gnuradio/blocks/unpacked_to_packed_ss.h"
-%include "gnuradio/blocks/unpacked_to_packed_ii.h"
-%include "gnuradio/blocks/vco_f.h"
-%include "gnuradio/blocks/vco_c.h"
-%include "gnuradio/blocks/xor_bb.h"
-%include "gnuradio/blocks/xor_ss.h"
-%include "gnuradio/blocks/xor_ii.h"
GR_SWIG_BLOCK_MAGIC2(blocks, random_pdu);
GR_SWIG_BLOCK_MAGIC2(blocks, regenerate_bb);
@@ -139,26 +92,3 @@ GR_SWIG_BLOCK_MAGIC2(blocks, sub_ff);
GR_SWIG_BLOCK_MAGIC2(blocks, sub_ss);
GR_SWIG_BLOCK_MAGIC2(blocks, sub_ii);
GR_SWIG_BLOCK_MAGIC2(blocks, sub_cc);
-GR_SWIG_BLOCK_MAGIC2(blocks, tag_gate);
-GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_align);
-GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_mux);
-GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_multiply_length);
-GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_to_pdu);
-GR_SWIG_BLOCK_MAGIC2(blocks, tags_strobe);
-GR_SWIG_BLOCK_MAGIC2(blocks, tcp_server_sink);
-GR_SWIG_BLOCK_MAGIC2(blocks, test_tag_variable_rate_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, threshold_ff);
-GR_SWIG_BLOCK_MAGIC2(blocks, transcendental);
-GR_SWIG_BLOCK_MAGIC2(blocks, tuntap_pdu);
-GR_SWIG_BLOCK_MAGIC2(blocks, uchar_to_float);
-GR_SWIG_BLOCK_MAGIC2(blocks, udp_sink);
-GR_SWIG_BLOCK_MAGIC2(blocks, udp_source);
-GR_SWIG_BLOCK_MAGIC2(blocks, unpack_k_bits_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_ii);
-GR_SWIG_BLOCK_MAGIC2(blocks, vco_f);
-GR_SWIG_BLOCK_MAGIC2(blocks, vco_c);
-GR_SWIG_BLOCK_MAGIC2(blocks, xor_bb);
-GR_SWIG_BLOCK_MAGIC2(blocks, xor_ss);
-GR_SWIG_BLOCK_MAGIC2(blocks, xor_ii);
diff --git a/gr-blocks/swig/blocks_swig6.i b/gr-blocks/swig/blocks_swig6.i
new file mode 100644
index 0000000000..8c1baa3d98
--- /dev/null
+++ b/gr-blocks/swig/blocks_swig6.i
@@ -0,0 +1,107 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2017 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.
+ */
+
+#define BLOCKS_API
+
+%include "gnuradio.i"
+%include "gnuradio/blocks/pdu.h"
+
+%include <gnuradio/endianness.h>
+
+//load generated python docstrings
+%include "blocks_swig6_doc.i"
+
+%{
+#include "gnuradio/blocks/tag_gate.h"
+#include "gnuradio/blocks/tagged_stream_align.h"
+#include "gnuradio/blocks/tagged_stream_mux.h"
+#include "gnuradio/blocks/tagged_stream_multiply_length.h"
+#include "gnuradio/blocks/tagged_stream_to_pdu.h"
+#include "gnuradio/blocks/tags_strobe.h"
+#include "gnuradio/blocks/tcp_server_sink.h"
+#include "gnuradio/blocks/test_tag_variable_rate_ff.h"
+#include "gnuradio/blocks/threshold_ff.h"
+#include "gnuradio/blocks/transcendental.h"
+#include "gnuradio/blocks/tuntap_pdu.h"
+#include "gnuradio/blocks/uchar_to_float.h"
+#include "gnuradio/blocks/udp_sink.h"
+#include "gnuradio/blocks/udp_source.h"
+#include "gnuradio/blocks/unpack_k_bits.h"
+#include "gnuradio/blocks/unpack_k_bits_bb.h"
+#include "gnuradio/blocks/unpacked_to_packed_bb.h"
+#include "gnuradio/blocks/unpacked_to_packed_ss.h"
+#include "gnuradio/blocks/unpacked_to_packed_ii.h"
+#include "gnuradio/blocks/vco_f.h"
+#include "gnuradio/blocks/vco_c.h"
+#include "gnuradio/blocks/xor_bb.h"
+#include "gnuradio/blocks/xor_ss.h"
+#include "gnuradio/blocks/xor_ii.h"
+%}
+
+%include "gnuradio/blocks/tag_gate.h"
+%include "gnuradio/blocks/tagged_stream_align.h"
+%include "gnuradio/blocks/tagged_stream_mux.h"
+%include "gnuradio/blocks/tagged_stream_multiply_length.h"
+%include "gnuradio/blocks/tagged_stream_to_pdu.h"
+%include "gnuradio/blocks/tags_strobe.h"
+%include "gnuradio/blocks/tcp_server_sink.h"
+%include "gnuradio/blocks/test_tag_variable_rate_ff.h"
+%include "gnuradio/blocks/threshold_ff.h"
+%include "gnuradio/blocks/transcendental.h"
+%include "gnuradio/blocks/tuntap_pdu.h"
+%include "gnuradio/blocks/uchar_to_float.h"
+%include "gnuradio/blocks/udp_sink.h"
+%include "gnuradio/blocks/udp_source.h"
+%include "gnuradio/blocks/unpack_k_bits.h"
+%include "gnuradio/blocks/unpack_k_bits_bb.h"
+%include "gnuradio/blocks/unpacked_to_packed_bb.h"
+%include "gnuradio/blocks/unpacked_to_packed_ss.h"
+%include "gnuradio/blocks/unpacked_to_packed_ii.h"
+%include "gnuradio/blocks/vco_f.h"
+%include "gnuradio/blocks/vco_c.h"
+%include "gnuradio/blocks/xor_bb.h"
+%include "gnuradio/blocks/xor_ss.h"
+%include "gnuradio/blocks/xor_ii.h"
+
+GR_SWIG_BLOCK_MAGIC2(blocks, tag_gate);
+GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_align);
+GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_mux);
+GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_multiply_length);
+GR_SWIG_BLOCK_MAGIC2(blocks, tagged_stream_to_pdu);
+GR_SWIG_BLOCK_MAGIC2(blocks, tags_strobe);
+GR_SWIG_BLOCK_MAGIC2(blocks, tcp_server_sink);
+GR_SWIG_BLOCK_MAGIC2(blocks, test_tag_variable_rate_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, threshold_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, transcendental);
+GR_SWIG_BLOCK_MAGIC2(blocks, tuntap_pdu);
+GR_SWIG_BLOCK_MAGIC2(blocks, uchar_to_float);
+GR_SWIG_BLOCK_MAGIC2(blocks, udp_sink);
+GR_SWIG_BLOCK_MAGIC2(blocks, udp_source);
+GR_SWIG_BLOCK_MAGIC2(blocks, unpack_k_bits_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, unpacked_to_packed_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, vco_f);
+GR_SWIG_BLOCK_MAGIC2(blocks, vco_c);
+GR_SWIG_BLOCK_MAGIC2(blocks, xor_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, xor_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, xor_ii);
diff --git a/gr-blocks/swig/blocks_swig7.i b/gr-blocks/swig/blocks_swig7.i
new file mode 100644
index 0000000000..d48ea8324d
--- /dev/null
+++ b/gr-blocks/swig/blocks_swig7.i
@@ -0,0 +1,96 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2017 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.
+ */
+
+#define BLOCKS_API
+#define GR_RUNTIME_API
+
+%include "gnuradio.i"
+
+//load generated python docstrings
+%include "blocks_swig7_doc.i"
+
+%include "feval.i"
+
+%{
+#include "gnuradio/blocks/deinterleave.h"
+#include "gnuradio/blocks/divide_ff.h"
+#include "gnuradio/blocks/divide_ss.h"
+#include "gnuradio/blocks/divide_ii.h"
+#include "gnuradio/blocks/divide_cc.h"
+#include "gnuradio/blocks/skiphead.h"
+#include "gnuradio/blocks/stream_mux.h"
+#include "gnuradio/blocks/stream_to_streams.h"
+#include "gnuradio/blocks/stream_to_tagged_stream.h"
+#include "gnuradio/blocks/stream_to_vector.h"
+#include "gnuradio/blocks/streams_to_stream.h"
+#include "gnuradio/blocks/streams_to_vector.h"
+#include "gnuradio/blocks/tag_debug.h"
+#include "gnuradio/blocks/tagged_file_sink.h"
+#include "gnuradio/blocks/tsb_vector_sink_b.h"
+#include "gnuradio/blocks/tsb_vector_sink_c.h"
+#include "gnuradio/blocks/tsb_vector_sink_f.h"
+#include "gnuradio/blocks/tsb_vector_sink_i.h"
+#include "gnuradio/blocks/tsb_vector_sink_s.h"
+#include "gnuradio/blocks/throttle.h"
+%}
+
+%include "gnuradio/blocks/deinterleave.h"
+%include "gnuradio/blocks/divide_ff.h"
+%include "gnuradio/blocks/divide_ss.h"
+%include "gnuradio/blocks/divide_ii.h"
+%include "gnuradio/blocks/divide_cc.h"
+%include "gnuradio/blocks/skiphead.h"
+%include "gnuradio/blocks/stream_mux.h"
+%include "gnuradio/blocks/stream_to_streams.h"
+%include "gnuradio/blocks/stream_to_tagged_stream.h"
+%include "gnuradio/blocks/stream_to_vector.h"
+%include "gnuradio/blocks/streams_to_stream.h"
+%include "gnuradio/blocks/streams_to_vector.h"
+%include "gnuradio/blocks/tag_debug.h"
+%include "gnuradio/blocks/tagged_file_sink.h"
+%include "gnuradio/blocks/tsb_vector_sink_b.h"
+%include "gnuradio/blocks/tsb_vector_sink_c.h"
+%include "gnuradio/blocks/tsb_vector_sink_f.h"
+%include "gnuradio/blocks/tsb_vector_sink_i.h"
+%include "gnuradio/blocks/tsb_vector_sink_s.h"
+%include "gnuradio/blocks/throttle.h"
+
+GR_SWIG_BLOCK_MAGIC2(blocks, deinterleave);
+GR_SWIG_BLOCK_MAGIC2(blocks, divide_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, divide_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, divide_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, divide_cc);
+GR_SWIG_BLOCK_MAGIC2(blocks, skiphead);
+GR_SWIG_BLOCK_MAGIC2(blocks, stream_mux);
+GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_streams);
+GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_tagged_stream);
+GR_SWIG_BLOCK_MAGIC2(blocks, stream_to_vector);
+GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_stream);
+GR_SWIG_BLOCK_MAGIC2(blocks, streams_to_vector);
+GR_SWIG_BLOCK_MAGIC2(blocks, tag_debug);
+GR_SWIG_BLOCK_MAGIC2(blocks, tagged_file_sink);
+GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_b);
+GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_c);
+GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_f);
+GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_i);
+GR_SWIG_BLOCK_MAGIC2(blocks, tsb_vector_sink_s);
+GR_SWIG_BLOCK_MAGIC2(blocks, throttle);
diff --git a/gr-blocks/swig/blocks_swig8.i b/gr-blocks/swig/blocks_swig8.i
new file mode 100644
index 0000000000..2bf5070bb8
--- /dev/null
+++ b/gr-blocks/swig/blocks_swig8.i
@@ -0,0 +1,93 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2017 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.
+ */
+
+#define BLOCKS_API
+
+%include "gnuradio.i"
+
+//load generated python docstrings
+%include "blocks_swig8_doc.i"
+
+%{
+#include "gnuradio/blocks/abs_ff.h"
+#include "gnuradio/blocks/abs_ss.h"
+#include "gnuradio/blocks/abs_ii.h"
+#include "gnuradio/blocks/add_ff.h"
+#include "gnuradio/blocks/add_ss.h"
+#include "gnuradio/blocks/add_ii.h"
+#include "gnuradio/blocks/add_cc.h"
+#include "gnuradio/blocks/add_const_bb.h"
+#include "gnuradio/blocks/add_const_ff.h"
+#include "gnuradio/blocks/add_const_ss.h"
+#include "gnuradio/blocks/add_const_ii.h"
+#include "gnuradio/blocks/add_const_cc.h"
+#include "gnuradio/blocks/add_const_vbb.h"
+#include "gnuradio/blocks/add_const_vff.h"
+#include "gnuradio/blocks/add_const_vss.h"
+#include "gnuradio/blocks/add_const_vii.h"
+#include "gnuradio/blocks/add_const_vcc.h"
+#include "gnuradio/blocks/and_bb.h"
+#include "gnuradio/blocks/and_ss.h"
+#include "gnuradio/blocks/and_ii.h"
+%}
+
+%include "gnuradio/blocks/abs_ff.h"
+%include "gnuradio/blocks/abs_ss.h"
+%include "gnuradio/blocks/abs_ii.h"
+%include "gnuradio/blocks/add_ff.h"
+%include "gnuradio/blocks/add_ss.h"
+%include "gnuradio/blocks/add_ii.h"
+%include "gnuradio/blocks/add_cc.h"
+%include "gnuradio/blocks/add_const_bb.h"
+%include "gnuradio/blocks/add_const_ff.h"
+%include "gnuradio/blocks/add_const_ss.h"
+%include "gnuradio/blocks/add_const_ii.h"
+%include "gnuradio/blocks/add_const_cc.h"
+%include "gnuradio/blocks/add_const_vbb.h"
+%include "gnuradio/blocks/add_const_vff.h"
+%include "gnuradio/blocks/add_const_vss.h"
+%include "gnuradio/blocks/add_const_vii.h"
+%include "gnuradio/blocks/add_const_vcc.h"
+%include "gnuradio/blocks/and_bb.h"
+%include "gnuradio/blocks/and_ss.h"
+%include "gnuradio/blocks/and_ii.h"
+
+GR_SWIG_BLOCK_MAGIC2(blocks, abs_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, abs_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, abs_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_cc);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_cc);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vbb);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vff);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vss);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vii);
+GR_SWIG_BLOCK_MAGIC2(blocks, add_const_vcc);
+GR_SWIG_BLOCK_MAGIC2(blocks, and_bb);
+GR_SWIG_BLOCK_MAGIC2(blocks, and_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, and_ii);
diff --git a/gr-blocks/swig/blocks_swig9.i b/gr-blocks/swig/blocks_swig9.i
new file mode 100644
index 0000000000..872abd9d46
--- /dev/null
+++ b/gr-blocks/swig/blocks_swig9.i
@@ -0,0 +1,93 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2017 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.
+ */
+
+#define BLOCKS_API
+
+%include "gnuradio.i"
+
+//load generated python docstrings
+%include "blocks_swig9_doc.i"
+
+%{
+#include "gnuradio/blocks/float_to_char.h"
+#include "gnuradio/blocks/float_to_complex.h"
+#include "gnuradio/blocks/magphase_to_complex.h"
+#include "gnuradio/blocks/float_to_int.h"
+#include "gnuradio/blocks/float_to_short.h"
+#include "gnuradio/blocks/float_to_uchar.h"
+#include "gnuradio/blocks/int_to_float.h"
+#include "gnuradio/blocks/integrate_ss.h"
+#include "gnuradio/blocks/integrate_ii.h"
+#include "gnuradio/blocks/integrate_ff.h"
+#include "gnuradio/blocks/integrate_cc.h"
+#include "gnuradio/blocks/interleave.h"
+#include "gnuradio/blocks/interleaved_short_to_complex.h"
+#include "gnuradio/blocks/interleaved_char_to_complex.h"
+#include "gnuradio/blocks/keep_m_in_n.h"
+#include "gnuradio/blocks/keep_one_in_n.h"
+#include "gnuradio/blocks/lfsr_32k_source_s.h"
+#include "gnuradio/blocks/max_ff.h"
+#include "gnuradio/blocks/max_ii.h"
+#include "gnuradio/blocks/max_ss.h"
+%}
+
+%include "gnuradio/blocks/float_to_char.h"
+%include "gnuradio/blocks/float_to_complex.h"
+%include "gnuradio/blocks/magphase_to_complex.h"
+%include "gnuradio/blocks/float_to_int.h"
+%include "gnuradio/blocks/float_to_short.h"
+%include "gnuradio/blocks/float_to_uchar.h"
+%include "gnuradio/blocks/int_to_float.h"
+%include "gnuradio/blocks/integrate_ss.h"
+%include "gnuradio/blocks/integrate_ii.h"
+%include "gnuradio/blocks/integrate_ff.h"
+%include "gnuradio/blocks/integrate_cc.h"
+%include "gnuradio/blocks/interleave.h"
+%include "gnuradio/blocks/interleaved_short_to_complex.h"
+%include "gnuradio/blocks/interleaved_char_to_complex.h"
+%include "gnuradio/blocks/keep_m_in_n.h"
+%include "gnuradio/blocks/keep_one_in_n.h"
+%include "gnuradio/blocks/lfsr_32k_source_s.h"
+%include "gnuradio/blocks/max_ff.h"
+%include "gnuradio/blocks/max_ii.h"
+%include "gnuradio/blocks/max_ss.h"
+
+GR_SWIG_BLOCK_MAGIC2(blocks, float_to_char);
+GR_SWIG_BLOCK_MAGIC2(blocks, float_to_complex);
+GR_SWIG_BLOCK_MAGIC2(blocks, magphase_to_complex);
+GR_SWIG_BLOCK_MAGIC2(blocks, float_to_int);
+GR_SWIG_BLOCK_MAGIC2(blocks, float_to_short);
+GR_SWIG_BLOCK_MAGIC2(blocks, float_to_uchar);
+GR_SWIG_BLOCK_MAGIC2(blocks, int_to_float);
+GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ss);
+GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, integrate_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, integrate_cc);
+GR_SWIG_BLOCK_MAGIC2(blocks, interleave);
+GR_SWIG_BLOCK_MAGIC2(blocks, interleaved_short_to_complex);
+GR_SWIG_BLOCK_MAGIC2(blocks, interleaved_char_to_complex);
+GR_SWIG_BLOCK_MAGIC2(blocks, keep_m_in_n);
+GR_SWIG_BLOCK_MAGIC2(blocks, keep_one_in_n);
+GR_SWIG_BLOCK_MAGIC2(blocks, lfsr_32k_source_s);
+GR_SWIG_BLOCK_MAGIC2(blocks, max_ff);
+GR_SWIG_BLOCK_MAGIC2(blocks, max_ii);
+GR_SWIG_BLOCK_MAGIC2(blocks, max_ss);
diff --git a/gr-dtv/lib/dvbt2/dvbt2_modulator_bc_impl.cc b/gr-dtv/lib/dvbt2/dvbt2_modulator_bc_impl.cc
index b92738603b..05e3382ef9 100644
--- a/gr-dtv/lib/dvbt2/dvbt2_modulator_bc_impl.cc
+++ b/gr-dtv/lib/dvbt2/dvbt2_modulator_bc_impl.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2015 Free Software Foundation, Inc.
+ * Copyright 2015,2017 Free Software Foundation, Inc.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -45,6 +45,10 @@ namespace gr {
{
double normalization;
double rotation_angle;
+ double m_16qam_lookup[4] = {3.0, 1.0, -3.0, -1.0};
+ double m_64qam_lookup[8] = {7.0, 5.0, 1.0, 3.0, -7.0, -5.0, -1.0, -3.0};
+ double m_256qam_lookup[16] = {15.0, 13.0, 9.0, 11.0, 1.0, 3.0, 7.0, 5.0, -15.0, -13.0, -9.0, -11.0, -1.0, -3.0, -7.0, -5.0};
+ int real_index, imag_index;
gr_complex temp;
cyclic_delay = FALSE;
if (framesize == FECFRAME_NORMAL) {
@@ -103,22 +107,11 @@ namespace gr {
break;
case MOD_16QAM:
normalization = std::sqrt(10.0);
- m_16qam[0] = gr_complex( 3.0 / normalization, 3.0 / normalization);
- m_16qam[1] = gr_complex( 3.0 / normalization, 1.0 / normalization);
- m_16qam[2] = gr_complex( 1.0 / normalization, 3.0 / normalization);
- m_16qam[3] = gr_complex( 1.0 / normalization, 1.0 / normalization);
- m_16qam[4] = gr_complex( 3.0 / normalization, -3.0 / normalization);
- m_16qam[5] = gr_complex( 3.0 / normalization, -1.0 / normalization);
- m_16qam[6] = gr_complex( 1.0 / normalization, -3.0 / normalization);
- m_16qam[7] = gr_complex( 1.0 / normalization, -1.0 / normalization);
- m_16qam[8] = gr_complex(-3.0 / normalization, 3.0 / normalization);
- m_16qam[9] = gr_complex(-3.0 / normalization, 1.0 / normalization);
- m_16qam[10] = gr_complex(-1.0 / normalization, 3.0 / normalization);
- m_16qam[11] = gr_complex(-1.0 / normalization, 1.0 / normalization);
- m_16qam[12] = gr_complex(-3.0 / normalization, -3.0 / normalization);
- m_16qam[13] = gr_complex(-3.0 / normalization, -1.0 / normalization);
- m_16qam[14] = gr_complex(-1.0 / normalization, -3.0 / normalization);
- m_16qam[15] = gr_complex(-1.0 / normalization, -1.0 / normalization);
+ for (int i = 0; i < 16; i++) {
+ real_index = ((i & 0x8) >> 2) | ((i & 0x2) >> 1);
+ imag_index = ((i & 0x4) >> 1) | ((i & 0x1) >> 0);
+ m_16qam[i] = gr_complex(m_16qam_lookup[real_index] / normalization, m_16qam_lookup[imag_index] / normalization);
+ }
if (rotation == ROTATION_ON) {
cyclic_delay = TRUE;
rotation_angle = (2.0 * M_PI * 16.8) / 360.0;
@@ -130,70 +123,11 @@ namespace gr {
break;
case MOD_64QAM:
normalization = std::sqrt(42.0);
- m_64qam[0] = gr_complex( 7.0 / normalization, 7.0 / normalization);
- m_64qam[1] = gr_complex( 7.0 / normalization, 5.0 / normalization);
- m_64qam[2] = gr_complex( 5.0 / normalization, 7.0 / normalization);
- m_64qam[3] = gr_complex( 5.0 / normalization, 5.0 / normalization);
- m_64qam[4] = gr_complex( 7.0 / normalization, 1.0 / normalization);
- m_64qam[5] = gr_complex( 7.0 / normalization, 3.0 / normalization);
- m_64qam[6] = gr_complex( 5.0 / normalization, 1.0 / normalization);
- m_64qam[7] = gr_complex( 5.0 / normalization, 3.0 / normalization);
- m_64qam[8] = gr_complex( 1.0 / normalization, 7.0 / normalization);
- m_64qam[9] = gr_complex( 1.0 / normalization, 5.0 / normalization);
- m_64qam[10] = gr_complex( 3.0 / normalization, 7.0 / normalization);
- m_64qam[11] = gr_complex( 3.0 / normalization, 5.0 / normalization);
- m_64qam[12] = gr_complex( 1.0 / normalization, 1.0 / normalization);
- m_64qam[13] = gr_complex( 1.0 / normalization, 3.0 / normalization);
- m_64qam[14] = gr_complex( 3.0 / normalization, 1.0 / normalization);
- m_64qam[15] = gr_complex( 3.0 / normalization, 3.0 / normalization);
- m_64qam[16] = gr_complex( 7.0 / normalization, -7.0 / normalization);
- m_64qam[17] = gr_complex( 7.0 / normalization, -5.0 / normalization);
- m_64qam[18] = gr_complex( 5.0 / normalization, -7.0 / normalization);
- m_64qam[19] = gr_complex( 5.0 / normalization, -5.0 / normalization);
- m_64qam[20] = gr_complex( 7.0 / normalization, -1.0 / normalization);
- m_64qam[21] = gr_complex( 7.0 / normalization, -3.0 / normalization);
- m_64qam[22] = gr_complex( 5.0 / normalization, -1.0 / normalization);
- m_64qam[23] = gr_complex( 5.0 / normalization, -3.0 / normalization);
- m_64qam[24] = gr_complex( 1.0 / normalization, -7.0 / normalization);
- m_64qam[25] = gr_complex( 1.0 / normalization, -5.0 / normalization);
- m_64qam[26] = gr_complex( 3.0 / normalization, -7.0 / normalization);
- m_64qam[27] = gr_complex( 3.0 / normalization, -5.0 / normalization);
- m_64qam[28] = gr_complex( 1.0 / normalization, -1.0 / normalization);
- m_64qam[29] = gr_complex( 1.0 / normalization, -3.0 / normalization);
- m_64qam[30] = gr_complex( 3.0 / normalization, -1.0 / normalization);
- m_64qam[31] = gr_complex( 3.0 / normalization, -3.0 / normalization);
- m_64qam[32] = gr_complex(-7.0 / normalization, 7.0 / normalization);
- m_64qam[33] = gr_complex(-7.0 / normalization, 5.0 / normalization);
- m_64qam[34] = gr_complex(-5.0 / normalization, 7.0 / normalization);
- m_64qam[35] = gr_complex(-5.0 / normalization, 5.0 / normalization);
- m_64qam[36] = gr_complex(-7.0 / normalization, 1.0 / normalization);
- m_64qam[37] = gr_complex(-7.0 / normalization, 3.0 / normalization);
- m_64qam[38] = gr_complex(-5.0 / normalization, 1.0 / normalization);
- m_64qam[39] = gr_complex(-5.0 / normalization, 3.0 / normalization);
- m_64qam[40] = gr_complex(-1.0 / normalization, 7.0 / normalization);
- m_64qam[41] = gr_complex(-1.0 / normalization, 5.0 / normalization);
- m_64qam[42] = gr_complex(-3.0 / normalization, 7.0 / normalization);
- m_64qam[43] = gr_complex(-3.0 / normalization, 5.0 / normalization);
- m_64qam[44] = gr_complex(-1.0 / normalization, 1.0 / normalization);
- m_64qam[45] = gr_complex(-1.0 / normalization, 3.0 / normalization);
- m_64qam[46] = gr_complex(-3.0 / normalization, 1.0 / normalization);
- m_64qam[47] = gr_complex(-3.0 / normalization, 3.0 / normalization);
- m_64qam[48] = gr_complex(-7.0 / normalization, -7.0 / normalization);
- m_64qam[49] = gr_complex(-7.0 / normalization, -5.0 / normalization);
- m_64qam[50] = gr_complex(-5.0 / normalization, -7.0 / normalization);
- m_64qam[51] = gr_complex(-5.0 / normalization, -5.0 / normalization);
- m_64qam[52] = gr_complex(-7.0 / normalization, -1.0 / normalization);
- m_64qam[53] = gr_complex(-7.0 / normalization, -3.0 / normalization);
- m_64qam[54] = gr_complex(-5.0 / normalization, -1.0 / normalization);
- m_64qam[55] = gr_complex(-5.0 / normalization, -3.0 / normalization);
- m_64qam[56] = gr_complex(-1.0 / normalization, -7.0 / normalization);
- m_64qam[57] = gr_complex(-1.0 / normalization, -5.0 / normalization);
- m_64qam[58] = gr_complex(-3.0 / normalization, -7.0 / normalization);
- m_64qam[59] = gr_complex(-3.0 / normalization, -5.0 / normalization);
- m_64qam[60] = gr_complex(-1.0 / normalization, -1.0 / normalization);
- m_64qam[61] = gr_complex(-1.0 / normalization, -3.0 / normalization);
- m_64qam[62] = gr_complex(-3.0 / normalization, -1.0 / normalization);
- m_64qam[63] = gr_complex(-3.0 / normalization, -3.0 / normalization);
+ for (int i = 0; i < 64; i++) {
+ real_index = ((i & 0x20) >> 3) | ((i & 0x8) >> 2) | ((i & 0x2) >> 1);
+ imag_index = ((i & 0x10) >> 2) | ((i & 0x4) >> 1) | ((i & 0x1) >> 0);
+ m_64qam[i] = gr_complex(m_64qam_lookup[real_index] / normalization, m_64qam_lookup[imag_index] / normalization);
+ }
if (rotation == ROTATION_ON) {
cyclic_delay = TRUE;
rotation_angle = (2.0 * M_PI * 8.6) / 360.0;
@@ -205,262 +139,11 @@ namespace gr {
break;
case MOD_256QAM:
normalization = std::sqrt(170.0);
- m_256qam[0] = gr_complex( 15 / normalization, 15 / normalization);
- m_256qam[1] = gr_complex( 15 / normalization, 13 / normalization);
- m_256qam[2] = gr_complex( 13 / normalization, 15 / normalization);
- m_256qam[3] = gr_complex( 13 / normalization, 13 / normalization);
- m_256qam[4] = gr_complex( 15 / normalization, 9 / normalization);
- m_256qam[5] = gr_complex( 15 / normalization, 11 / normalization);
- m_256qam[6] = gr_complex( 13 / normalization, 9 / normalization);
- m_256qam[7] = gr_complex( 13 / normalization, 11 / normalization);
- m_256qam[8] = gr_complex( 9 / normalization, 15 / normalization);
- m_256qam[9] = gr_complex( 9 / normalization, 13 / normalization);
- m_256qam[10] = gr_complex( 11 / normalization, 15 / normalization);
- m_256qam[11] = gr_complex( 11 / normalization, 13 / normalization);
- m_256qam[12] = gr_complex( 9 / normalization, 9 / normalization);
- m_256qam[13] = gr_complex( 9 / normalization, 11 / normalization);
- m_256qam[14] = gr_complex( 11 / normalization, 9 / normalization);
- m_256qam[15] = gr_complex( 11 / normalization, 11 / normalization);
- m_256qam[16] = gr_complex( 15 / normalization, 1 / normalization);
- m_256qam[17] = gr_complex( 15 / normalization, 3 / normalization);
- m_256qam[18] = gr_complex( 13 / normalization, 1 / normalization);
- m_256qam[19] = gr_complex( 13 / normalization, 3 / normalization);
- m_256qam[20] = gr_complex( 15 / normalization, 7 / normalization);
- m_256qam[21] = gr_complex( 15 / normalization, 5 / normalization);
- m_256qam[22] = gr_complex( 13 / normalization, 7 / normalization);
- m_256qam[23] = gr_complex( 13 / normalization, 5 / normalization);
- m_256qam[24] = gr_complex( 9 / normalization, 1 / normalization);
- m_256qam[25] = gr_complex( 9 / normalization, 3 / normalization);
- m_256qam[26] = gr_complex( 11 / normalization, 1 / normalization);
- m_256qam[27] = gr_complex( 11 / normalization, 3 / normalization);
- m_256qam[28] = gr_complex( 9 / normalization, 7 / normalization);
- m_256qam[29] = gr_complex( 9 / normalization, 5 / normalization);
- m_256qam[30] = gr_complex( 11 / normalization, 7 / normalization);
- m_256qam[31] = gr_complex( 11 / normalization, 5 / normalization);
- m_256qam[32] = gr_complex( 1 / normalization, 15 / normalization);
- m_256qam[33] = gr_complex( 1 / normalization, 13 / normalization);
- m_256qam[34] = gr_complex( 3 / normalization, 15 / normalization);
- m_256qam[35] = gr_complex( 3 / normalization, 13 / normalization);
- m_256qam[36] = gr_complex( 1 / normalization, 9 / normalization);
- m_256qam[37] = gr_complex( 1 / normalization, 11 / normalization);
- m_256qam[38] = gr_complex( 3 / normalization, 9 / normalization);
- m_256qam[39] = gr_complex( 3 / normalization, 11 / normalization);
- m_256qam[40] = gr_complex( 7 / normalization, 15 / normalization);
- m_256qam[41] = gr_complex( 7 / normalization, 13 / normalization);
- m_256qam[42] = gr_complex( 5 / normalization, 15 / normalization);
- m_256qam[43] = gr_complex( 5 / normalization, 13 / normalization);
- m_256qam[44] = gr_complex( 7 / normalization, 9 / normalization);
- m_256qam[45] = gr_complex( 7 / normalization, 11 / normalization);
- m_256qam[46] = gr_complex( 5 / normalization, 9 / normalization);
- m_256qam[47] = gr_complex( 5 / normalization, 11 / normalization);
- m_256qam[48] = gr_complex( 1 / normalization, 1 / normalization);
- m_256qam[49] = gr_complex( 1 / normalization, 3 / normalization);
- m_256qam[50] = gr_complex( 3 / normalization, 1 / normalization);
- m_256qam[51] = gr_complex( 3 / normalization, 3 / normalization);
- m_256qam[52] = gr_complex( 1 / normalization, 7 / normalization);
- m_256qam[53] = gr_complex( 1 / normalization, 5 / normalization);
- m_256qam[54] = gr_complex( 3 / normalization, 7 / normalization);
- m_256qam[55] = gr_complex( 3 / normalization, 5 / normalization);
- m_256qam[56] = gr_complex( 7 / normalization, 1 / normalization);
- m_256qam[57] = gr_complex( 7 / normalization, 3 / normalization);
- m_256qam[58] = gr_complex( 5 / normalization, 1 / normalization);
- m_256qam[59] = gr_complex( 5 / normalization, 3 / normalization);
- m_256qam[60] = gr_complex( 7 / normalization, 7 / normalization);
- m_256qam[61] = gr_complex( 7 / normalization, 5 / normalization);
- m_256qam[62] = gr_complex( 5 / normalization, 7 / normalization);
- m_256qam[63] = gr_complex( 5 / normalization, 5 / normalization);
- m_256qam[64] = gr_complex( 15 / normalization, -15 / normalization);
- m_256qam[65] = gr_complex( 15 / normalization, -13 / normalization);
- m_256qam[66] = gr_complex( 13 / normalization, -15 / normalization);
- m_256qam[67] = gr_complex( 13 / normalization, -13 / normalization);
- m_256qam[68] = gr_complex( 15 / normalization, -9 / normalization);
- m_256qam[69] = gr_complex( 15 / normalization, -11 / normalization);
- m_256qam[70] = gr_complex( 13 / normalization, -9 / normalization);
- m_256qam[71] = gr_complex( 13 / normalization, -11 / normalization);
- m_256qam[72] = gr_complex( 9 / normalization, -15 / normalization);
- m_256qam[73] = gr_complex( 9 / normalization, -13 / normalization);
- m_256qam[74] = gr_complex( 11 / normalization, -15 / normalization);
- m_256qam[75] = gr_complex( 11 / normalization, -13 / normalization);
- m_256qam[76] = gr_complex( 9 / normalization, -9 / normalization);
- m_256qam[77] = gr_complex( 9 / normalization, -11 / normalization);
- m_256qam[78] = gr_complex( 11 / normalization, -9 / normalization);
- m_256qam[79] = gr_complex( 11 / normalization, -11 / normalization);
- m_256qam[80] = gr_complex( 15 / normalization, -1 / normalization);
- m_256qam[81] = gr_complex( 15 / normalization, -3 / normalization);
- m_256qam[82] = gr_complex( 13 / normalization, -1 / normalization);
- m_256qam[83] = gr_complex( 13 / normalization, -3 / normalization);
- m_256qam[84] = gr_complex( 15 / normalization, -7 / normalization);
- m_256qam[85] = gr_complex( 15 / normalization, -5 / normalization);
- m_256qam[86] = gr_complex( 13 / normalization, -7 / normalization);
- m_256qam[87] = gr_complex( 13 / normalization, -5 / normalization);
- m_256qam[88] = gr_complex( 9 / normalization, -1 / normalization);
- m_256qam[89] = gr_complex( 9 / normalization, -3 / normalization);
- m_256qam[90] = gr_complex( 11 / normalization, -1 / normalization);
- m_256qam[91] = gr_complex( 11 / normalization, -3 / normalization);
- m_256qam[92] = gr_complex( 9 / normalization, -7 / normalization);
- m_256qam[93] = gr_complex( 9 / normalization, -5 / normalization);
- m_256qam[94] = gr_complex( 11 / normalization, -7 / normalization);
- m_256qam[95] = gr_complex( 11 / normalization, -5 / normalization);
- m_256qam[96] = gr_complex( 1 / normalization, -15 / normalization);
- m_256qam[97] = gr_complex( 1 / normalization, -13 / normalization);
- m_256qam[98] = gr_complex( 3 / normalization, -15 / normalization);
- m_256qam[99] = gr_complex( 3 / normalization, -13 / normalization);
- m_256qam[100] = gr_complex( 1 / normalization, -9 / normalization);
- m_256qam[101] = gr_complex( 1 / normalization, -11 / normalization);
- m_256qam[102] = gr_complex( 3 / normalization, -9 / normalization);
- m_256qam[103] = gr_complex( 3 / normalization, -11 / normalization);
- m_256qam[104] = gr_complex( 7 / normalization, -15 / normalization);
- m_256qam[105] = gr_complex( 7 / normalization, -13 / normalization);
- m_256qam[106] = gr_complex( 5 / normalization, -15 / normalization);
- m_256qam[107] = gr_complex( 5 / normalization, -13 / normalization);
- m_256qam[108] = gr_complex( 7 / normalization, -9 / normalization);
- m_256qam[109] = gr_complex( 7 / normalization, -11 / normalization);
- m_256qam[110] = gr_complex( 5 / normalization, -9 / normalization);
- m_256qam[111] = gr_complex( 5 / normalization, -11 / normalization);
- m_256qam[112] = gr_complex( 1 / normalization, -1 / normalization);
- m_256qam[113] = gr_complex( 1 / normalization, -3 / normalization);
- m_256qam[114] = gr_complex( 3 / normalization, -1 / normalization);
- m_256qam[115] = gr_complex( 3 / normalization, -3 / normalization);
- m_256qam[116] = gr_complex( 1 / normalization, -7 / normalization);
- m_256qam[117] = gr_complex( 1 / normalization, -5 / normalization);
- m_256qam[118] = gr_complex( 3 / normalization, -7 / normalization);
- m_256qam[119] = gr_complex( 3 / normalization, -5 / normalization);
- m_256qam[120] = gr_complex( 7 / normalization, -1 / normalization);
- m_256qam[121] = gr_complex( 7 / normalization, -3 / normalization);
- m_256qam[122] = gr_complex( 5 / normalization, -1 / normalization);
- m_256qam[123] = gr_complex( 5 / normalization, -3 / normalization);
- m_256qam[124] = gr_complex( 7 / normalization, -7 / normalization);
- m_256qam[125] = gr_complex( 7 / normalization, -5 / normalization);
- m_256qam[126] = gr_complex( 5 / normalization, -7 / normalization);
- m_256qam[127] = gr_complex( 5 / normalization, -5 / normalization);
- m_256qam[128] = gr_complex(-15 / normalization, 15 / normalization);
- m_256qam[129] = gr_complex(-15 / normalization, 13 / normalization);
- m_256qam[130] = gr_complex(-13 / normalization, 15 / normalization);
- m_256qam[131] = gr_complex(-13 / normalization, 13 / normalization);
- m_256qam[132] = gr_complex(-15 / normalization, 9 / normalization);
- m_256qam[133] = gr_complex(-15 / normalization, 11 / normalization);
- m_256qam[134] = gr_complex(-13 / normalization, 9 / normalization);
- m_256qam[135] = gr_complex(-13 / normalization, 11 / normalization);
- m_256qam[136] = gr_complex( -9 / normalization, 15 / normalization);
- m_256qam[137] = gr_complex( -9 / normalization, 13 / normalization);
- m_256qam[138] = gr_complex(-11 / normalization, 15 / normalization);
- m_256qam[139] = gr_complex(-11 / normalization, 13 / normalization);
- m_256qam[140] = gr_complex( -9 / normalization, 9 / normalization);
- m_256qam[141] = gr_complex( -9 / normalization, 11 / normalization);
- m_256qam[142] = gr_complex(-11 / normalization, 9 / normalization);
- m_256qam[143] = gr_complex(-11 / normalization, 11 / normalization);
- m_256qam[144] = gr_complex(-15 / normalization, 1 / normalization);
- m_256qam[145] = gr_complex(-15 / normalization, 3 / normalization);
- m_256qam[146] = gr_complex(-13 / normalization, 1 / normalization);
- m_256qam[147] = gr_complex(-13 / normalization, 3 / normalization);
- m_256qam[148] = gr_complex(-15 / normalization, 7 / normalization);
- m_256qam[149] = gr_complex(-15 / normalization, 5 / normalization);
- m_256qam[150] = gr_complex(-13 / normalization, 7 / normalization);
- m_256qam[151] = gr_complex(-13 / normalization, 5 / normalization);
- m_256qam[152] = gr_complex( -9 / normalization, 1 / normalization);
- m_256qam[153] = gr_complex( -9 / normalization, 3 / normalization);
- m_256qam[154] = gr_complex(-11 / normalization, 1 / normalization);
- m_256qam[155] = gr_complex(-11 / normalization, 3 / normalization);
- m_256qam[156] = gr_complex( -9 / normalization, 7 / normalization);
- m_256qam[157] = gr_complex( -9 / normalization, 5 / normalization);
- m_256qam[158] = gr_complex(-11 / normalization, 7 / normalization);
- m_256qam[159] = gr_complex(-11 / normalization, 5 / normalization);
- m_256qam[160] = gr_complex( -1 / normalization, 15 / normalization);
- m_256qam[161] = gr_complex( -1 / normalization, 13 / normalization);
- m_256qam[162] = gr_complex( -3 / normalization, 15 / normalization);
- m_256qam[163] = gr_complex( -3 / normalization, 13 / normalization);
- m_256qam[164] = gr_complex( -1 / normalization, 9 / normalization);
- m_256qam[165] = gr_complex( -1 / normalization, 11 / normalization);
- m_256qam[166] = gr_complex( -3 / normalization, 9 / normalization);
- m_256qam[167] = gr_complex( -3 / normalization, 11 / normalization);
- m_256qam[168] = gr_complex( -7 / normalization, 15 / normalization);
- m_256qam[169] = gr_complex( -7 / normalization, 13 / normalization);
- m_256qam[170] = gr_complex( -5 / normalization, 15 / normalization);
- m_256qam[171] = gr_complex( -5 / normalization, 13 / normalization);
- m_256qam[172] = gr_complex( -7 / normalization, 9 / normalization);
- m_256qam[173] = gr_complex( -7 / normalization, 11 / normalization);
- m_256qam[174] = gr_complex( -5 / normalization, 9 / normalization);
- m_256qam[175] = gr_complex( -5 / normalization, 11 / normalization);
- m_256qam[176] = gr_complex( -1 / normalization, 1 / normalization);
- m_256qam[177] = gr_complex( -1 / normalization, 3 / normalization);
- m_256qam[178] = gr_complex( -3 / normalization, 1 / normalization);
- m_256qam[179] = gr_complex( -3 / normalization, 3 / normalization);
- m_256qam[180] = gr_complex( -1 / normalization, 7 / normalization);
- m_256qam[181] = gr_complex( -1 / normalization, 5 / normalization);
- m_256qam[182] = gr_complex( -3 / normalization, 7 / normalization);
- m_256qam[183] = gr_complex( -3 / normalization, 5 / normalization);
- m_256qam[184] = gr_complex( -7 / normalization, 1 / normalization);
- m_256qam[185] = gr_complex( -7 / normalization, 3 / normalization);
- m_256qam[186] = gr_complex( -5 / normalization, 1 / normalization);
- m_256qam[187] = gr_complex( -5 / normalization, 3 / normalization);
- m_256qam[188] = gr_complex( -7 / normalization, 7 / normalization);
- m_256qam[189] = gr_complex( -7 / normalization, 5 / normalization);
- m_256qam[190] = gr_complex( -5 / normalization, 7 / normalization);
- m_256qam[191] = gr_complex( -5 / normalization, 5 / normalization);
- m_256qam[192] = gr_complex(-15 / normalization, -15 / normalization);
- m_256qam[193] = gr_complex(-15 / normalization, -13 / normalization);
- m_256qam[194] = gr_complex(-13 / normalization, -15 / normalization);
- m_256qam[195] = gr_complex(-13 / normalization, -13 / normalization);
- m_256qam[196] = gr_complex(-15 / normalization, -9 / normalization);
- m_256qam[197] = gr_complex(-15 / normalization, -11 / normalization);
- m_256qam[198] = gr_complex(-13 / normalization, -9 / normalization);
- m_256qam[199] = gr_complex(-13 / normalization, -11 / normalization);
- m_256qam[200] = gr_complex( -9 / normalization, -15 / normalization);
- m_256qam[201] = gr_complex( -9 / normalization, -13 / normalization);
- m_256qam[202] = gr_complex(-11 / normalization, -15 / normalization);
- m_256qam[203] = gr_complex(-11 / normalization, -13 / normalization);
- m_256qam[204] = gr_complex( -9 / normalization, -9 / normalization);
- m_256qam[205] = gr_complex( -9 / normalization, -11 / normalization);
- m_256qam[206] = gr_complex(-11 / normalization, -9 / normalization);
- m_256qam[207] = gr_complex(-11 / normalization, -11 / normalization);
- m_256qam[208] = gr_complex(-15 / normalization, -1 / normalization);
- m_256qam[209] = gr_complex(-15 / normalization, -3 / normalization);
- m_256qam[210] = gr_complex(-13 / normalization, -1 / normalization);
- m_256qam[211] = gr_complex(-13 / normalization, -3 / normalization);
- m_256qam[212] = gr_complex(-15 / normalization, -7 / normalization);
- m_256qam[213] = gr_complex(-15 / normalization, -5 / normalization);
- m_256qam[214] = gr_complex(-13 / normalization, -7 / normalization);
- m_256qam[215] = gr_complex(-13 / normalization, -5 / normalization);
- m_256qam[216] = gr_complex( -9 / normalization, -1 / normalization);
- m_256qam[217] = gr_complex( -9 / normalization, -3 / normalization);
- m_256qam[218] = gr_complex(-11 / normalization, -1 / normalization);
- m_256qam[219] = gr_complex(-11 / normalization, -3 / normalization);
- m_256qam[220] = gr_complex( -9 / normalization, -7 / normalization);
- m_256qam[221] = gr_complex( -9 / normalization, -5 / normalization);
- m_256qam[222] = gr_complex(-11 / normalization, -7 / normalization);
- m_256qam[223] = gr_complex(-11 / normalization, -5 / normalization);
- m_256qam[224] = gr_complex( -1 / normalization, -15 / normalization);
- m_256qam[225] = gr_complex( -1 / normalization, -13 / normalization);
- m_256qam[226] = gr_complex( -3 / normalization, -15 / normalization);
- m_256qam[227] = gr_complex( -3 / normalization, -13 / normalization);
- m_256qam[228] = gr_complex( -1 / normalization, -9 / normalization);
- m_256qam[229] = gr_complex( -1 / normalization, -11 / normalization);
- m_256qam[230] = gr_complex( -3 / normalization, -9 / normalization);
- m_256qam[231] = gr_complex( -3 / normalization, -11 / normalization);
- m_256qam[232] = gr_complex( -7 / normalization, -15 / normalization);
- m_256qam[233] = gr_complex( -7 / normalization, -13 / normalization);
- m_256qam[234] = gr_complex( -5 / normalization, -15 / normalization);
- m_256qam[235] = gr_complex( -5 / normalization, -13 / normalization);
- m_256qam[236] = gr_complex( -7 / normalization, -9 / normalization);
- m_256qam[237] = gr_complex( -7 / normalization, -11 / normalization);
- m_256qam[238] = gr_complex( -5 / normalization, -9 / normalization);
- m_256qam[239] = gr_complex( -5 / normalization, -11 / normalization);
- m_256qam[240] = gr_complex( -1 / normalization, -1 / normalization);
- m_256qam[241] = gr_complex( -1 / normalization, -3 / normalization);
- m_256qam[242] = gr_complex( -3 / normalization, -1 / normalization);
- m_256qam[243] = gr_complex( -3 / normalization, -3 / normalization);
- m_256qam[244] = gr_complex( -1 / normalization, -7 / normalization);
- m_256qam[245] = gr_complex( -1 / normalization, -5 / normalization);
- m_256qam[246] = gr_complex( -3 / normalization, -7 / normalization);
- m_256qam[247] = gr_complex( -3 / normalization, -5 / normalization);
- m_256qam[248] = gr_complex( -7 / normalization, -1 / normalization);
- m_256qam[249] = gr_complex( -7 / normalization, -3 / normalization);
- m_256qam[250] = gr_complex( -5 / normalization, -1 / normalization);
- m_256qam[251] = gr_complex( -5 / normalization, -3 / normalization);
- m_256qam[252] = gr_complex( -7 / normalization, -7 / normalization);
- m_256qam[253] = gr_complex( -7 / normalization, -5 / normalization);
- m_256qam[254] = gr_complex( -5 / normalization, -7 / normalization);
- m_256qam[255] = gr_complex( -5 / normalization, -5 / normalization);
+ for (int i = 0; i < 256; i++) {
+ real_index = ((i & 0x80) >> 4) | ((i & 0x20) >> 3) | ((i & 0x8) >> 2) | ((i & 0x2) >> 1);
+ imag_index = ((i & 0x40) >> 3) | ((i & 0x10) >> 2) | ((i & 0x4) >> 1) | ((i & 0x1) >> 0);
+ m_256qam[i] = gr_complex(m_256qam_lookup[real_index] / normalization, m_256qam_lookup[imag_index] / normalization);
+ }
if (rotation == ROTATION_ON) {
cyclic_delay = TRUE;
rotation_angle = (2.0 * M_PI * 3.576334375) / 360.0;
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_common.h b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
index 13b25ea19b..c160f4b871 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
@@ -28,10 +28,6 @@
#include <gnuradio/fec/generic_decoder.h>
#include <gnuradio/fec/polar_common.h>
-#ifndef BOOST_CONSTEXPR_OR_CONST
-#define BOOST_CONSTEXPR_OR_CONST const
-#endif
-
namespace gr {
namespace fec {
namespace code {
@@ -68,7 +64,7 @@ namespace gr {
bool set_frame_size(unsigned int frame_size){return false;};
private:
- static BOOST_CONSTEXPR_OR_CONST float D_LLR_FACTOR;
+ static const float D_LLR_FACTOR;
unsigned int d_frozen_bit_counter;
protected:
diff --git a/gr-uhd/apps/uhd_app.py b/gr-uhd/apps/uhd_app.py
index 893919337f..1a22eb1570 100644
--- a/gr-uhd/apps/uhd_app.py
+++ b/gr-uhd/apps/uhd_app.py
@@ -108,43 +108,22 @@ class UHDApp(object):
except:
return "Can't establish USRP info."
- def normalize_antenna_sel(self, args):
+ def normalize_sel(self, num_name, arg_name, num, arg):
"""
- Make sure the --antenna option matches the --channels option.
+ num_name: meaningful name why we need num arguments
+ arg_name: name of current argument
+ num: required number of arguments
+ arg: actual argument
"""
- if args.antenna is None:
- return None
- antennas = [x.strip() for x in args.antenna.split(",")]
- if len(antennas) != 1 and len(antennas) != len(args.channels):
- raise ValueError("Invalid antenna setting for {n} channels: {a}".format(
- n=len(self.channels), a=args.antenna,
- ))
- if len(antennas) == 1:
- antennas = [antennas[0],] * len(args.channels)
- return antennas
- def normalize_subdev_sel(self, spec):
- """
- """
- if spec is None:
+ if arg is None:
return None
- specs = [x.strip() for x in spec.split(",")]
- if len(specs) == 1:
- return spec
- elif len(specs) != self.usrp.get_num_mboards():
- raise ValueError("Invalid subdev setting for {n} mboards: {a}".format(
- n=len(self.usrp.get_num_mboards()), a=spec
+ args = [x.strip() for x in arg.split(",")]
+ if len(args) != num:
+ raise ValueError("Invalid {m} setting for {n} {b}: {a}".format(
+ m=arg_name, n=num, a=arg, b=num_name
))
- return specs
-
- def normalize_lo_source_export_sel(self, args):
- lo_source = [x.strip() for x in args.lo_source.split(",")]
- lo_export = [x.strip() for x in args.lo_export.split(",")]
- if len(lo_source) != len(self.channels):
- raise ValueError("Invalid number of lo-source settings {n} for {c} channels. Must be one argument per channel.".format(n=len(lo_source), c=len(args.channels)))
- if len(lo_export) != len(self.channels):
- raise ValueError("Invalid number of lo-export settings {n} for {c} channels. Must be one argument per channel.".format(n=len(lo_source), c=len(args.channels)))
- return (lo_source, lo_export)
+ return args
def async_callback(self, msg):
"""
@@ -176,27 +155,40 @@ class UHDApp(object):
)
)
# Set the subdevice spec:
- args.spec = self.normalize_subdev_sel(args.spec)
+ args.spec = self.normalize_sel("mboards", "subdev",
+ self.usrp.get_num_mboards(), args.spec)
if args.spec:
for mb_idx in range(self.usrp.get_num_mboards()):
- if isinstance(args.spec, list):
- self.usrp.set_subdev_spec(args.spec[mb_idx], mb_idx)
- else:
+ if len(args.spec) == 1:
self.usrp.set_subdev_spec(args.spec, mb_idx)
+ else:
+ self.usrp.set_subdev_spec(args.spec[mb_idx], mb_idx)
# Set the clock and/or time source:
if args.clock_source is not None:
+ args.clock_source = self.normalize_sel("mboards", "clock-source",
+ self.usrp.get_num_mboards(), args.clock_source)
for mb_idx in range(self.usrp.get_num_mboards()):
- self.usrp.set_clock_source(args.clock_source, mb_idx)
+ if len(args.time_source) == 1:
+ self.usrp.set_clock_source(args.clock_source[0], mb_idx)
+ else:
+ self.usrp.set_clock_source(args.clock_source[mb_idx], mb_idx)
if args.time_source is not None:
+ args.time_source = self.normalize_sel("mboards", "time-source",
+ self.usrp.get_num_mboards(), args.time_source)
for mb_idx in range(self.usrp.get_num_mboards()):
- self.usrp.set_time_source(args.time_source, mb_idx)
+ if len(args.time_source) == 1:
+ self.usrp.set_time_source(args.time_source[0], mb_idx)
+ else:
+ self.usrp.set_time_source(args.time_source[mb_idx], mb_idx)
# Sampling rate:
self.usrp.set_samp_rate(args.samp_rate)
self.samp_rate = self.usrp.get_samp_rate()
self.vprint("Using sampling rate: {rate}".format(rate=self.samp_rate))
# Set the antenna:
- self.antenna = self.normalize_antenna_sel(args)
+ self.antenna = self.normalize_sel("channels", "antenna", len(args.channels), args.antenna)
if self.antenna is not None:
+ if len(self.antenna) == 1:
+ self.antenna = [self.antenna, ] * len(args.channels)
for i, chan in enumerate(self.channels):
if not self.antenna[i] in self.usrp.get_antennas(i):
self.vprint("[ERROR] {} is not a valid antenna name for this USRP device!".format(self.antenna[i]))
@@ -217,7 +209,8 @@ class UHDApp(object):
self.has_lo_sensor = 'lo_locked' in self.usrp.get_sensor_names()
# Set LO export and LO source operation
if (args.lo_export is not None) and (args.lo_source is not None):
- (args.lo_source,args.lo_export) = self.normalize_lo_source_export_sel(args)
+ args.lo_source = self.normalize_sel("channels", "lo-source", len(args.channels), args.lo_source)
+ args.lo_export = self.normalize_sel("channels", "lo-export", len(args.channels), args.lo_export)
for chan,lo_source,lo_export in zip(self.channels,args.lo_source,args.lo_export):
if (lo_source == "None") or (lo_export == "None"):
continue
@@ -403,4 +396,3 @@ class UHDApp(object):
group.add_argument("--time-source",
help="Set the time source")
return parser
-
diff --git a/gr-uhd/apps/uhd_fft b/gr-uhd/apps/uhd_fft
index b65bb7a062..1f0cf1cda5 100755
--- a/gr-uhd/apps/uhd_fft
+++ b/gr-uhd/apps/uhd_fft
@@ -98,6 +98,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.stream_args = args.stream_args
self.update_rate = args.update_rate
self.wire_format = args.otw_format
+ self.lo_offset = args.lo_offset
##################################################
# Variables
@@ -128,7 +129,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.setup_usrp(uhd.usrp_source, args)
self._ant_options = self.usrp.get_antennas(0)
for c in range(len(self.channels)):
- self.usrp.set_bandwidth(self.samp_rate, c)
+ self.usrp.set_bandwidth(self.samp_rate + abs(self.lo_offset), c)
self.usrp_device_info = self.get_usrp_info_string(compact=True, tx_or_rx='rx')
### Now set up the GUI widgets: #####################################
@@ -431,7 +432,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate)
self.usrp.set_samp_rate(self.samp_rate)
for c in range(len(self.channels)):
- self.usrp.set_bandwidth(self.samp_rate, c)
+ self.usrp.set_bandwidth(self.samp_rate + abs(self.lo_offset), c)
def set_lo_locked_probe(self, lo_locked_probe):
self.lo_locked_probe = lo_locked_probe
diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index 8cdaebc4ca..52e67baccf 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -59,7 +59,6 @@ namespace gr {
_id = pmt::string_to_symbol(str.str());
_samp_rate = this->get_samp_rate();
- _center_freq = this->get_center_freq(0);
_samps_per_packet = 1;
register_msg_cmd_handler(CMD_TAG_KEY, boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));
}
@@ -114,10 +113,8 @@ namespace gr {
usrp_source_impl::set_center_freq(const ::uhd::tune_request_t tune_request,
size_t chan)
{
- const size_t user_chan = chan;
chan = _stream_args.channels[chan];
const ::uhd::tune_result_t res = _dev->set_rx_freq(tune_request, chan);
- _center_freq = this->get_center_freq(user_chan);
_tag_now = true;
return res;
}
@@ -440,10 +437,15 @@ namespace gr {
void
usrp_source_impl::issue_stream_cmd(const ::uhd::stream_cmd_t &cmd)
{
+// This is a new define in UHD 3.6 which is used to separate 3.6 and pre 3.6
+#ifdef INCLUDED_UHD_UTILS_MSG_TASK_HPP
+ _rx_stream->issue_stream_cmd(cmd);
+#else
for (size_t i = 0; i < _stream_args.channels.size(); i++)
{
_dev->issue_stream_cmd(cmd, _stream_args.channels[i]);
}
+#endif
_tag_now = true;
}
@@ -589,7 +591,7 @@ namespace gr {
this->add_item_tag(i, nitems_written(0), RATE_KEY,
pmt::from_double(_samp_rate), _id);
this->add_item_tag(i, nitems_written(0), FREQ_KEY,
- pmt::from_double(_center_freq), _id);
+ pmt::from_double(this->get_center_freq(i)), _id);
}
}
break;
diff --git a/gr-uhd/lib/usrp_source_impl.h b/gr-uhd/lib/usrp_source_impl.h
index c1566e18d0..2e5c1d31de 100644
--- a/gr-uhd/lib/usrp_source_impl.h
+++ b/gr-uhd/lib/usrp_source_impl.h
@@ -125,7 +125,6 @@ namespace gr {
//tag shadows
double _samp_rate;
- double _center_freq;
boost::recursive_mutex d_mutex;
};
diff --git a/gr-utils/python/modtool/gr-newmod/cmake/Modules/UseSWIG.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/UseSWIG.cmake
index c0f172870b..b7e3e05dc5 100644
--- a/gr-utils/python/modtool/gr-newmod/cmake/Modules/UseSWIG.cmake
+++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/UseSWIG.cmake
@@ -224,9 +224,9 @@ print(re.sub('\\W', '_', '${name} ${reldir} ' + unique))"
foreach(swig_gen_file ${${outfiles}})
add_custom_command(
OUTPUT ${swig_gen_file}
- COMMAND ""
+ COMMAND "${CMAKE_COMMAND}" -E touch_nocreate "${swig_gen_file}"
DEPENDS ${_target}
- COMMENT ""
+ COMMENT "dummy command to show ${_target} dependency of ${swig_gen_file}"
)
endforeach()
diff --git a/grc/gui/Actions.py b/grc/gui/Actions.py
index ef043853a9..096584731e 100644
--- a/grc/gui/Actions.py
+++ b/grc/gui/Actions.py
@@ -208,6 +208,16 @@ FLOW_GRAPH_SAVE_AS = Action(
stock_id=Gtk.STOCK_SAVE_AS,
keypresses=(Gdk.KEY_s, Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK),
)
+FLOW_GRAPH_SAVE_A_COPY = Action(
+ label='Save A Copy',
+ tooltip='Save the copy of current flowgraph',
+)
+FLOW_GRAPH_DUPLICATE = Action(
+ label='_Duplicate',
+ tooltip='Create a duplicate of current flowgraph',
+ stock_id=gtk.STOCK_COPY,
+ keypresses=(gtk.keysyms.d, gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK),
+)
FLOW_GRAPH_CLOSE = Action(
label='_Close',
tooltip='Close the current flow graph',
diff --git a/grc/gui/Application.py b/grc/gui/Application.py
index e2290b3401..9e89009dc9 100644
--- a/grc/gui/Application.py
+++ b/grc/gui/Application.py
@@ -145,6 +145,7 @@ class Application(Gtk.Application):
for action in (
Actions.APPLICATION_QUIT, Actions.FLOW_GRAPH_NEW,
Actions.FLOW_GRAPH_OPEN, Actions.FLOW_GRAPH_SAVE_AS,
+ Actions.FLOW_GRAPH_DUPLICATE, Actions.FLOW_GRAPH_SAVE_A_COPY,
Actions.FLOW_GRAPH_CLOSE, Actions.ABOUT_WINDOW_DISPLAY,
Actions.FLOW_GRAPH_SCREEN_CAPTURE, Actions.HELP_WINDOW_DISPLAY,
Actions.TYPES_WINDOW_DISPLAY, Actions.TOGGLE_BLOCKS_WINDOW,
@@ -558,6 +559,32 @@ class Application(Gtk.Application):
self.config.add_recent_file(file_path)
main.tool_bar.refresh_submenus()
main.menu_bar.refresh_submenus()
+ elif action == Actions.FLOW_GRAPH_SAVE_A_COPY:
+ try:
+ if not page.get_file_path():
+ Actions.FLOW_GRAPH_SAVE_AS()
+ else:
+ dup_file_path = page.get_file_path()
+ dup_file_name = '.'.join(dup_file_path.split('.')[:-1]) + "_copy" # Assuming .grc extension at the end of file_path
+ dup_file_path_temp = dup_file_name+'.grc'
+ count = 1
+ while os.path.exists(dup_file_path_temp):
+ dup_file_path_temp = dup_file_name+'('+str(count)+').grc'
+ count += 1
+ dup_file_path_user = SaveFlowGraphFileDialog(dup_file_path_temp).run()
+ if dup_file_path_user is not None:
+ ParseXML.to_file(flow_graph.export_data(), dup_file_path_user)
+ Messages.send('Saved Copy to: "' + dup_file_path_user + '"\n')
+ except IOError:
+ Messages.send_fail_save("Can not create a copy of the flowgraph\n")
+ elif action == Actions.FLOW_GRAPH_DUPLICATE:
+ flow_graph = main.get_flow_graph()
+ main.new_page()
+ curr_page = main.get_page()
+ new_flow_graph = main.get_flow_graph()
+ new_flow_graph.import_data(flow_graph.export_data())
+ flow_graph_update(new_flow_graph)
+ curr_page.set_saved(False)
elif action == Actions.FLOW_GRAPH_SCREEN_CAPTURE:
file_path, background_transparent = FileDialogs.SaveScreenShot(main, page.file_path).run()
if file_path is not None:
diff --git a/grc/gui/Bars.py b/grc/gui/Bars.py
index 26fea20024..1510e109d2 100644
--- a/grc/gui/Bars.py
+++ b/grc/gui/Bars.py
@@ -65,11 +65,13 @@ TOOLBAR_LIST = (
MENU_BAR_LIST = (
(Gtk.Action(name='File', label='_File'), [
'flow_graph_new',
+ Actions.FLOW_GRAPH_DUPLICATE,
Actions.FLOW_GRAPH_OPEN,
'flow_graph_recent',
None,
Actions.FLOW_GRAPH_SAVE,
Actions.FLOW_GRAPH_SAVE_AS,
+ Actions.FLOW_GRAPH_SAVE_A_COPY,
None,
Actions.FLOW_GRAPH_SCREEN_CAPTURE,
None,
diff --git a/volk b/volk
-Subproject 4465f9b26354e555e583a7d654710cb63cf914c
+Subproject 018498173344ccc10c6911a828c56136e523b14