forked from pool/gnuradio
Accepting request 954041 from hardware:sdr
OBS-URL: https://build.opensuse.org/request/show/954041 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnuradio?expand=0&rev=49
This commit is contained in:
commit
1181c46b57
@ -1,39 +0,0 @@
|
||||
From f643bc12100c67288adda3699a9e61d6a66fb529 Mon Sep 17 00:00:00 2001
|
||||
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
|
||||
Date: Fri, 7 Feb 2020 16:49:30 +0100
|
||||
Subject: [PATCH] gr-digital:glfsr.h: drop boost/cstdint.hpp and use cstdint
|
||||
|
||||
gr-digital/glfsr.h include boost/cstdint.hpp to have uintxx_t.
|
||||
These types are in boost namespace but nor using namespace xxx, nor boost:: are used.
|
||||
The result is :
|
||||
In file included from /home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/glfsr.cc:23:
|
||||
/home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/../include/gnuradio/digital/glfsr.h:42:5: error: 'uint32_t' does not name a type; did you mean 'u_int32_t'?
|
||||
uint32_t d_shift_register;
|
||||
^~~~~~~~
|
||||
u_int32_t
|
||||
|
||||
Since Gnuradio policy is Less boost == better and C++11 is used, use cstdint
|
||||
instead of boost/cstdint.hpp.
|
||||
|
||||
[backported from 475e4a156b516c089175afb998acdc80b740b437]
|
||||
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
|
||||
---
|
||||
gr-digital/include/gnuradio/digital/glfsr.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gr-digital/include/gnuradio/digital/glfsr.h b/gr-digital/include/gnuradio/digital/glfsr.h
|
||||
index 0b5141f1f..1003bcd01 100644
|
||||
--- a/gr-digital/include/gnuradio/digital/glfsr.h
|
||||
+++ b/gr-digital/include/gnuradio/digital/glfsr.h
|
||||
@@ -24,7 +24,7 @@
|
||||
#define INCLUDED_DIGITAL_GLFSR_H
|
||||
|
||||
#include <gnuradio/digital/api.h>
|
||||
-#include <boost/cstdint.hpp>
|
||||
+#include <cstdint>
|
||||
|
||||
namespace gr {
|
||||
namespace digital {
|
||||
--
|
||||
2.24.1
|
||||
|
@ -2,7 +2,7 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">8</size>
|
||||
<size unit="G">12</size>
|
||||
</disk>
|
||||
<memoryperjob>
|
||||
<size unit="M">2000</size>
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:492fe7d84fbd7a5106465326dc9fef5935288ea8f749d6038461a21eda649d13
|
||||
size 3399660
|
3
gnuradio-3.9.5.0.tar.gz
Normal file
3
gnuradio-3.9.5.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:066c88fcf05046593e534416a3526ee433c3b90a7faa40fca914add23989ef3e
|
||||
size 4245820
|
700
gnuradio.changes
700
gnuradio.changes
@ -1,175 +1,599 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Jan 9 21:44:48 UTC 2022 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
Wed Feb 9 07:57:53 UTC 2022 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.8.5.0
|
||||
- Patch revert-23cece0d0.patch removed - not needed now
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jan 9 21:21:09 UTC 2022 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.9.5.0:
|
||||
* GRC
|
||||
+ GRC now runs on Fedora 35 ... Gtk initialization checks were
|
||||
too strict
|
||||
+ Fix: dependent variables sometimes fail to evaluate
|
||||
+ Change type aliasing to allow interleaved short/byte to be
|
||||
connected to vectors of short/byte. Stricter type checking
|
||||
was added previously and caused some blocks to be unconnectable
|
||||
when using these types.
|
||||
+ Account for scale factor when computing drawing area size
|
||||
+ Tooltips fixed for categories and modules
|
||||
* gr-digital
|
||||
+ Fix yml file for Header/Payload Demux
|
||||
+ Modify and cleanup bokeh server loop
|
||||
* gr-analog
|
||||
+ Update python bindings for power squelch
|
||||
* gr-dtv
|
||||
+ Add energy normalization for DVB-S2X constellations.
|
||||
* gr-filter
|
||||
+ Remove pyqwt and qt4 from filter_design
|
||||
* gr-network
|
||||
+ Fix: segfaults when TCP & UDP blocks are restarted
|
||||
+ Add throttle flag to the tcp source and sink blocks
|
||||
* gr-qtgui
|
||||
+ Enable use of Qwt 6.2
|
||||
+ Remove unusable int type in Number Sink yml
|
||||
+ RangeWidget - implement Eng & EngSlider
|
||||
- Patch 0003-enables-use-of-qwt-6_2.patch removed (applied upstream).
|
||||
* gr-uhd
|
||||
+ Add Python bindings for rfnoc_{block, ddc, duc, rx/tx_radio}
|
||||
* modtool
|
||||
+ Improvements in generated QA code
|
||||
* Build System
|
||||
+ Better support for cross-compiling (OpenEmbedded)
|
||||
+ Find log4cpp on Ubuntu systems
|
||||
+ Handle optional components in find_package
|
||||
+ Add version check for pygccxml
|
||||
* CI/QA
|
||||
+ Update tests to work with OpenEmbedded
|
||||
- Patch 0001-gr-digital-glfsr.h-drop-boost-cstdint.hpp-and-use-cs.patch
|
||||
removed (applied upstream)
|
||||
- Patch 0003-enables-use-of-qwt-6_2.patch removed (applied upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 19 09:55:51 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
||||
Mon Nov 1 22:15:06 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Enable again LTO on %{arm} as it builds properly now
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 5 23:10:14 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.8.4.0
|
||||
* Changed
|
||||
GRC
|
||||
+ Fix drag and drop issue with Quartz
|
||||
+ Fix desync when dragging block
|
||||
+ Update disabled blocks if they depend on others
|
||||
+ Allow short and byte as valid types in an enum
|
||||
+ Fix evaluation of interdependent variables
|
||||
modtool
|
||||
+ Set VERSION_PATH to 0 in new modules, instead of using GIT rev
|
||||
+ For Python3, return correct exeption ModuleNotFoundError
|
||||
instead of ImportError
|
||||
gr-blocks
|
||||
+ trix Interleaver block
|
||||
gr-channels
|
||||
+ Fix "hide" expressions in yml files
|
||||
gr-digital
|
||||
+ Remove unused msg output port from Chunks To Symbols block yml
|
||||
gr-fft
|
||||
+ Add "shift" parameter to Log Power FFT
|
||||
gr-qtgui
|
||||
+ Fix: tags on the last sample were not shown
|
||||
gr-video-sdl
|
||||
+ Fix: U and V channels were reversed on sink blocks
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 31 12:57:53 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- added a patch 0003-enables-use-of-qwt-6_2.patch to build with
|
||||
Qwt-6.2.0. The patch was backported from pull request #5034.
|
||||
- fixed build for Tumbleweed and Factory
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 11 19:00:29 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.8.3.1
|
||||
* This is a PATCH level revision. The API is compatible with C++
|
||||
code written for previous v3.8 releases. ABI (shared library
|
||||
signature) is intended to be compatible, so code linked
|
||||
against v3.8.3.0 should not require recompilation.
|
||||
* Build system
|
||||
+ Improved messages related to dependencies MPIR and GMP. Only
|
||||
one of these packages is required, and the previous error
|
||||
messages were confusing.
|
||||
- Update to version 3.9.4.0:
|
||||
* Regressions Fixes
|
||||
+ Remove #include <filesystem> (C++17 feature) from one file
|
||||
+ Restore pyqwidget() in gr-qtgui
|
||||
* GRC
|
||||
+ Parameter expressions and/or values can be displayed in blocks
|
||||
on the flowgraph. Previously, only values were displayed.
|
||||
+ Vector length is now correctly applied to all input ports.
|
||||
+ GRC now runs on Fedora 35 ... Gtk initialization checks
|
||||
were too strict
|
||||
+ Add keyboard shortcuts for zoom
|
||||
+ Account for scale factor when computing drawing area size
|
||||
+ Use font size from config for block comments
|
||||
+ Change type aliasing to allow interleaved short/byte to be
|
||||
connected to vectors of short/byte. Stricter type checking
|
||||
was added previously and caused some blocks to be
|
||||
unconnectable when using these types.
|
||||
+ Required params no longer default to 0 when left empty. This
|
||||
caused hard-to-find errors. Older flowgraphs that have empty
|
||||
required fields will need to be fixed.
|
||||
+ Tooltips fixed for categories and modules
|
||||
* gr-runtime
|
||||
+ PMT uses the VOLK allocator for vectors
|
||||
+ get_tags_in_window() Python wrapper calls the correct function
|
||||
+ Add --pybind option to gnuradio-config-info to get PyBind11 version
|
||||
* gr-blocks
|
||||
+ Add example for XMLRPC
|
||||
+ Add a unit test for Message Strobe
|
||||
+ Fix C++ support for Unpacked to Packed
|
||||
* gr-channels
|
||||
+ RNG seeds are initialized correctly
|
||||
* gr-digital
|
||||
+ Fix yml file for Header/Payload Demux
|
||||
* gr-network
|
||||
+ Suppress warning in tuntap
|
||||
* gr-qtgui
|
||||
+ Remove unusable int type in Number Sink yml
|
||||
+ Use no_quotes() function in several yml files
|
||||
* modtool
|
||||
+ Hashes can be fixed using modtool using --update-hash-only
|
||||
+ Use tempfile() instead of /tmp in bindtool and modtool
|
||||
+ Use static_cast instead of reinterpret_cast in templates
|
||||
+ Correct broken Python general block template
|
||||
* Build system
|
||||
+ Better check for Boost version
|
||||
+ Determine the Python prefix more reliably
|
||||
+ Use GR-specified compiler standard (C++14) in gr-soapy,
|
||||
instead of the SoapySDR standard (C++11)
|
||||
+ GrPython.cmake is compatible with older cmake
|
||||
* Documentation
|
||||
+ Man pages are in-tree
|
||||
+ Repair many examples, especially in gr-digital
|
||||
+ Allow UTF-8 in pydoc templates
|
||||
* CI
|
||||
+ Execute make install during test
|
||||
- Patch 0004-gnuradio-fix-boost-header.patch removed (applied upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 7 12:38:52 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.9.3.0:
|
||||
* General
|
||||
+ Many cleanups and some C++ modernization changes
|
||||
+ Replace Boost with stdc++ equivalents (ongoing effort)
|
||||
+ Logging cleanup and performance improvements (ongoing effort)
|
||||
+ Cleanup of many unused includes
|
||||
+ Various block yaml cleanups and repairs
|
||||
+ Use Soapy instead of UHD for flowgraph testing in gr-analog and gr-dtv
|
||||
* GRC
|
||||
+ Improvements in C++ templates and code generation, more blocks are usable
|
||||
+ Add specification of packages to find (via cmake) for C++ templates
|
||||
+ Fix C++ hier block param template
|
||||
+ Add GUI hints for widgets in C++ code generation
|
||||
+ Add no_quotes() convenience function to strip quotes from strings, callable from templates
|
||||
+ Allow short and byte as valid types in an enum
|
||||
+ Fix desync when dragging block (block would not always track cursor)
|
||||
+ Correctly evaluate interdependent variables
|
||||
+ Allow error messages to be copied to clipboard
|
||||
+ Update disabled blocks if they depend on others
|
||||
* gnuradio-runtime
|
||||
+ Deprecate tag_checker class (will be removed in 3.10)
|
||||
+ Detect and follow symbolic links for installation prefix in gr::prefix()
|
||||
+ Add "<" operator for comparison of tags (instead of offset_compare())
|
||||
* gr-blocks
|
||||
+ New Matrix Interleaver block
|
||||
+ Throttle and Head blocks can be input-only when no output is needed, improving performance
|
||||
+ Fix tag propagation in (un)pack-k-bits blocks
|
||||
+ Fix namespace for nco and vco in benchmarks
|
||||
* gr-digital
|
||||
+ New Async CRC16 block
|
||||
+ Add NRZI option to Differential En/Decoder
|
||||
+ Constellation performance improvements
|
||||
+ Fix constellation normalization by average power
|
||||
+ Remove unimplemented msg output port from Chunks to Symbols block
|
||||
+ Make unpacking of bits optional in GMSK modulator so the blocks can accept unpacked bits
|
||||
+ In GFSK/GMSK hier blocks, replace M&M clock recovery with newer
|
||||
and more capable Digital Symbol Sync block
|
||||
* gr-fec
|
||||
+ Cleanups and code improvements
|
||||
* gr-fft
|
||||
+ Add a "shift" paramenter to Log Power FFT, to place DC bin at center
|
||||
* gr-filter
|
||||
+ Performance improvement in PFB Arbitrary Resampler when interpolating, especially at low rates
|
||||
* gr-qtgui
|
||||
+ Fix display of tags on the last sample (would be dropped)
|
||||
+ Python wrapping: replace pyqwidget() with qwidget() - this is not intended
|
||||
to be a visible fix, but is mentioned here in case it causes trouble for anyone
|
||||
+ C++ generation
|
||||
- add double quotes to cpp_opts keys with colons
|
||||
- position windows correctly depending on gui_hint
|
||||
- use option attributes to generate enums
|
||||
- use the cpp enums for wintype and trigger_type
|
||||
* gr-uhd
|
||||
+ Fix input filename in freq hopping examples
|
||||
+ Make RFNoC a separately enabled component in cmake
|
||||
+ Python bindings for rfnoc_graph,_rx/tx_streamer
|
||||
* gr-video-sdl
|
||||
+ U and V channels were reversed on sink blocks
|
||||
* gr-soapy
|
||||
+ Added message support for SoapySDR 0.8 API
|
||||
* modtool
|
||||
+ Set VERSION_PATCH to 0 instead of "git" in new modules
|
||||
+ Fix "rm", "bind", disable", "rename" and "makeyml" which had
|
||||
unexpected side effects, or did not work as a user would expect
|
||||
* Build System
|
||||
+ Correct minimum version checking for Mako
|
||||
+ Ensure that RC_*_VERSION are numeric (Windows)
|
||||
+ Fix finding libunwind
|
||||
+ Pass through extra arguments to GR_PYTHON_INSTALL to install command
|
||||
+ Remove absolute paths and private links from exported targets
|
||||
+ Add gir1.2-gtk-3.0 as deb runtime dependency
|
||||
* Documentation
|
||||
+ Code of Conduct updates and link to Wiki
|
||||
* CI
|
||||
+ Do not error out on deprecations, allowing testing of deprecated code
|
||||
- Update to version 3.9.2.0:
|
||||
* SoapySDR support (gr-soapy)
|
||||
* GRC
|
||||
+ Parameter expressions and/or values can be displayed in blocks on
|
||||
the flowgraph. Previously, only values were displayed.
|
||||
+ Deprecated blocks are shown in a distinct color (orange),
|
||||
and the optional deprecated property has been added to block yaml
|
||||
+ Dark theme works better, especially for parameter fields
|
||||
+ Vector length is now correctly applied to all input ports
|
||||
+ Validation has been improved. Raw types are validated. Port
|
||||
connections are checked by type rather than by item size.
|
||||
+ Variable names that cause conflicts in Python code (e.g.,
|
||||
package names) are rejected.
|
||||
+ Bus logic fixes.
|
||||
+ Blocks can no longer be dragged off the screen and lost
|
||||
forever.
|
||||
+ Variable names that cause name conflicts in Python code (e.g.,
|
||||
with package names) are rejected
|
||||
+ Bus logic fixes
|
||||
+ Blocks can no longer be dragged off the screen and lost forever
|
||||
* gnuradio-runtime
|
||||
+ Remove pmt::pmt_* functions, which were not actually implemented.
|
||||
This is technically an API change, but any use of the API would have
|
||||
resulted in a link error.
|
||||
+ Remove Python bindings for internal buffer functions
|
||||
* gr-analog
|
||||
+ Added an example for PLL Frequency Detector
|
||||
+ Better names for parameters in PLL GRC blocks
|
||||
* gr-blocks
|
||||
+ Consistent naming for Vector Length parameter in GRC blocks
|
||||
+ count_bits uses VOLK popcnt for better performance (used for example in
|
||||
the Correlate Access Code block)
|
||||
+ Rotator block phase increment parameter is controllable via a message,
|
||||
and a tag can be added at the point where the increment is adjusted
|
||||
* gr-digital
|
||||
+ MPSK example updated to use a Linear Equalizer (replacing deprecated block)
|
||||
* gr-filter
|
||||
+ Filter Delay documentation improvement
|
||||
+ Interpolating FIR filter can generate C++ code
|
||||
* gr-dtv
|
||||
+ VL-SNR bugs fixed (incorrect constants).
|
||||
* gr-qtgui
|
||||
+ Improve autoscaling for vector sinks.
|
||||
+ Improve autoscaling for vector sinks
|
||||
+ Fix floating-point resolution problems in several widgets, due to
|
||||
interpretation of PMT doubles as floats
|
||||
* gr-uhd
|
||||
+ Add policy enum to Python bindings for tune_request
|
||||
+ Additional time spec options on UHD blocks (PC Clock on Next PPS, GPS Time on Next PPS)
|
||||
+ Fix up code that was generating warnings
|
||||
+ Fix command handler logic to apply commands from messages to the correct channel
|
||||
* gr_filter_design
|
||||
+ "File/Save" is disabled until the taps have been computed,
|
||||
and the GUI is reset after a save, to make it clearer which
|
||||
data is being saved.
|
||||
+ Entries are hidden for parameters that do not apply to the
|
||||
selected filter type.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 12 07:05:36 UTC 2021 - Martin Pluskal <mpluskal@suse.com>
|
||||
|
||||
- Fix source url
|
||||
- Use ninja for building
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 22 23:32:03 UTC 2021 - Wojciech Kazubski <wk@ire.pw.edu.pl>
|
||||
|
||||
- Update to version 3.8.3.0:
|
||||
* Changed on project Scope
|
||||
+ Preference file path may be set using the GR_PREFS_PATH
|
||||
environment variable
|
||||
+ Lower message latency, previously slow when block aliases
|
||||
were used
|
||||
+ PMT: is_dict() no longer returns True for PMT pairs, only
|
||||
for PMT dicts
|
||||
+ Util gnuradio-config-info gets --print-all for those that
|
||||
want it all
|
||||
+ Allow Thrift versions up thorugh 0.13
|
||||
+ "File/Save" is disabled until the taps have been computed, and the GUI
|
||||
is reset after a save, to make it clearer which data is being saved.
|
||||
+ Entries are hidden for parameters that do not apply to the selected filter type.
|
||||
+ Save window type as an integer instead of a Python enum name
|
||||
* gr_modtool
|
||||
+ Improve validation of module and block names
|
||||
* Build System and Infrastructure
|
||||
+ Improved messages related to dependencies MPIR and GMP. Only one of these
|
||||
packages is required, and the previous error messages were confusing.
|
||||
+ Cleaner builds for Windows and Conda. A number of general cmake improvements
|
||||
have resulted from this work.
|
||||
+ In-tree packaging files for DEB and RPM, used with Launchpad and COPR
|
||||
+ Added man pages for GNU Radio tools
|
||||
+ Test code generation for all in-tree GRC examples
|
||||
+ In GrPybind.cmake, PYBIND11_INCLUDE_DIR (incorrect) was changed to pybind11_INCLUDE_DIR
|
||||
- Update to version 3.9.1.0:
|
||||
* Project Scope
|
||||
+ (internal) Build system improvements and fixes
|
||||
+ (internal) Reduce Boost usage by replacing bind() with lambdas
|
||||
supported in C++11
|
||||
+ (internal) Use C++14 features instead of Boost where possible
|
||||
+ Fewer compiler warnings (due to fixed code, not removal of warnings!)
|
||||
* OOT Support
|
||||
+ Allow override of gr python dir by setting -DGR_PYTHON_DIR
|
||||
+ Modtool will not try to add duplicate block names in a module
|
||||
+ Modtool can non-interactively add blocks with no parameters
|
||||
+ cmake: standard FindGSL used in lieu of custom one, so OOTs
|
||||
should no longer copy this module from the GNU Radio tree if needed
|
||||
+ modtool: better exception/error handling
|
||||
+ modtool: will non-interactively add blocks with no parameters
|
||||
(--argument-list="")
|
||||
+ Modtool will use current installation prefix instead of
|
||||
/usr/local as source of templates
|
||||
+ PyBind11 header hash hotfixer
|
||||
+ (gr-utils/bindtool/scripts/binding-hash-hotfixer.zsh) makes life easier
|
||||
* GRC
|
||||
+ Block param values can be shown as expressions and/or evaluated
|
||||
values. Under the View menu, see "Show parameter ..." options.
|
||||
+ Better handling of gui hints, avoid hiding widgets in cases
|
||||
where some have GUI hints and some do not
|
||||
+ Dark theme detection fix
|
||||
+ Add window size option for bokeh gui
|
||||
* gr-audio
|
||||
+ ALSA nperiods default increased to 32 frames to reduce drops
|
||||
(can be set in conf file under the audio_alsa section)
|
||||
+ Ensure that strings are valid utf8 when evaluating parameters
|
||||
+ Save embedded python blocks/modules to hier_block_directory
|
||||
+ Save config and update recent file sub-menu before executing flowgraph
|
||||
+ Revert to previous "block id" display behavior
|
||||
+ Fix drag n' drop issue with Quartz (macOS) backend
|
||||
+ C++ generated code: remove gnuradio prefix from linked libraries
|
||||
+ Python generated code: prefix generated modules with flowgraph id
|
||||
connect() will be called for hier blocks even if they don't have ports
|
||||
+ Check for PyYAML 3.11 (was checking for 3.10 even though 3.11 was required)
|
||||
* gnuradio-runtime
|
||||
+ Default buffer size can be adjusted by setting buffer_size in the
|
||||
[Default] section of the GNU Radio config file. Otherwise, the
|
||||
longstanding default of 32768 is used.
|
||||
* gr-blocks
|
||||
+ File Source handles EOF properly in non-seekable files
|
||||
(e.g., pipes)
|
||||
+ File Source handles large files on Windows
|
||||
+ Message Debug: prints warning when a non-PDU message is
|
||||
received on the Print PDU port
|
||||
+ File Source handles EOF properly in non-seekable files (e.g., pipes)
|
||||
+ Several bounds checking and boundary condition improvements
|
||||
+ Remove DC Spike AutoSync algorithm fixed
|
||||
* gr-digital
|
||||
+ MSK timing error detector improvement
|
||||
+ Improvements to correlation estimator example
|
||||
+ Correlate Access Code will not trigger until it receives
|
||||
enough bits to compare to the access code
|
||||
* gr-dtv
|
||||
+ Performance improvements
|
||||
+ Python bindings include control_loop parent class in child
|
||||
class Correlation Estimator parameter threshold well documented
|
||||
* gr-fft
|
||||
+ New window types: Nuttall, Blackman Nuttall, Nuttall CFD, Welch, Parzen,
|
||||
+ Exponential, Riemann, Gaussian and Tukey
|
||||
* gr-filter
|
||||
+ Filter designer works with Qt5 and Python3
|
||||
+ Taps blocks (e.g., Low Pass Filter Taps) now propagate
|
||||
parameter changes
|
||||
+ Taps blocks (e.g., Low Pass Filter Taps) now propagate parameter changes
|
||||
+ Filter Designer: IIR/Band Pass/Bessel works
|
||||
* gr-qtgui
|
||||
+ Chooser label defaults now correct
|
||||
+ Frequency Sink max hold plot for half spectrum width option
|
||||
shows correctly
|
||||
+ Number Sink honors setting of 'avg' more consistently
|
||||
+ Add toggling label and icon on plot play/stop button
|
||||
+ Time Raster Sink: axis labels and ranges are configurable
|
||||
+ Qt Chooser: label improvements
|
||||
* gr-uhd
|
||||
+ Add start time parameter to GRC blocks
|
||||
+ Add message handler for GPIO control messages
|
||||
+ Additional master clock rates in GRC blocks
|
||||
+ UHD source sends tags on center frequency change
|
||||
* gr-video-sdl
|
||||
+ Correct YUV format options
|
||||
+ DEPRECATION: UHD blocks currently accept control messages (e.g. for
|
||||
frequency change) as PMT pairs and tuples, in addition to the intended
|
||||
PMT dict format. In v3.11, only the dict format will be accepted.
|
||||
+ Command note: freq messages in this version must be dicts.
|
||||
Additionally, the direction key must be present and set to TX or RX.
|
||||
+ set_filter() adds chan parameter
|
||||
+ Python generated code improved for FE corrections
|
||||
+ Allow control of frequency and gain in both directions at the same moment
|
||||
+ Add command handler for mtune ("manual tune")
|
||||
+ Add GPIO control via messages
|
||||
+ Add start time param to GRC blocks
|
||||
+ Support streaming modes: STREAM_MODE_START_CONTINUOUS,
|
||||
STREAM_MODE_STOP_CONTINUOUS, STREAM_MODE_NUM_SAMPS_AND_DONE,
|
||||
STREAM_MODE_NUM_SAMPS_AND_MORE
|
||||
+ Documentation improvements
|
||||
+ Tag sink demo example
|
||||
+ Better logging of over/underflows, time errors and time tags
|
||||
+ Added Python binding for ALL_LOS (all local oscillators)
|
||||
+ uhd_fft application X11/Qt related cleanups
|
||||
* QA
|
||||
+ waitFor(condition, ...) available for tests that use timeouts
|
||||
- Update to version 3.9.0.0:
|
||||
Changed
|
||||
* Project Scope
|
||||
+ License headers now SPDX format
|
||||
+ C++14
|
||||
+ use C++11 facilities in a lot of places where Boost was still used,
|
||||
especially smart pointers, range loops
|
||||
+ lambdas where boost::bind was used
|
||||
+ C11
|
||||
+ Dependency versions:
|
||||
Python 3.6.5
|
||||
numpy 1.13.3
|
||||
VOLK 2.4.1
|
||||
CMake 3.10.2
|
||||
numpy 1.13.3
|
||||
Boost 1.65
|
||||
Mako 1.0.7
|
||||
PyBind11 2.4.3
|
||||
+ Compiler options:
|
||||
GCC 8.3.0
|
||||
Clang 11.0.0 / Apple Clang 1100
|
||||
MSVC 1910 (Microsoft VS 2017 15.0)
|
||||
+ VOLK now "regular" dependency, not in-tree submodule
|
||||
+ numpy now also a CMake-checked hard dependency for Python support
|
||||
+ Exception Handling: throw by value, catch by reference (clang-tidy check)
|
||||
+ C++11: Emplace in vectors where you can; brings performance boni, but not
|
||||
+ included in clang-tidy-checks
|
||||
+ Further clang-tidy based code optimizations:
|
||||
+ empty() instead of size() == 0
|
||||
+ override where overriding virtual functions (which we do a lot)
|
||||
+ Logging: removed all std::cerr and fprintf(stderr,…) by GNU Radio logging
|
||||
+ Logging: Changed logging format for many multiline error logs
|
||||
+ purged snprintf, printf logging
|
||||
+ There were a lot of places where a malloc'ed object
|
||||
was used internally, where that was inappropriate.
|
||||
Using simple instance-holding fields now.
|
||||
+ const for members that were only set at construction
|
||||
time is now desired, and implemented in most places
|
||||
+ const -> constexp in a lot of places.
|
||||
+ assert -> static_assert
|
||||
+ An exception-throwing block will now terminate the
|
||||
flow graph process, configurable through top_block
|
||||
+ gr-utils cleanup, folder restructuring
|
||||
+ config version checks installed CMake file will accept
|
||||
"at least this version" now
|
||||
+ PyBind11 replaces SWIG
|
||||
+ Full tree conversion from SWIG to Pybind11 bindings
|
||||
+ Doxygen now uses MathJax, full LaTeX installation no
|
||||
longer required
|
||||
NOTE: Most of the changes above change the generally
|
||||
preferred coding style in a lot of situations.
|
||||
* GRC
|
||||
+ start flowgraph in folder where it resides
|
||||
+ gnuradio-runtime
|
||||
* When calculating offsets in non-integer rate FEC, lround
|
||||
+ default seed for gr::random now actually as documented time-dependent
|
||||
+ loggers moved from gr::block to gr::basic_block
|
||||
* PMT serialization
|
||||
+ PMT dicts no longer indistinguishable from pairs
|
||||
+ PMT symbol hashing no longer suffers under oddball own implementations
|
||||
* gr-audio
|
||||
+ Increased ALSA buffer nperiods
|
||||
* gr-blocks
|
||||
+ add, add_const VOLK'ized, templated
|
||||
this seems to break things in other places, even if
|
||||
it proves to be mathematically identical
|
||||
+ wavfile infrastructure: libsndfile now dependency
|
||||
* gr-digital
|
||||
+ transcendental block: default to 32 bit float complex, not double
|
||||
+ Linear equalizer: separate adaptive algorithm, allows for
|
||||
using e.g. trained sequences instead of the classical LMS, CMA
|
||||
+ DFE: better structure for decision history
|
||||
* gr-dtv
|
||||
+ LDPC encoder: template functions instead of #defined macros
|
||||
+ LDPC encoder: smaller tables through uint16_t for index tables
|
||||
* gr-fec
|
||||
+ API uint8_t, not char
|
||||
* gr-fft
|
||||
+ FFT blocks/functions templatized
|
||||
* gr-filter
|
||||
+ logging format
|
||||
+ rational_resampler_base -> rational_resampler
|
||||
* gr-uhd
|
||||
+ Required UHD version bumped to 3.9.7
|
||||
+ logging format
|
||||
Deprecated
|
||||
* gr-analog
|
||||
+ sig_source: freq port will be removed in the future
|
||||
* gr-digital
|
||||
+ in favor of symbol_sync, deprecate:
|
||||
clock_recovery_mm
|
||||
msk_timing_recovery
|
||||
pfb_clock_sync
|
||||
Added
|
||||
* Project Scope
|
||||
+ C++ Generation all over the place
|
||||
+ PyBind bindings + generator
|
||||
+ Github actions
|
||||
+ Reproducible builds-compatible CMake TIMESTAMP
|
||||
* gnuradio-runtime
|
||||
+ block_gateway: set_max_output_buffer
|
||||
+ GR_PREFS_PATH environment variable sensitivity to
|
||||
configure the path to the config file
|
||||
+ gnuradio-config-info --print-all
|
||||
* GRC
|
||||
+ option to toggle ID visibilities globally
|
||||
+ Validation check for QT GUI hints
|
||||
* Python snippets
|
||||
+ block header parsing tool
|
||||
+ block header parsing tool (GSoC 2019)
|
||||
* gr_modtool
|
||||
+ option to convert blacklisted files
|
||||
* gr-analog
|
||||
+ sig_source: cmd port adds support for dicts, setting of frequency,
|
||||
+ amplitude, offset and phase parameters
|
||||
* gr-blocks
|
||||
+ selector now has control message ports
|
||||
+ Rotator-based freq shift convenience wrapper
|
||||
+ Message-to-Variable and vice versa blocks
|
||||
+ DC Spike removal
|
||||
+ IQ Swap
|
||||
+ Complex to interleaved char / short: scaling option
|
||||
+ Delay block: control message port
|
||||
+ Phase Shift block with message port
|
||||
+ wavfile_sink, _source can now deal with a lot of audio formats:
|
||||
+ uncompressed WAV/AIFF, µ- and A-law compressed audio,
|
||||
OGG/Vorbis, FLAC, even octave files
|
||||
+ Stream Demux, which demuxes streams according to lengths vector
|
||||
+ rotator: phase() getter
|
||||
* gr-digital
|
||||
+ OFDM: multiple CP lengths
|
||||
+ ofdm_equalizer_simpledfe: enable_soft_output
|
||||
+ Constellation Encoder
|
||||
+ Constellation: normalization options
|
||||
* gr-fec
|
||||
+ {en,de}code_rs_8, {en,de}code_rs_ccsds: Reed-Solomon en- and decoders
|
||||
* gr-fft
|
||||
+ Windows:
|
||||
Gaussian
|
||||
Flat Top
|
||||
Tukey
|
||||
+ Window build() call now with default beta
|
||||
* gr-filter
|
||||
+ GRC: File taps loader block
|
||||
+ Low pass FFT filter convenience wrapper
|
||||
+ ichar / ishort decimator
|
||||
+ phase continuity for freq_xlating_fir_filter
|
||||
* gr-network
|
||||
+ gr-network: a whole new networking blocks module!
|
||||
TCP
|
||||
UDP
|
||||
+ Much better lockup/multithreading support than 3.7-era blks2 nightmare
|
||||
infrastructure :)
|
||||
* gr-qtgui
|
||||
+ Azimuth/Elevation plot
|
||||
+ Autocorrelation plot
|
||||
+ Compass visualization
|
||||
+ Dial control
|
||||
+ Gauge: dial, level
|
||||
+ Distance plot
|
||||
+ LED-like indicator
|
||||
+ Message-passing check box
|
||||
+ Message-passing numeric control
|
||||
+ Message-passing push button
|
||||
+ Toggle Button
|
||||
+ Eye sink
|
||||
+ Vertical slider
|
||||
* gr-uhd
|
||||
+ Filter API
|
||||
+ UHD 4.0 support
|
||||
+ Power Reference API
|
||||
+ Bidirectional setting messages on both sink, source
|
||||
* gr-vocoder
|
||||
+ Codec2 dev branch support
|
||||
+ FreeDV: In/output rates can differ
|
||||
+ FreeDV: text message output
|
||||
* gr-zeromq
|
||||
+ Connections no longer hang when flowgraph stops and other
|
||||
end is still connected (ZMQ_LINGER now set)
|
||||
+ Receipt of bad PMTs logged (instead of exception)
|
||||
- Patch 0002-boost_qualify_placeholders_with_their_full_namespace.patch
|
||||
removed (applied upstream).
|
||||
+ C++ GRC templates
|
||||
+ Tag filtering for tag-forwarding blocks
|
||||
Removed
|
||||
* Project Scope
|
||||
+ VOLK is no longer a submodule
|
||||
+ Sphinx: consolidate into doxygen, or wiki-maintained block list.
|
||||
+ Python 2
|
||||
+ SWIG
|
||||
+ gru python module
|
||||
* gnuradio-runtime
|
||||
+ circular_file.cc
|
||||
+ math/common_factor.hpp
|
||||
* gr-blocks
|
||||
+ bin_statistics_f
|
||||
+ log2_const
|
||||
* gr-digital
|
||||
+ PFB clock sync: set_taps
|
||||
+ deprecated old OFDM infrastructur
|
||||
+ ofdm_frame_acquisition
|
||||
+ ofdm_frame_sink
|
||||
+ ofdm_insert_preamble
|
||||
+ ofdm_sync_fixed
|
||||
+ ofdm_sync_pn
|
||||
+ ofdm_sync_pnac
|
||||
+ ofdm_sync_ml
|
||||
+ ofdm_receiver
|
||||
+ digital_voice
|
||||
* gr-fft
|
||||
+ malloc_float, _double: rely on VOLK
|
||||
+ Goertzel: dtor superfluous
|
||||
* gr-filter
|
||||
+ deprecated window function duplicates (use them from gr-fft!)
|
||||
Fixed
|
||||
* Project Scope
|
||||
+ CMake: Qwt, Log4Cpp detection
|
||||
+ ctrlport strings unicodified
|
||||
+ Freedesktop install script was not executed
|
||||
+ Redundant icons installed
|
||||
+ Path substitution on Windows was backslash-broken
|
||||
+ YAML definitions: more than I can count
|
||||
+ Cross-building: py interpreter at runtime != build time
|
||||
* gnuradio-runtime
|
||||
+ ctrlport: unholy stored reference to stack-allocated object removed
|
||||
+ Sine table generation for fixed point math
|
||||
+ gr_unittest: floatAlmostEqual had a lot of false passes due abuse of
|
||||
all()
|
||||
+ get_tags_in_range for delay < (end-start)
|
||||
+ Premature tag pruning
|
||||
+ release flattened flowgraph after stopping, fixes
|
||||
restartability/shutdown problem
|
||||
+ PMT serialization portability
|
||||
+ latency issue caused by setting block alias on msg block
|
||||
+ Windows logging errors
|
||||
+ ctrlport: Thrift >= 0.13 broke
|
||||
* GRC
|
||||
+ Tab widget ID visibilities
|
||||
+ A lot of YAML templates
|
||||
+ Default setting in qtgui chooser restored
|
||||
+ Boolean parameters no longer switch buttons
|
||||
+ Nested namespace handling
|
||||
+ Don't rely on set ordering in tests
|
||||
+ configparser import
|
||||
+ input box color theme on dark themes
|
||||
+ Search box typing doesn't inadvertedly interact with the rest of GRC anymore
|
||||
* gr_modtool
|
||||
+ Empty argument lists allowed
|
||||
+ Boost UTF replaced CppUnit, this needed to be done here, too
|
||||
* gr-analog
|
||||
+ wfm left/right, filters
|
||||
* gr-audio
|
||||
+ portaudio: lock acquisition was improper
|
||||
* gr-blocks
|
||||
+ Throttle now uses monotonic clock
|
||||
+ Tag debug only saved last work call's tags
|
||||
+ File sink flushes on stop
|
||||
+ gr_read_file_metadata.py used to lose rx_time precision
|
||||
+ File source big file handling under Windows
|
||||
+ file_*: fseek errors used to be ignored
|
||||
* gr-digital
|
||||
+ map_bb: thread safety, buffer overflows
|
||||
+ additive_scrambler: reset was broken
|
||||
+ Constellation scalefactor wasn't always initialized
|
||||
+ long-standing qa_header_payload_demux bug addressed by
|
||||
waiting for both RX and TX, not only either
|
||||
+ false triggers in correlate_access_code
|
||||
* gr-dtv
|
||||
+ rate mismatch in ATSC flowgraphs
|
||||
* gr-fec
|
||||
+ async_decoder Heap corruption
|
||||
+ cc_encoder: constraint length K > 8 led to wrong output
|
||||
* gr-fft
|
||||
+ thread safety of copy assignment/ctor
|
||||
+ log power FFT Python
|
||||
* gr-filter
|
||||
+ variable_band_pass_filter GRC complex taps input
|
||||
+ RRC filter gain for alpha = 1
|
||||
* gr-qtgui
|
||||
+ Remove copies of image data in returns by using move semantics
|
||||
+ Remove bogus overriding in drawing functions of plot_raster, _waterfall
|
||||
+ Edit MSG box: don't require key to be set +
|
||||
+ Don't check for Python2 libs
|
||||
+ Number Sink ignored averaging setting
|
||||
* gr-uhd
|
||||
+ UHD apps: Py3 fixes
|
||||
+ USRP blocks: multichannel objects not properly populating channels
|
||||
* gr-video-sdl
|
||||
+ YUV formats fixed
|
||||
* gr-zeromq
|
||||
+ Don't depend on deprecated ZMQ functionality (fix warnings,
|
||||
include what you use)
|
||||
+ Unhandled exceptions now handled, much calmer
|
||||
+ Avoid infinite blocking in tb.stop() by using ZMQ_LINGER
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 15 12:35:29 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
||||
|
@ -16,10 +16,14 @@
|
||||
#
|
||||
|
||||
|
||||
%define sover 3_8_5
|
||||
%define sover 3_9_5
|
||||
%ifarch %{arm}
|
||||
# boo#1182440
|
||||
%define _lto_cflags %{nil}
|
||||
%endif
|
||||
%bcond_without docs
|
||||
Name: gnuradio
|
||||
Version: 3.8.5.0
|
||||
Version: 3.9.5.0
|
||||
Release: 0
|
||||
Summary: GNU software radio
|
||||
License: GPL-3.0-or-later
|
||||
@ -30,10 +34,8 @@ Source0: https://github.com/gnuradio/gnuradio/archive/refs/tags/v%{versio
|
||||
Source4: grc_to_37.sh
|
||||
Source99: %{name}-rpmlintrc
|
||||
Patch0: missing_library.patch
|
||||
Patch1: revert-23cece0d0.patch
|
||||
Patch2: 0001-gr-digital-glfsr.h-drop-boost-cstdint.hpp-and-use-cs.patch
|
||||
BuildRequires: alsa-devel
|
||||
BuildRequires: cmake >= 3.8
|
||||
BuildRequires: cmake >= 3.10.2
|
||||
BuildRequires: cppunit-devel
|
||||
BuildRequires: cppzmq-devel
|
||||
BuildRequires: fdupes
|
||||
@ -42,13 +44,15 @@ BuildRequires: gcc-c++
|
||||
BuildRequires: gmp-devel
|
||||
BuildRequires: gsl-devel
|
||||
BuildRequires: libSDL-devel
|
||||
BuildRequires: libboost_atomic-devel >= 1.53
|
||||
BuildRequires: libboost_filesystem-devel >= 1.53
|
||||
BuildRequires: libboost_atomic-devel >= 1.65
|
||||
BuildRequires: libboost_filesystem-devel >= 1.65
|
||||
BuildRequires: libboost_system-devel
|
||||
BuildRequires: libgsm-devel
|
||||
BuildRequires: libjack-devel
|
||||
BuildRequires: libmpir-devel
|
||||
BuildRequires: libsndfile-devel
|
||||
BuildRequires: log4cpp-devel
|
||||
BuildRequires: mathjax
|
||||
BuildRequires: ninja
|
||||
BuildRequires: orc
|
||||
BuildRequires: pkgconfig
|
||||
@ -59,14 +63,15 @@ BuildRequires: python3-click
|
||||
BuildRequires: python3-click-plugins
|
||||
BuildRequires: python3-gobject
|
||||
BuildRequires: python3-gobject-cairo
|
||||
BuildRequires: python3-mako >= 0.9.1
|
||||
BuildRequires: python3-numpy
|
||||
BuildRequires: python3-mako >= 1.0.7
|
||||
BuildRequires: python3-numpy-devel >= 1.13.3
|
||||
BuildRequires: python3-pyaml >= 3.11
|
||||
BuildRequires: python3-pybind11-devel >= 2.4.3
|
||||
BuildRequires: python3-pycairo
|
||||
BuildRequires: python3-qt5-devel
|
||||
BuildRequires: python3-six
|
||||
BuildRequires: qwt6-qt5-devel
|
||||
BuildRequires: swig >= 3.0.8
|
||||
BuildRequires: soapy-sdr-devel
|
||||
BuildRequires: typelib(Gtk) = 3.0
|
||||
BuildRequires: typelib(PangoCairo) = 1.0
|
||||
BuildRequires: typelib(cairo) = 1.0
|
||||
@ -76,7 +81,7 @@ BuildRequires: pkgconfig(codec2)
|
||||
BuildRequires: pkgconfig(libusb-1.0)
|
||||
BuildRequires: pkgconfig(libxml-2.0)
|
||||
BuildRequires: pkgconfig(py3cairo)
|
||||
BuildRequires: pkgconfig(volk) >= 2.0
|
||||
BuildRequires: volk-devel >= 2.4.1
|
||||
# gr_modtool dependencies
|
||||
Requires: python3-click
|
||||
Requires: python3-click-plugins
|
||||
@ -161,13 +166,6 @@ This package contains some examples of using GNU Radio.
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
# remove buildtime from documentation
|
||||
sed -i 's|^HTML_TIMESTAMP = YES|HTML_TIMESTAMP = NO|' docs/doxygen/Doxyfile.in
|
||||
sed -i 's|^HTML_TIMESTAMP = YES|HTML_TIMESTAMP = NO|' docs/doxygen/Doxyfile.swig_doc.in
|
||||
|
||||
# protect the template files from %%cmake macro magic / mangling
|
||||
find gr-utils/python/modtool/templates/gr-newmod -name CMakeLists.txt -exec mv '{}' '{}.tmpl' \;
|
||||
|
||||
%build
|
||||
%define __builder ninja
|
||||
%cmake \
|
||||
@ -180,9 +178,6 @@ find gr-utils/python/modtool/templates/gr-newmod -name CMakeLists.txt -exec mv
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
# move the template files back
|
||||
find gr-utils/python/modtool/templates/gr-newmod -name CMakeLists.txt.tmpl -execdir mv '{}' 'CMakeLists.txt' \;
|
||||
|
||||
%cmake_install
|
||||
|
||||
install -d %{buildroot}%{_docdir}/%{name}
|
||||
@ -215,21 +210,23 @@ rm -rf %{buildroot}%{_datadir}/icons/gnome
|
||||
%{_datadir}/gnuradio/modtool/
|
||||
%{_datadir}/gnuradio/themes/
|
||||
%{_datadir}/gnuradio/fec/
|
||||
%{_datadir}/gnuradio/clang-format.conf
|
||||
%{_datadir}/icons/hicolor/*/apps/gnuradio-grc.png
|
||||
%{_datadir}/applications/gnuradio-grc.desktop
|
||||
%{_datadir}/mime/packages/gnuradio-grc.xml
|
||||
%{_datadir}/metainfo/org.gnuradio.grc.metainfo.xml
|
||||
%{python3_sitearch}/*
|
||||
%dir %{_sysconfdir}/gnuradio
|
||||
%dir %{_sysconfdir}/gnuradio/conf.d
|
||||
%config(noreplace) %{_sysconfdir}/gnuradio/conf.d/*.conf
|
||||
%{_mandir}/man1/*.1%{?ext_man}
|
||||
%dir %{_docdir}/%{name}/
|
||||
%{_docdir}/%{name}/README*
|
||||
%{_docdir}/%{name}/CHANGELOG*
|
||||
%{_docdir}/%{name}/CONTRIBUTING.md
|
||||
# doc package
|
||||
%exclude %{_docdir}/%{name}/html/
|
||||
%exclude %{_docdir}/%{name}/xml/
|
||||
%exclude %{_docdir}/%{name}/*.py
|
||||
%exclude %{_docdir}/%{name}/*.grc
|
||||
|
||||
%files -n libgnuradio-%{sover}
|
||||
%{_libdir}/libgnuradio*.so.*
|
||||
@ -245,8 +242,6 @@ rm -rf %{buildroot}%{_datadir}/icons/gnome
|
||||
%dir %{_docdir}/%{name}
|
||||
%{_docdir}/%{name}/html/
|
||||
%{_docdir}/%{name}/xml/
|
||||
%{_docdir}/%{name}/*.py
|
||||
%{_docdir}/%{name}/*.grc
|
||||
|
||||
%files examples
|
||||
%dir %{_libdir}/gnuradio
|
||||
|
@ -1,555 +0,0 @@
|
||||
diff --git a/CHANGELOG.md b/CHANGELOG.md
|
||||
index 523f4bbda..90b785104 100644
|
||||
--- a/CHANGELOG.md
|
||||
+++ b/CHANGELOG.md
|
||||
@@ -132,18 +132,6 @@ Older Logs can be found in `docs/RELEASE-NOTES-*`.
|
||||
- global option to toggle showing of IDs
|
||||
- Help "Keyboard Shortcut" entry
|
||||
|
||||
-### Deprecated
|
||||
-
|
||||
-#### gr-analog
|
||||
-
|
||||
-- `sig_source`: `freq` port will be removed in the future
|
||||
-
|
||||
-### Added
|
||||
-#### gr-analog
|
||||
-
|
||||
-- `sig_source`: `cmd` port adds support for dicts, setting of frequency,
|
||||
- amplitude, offset and phase parameters
|
||||
-
|
||||
## [3.8.0.0] - 2019-08-09
|
||||
|
||||
Witness me!
|
||||
diff --git a/gr-analog/examples/sig_source_msg_ports.grc b/gr-analog/examples/sig_source_msg_ports.grc
|
||||
deleted file mode 100644
|
||||
index 9cba1c62a..000000000
|
||||
--- a/gr-analog/examples/sig_source_msg_ports.grc
|
||||
+++ /dev/null
|
||||
@@ -1,242 +0,0 @@
|
||||
-options:
|
||||
- parameters:
|
||||
- author: "Marcus M\xFCller"
|
||||
- catch_exceptions: 'True'
|
||||
- category: '[GRC Hier Blocks]'
|
||||
- cmake_opt: ''
|
||||
- comment: ''
|
||||
- copyright: 2020 Free Software Foundation
|
||||
- description: ''
|
||||
- gen_cmake: 'On'
|
||||
- gen_linking: dynamic
|
||||
- generate_options: qt_gui
|
||||
- hier_block_src_path: '.:'
|
||||
- id: demonstrate_signal_source_message_ports
|
||||
- max_nouts: '0'
|
||||
- output_language: python
|
||||
- placement: (0,0)
|
||||
- qt_qss_theme: ''
|
||||
- realtime_scheduling: ''
|
||||
- run: 'True'
|
||||
- run_command: '{python} -u {filename}'
|
||||
- run_options: prompt
|
||||
- sizing_mode: fixed
|
||||
- thread_safe_setters: ''
|
||||
- title: 'Demonstration: Signal Source Message Ports'
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [0, 4.0]
|
||||
- rotation: 0
|
||||
- state: enabled
|
||||
-
|
||||
-blocks:
|
||||
-- name: analog_sig_source_x_0
|
||||
- id: analog_sig_source_x
|
||||
- parameters:
|
||||
- affinity: ''
|
||||
- alias: ''
|
||||
- amp: '1'
|
||||
- comment: ''
|
||||
- freq: '1000'
|
||||
- maxoutbuf: '0'
|
||||
- minoutbuf: '0'
|
||||
- offset: '0'
|
||||
- phase: '0'
|
||||
- samp_rate: samp_rate
|
||||
- type: complex
|
||||
- waveform: analog.GR_COS_WAVE
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [296, 188.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-- name: blocks_message_strobe_0
|
||||
- id: blocks_message_strobe
|
||||
- parameters:
|
||||
- affinity: ''
|
||||
- alias: ''
|
||||
- comment: 'sets the amplitude
|
||||
-
|
||||
- and frequency every
|
||||
-
|
||||
- second'
|
||||
- maxoutbuf: '0'
|
||||
- minoutbuf: '0'
|
||||
- msg: 'pmt.to_pmt({"freq": 2000, "ampl":1.5})'
|
||||
- period: '1000'
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [40, 148.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-- name: blocks_message_strobe_random_0
|
||||
- id: blocks_message_strobe_random
|
||||
- parameters:
|
||||
- affinity: ''
|
||||
- alias: ''
|
||||
- comment: 'resets the phase
|
||||
-
|
||||
- at random points
|
||||
-
|
||||
- in time'
|
||||
- dist: blocks.STROBE_GAUSSIAN
|
||||
- maxoutbuf: '0'
|
||||
- mean: '200'
|
||||
- minoutbuf: '0'
|
||||
- msg: pmt.to_pmt({"phase":0.0})
|
||||
- std: '40'
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [24, 292.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-- name: blocks_throttle_0
|
||||
- id: blocks_throttle
|
||||
- parameters:
|
||||
- affinity: ''
|
||||
- alias: ''
|
||||
- comment: ''
|
||||
- ignoretag: 'True'
|
||||
- maxoutbuf: '0'
|
||||
- minoutbuf: '0'
|
||||
- samples_per_second: samp_rate
|
||||
- type: complex
|
||||
- vlen: '1'
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [496, 228.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-- name: qtgui_time_sink_x_0
|
||||
- id: qtgui_time_sink_x
|
||||
- parameters:
|
||||
- affinity: ''
|
||||
- alias: ''
|
||||
- alpha1: '1.0'
|
||||
- alpha10: '1.0'
|
||||
- alpha2: '1.0'
|
||||
- alpha3: '1.0'
|
||||
- alpha4: '1.0'
|
||||
- alpha5: '1.0'
|
||||
- alpha6: '1.0'
|
||||
- alpha7: '1.0'
|
||||
- alpha8: '1.0'
|
||||
- alpha9: '1.0'
|
||||
- autoscale: 'False'
|
||||
- axislabels: 'True'
|
||||
- color1: blue
|
||||
- color10: dark blue
|
||||
- color2: red
|
||||
- color3: green
|
||||
- color4: black
|
||||
- color5: cyan
|
||||
- color6: magenta
|
||||
- color7: yellow
|
||||
- color8: dark red
|
||||
- color9: dark green
|
||||
- comment: ''
|
||||
- ctrlpanel: 'False'
|
||||
- entags: 'True'
|
||||
- grid: 'False'
|
||||
- gui_hint: ''
|
||||
- label1: Signal 1
|
||||
- label10: Signal 10
|
||||
- label2: Signal 2
|
||||
- label3: Signal 3
|
||||
- label4: Signal 4
|
||||
- label5: Signal 5
|
||||
- label6: Signal 6
|
||||
- label7: Signal 7
|
||||
- label8: Signal 8
|
||||
- label9: Signal 9
|
||||
- legend: 'True'
|
||||
- marker1: '-1'
|
||||
- marker10: '-1'
|
||||
- marker2: '-1'
|
||||
- marker3: '-1'
|
||||
- marker4: '-1'
|
||||
- marker5: '-1'
|
||||
- marker6: '-1'
|
||||
- marker7: '-1'
|
||||
- marker8: '-1'
|
||||
- marker9: '-1'
|
||||
- name: '""'
|
||||
- nconnections: '1'
|
||||
- size: '1024'
|
||||
- srate: samp_rate
|
||||
- stemplot: 'False'
|
||||
- style1: '1'
|
||||
- style10: '1'
|
||||
- style2: '1'
|
||||
- style3: '1'
|
||||
- style4: '1'
|
||||
- style5: '1'
|
||||
- style6: '1'
|
||||
- style7: '1'
|
||||
- style8: '1'
|
||||
- style9: '1'
|
||||
- tr_chan: '0'
|
||||
- tr_delay: '0'
|
||||
- tr_level: '0.0'
|
||||
- tr_mode: qtgui.TRIG_MODE_NORM
|
||||
- tr_slope: qtgui.TRIG_SLOPE_POS
|
||||
- tr_tag: '""'
|
||||
- type: complex
|
||||
- update_time: '0.10'
|
||||
- width1: '1'
|
||||
- width10: '1'
|
||||
- width2: '1'
|
||||
- width3: '1'
|
||||
- width4: '1'
|
||||
- width5: '1'
|
||||
- width6: '1'
|
||||
- width7: '1'
|
||||
- width8: '1'
|
||||
- width9: '1'
|
||||
- ylabel: Amplitude
|
||||
- ymax: '2'
|
||||
- ymin: '-2'
|
||||
- yunit: '""'
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [656, 212.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-- name: samp_rate
|
||||
- id: parameter
|
||||
- parameters:
|
||||
- alias: ''
|
||||
- comment: ''
|
||||
- hide: none
|
||||
- label: Sampling Rate [Hz]
|
||||
- short_id: r
|
||||
- type: eng_float
|
||||
- value: 100e3
|
||||
- states:
|
||||
- bus_sink: false
|
||||
- bus_source: false
|
||||
- bus_structure: null
|
||||
- coordinate: [192, 4.0]
|
||||
- rotation: 0
|
||||
- state: true
|
||||
-
|
||||
-connections:
|
||||
-- [analog_sig_source_x_0, '0', blocks_throttle_0, '0']
|
||||
-- [blocks_message_strobe_0, strobe, analog_sig_source_x_0, cmd]
|
||||
-- [blocks_message_strobe_random_0, strobe, analog_sig_source_x_0, cmd]
|
||||
-- [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0']
|
||||
-
|
||||
-metadata:
|
||||
- file_format: 1
|
||||
diff --git a/gr-analog/grc/analog_sig_source_x.block.yml b/gr-analog/grc/analog_sig_source_x.block.yml
|
||||
index aa16061de..ebd55c2df 100644
|
||||
--- a/gr-analog/grc/analog_sig_source_x.block.yml
|
||||
+++ b/gr-analog/grc/analog_sig_source_x.block.yml
|
||||
@@ -40,10 +40,6 @@ parameters:
|
||||
default: '0'
|
||||
|
||||
inputs:
|
||||
-- domain: message
|
||||
- id: cmd
|
||||
- optional: true
|
||||
-
|
||||
- domain: message
|
||||
id: freq
|
||||
optional: true
|
||||
diff --git a/gr-analog/lib/sig_source_impl.cc b/gr-analog/lib/sig_source_impl.cc
|
||||
index 0a6289f2d..b73b32982 100644
|
||||
--- a/gr-analog/lib/sig_source_impl.cc
|
||||
+++ b/gr-analog/lib/sig_source_impl.cc
|
||||
@@ -65,12 +65,9 @@ sig_source_impl<T>::sig_source_impl(double sampling_freq,
|
||||
{
|
||||
this->set_frequency(frequency);
|
||||
this->set_phase(phase);
|
||||
- this->message_port_register_in(pmt::mp("cmd"));
|
||||
- this->set_msg_handler(pmt::mp("cmd"),
|
||||
- [this](pmt::pmt_t msg) { this->set_cmd_msg(msg); });
|
||||
this->message_port_register_in(pmt::mp("freq"));
|
||||
this->set_msg_handler(pmt::mp("freq"),
|
||||
- [this](pmt::pmt_t msg) { this->set_freq_msg(msg); });
|
||||
+ boost::bind(&sig_source_impl<T>::set_frequency_msg, this, _1));
|
||||
}
|
||||
|
||||
template <class T>
|
||||
@@ -79,76 +76,32 @@ sig_source_impl<T>::~sig_source_impl()
|
||||
}
|
||||
|
||||
template <class T>
|
||||
-void sig_source_impl<T>::set_freq_msg(pmt::pmt_t msg)
|
||||
+void sig_source_impl<T>::set_frequency_msg(pmt::pmt_t msg)
|
||||
{
|
||||
- GR_LOG_INFO(this->d_logger,
|
||||
- "The `freq` port is deprecated and will be removed. Forwarding this "
|
||||
- "message to the `cmd` handler.");
|
||||
+ // Accepts either a number that is assumed to be the new
|
||||
+ // frequency or a key:value pair message where the key must be
|
||||
+ // "freq" and the value is the new frequency.
|
||||
+
|
||||
if (pmt::is_number(msg)) {
|
||||
- // if plain number, then interpret it as frequency
|
||||
set_frequency(pmt::to_double(msg));
|
||||
- return;
|
||||
- }
|
||||
- set_cmd_msg(msg);
|
||||
-}
|
||||
-
|
||||
-template <class T>
|
||||
-void sig_source_impl<T>::set_cmd_msg(pmt::pmt_t msg)
|
||||
-{
|
||||
- static auto freq_key = pmt::intern("freq");
|
||||
- static auto ampl_key = pmt::intern("ampl");
|
||||
- static auto phase_key = pmt::intern("phase");
|
||||
- static auto offset_key = pmt::intern("offset");
|
||||
-
|
||||
- // either a key:value pair or a dict
|
||||
- pmt::pmt_t list_of_items;
|
||||
- if (pmt::is_dict(msg)) {
|
||||
- list_of_items = pmt::dict_items(msg);
|
||||
} else if (pmt::is_pair(msg)) {
|
||||
- list_of_items = pmt::list1(msg);
|
||||
- } else {
|
||||
- GR_LOG_WARN(this->d_logger, "malformed message: is not dict nor pair");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- do {
|
||||
- auto item = pmt::car(list_of_items);
|
||||
-
|
||||
- auto key = pmt::car(item);
|
||||
- auto val = pmt::cdr(item);
|
||||
-
|
||||
- if (key == freq_key) {
|
||||
+ pmt::pmt_t key = pmt::car(msg);
|
||||
+ pmt::pmt_t val = pmt::cdr(msg);
|
||||
+ if (pmt::eq(key, pmt::intern("freq"))) {
|
||||
if (pmt::is_number(val)) {
|
||||
set_frequency(pmt::to_double(val));
|
||||
- } else {
|
||||
- GR_LOG_WARN(this->d_logger, "frequency value needs to be a number")
|
||||
- }
|
||||
- } else if (key == ampl_key) {
|
||||
- if (pmt::is_number(val)) {
|
||||
- set_amplitude(pmt::to_double(val));
|
||||
- } else {
|
||||
- GR_LOG_WARN(this->d_logger, "amplitude value needs to be a number")
|
||||
- }
|
||||
- } else if (key == phase_key) {
|
||||
- if (pmt::is_number(val)) {
|
||||
- set_phase(pmt::to_double(val));
|
||||
- } else {
|
||||
- GR_LOG_WARN(this->d_logger, "phase value needs to be a number")
|
||||
- }
|
||||
- } else if (key == offset_key) {
|
||||
- if (pmt::is_number(val)) {
|
||||
- set_offset(pmt::to_double(val));
|
||||
- } else {
|
||||
- GR_LOG_WARN(this->d_logger, "offset value needs to be a number")
|
||||
}
|
||||
} else {
|
||||
GR_LOG_WARN(this->d_logger,
|
||||
- "unsupported message key " + pmt::write_string(key));
|
||||
+ boost::format("Set Frequency Message must have "
|
||||
+ "the key = 'freq'; got '%1%'.") %
|
||||
+ pmt::write_string(key));
|
||||
}
|
||||
-
|
||||
- // advance to next item, if any
|
||||
- list_of_items = pmt::cdr(list_of_items);
|
||||
- } while (list_of_items != pmt::PMT_NIL);
|
||||
+ } else {
|
||||
+ GR_LOG_WARN(this->d_logger,
|
||||
+ "Set Frequency Message must be either a number or a "
|
||||
+ "key:value pair where the key is 'freq'.");
|
||||
+ }
|
||||
}
|
||||
|
||||
template <class T>
|
||||
@@ -371,5 +324,5 @@ template class sig_source<std::int16_t>;
|
||||
template class sig_source<std::int32_t>;
|
||||
template class sig_source<float>;
|
||||
template class sig_source<gr_complex>;
|
||||
-} // namespace analog
|
||||
+} /* namespace analog */
|
||||
} /* namespace gr */
|
||||
diff --git a/gr-analog/lib/sig_source_impl.h b/gr-analog/lib/sig_source_impl.h
|
||||
index 82740cb6a..6b6457a16 100644
|
||||
--- a/gr-analog/lib/sig_source_impl.h
|
||||
+++ b/gr-analog/lib/sig_source_impl.h
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- c++ -*- */
|
||||
/*
|
||||
- * Copyright 2004,2012,2018,2020 Free Software Foundation, Inc.
|
||||
+ * Copyright 2004,2012,2018 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GNU Radio
|
||||
*
|
||||
@@ -64,12 +64,7 @@ public:
|
||||
|
||||
void set_sampling_freq(double sampling_freq);
|
||||
void set_waveform(gr_waveform_t waveform);
|
||||
-
|
||||
- // Message handlers
|
||||
- //!\brief deprecated handler. Use "cmd" port instead.
|
||||
- void set_freq_msg(pmt::pmt_t msg);
|
||||
- void set_cmd_msg(pmt::pmt_t msg);
|
||||
-
|
||||
+ void set_frequency_msg(pmt::pmt_t msg);
|
||||
void set_frequency(double frequency);
|
||||
void set_amplitude(double ampl);
|
||||
void set_offset(T offset);
|
||||
diff --git a/gr-analog/python/analog/qa_sig_source.py b/gr-analog/python/analog/qa_sig_source.py
|
||||
index 81ba7e407..b5acf750c 100644
|
||||
--- a/gr-analog/python/analog/qa_sig_source.py
|
||||
+++ b/gr-analog/python/analog/qa_sig_source.py
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
-#Copyright 2004, 2007, 2010, 2012, 2013, 2020 Free Software Foundation, Inc.
|
||||
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
|
||||
#
|
||||
-#This file is part of GNU Radio
|
||||
+# 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
|
||||
@@ -26,8 +26,8 @@ import math
|
||||
import pmt
|
||||
from gnuradio import gr, gr_unittest, analog, blocks
|
||||
|
||||
-
|
||||
class test_sig_source(gr_unittest.TestCase):
|
||||
+
|
||||
def setUp(self):
|
||||
self.tb = gr.top_block()
|
||||
|
||||
@@ -83,6 +83,7 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
dst_data = dst1.data()
|
||||
self.assertFloatTuplesAlmostEqual(expected_result, dst_data, 5)
|
||||
|
||||
+
|
||||
def test_sine_b(self):
|
||||
tb = self.tb
|
||||
sqrt2 = math.sqrt(2) / 2
|
||||
@@ -96,7 +97,7 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
tb.connect(op, dst1)
|
||||
tb.run()
|
||||
dst_data = dst1.data()
|
||||
- #Let the python know we are dealing with signed int behind scenes
|
||||
+ # Let the python know we are dealing with signed int behind scenes
|
||||
dst_data_signed = [b if b < 127 else (256 - b) * -1 for b in dst_data]
|
||||
self.assertFloatTuplesAlmostEqual(expected_result, dst_data_signed)
|
||||
|
||||
@@ -117,10 +118,7 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
tb = self.tb
|
||||
sqrt2 = math.sqrt(2) / 2
|
||||
sqrt2j = 1j * math.sqrt(2) / 2
|
||||
- expected_result = [
|
||||
- 1, sqrt2 + sqrt2j, 1j, -sqrt2 + sqrt2j, -1, -sqrt2 - sqrt2j, -1j,
|
||||
- sqrt2 - sqrt2j, 1
|
||||
- ]
|
||||
+ expected_result = (1, sqrt2 + sqrt2j, 1j, -sqrt2 + sqrt2j, -1, -sqrt2 - sqrt2j, -1j, sqrt2 - sqrt2j, 1)
|
||||
src1 = analog.sig_source_c(8, analog.GR_COS_WAVE, 1.0, 1.0)
|
||||
op = blocks.head(gr.sizeof_gr_complex, 9)
|
||||
dst1 = blocks.vector_sink_c()
|
||||
@@ -140,14 +138,12 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
tb.connect(op, dst1)
|
||||
tb.run()
|
||||
dst_data = dst1.data()
|
||||
- self.assertComplexTuplesAlmostEqual(expected_result, dst_data, 5)
|
||||
+ self.assertEqual(expected_result, dst_data)
|
||||
|
||||
def test_tri_c(self):
|
||||
tb = self.tb
|
||||
- expected_result = [
|
||||
- 1 + .5j, .75 + .75j, .5 + 1j, .25 + .75j, 0 + .5j, .25 + .25j,
|
||||
- .5 + 0j, .75 + .25j, 1 + .5j
|
||||
- ]
|
||||
+ expected_result = (1+.5j, .75+.75j, .5+1j, .25+.75j, 0+.5j,
|
||||
+ .25+.25j, .5+0j, .75+.25j, 1+.5j)
|
||||
src1 = analog.sig_source_c(8, analog.GR_TRI_WAVE, 1.0, 1.0)
|
||||
op = blocks.head(gr.sizeof_gr_complex, 9)
|
||||
dst1 = blocks.vector_sink_c()
|
||||
@@ -159,10 +155,8 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
|
||||
def test_saw_c(self):
|
||||
tb = self.tb
|
||||
- expected_result = [
|
||||
- .5 + .25j, .625 + .375j, .75 + .5j, .875 + .625j, 0 + .75j,
|
||||
- .125 + .875j, .25 + 1j, .375 + .125j, .5 + .25j
|
||||
- ]
|
||||
+ expected_result = (.5+.25j, .625+.375j, .75+.5j, .875+.625j,
|
||||
+ 0+.75j, .125+.875j, .25+1j, .375+.125j, .5+.25j)
|
||||
src1 = analog.sig_source_c(8, analog.GR_SAW_WAVE, 1.0, 1.0)
|
||||
op = blocks.head(gr.sizeof_gr_complex, 9)
|
||||
dst1 = blocks.vector_sink_c()
|
||||
@@ -208,7 +202,7 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
dst_data = dst1.data()
|
||||
self.assertFloatTuplesAlmostEqual(expected_result, dst_data, 5)
|
||||
|
||||
- def test_freq_msg(self): # deprecated but still tested
|
||||
+ def test_freq_msg(self):
|
||||
src = analog.sig_source_c(8, analog.GR_SIN_WAVE, 1.0, 1.0)
|
||||
op = blocks.head(gr.sizeof_gr_complex, 9)
|
||||
snk = blocks.vector_sink_c()
|
||||
@@ -221,30 +215,6 @@ class test_sig_source(gr_unittest.TestCase):
|
||||
|
||||
self.assertAlmostEqual(src.frequency(), frequency)
|
||||
|
||||
- def test_cmd_msg(self):
|
||||
- src = analog.sig_source_c(8, analog.GR_SIN_WAVE, 1.0, 1.0)
|
||||
- op = blocks.head(gr.sizeof_gr_complex, 9)
|
||||
- snk = blocks.vector_sink_c()
|
||||
- self.tb.connect(src, op, snk)
|
||||
- self.assertAlmostEqual(src.frequency(), 1.0)
|
||||
-
|
||||
- frequency = 3.0
|
||||
- amplitude = 10
|
||||
- offset = -1.0
|
||||
-
|
||||
- src._post(
|
||||
- pmt.to_pmt('freq'),
|
||||
- pmt.to_pmt({
|
||||
- "freq": frequency,
|
||||
- "ampl": amplitude,
|
||||
- "offset": offset
|
||||
- }))
|
||||
- self.tb.run()
|
||||
-
|
||||
- self.assertAlmostEqual(src.frequency(), frequency)
|
||||
- self.assertAlmostEqual(src.amplitude(), amplitude)
|
||||
- self.assertAlmostEqual(src.offset(), offset)
|
||||
-
|
||||
|
||||
if __name__ == '__main__':
|
||||
gr_unittest.run(test_sig_source, "test_sig_source.xml")
|
Loading…
x
Reference in New Issue
Block a user