diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2017-03-16 22:27:04 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2017-03-16 22:27:04 -0700 |
commit | ffa0822abf7a30f9b44b3fb046cb6d723c4d8c37 (patch) | |
tree | 0e2d7be7824e91cf037f275098e1f90561fdafec | |
parent | 00e775ff3e78f9e0fd216e683c958ed820363fac (diff) | |
parent | b675ccc2fd08574c3169659003290327b63aa16b (diff) |
Merge branch 'next' into python3
Conflicts:
gr-blocks/swig/blocks_swig.py.in
gr-uhd/apps/uhd_app.py
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 © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + <<a href="http://fsf.org/">http://fsf.org/</a>> + </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 "free" 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 "copyleft", 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 "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law.</p> + +<p>A "Modified Version" 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 "Secondary Section" 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 "Invariant Sections" 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 "Cover Texts" 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 "Transparent" 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 "Transparent" is called "Opaque".</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 "Title Page" 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, "Title Page" 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 "publisher" means any person or entity that distributes copies of +the Document to the public.</p> + +<p>A section "Entitled XYZ" 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 "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" 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 "History", 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 "History" 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 "History" 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 "Acknowledgements" or "Dedications", + 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 "Endorsements". Such a section + may not be included in the Modified Version. +</li> + +<li>N. Do not retitle any existing section to be Entitled "Endorsements" + 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 "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties—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 "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements".</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 "aggregate" 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 "Acknowledgements", +"Dedications", or "History", 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 "or any later version" 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>"Massive Multiauthor Collaboration Site" (or "MMC Site") 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 +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site.</p> + +<p>"CC-BY-SA" 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>"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document.</p> + +<p>An MMC is "eligible for relicensing" 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 "GNU + Free Documentation License". +</pre> + +<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with … Texts." 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 |