Open janvgils opened 1 year ago
Thanks Jan! This is very helpful. I'm only testing against 0.8 at the moment using gcc 11. Thanks for testing different platforms.
This issue should be fixed now. 1232a06452de4676ea2beeecfb593e634e00832d fixes building with SoapySDR 0.7 and C++11.
Let me check the latest source and build on both 0.7 and 0.8.
Firs 0.8:
cd source/git/ast/SoapyAirspy/
janvg@goldstone:~/source/git/ast/SoapyAirspy$ git pull
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 7 (delta 6), reused 7 (delta 6), pack-reused 0
Unpacking objects: 100% (7/7), 824 bytes | 82.00 KiB/s, done.
From https://github.com/ast/SoapyAirspy
12744c4..1232a06 v2 -> origin/v2
Updating 12744c4..1232a06
Fast-forward
CMakeLists.txt | 2 ++
Registration.cpp | 2 ++
RingBuffer.hpp | 4 ++--
Settings.cpp | 25 ++++++++++++-------------
Streaming.cpp | 1 +
5 files changed, 19 insertions(+), 15 deletions(-)
janvg@goldstone:~/source/git/ast/SoapyAirspy$ cd build/
janvg@goldstone:~/source/git/ast/SoapyAirspy/build$ ls
janvg@goldstone:~/source/git/ast/SoapyAirspy/build$ cmake -Wno-dev ../
-- The CXX compiler identification is GNU 12.3.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: defaulting to release.
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1")
-- Checking for module 'libairspy'
-- Found libairspy, version 1.0
-- Found LIBAIRSPY: /usr/local/lib/libairspy.so
-- Found Git: /usr/bin/git (found version "2.40.1")
-- Module airspySupport configured with version: 0.2.0-1232a06
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: /home/janvg/source/git/ast/SoapyAirspy/build
janvg@goldstone:~/source/git/ast/SoapyAirspy/build$ make
[ 20%] Building CXX object CMakeFiles/airspySupport.dir/Registration.cpp.o
[ 40%] Building CXX object CMakeFiles/airspySupport.dir/Settings.cpp.o
[ 60%] Building CXX object CMakeFiles/airspySupport.dir/Streaming.cpp.o
[ 80%] Building CXX object CMakeFiles/airspySupport.dir/Version.cpp.o
[100%] Linking CXX shared module libairspySupport.so
[100%] Built target airspySupport
SoapySDRUtil --info
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Lib Version: v0.8.1-3
API Version: v0.8.0
ABI Version: v0.8
Install root: /usr
Search path: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8
Search path: /usr/local/lib/x86_64-linux-gnu/SoapySDR/modules0.8 (missing)
Search path: /usr/local/lib/SoapySDR/modules0.8 (missing)
Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.8/libairspySupport.so (0.2.0-1232a06)
SoapySDRUtil --probe="driver=airspy"
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Probe device driver=airspy
[DEBUG] SoapyAirspy::SoapyAirspy()
[DEBUG] SoapyAirspy::SoapyAirspy(driver) = airspy
[DEBUG] SoapyAirspy::SoapyAirspy(label) = AirSpy One [b58069dc396e3913]
[DEBUG] SoapyAirspy::SoapyAirspy(serial) = b58069dc396e3913
[DEBUG] Found AirSpy device: serial = b58069dc396e3913
[DEBUG] Supported sample rate: 2500000
[DEBUG] Supported sample rate: 10000000
[DEBUG] SoapyAirspy::setGain(1, 0, 0.000000)
[DEBUG] SoapyAirspy::listAntennas(1, 0)
[DEBUG] SoapyAirspy::hasDCOffsetMode(1, 0)
[DEBUG] getBandwidth: 0.000000
[DEBUG] listBandwidths(1, 0)
----------------------------------------------------
-- Device identification
----------------------------------------------------
driver=Airspy
hardware=Airspy
serial=b58069dc396e3913
----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
Channels: 1 Rx, 0 Tx
Timestamps: NO
Other Settings:
* Bias tee - Enable the 4.5v DC Bias tee to power SpyVerter / LNA / etc. via antenna connection.
[key=biastee, default=false, type=bool]
* Bit pack - Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB traffic.
[key=bitpack, default=false, type=bool]
* Gain Mode - linearity | sensitivity | manual
[key=gains, default=linearity, type=string]
----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
Full-duplex: NO
Supports AGC: YES
Stream formats: CS16, CF32
Native format: CS16 [full-scale=32767]
Antennas: RX
Full gain range: [0, 21] dB
LIN gain range: [0, 21] dB
Full freq range: [24, 1800] MHz
RF freq range: [24, 1800] MHz
Sample rates: 2.5, 10 MSps
Filter bandwidths: 1.875, 7.5 MHz
Looking good
Version 0.7:
cd source/git/ast/SoapyAirspy/
janvg@canberra:~/source/git/ast/SoapyAirspy$ git pull
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 7 (delta 6), reused 7 (delta 6), pack-reused 0
Unpacking objects: 100% (7/7), 824 bytes | 274.00 KiB/s, done.
From https://github.com/ast/SoapyAirspy
12744c4..1232a06 v2 -> origin/v2
Updating 12744c4..1232a06
Fast-forward
CMakeLists.txt | 2 ++
Registration.cpp | 2 ++
RingBuffer.hpp | 4 ++--
Settings.cpp | 25 ++++++++++++-------------
Streaming.cpp | 1 +
5 files changed, 19 insertions(+), 15 deletions(-)
janvg@canberra:~/source/git/ast/SoapyAirspy$ cd build/
janvg@canberra:~/source/git/ast/SoapyAirspy/build$ ls
janvg@canberra:~/source/git/ast/SoapyAirspy/build$ cmake -Wno-dev ../
-- The CXX compiler identification is GNU 10.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: defaulting to release.
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'libairspy'
-- Found libairspy, version 1.0
-- Found LIBAIRSPY: /usr/local/lib/libairspy.so
-- Found Git: /usr/bin/git (found version "2.30.2")
-- Module airspySupport configured with version: 0.2.0-1232a06
-- Configuring done
-- Generating done
-- Build files have been written to: /home/janvg/source/git/ast/SoapyAirspy/build
SoapySDRUtil --info
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Lib Version: v0.7.2-2
API Version: v0.7.1
ABI Version: v0.7
Install root: /usr
Search path: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7
Search path: /usr/local/lib/x86_64-linux-gnu/SoapySDR/modules0.7 (missing)
Search path: /usr/local/lib/SoapySDR/modules0.7 (missing)
Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7/libairspySupport.so (0.2.0-1232a06)
SoapySDRUtil --probe="driver=airspy"
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Probe device driver=airspy
[DEBUG] SoapyAirspy::SoapyAirspy()
[DEBUG] SoapyAirspy::SoapyAirspy(driver) = airspy
[DEBUG] SoapyAirspy::SoapyAirspy(label) = AirSpy One [04a464c83670830b]
[DEBUG] SoapyAirspy::SoapyAirspy(serial) = 04a464c83670830b
[DEBUG] Found AirSpy device: serial = 4a464c83670830b
[DEBUG] Supported sample rate: 3000000
[DEBUG] Supported sample rate: 6000000
[DEBUG] SoapyAirspy::setGain(1, 0, 0.000000)
[DEBUG] SoapyAirspy::listAntennas(1, 0)
[DEBUG] SoapyAirspy::hasDCOffsetMode(1, 0)
[DEBUG] getBandwidth: 0.000000
[DEBUG] listBandwidths(1, 0)
----------------------------------------------------
-- Device identification
----------------------------------------------------
driver=Airspy
hardware=Airspy
serial=4a464c83670830b
----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
Channels: 1 Rx, 0 Tx
Timestamps: NO
Other Settings:
* Bias tee - Enable the 4.5v DC Bias tee to power SpyVerter / LNA / etc. via antenna connection.
[key=biastee, default=false, type=bool]
* Bit pack - Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB traffic.
[key=bitpack, default=false, type=bool]
* Gain Mode - linearity | sensitivity | manual
[key=gains, default=linearity, type=string]
----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
Full-duplex: YES
Supports AGC: YES
Stream formats: CS16, CF32
Native format: CS16 [full-scale=32767]
Antennas: RX
Full gain range: [0, 21] dB
LIN gain range: [0, 21] dB
Full freq range: [24, 1800] MHz
RF freq range: [24, 1800] MHz
Sample rates: 3, 6 MSps
Filter bandwidths: 2.25, 4.5 MHz
Both builds are find, now lets see how the observation will perform.
Thanks a lot Albin for this fix and the support.
Below the build on a Pi3:
This is also Soapy 0.7
git pull
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 18 (delta 12), reused 18 (delta 12), pack-reused 0
Unpacking objects: 100% (18/18), 11.91 KiB | 259.00 KiB/s, done.
From https://github.com/ast/SoapyAirspy
a9695d7..1232a06 v2 -> origin/v2
Updating a9695d7..1232a06
Fast-forward
.clang-format | 192 +++++++++
CMakeLists.txt | 77 ++--
README.md | 21 +-
Registration.cpp | 81 ++--
RingBuffer.hpp | 434 ++++++++++---------
Settings.cpp | 1081 ++++++++++++++++++++++++++----------------------
SoapyAirspy.hpp | 267 ++++++------
Streaming.cpp | 357 +++++++++-------
airspy_fir_kernels.hpp | 43 ++
9 files changed, 1458 insertions(+), 1095 deletions(-)
create mode 100644 .clang-format
create mode 100644 airspy_fir_kernels.hpp
lab@svalbard:~/source/git/ast/SoapyAirspy $ cd build/
lab@svalbard:~/source/git/ast/SoapyAirspy/build $ cmake -Wno-dev ../
-- The CXX compiler identification is GNU 10.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: defaulting to release.
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- Checking for module 'libairspy'
-- Found libairspy, version 1.0
-- Found LIBAIRSPY: /usr/local/lib/libairspy.so
-- Found Git: /usr/bin/git (found version "2.30.2")
-- Module airspySupport configured with version: 0.2.0-1232a06
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lab/source/git/ast/SoapyAirspy/build
lab@svalbard:~/source/git/ast/SoapyAirspy/build $ make
Scanning dependencies of target airspySupport
[ 20%] Building CXX object CMakeFiles/airspySupport.dir/Registration.cpp.o
[ 40%] Building CXX object CMakeFiles/airspySupport.dir/Settings.cpp.o
In file included from /usr/include/c++/10/vector:72,
from /usr/include/SoapySDR/ConverterRegistry.hpp:17,
from /home/lab/source/git/ast/SoapyAirspy/SoapyAirspy.hpp:26,
from /home/lab/source/git/ast/SoapyAirspy/Settings.cpp:25:
/usr/include/c++/10/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const double&}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<double>::iterator’ changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/SoapySDR/ConverterRegistry.hpp:17,
from /home/lab/source/git/ast/SoapyAirspy/SoapyAirspy.hpp:26,
from /home/lab/source/git/ast/SoapyAirspy/Settings.cpp:25:
/usr/include/c++/10/bits/stl_vector.h: In member function ‘virtual std::vector<double> SoapyAirspy::listSampleRates(int, size_t) const’:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:72,
from /usr/include/SoapySDR/ConverterRegistry.hpp:17,
from /home/lab/source/git/ast/SoapyAirspy/SoapyAirspy.hpp:26,
from /home/lab/source/git/ast/SoapyAirspy/Settings.cpp:25:
/usr/include/c++/10/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {SoapySDR::Range}; _Tp = SoapySDR::Range; _Alloc = std::allocator<SoapySDR::Range>]’:
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<SoapySDR::Range>::iterator’ changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function ‘virtual SoapySDR::RangeList SoapyAirspy::getFrequencyRange(int, size_t, const string&) const’:
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<SoapySDR::Range*, std::vector<SoapySDR::Range> >’ changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {double}; _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<double>::iterator’ changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function ‘virtual std::vector<double> SoapyAirspy::listBandwidths(int, size_t) const’:
/usr/include/c++/10/bits/vector.tcc:121:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ changed in GCC 7.1
121 | _M_realloc_insert(end(), std::forward<_Args>(__args)...);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const SoapySDR::ArgInfo&}; _Tp = SoapySDR::ArgInfo; _Alloc = std::allocator<SoapySDR::ArgInfo>]’:
/usr/include/c++/10/bits/vector.tcc:426:7: note: parameter passing for argument of type ‘std::vector<SoapySDR::ArgInfo>::iterator’ changed in GCC 7.1
426 | vector<_Tp, _Alloc>::
| ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/10/vector:67,
from /usr/include/SoapySDR/ConverterRegistry.hpp:17,
from /home/lab/source/git/ast/SoapyAirspy/SoapyAirspy.hpp:26,
from /home/lab/source/git/ast/SoapyAirspy/Settings.cpp:25:
/usr/include/c++/10/bits/stl_vector.h: In member function ‘virtual SoapySDR::ArgInfoList SoapyAirspy::getSettingInfo() const’:
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<SoapySDR::ArgInfo*, std::vector<SoapySDR::ArgInfo> >’ changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<SoapySDR::ArgInfo*, std::vector<SoapySDR::ArgInfo> >’ changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1198:21: note: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<SoapySDR::ArgInfo*, std::vector<SoapySDR::ArgInfo> >’ changed in GCC 7.1
1198 | _M_realloc_insert(end(), __x);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
[ 60%] Building CXX object CMakeFiles/airspySupport.dir/Streaming.cpp.o
[ 80%] Building CXX object CMakeFiles/airspySupport.dir/Version.cpp.o
[100%] Linking CXX shared module libairspySupport.so
[100%] Built target airspySupport
SoapySDRUtil --info
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Lib Version: v0.7.2-2
API Version: v0.7.1
ABI Version: v0.7
Install root: /usr
Search path: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7
Search path: /usr/local/lib/arm-linux-gnueabihf/SoapySDR/modules0.7 (missing)
Search path: /usr/local/lib/SoapySDR/modules0.7 (missing)
Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libairspySupport.so (0.2.0-1232a06)
Here we do see some warnings, at the moment there is no SDR nor antenna connected, so I can test the performance.
Thanks for thorough testing. At a glance it looks like the warnings stem from a SoapySDR header. I will take a loon.
After the cleanup from Juli 14th 2023 I have the following experience.
Building on a SoapySDR 0.7 environment (debian bullseye):
And this build isn't successful and can't be used.
Building on a SoapySDR 0.8 environment (debian trixie):
And this library can be used, as can be seen after the following command:
Is this enough information to resolve this issue?