mirror of
				https://github.com/AlexandreRouma/SDRPlusPlus.git
				synced 2025-10-31 08:58:13 +01:00 
			
		
		
		
	Merge pull request #1130 from AlexandreRouma/master
Merging back master changes
This commit is contained in:
		
							
								
								
									
										18
									
								
								.github/workflows/build_all.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								.github/workflows/build_all.yml
									
									
									
									
										vendored
									
									
								
							| @@ -37,7 +37,7 @@ jobs: | ||||
|           run: 7z x libusb.7z -olibusb_old ; rm "C:/Program Files/PothosSDR/bin/libusb-1.0.dll" ; cp "libusb_old/MS64/dll/libusb-1.0.dll" "C:/Program Files/PothosSDR/bin/" | ||||
|   | ||||
|         - name: Download SDRPlay API | ||||
|           run: Invoke-WebRequest -Uri "https://drive.google.com/uc?id=12UHPMwkfa67A11QZDmpCT4iwHnyJHWuu" -OutFile ${{runner.workspace}}/SDRPlay.zip | ||||
|           run: Invoke-WebRequest -Uri "https://drive.google.com/uc?id=12UHPMwkfa67A11QZDmpCT4iwHnyJHWuu&confirm=t" -OutFile ${{runner.workspace}}/SDRPlay.zip | ||||
|  | ||||
|         - name: Install SDRPlay API | ||||
|           run: 7z x ${{runner.workspace}}/SDRPlay.zip -o"C:/Program Files/" | ||||
| @@ -58,14 +58,17 @@ jobs: | ||||
|           run: mkdir "C:/Program Files/codec2" ; mkdir "C:/Program Files/codec2/include" ; mkdir "C:/Program Files/codec2/include/codec2" ; mkdir "C:/Program Files/codec2/lib" ; cd "codec2" ; xcopy "src" "C:/Program Files/codec2/include" ; cd "build" ; xcopy "src" "C:/Program Files/codec2/lib" ; xcopy "codec2" "C:/Program Files/codec2/include/codec2" | ||||
|  | ||||
|         - name: Install vcpkg dependencies | ||||
|           run: vcpkg install fftw3:x64-windows glfw3:x64-windows portaudio:x64-windows zstd:x64-windows | ||||
|           run: vcpkg install fftw3:x64-windows glfw3:x64-windows portaudio:x64-windows zstd:x64-windows libusb:x64-windows | ||||
|  | ||||
|         - name: Install rtaudio | ||||
|           run: git clone https://github.com/thestk/rtaudio ; cd rtaudio ; git checkout 2f2fca4502d506abc50f6d4473b2836d24cfb1e3 ; mkdir build ; cd build ; cmake .. ; cmake --build . --config Release ; cmake --install . | ||||
|  | ||||
|         - name: Install libperseus-sdr | ||||
|           run: git clone https://github.com/AlexandreRouma/libperseus-sdr ; cd libperseus-sdr ; mkdir build ; cd build ; cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" ; cmake --build . --config Release  ; mkdir "C:/Program Files/PothosSDR/include/perseus-sdr" ; cp Release/perseus-sdr.dll "C:/Program Files/PothosSDR/bin" ; cp Release/perseus-sdr.lib "C:/Program Files/PothosSDR/bin" ; cd .. ; xcopy "src" "C:/Program Files/PothosSDR/include/perseus-sdr" | ||||
|  | ||||
|         - name: Prepare CMake | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
|           run: cmake "$Env:GITHUB_WORKSPACE" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
|           run: cmake "$Env:GITHUB_WORKSPACE" "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_PERSEUS_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
|  | ||||
|         - name: Build | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
| @@ -97,7 +100,7 @@ jobs: | ||||
|           run: rm -f /usr/local/bin/2to3* /usr/local/bin/idle3* /usr/local/bin/pydoc3* /usr/local/bin/python3* /usr/local/bin/python3-config* && brew reinstall gettext | ||||
|  | ||||
|         - name: Install dependencies | ||||
|           run: brew install pkg-config libusb fftw glfw airspy airspyhf portaudio hackrf rtl-sdr libbladerf codec2 zstd && pip3 install mako | ||||
|           run: brew install pkg-config libusb fftw glfw airspy airspyhf portaudio hackrf rtl-sdr libbladerf codec2 zstd autoconf automake libtool && pip3 install mako | ||||
|  | ||||
|         - name: Install volk | ||||
|           run: git clone --recursive https://github.com/gnuradio/volk && cd volk && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../ | ||||
| @@ -114,9 +117,12 @@ jobs: | ||||
|         - name: Install LimeSuite | ||||
|           run: git clone https://github.com/myriadrf/LimeSuite && cd LimeSuite && mkdir builddir && cd builddir && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../ | ||||
|  | ||||
|         - name: Install libperseus | ||||
|           run: git clone https://github.com/Microtelecom/libperseus-sdr && cd libperseus-sdr && autoreconf -i && ./configure --prefix=/usr/local && make && make install && cd .. | ||||
|  | ||||
|         - name: Prepare CMake | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
|           run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_PLUTOSDR_SOURCE=ON -DOPT_BUILD_SOAPY_SOURCE=OFF -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_AUDIO_SINK=OFF -DOPT_BUILD_PORTAUDIO_SINK=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_AUDIO_SOURCE=OFF -DUSE_BUNDLE_DEFAULTS=ON -DCMAKE_BUILD_TYPE=Release | ||||
|           run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_PLUTOSDR_SOURCE=ON -DOPT_BUILD_SOAPY_SOURCE=OFF -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_AUDIO_SINK=OFF -DOPT_BUILD_PORTAUDIO_SINK=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON -DOPT_BUILD_AUDIO_SOURCE=OFF -DUSE_BUNDLE_DEFAULTS=ON -DCMAKE_BUILD_TYPE=Release | ||||
|  | ||||
|         - name: Build | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
| @@ -275,7 +281,7 @@ jobs: | ||||
|          | ||||
|         - name: Prepare CMake | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
|           run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_USRP_SOURCE=ON | ||||
|           run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_USRP_SOURCE=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
|  | ||||
|         - name: Build | ||||
|           working-directory: ${{runner.workspace}}/build | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| # Pull Requests | ||||
|  | ||||
| TODO | ||||
| **I DO NOT ACCEPT PULL-REQUEST FOR FEATURES OR BUGFIXES REQUIRING SIGNIFICANT CODE/STRUCTURE CHANGES.** | ||||
| **SUCH PULL REQUESTS WILL BE CLOSED AUTOMATICALLY. OPEN AN ISSUE DETAILING FEATURE REQUESTS OR POTENTIAL BUGFIX INSTEAD.** | ||||
|  | ||||
| # Code Style | ||||
|  | ||||
| @@ -122,4 +123,4 @@ Please follow this guide to properly format the JSON files for custom color maps | ||||
|  | ||||
| * All additions and/or bug fixes to the core must not add additional dependencies. | ||||
| * Use VSCode for development, VS seems to cause issues. | ||||
| * DO NOT use libboost for any code meant for this repository | ||||
| * DO NOT use libboost for any code meant for this repository | ||||
|   | ||||
| @@ -179,6 +179,8 @@ int sdrpp_main(int argc, char* argv[]) { | ||||
|     defConfig["moduleInstances"]["LimeSDR Source"]["enabled"] = true; | ||||
|     defConfig["moduleInstances"]["PlutoSDR Source"]["module"] = "plutosdr_source"; | ||||
|     defConfig["moduleInstances"]["PlutoSDR Source"]["enabled"] = true; | ||||
|     defConfig["moduleInstances"]["PerseusSDR Source"]["module"] = "perseus_source"; | ||||
|     defConfig["moduleInstances"]["PerseusSDR Source"]["enabled"] = true; | ||||
|     defConfig["moduleInstances"]["RFspace Source"]["module"] = "rfspace_source"; | ||||
|     defConfig["moduleInstances"]["RFspace Source"]["enabled"] = true; | ||||
|     defConfig["moduleInstances"]["RTL-SDR Source"]["module"] = "rtl_sdr_source"; | ||||
|   | ||||
| @@ -57,10 +57,13 @@ public: | ||||
|         if (config.conf[name].contains("brokenModulation")) { | ||||
|             brokenModulation = config.conf[name]["brokenModulation"]; | ||||
|         } | ||||
|         if (config.conf[name].contains("oqpsk")) { | ||||
|             oqpsk = config.conf[name]["oqpsk"]; | ||||
|         } | ||||
|         config.release(); | ||||
|  | ||||
|         vfo = sigpath::vfoManager.createVFO(name, ImGui::WaterfallVFO::REF_CENTER, 0, 150000, INPUT_SAMPLE_RATE, 150000, 150000, true); | ||||
|         demod.init(vfo->output, 72000.0f, INPUT_SAMPLE_RATE, 33, 0.6f, 0.1f, 0.005f, brokenModulation, 1e-6, 0.01); | ||||
|         vfo = sigpath::vfoManager.createVFO(name, ImGui::WaterfallVFO::REF_CENTER, 0, INPUT_SAMPLE_RATE, INPUT_SAMPLE_RATE, INPUT_SAMPLE_RATE, INPUT_SAMPLE_RATE, true); | ||||
|         demod.init(vfo->output, 72000.0f, INPUT_SAMPLE_RATE, 33, 0.6f, 0.1f, 0.005f, brokenModulation, oqpsk, 1e-6, 0.01); | ||||
|         split.init(&demod.out); | ||||
|         split.bindStream(&symSinkStream); | ||||
|         split.bindStream(&sinkStream); | ||||
| @@ -99,6 +102,7 @@ public: | ||||
|         double bw = gui::waterfall.getBandwidth(); | ||||
|         vfo = sigpath::vfoManager.createVFO(name, ImGui::WaterfallVFO::REF_CENTER, std::clamp<double>(0, -bw / 2.0, bw / 2.0), 150000, INPUT_SAMPLE_RATE, 150000, 150000, true); | ||||
|  | ||||
|         demod.setBrokenModulation(brokenModulation); | ||||
|         demod.setInput(vfo->output); | ||||
|  | ||||
|         demod.start(); | ||||
| @@ -151,6 +155,13 @@ private: | ||||
|             config.release(true); | ||||
|         } | ||||
|  | ||||
|         if (ImGui::Checkbox(CONCAT("OQPSK##oqpsk", _this->name), &_this->oqpsk)) { | ||||
|             _this->demod.setOQPSK(_this->oqpsk); | ||||
|             config.acquire(); | ||||
|             config.conf[_this->name]["oqpsk"] = _this->oqpsk; | ||||
|             config.release(true); | ||||
|         } | ||||
|  | ||||
|         if (!_this->folderSelect.pathIsValid() && _this->enabled) { style::beginDisabled(); } | ||||
|  | ||||
|         if (_this->recording) { | ||||
| @@ -245,7 +256,7 @@ private: | ||||
|     uint64_t dataWritten = 0; | ||||
|     std::ofstream recFile; | ||||
|     bool brokenModulation = false; | ||||
|  | ||||
|     bool oqpsk = false; | ||||
|     int8_t* writeBuffer; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -11,8 +11,8 @@ namespace dsp::demod { | ||||
|     public: | ||||
|         Meteor() {} | ||||
|  | ||||
|         Meteor(stream<complex_t>* in, double symbolrate, double samplerate, int rrcTapCount, double rrcBeta, double agcRate, double costasBandwidth, bool brokenModulation, double omegaGain, double muGain, double omegaRelLimit = 0.01) { | ||||
|             init(in, symbolrate, samplerate, rrcTapCount, rrcBeta, agcRate, costasBandwidth, brokenModulation, omegaGain, muGain); | ||||
|         Meteor(stream<complex_t>* in, double symbolrate, double samplerate, int rrcTapCount, double rrcBeta, double agcRate, double costasBandwidth, bool brokenModulation, bool oqpsk, double omegaGain, double muGain, double omegaRelLimit = 0.01) { | ||||
|             init(in, symbolrate, samplerate, rrcTapCount, rrcBeta, agcRate, costasBandwidth, brokenModulation, oqpsk, omegaGain, muGain); | ||||
|         } | ||||
|  | ||||
|         ~Meteor() { | ||||
| @@ -21,11 +21,12 @@ namespace dsp::demod { | ||||
|             taps::free(rrcTaps); | ||||
|         } | ||||
|  | ||||
|         void init(stream<complex_t>* in, double symbolrate, double samplerate, int rrcTapCount, double rrcBeta, double agcRate, double costasBandwidth, bool brokenModulation, double omegaGain, double muGain, double omegaRelLimit = 0.01) { | ||||
|         void init(stream<complex_t>* in, double symbolrate, double samplerate, int rrcTapCount, double rrcBeta, double agcRate, double costasBandwidth, bool brokenModulation, bool oqpsk, double omegaGain, double muGain, double omegaRelLimit = 0.01) { | ||||
|             _symbolrate = symbolrate; | ||||
|             _samplerate = samplerate; | ||||
|             _rrcTapCount = rrcTapCount; | ||||
|             _rrcBeta = rrcBeta; | ||||
|             _oqpsk = oqpsk; | ||||
|              | ||||
|             rrcTaps = taps::rootRaisedCosine<float>(_rrcTapCount, _rrcBeta, _symbolrate, _samplerate); | ||||
|             rrc.init(NULL, rrcTaps); | ||||
| @@ -129,6 +130,12 @@ namespace dsp::demod { | ||||
|             costas.setBrokenModulation(enabled); | ||||
|         } | ||||
|  | ||||
|         void setOQPSK(bool enabled) { | ||||
|             assert(base_type::_block_init); | ||||
|             std::lock_guard<std::recursive_mutex> lck(base_type::ctrlMtx); | ||||
|             _oqpsk = enabled; | ||||
|         } | ||||
|  | ||||
|         void reset() { | ||||
|             assert(base_type::_block_init); | ||||
|             std::lock_guard<std::recursive_mutex> lck(base_type::ctrlMtx); | ||||
| @@ -144,6 +151,18 @@ namespace dsp::demod { | ||||
|             rrc.process(count, in, out); | ||||
|             agc.process(count, out, out); | ||||
|             costas.process(count, out, out); | ||||
|  | ||||
|             if (_oqpsk) { | ||||
|                 // Single sample delay + deinterleave | ||||
|                 for (int i = 0; i < count; i++) { | ||||
|                     float tmp = out[i].im; | ||||
|                     out[i].im = lastI; | ||||
|                     lastI = tmp; | ||||
|                 } | ||||
|  | ||||
|                 // TODO: Additional 1/24th sample delay | ||||
|             } | ||||
|  | ||||
|             return recov.process(count, out, out); | ||||
|         } | ||||
|  | ||||
| @@ -166,6 +185,8 @@ namespace dsp::demod { | ||||
|         double _samplerate; | ||||
|         int _rrcTapCount; | ||||
|         double _rrcBeta; | ||||
|         float lastI = 0.0f; | ||||
|         bool _oqpsk = false; | ||||
|  | ||||
|         tap<float> rrcTaps; | ||||
|         filter::FIR<complex_t, float> rrc; | ||||
|   | ||||
| @@ -6,7 +6,7 @@ cd /root | ||||
| apt update | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev | ||||
|             libcodec2-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -15,10 +15,20 @@ wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so | ||||
| cp inc/* /usr/include/ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| cd .. | ||||
|   | ||||
| @@ -6,7 +6,7 @@ cd /root | ||||
| apt update | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk1-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev | ||||
|             libcodec2-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -15,10 +15,20 @@ wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so | ||||
| cp inc/* /usr/include/ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_BLADERF_SOURCE=OFF -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_BLADERF_SOURCE=OFF -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| cd .. | ||||
|   | ||||
| @@ -6,7 +6,7 @@ cd /root | ||||
| apt update | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev | ||||
|             libcodec2-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -15,10 +15,20 @@ wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so | ||||
| cp inc/* /usr/include/ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| cd .. | ||||
|   | ||||
| @@ -12,7 +12,7 @@ apt update | ||||
| # Install dependencies and tools | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk1-dev libzstd-dev libsoapysdr-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev libudev-dev | ||||
|             libcodec2-dev libudev-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -41,6 +41,16 @@ make install | ||||
| ldconfig | ||||
| cd ../../ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| # Fix missing .pc file for codec2 | ||||
| echo 'prefix=/usr/' >> /usr/share/pkgconfig/codec2.pc | ||||
| echo 'libdir=/usr/include/x86_64-linux-gnu/' >> /usr/share/pkgconfig/codec2.pc | ||||
| @@ -56,7 +66,7 @@ echo 'Cflags: -I/usr/include/codec2' >> /usr/share/pkgconfig/codec2.pc | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_BLADERF_SOURCE=OFF -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_OVERRIDE_STD_FILESYSTEM=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_BLADERF_SOURCE=OFF -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_OVERRIDE_STD_FILESYSTEM=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| # Generate package | ||||
|   | ||||
| @@ -6,7 +6,7 @@ cd /root | ||||
| apt update | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev | ||||
|             libcodec2-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -15,10 +15,20 @@ wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so | ||||
| cp inc/* /usr/include/ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| cd .. | ||||
|   | ||||
| @@ -6,7 +6,7 @@ cd /root | ||||
| apt update | ||||
| apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \ | ||||
|             libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \ | ||||
|             libcodec2-dev | ||||
|             libcodec2-dev autoconf libtool xxd | ||||
|  | ||||
| # Install SDRPlay libraries | ||||
| wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| @@ -15,10 +15,20 @@ wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run | ||||
| cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so | ||||
| cp inc/* /usr/include/ | ||||
|  | ||||
| # Install libperseus | ||||
| git clone https://github.com/Microtelecom/libperseus-sdr | ||||
| cd libperseus-sdr | ||||
| autoreconf -i | ||||
| ./configure | ||||
| make | ||||
| make install | ||||
| ldconfig | ||||
| cd .. | ||||
|  | ||||
| cd SDRPlusPlus | ||||
| mkdir build | ||||
| cd build | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON | ||||
| cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON | ||||
| make VERBOSE=1 -j2 | ||||
|  | ||||
| cd .. | ||||
|   | ||||
| @@ -38,6 +38,7 @@ bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/hackrf_source/hackrf_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/hermes_source/hermes_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/limesdr_source/limesdr_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/perseus_source/perseus_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/plutosdr_source/plutosdr_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/rfspace_source/rfspace_source.dylib | ||||
| bundle_install_binary $BUNDLE $BUNDLE/Contents/Plugins $BUILD_DIR/source_modules/rtl_sdr_source/rtl_sdr_source.dylib | ||||
|   | ||||
| @@ -32,6 +32,9 @@ cp $build_dir/source_modules/hermes_source/Release/hermes_source.dll sdrpp_windo | ||||
| cp $build_dir/source_modules/limesdr_source/Release/limesdr_source.dll sdrpp_windows_x64/modules/ | ||||
| cp 'C:/Program Files/PothosSDR/bin/LimeSuite.dll' sdrpp_windows_x64/ | ||||
|  | ||||
| cp $build_dir/source_modules/perseus_source/Release/perseus_source.dll sdrpp_windows_x64/modules/ | ||||
| cp 'C:/Program Files/PothosSDR/bin/perseus-sdr.dll' sdrpp_windows_x64/ | ||||
|  | ||||
| cp $build_dir/source_modules/plutosdr_source/Release/plutosdr_source.dll sdrpp_windows_x64/modules/ | ||||
| cp 'C:/Program Files/PothosSDR/bin/libiio.dll' sdrpp_windows_x64/ | ||||
| cp 'C:/Program Files/PothosSDR/bin/libad9361.dll' sdrpp_windows_x64/ | ||||
|   | ||||
| @@ -168,7 +168,7 @@ public: | ||||
|  | ||||
|         // Open file | ||||
|         std::string type = (recMode == RECORDER_MODE_AUDIO) ? "audio" : "baseband"; | ||||
|         std::string vfoName = (recMode == RECORDER_MODE_AUDIO) ? gui::waterfall.selectedVFO : ""; | ||||
|         std::string vfoName = (recMode == RECORDER_MODE_AUDIO) ? selectedStreamName : ""; | ||||
|         std::string extension = ".wav"; | ||||
|         std::string expandedPath = expandString(folderSelect.path + "/" + genFileName(nameTemplate, type, vfoName) + extension); | ||||
|         if (!writer.open(expandedPath)) { | ||||
|   | ||||
| @@ -5,6 +5,12 @@ | ||||
|     "author_name": "John Donkersley", | ||||
|     "author_url": "", | ||||
|     "bands": [ | ||||
|     { | ||||
|             "name": "2200m Ham Band", | ||||
|             "type": "amateur", | ||||
|             "start": 135700, | ||||
|             "end": 137800 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Long Wave", | ||||
|             "type": "broadcast", | ||||
| @@ -209,18 +215,18 @@ | ||||
|             "start": 15010000, | ||||
|             "end": 15100000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Maritime", | ||||
|             "type": "marine", | ||||
|             "start": 16360000, | ||||
|             "end": 17410000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "19m Broadcast", | ||||
|             "type": "broadcast", | ||||
|             "start": 15100000, | ||||
|             "end": 15800000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Maritime", | ||||
|             "type": "marine", | ||||
|             "start": 16360000, | ||||
|             "end": 17410000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "16m Broadcast", | ||||
|             "type": "broadcast", | ||||
| @@ -345,7 +351,7 @@ | ||||
|             "name": "Air Band TACAN/ILS", | ||||
|             "type": "aviation", | ||||
|             "start": 108000000, | ||||
|             "end": 118000000 | ||||
|             "end": 117975000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Air Band Voice", | ||||
| @@ -371,6 +377,12 @@ | ||||
|             "start": 147343750, | ||||
|             "end": 147500000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Satellites", | ||||
|             "type": "satellite", | ||||
|             "start": 148000000, | ||||
|             "end": 150050000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Pagers - Flex/POCSAG", | ||||
|             "type": "PMR", | ||||
| @@ -425,6 +437,18 @@ | ||||
|             "start": 230000000, | ||||
|             "end": 400000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Satellites", | ||||
|             "type": "satellite", | ||||
|             "start": 399900000, | ||||
|             "end": 401000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Weather Balloons", | ||||
|             "type": "aviation", | ||||
|             "start": 401000000, | ||||
|             "end": 406000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Private Mobile Radio inc trams", | ||||
|             "type": "PMR", | ||||
| @@ -462,22 +486,34 @@ | ||||
|             "end": 455000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Private Mobile Radio", | ||||
|             "name": "Private Mobile Radio inc OB", | ||||
|             "type": "PMR", | ||||
|             "start": 455000000, | ||||
|             "end": 467200000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Outside Broadcast Talkback", | ||||
|             "type": "PMR", | ||||
|             "start": 467200000, | ||||
|             "end": 468600000 | ||||
|             "end": 470000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Digital TV Broadcast", | ||||
|             "type": "broadcast", | ||||
|             "start": 470000000, | ||||
|             "end": 790000000 | ||||
|             "end": 700000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Cell phones", | ||||
|             "type": "cellular", | ||||
|             "start": 703000000, | ||||
|             "end": 788000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 20 Cell phone downlink", | ||||
|             "type": "cellular", | ||||
|             "start": 791000000, | ||||
|             "end": 821000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 20 Cell phone uplink", | ||||
|             "type": "cellular", | ||||
|             "start": 832000000, | ||||
|             "end": 862000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Licence Exempt Short Range", | ||||
| @@ -485,12 +521,84 @@ | ||||
|             "start": 862000000, | ||||
|             "end": 875800000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 8 Cell phone uplink", | ||||
|             "type": "cellular", | ||||
|             "start": 880100000, | ||||
|             "end": 914900000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 8 Cell phone downlink", | ||||
|             "type": "cellular", | ||||
|             "start": 925100000, | ||||
|             "end": 929500000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "23cm Ham Band", | ||||
|             "type": "amateur", | ||||
|             "start": 1240000000, | ||||
|             "end": 1325000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 32 Cell phone", | ||||
|             "type": "cellular", | ||||
|             "start": 1452000000, | ||||
|             "end": 1492000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Satellite L-band", | ||||
|             "type": "satellite", | ||||
|             "start": 1518000000, | ||||
|             "end": 1559000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Satellite L-band", | ||||
|             "type": "satellite", | ||||
|             "start": 1626500000, | ||||
|             "end": 1660500000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Satellite L-band", | ||||
|             "type": "satellite", | ||||
|             "start": 1668000000, | ||||
|             "end": 1675000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 3 Cell phone uplink", | ||||
|             "type": "cellular", | ||||
|             "start": 1710000000, | ||||
|             "end": 1785000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 3 Cell phone downlink", | ||||
|             "type": "cellular", | ||||
|             "start": 1805100000, | ||||
|             "end": 1880000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "DECT cordless phones", | ||||
|             "type": "cellular", | ||||
|             "start": 1880000000, | ||||
|             "end": 1900000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 3 Cell phones", | ||||
|             "type": "cellular", | ||||
|             "start": 1900000000, | ||||
|             "end": 1920000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 1 Cell phone uplink", | ||||
|             "type": "cellular", | ||||
|             "start": 1920000000, | ||||
|             "end": 1979700000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 1 Cell phone downlink", | ||||
|             "type": "cellular", | ||||
|             "start": 2110300000, | ||||
|             "end": 2169700000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "13cm Ham Band", | ||||
|             "type": "amateur", | ||||
| @@ -498,10 +606,28 @@ | ||||
|             "end": 2302000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "13cm Ham Band", | ||||
|             "type": "amateur", | ||||
|             "start": 2310000000, | ||||
|             "end": 2450000000 | ||||
|             "name": "ISM - wifi and bluettoth", | ||||
|             "type": "ISM", | ||||
|             "start": 2400000000, | ||||
|             "end": 2483000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "Band 38 Cell phones", | ||||
|             "type": "cellular", | ||||
|             "start": 2500000000, | ||||
|             "end": 269000000 | ||||
|         }, | ||||
|                 { | ||||
|             "name": "Band 42 5G Cell phones", | ||||
|             "type": "cellular", | ||||
|             "start": 3410000000, | ||||
|             "end": 3720000000 | ||||
|         }, | ||||
|         { | ||||
|             "name": "ISM - wifi", | ||||
|             "type": "ISM", | ||||
|             "start": 5150000000, | ||||
|             "end": 5850000000 | ||||
|         } | ||||
|     ] | ||||
| } | ||||
|             ] | ||||
| } | ||||
|   | ||||
| @@ -45,16 +45,20 @@ public: | ||||
|         int count = audio.getDeviceCount(); | ||||
|         RtAudio::DeviceInfo info; | ||||
|         for (int i = 0; i < count; i++) { | ||||
|             info = audio.getDeviceInfo(i); | ||||
|             if (!info.probed) { continue; } | ||||
|             if (info.outputChannels == 0) { continue; } | ||||
|             if (info.isDefaultOutput) { defaultDevId = devList.size(); } | ||||
|             devList.push_back(info); | ||||
|             deviceIds.push_back(i); | ||||
|             txtDevList += info.name; | ||||
|             txtDevList += '\0'; | ||||
|             try { | ||||
|                 info = audio.getDeviceInfo(i); | ||||
|                 if (!info.probed) { continue; } | ||||
|                 if (info.outputChannels == 0) { continue; } | ||||
|                 if (info.isDefaultOutput) { defaultDevId = devList.size(); } | ||||
|                 devList.push_back(info); | ||||
|                 deviceIds.push_back(i); | ||||
|                 txtDevList += info.name; | ||||
|                 txtDevList += '\0'; | ||||
|             } | ||||
|             catch (std::exception e) { | ||||
|                 flog::error("AudioSinkModule Error getting audio device info: {0}", e.what()); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         selectByName(device); | ||||
|     } | ||||
|  | ||||
| @@ -290,4 +294,4 @@ MOD_EXPORT void _DELETE_INSTANCE_(void* instance) { | ||||
| MOD_EXPORT void _END_() { | ||||
|     config.disableAutoSave(); | ||||
|     config.save(); | ||||
| } | ||||
| } | ||||
|   | ||||
| @@ -7,9 +7,9 @@ include(${SDRPP_MODULE_CMAKE}) | ||||
|  | ||||
| if (MSVC) | ||||
|     # Lib path | ||||
|     target_link_directories(perseus_source PRIVATE "C:/Users/ryzerth/Documents/Code/libperseus-sdr/build/Debug") | ||||
|     target_link_directories(perseus_source PRIVATE "C:/Program Files/PothosSDR/bin/") | ||||
|  | ||||
|     target_include_directories(perseus_source PUBLIC "C:/Users/ryzerth/Documents/Code/libperseus-sdr/src") | ||||
|     target_include_directories(perseus_source PUBLIC "C:/Program Files/PothosSDR/include/perseus-sdr") | ||||
|  | ||||
|     target_link_libraries(perseus_source PRIVATE perseus-sdr) | ||||
| else (MSVC) | ||||
|   | ||||
| @@ -100,10 +100,11 @@ void SpectranHTTPClient::worker() { | ||||
|             auto sampleFreqEnd = jsonData.find(',', sampleFreqBegin); | ||||
|             std::string sampleFreqStr = jsonData.substr(sampleFreqBegin + 18, sampleFreqEnd - sampleFreqBegin - 18); | ||||
|             sampleFreq = std::stoll(sampleFreqStr); | ||||
|             //flog::debug("{}", jsonData); | ||||
|         } | ||||
|          | ||||
|         // Calculate and update center freq | ||||
|         int64_t samplerate = sampleFreqReceived ? sampleFreq : (endFreq - startFreq); | ||||
|         int64_t samplerate = /* sampleFreqReceived ? sampleFreq :  */(endFreq - startFreq); | ||||
|         int64_t centerFreq = round(((double)endFreq + (double)startFreq) / 2.0); | ||||
|         if (centerFreq != _centerFreq) { | ||||
|             flog::debug("New center freq: {}", centerFreq); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user