├── .gitignore ├── .travis.yml ├── AUTHORS ├── CMakeLists.txt ├── COPYING ├── LICENSE ├── README.md ├── appimage ├── AppRun └── udev-rules-helper ├── bandplan.cpp ├── bandplan.h ├── build-swradio.txt ├── cmake ├── Modules │ ├── FindFDKAAC.cmake │ ├── FindFFTW3f.cmake │ ├── FindFaad.cmake │ ├── FindFaadDRM.cmake │ ├── FindLSBId.cmake │ ├── FindLibAIRSPY.cmake │ ├── FindLibRTLSDR.cmake │ ├── FindLibSampleRate.cmake │ ├── FindLibSndFile.cmake │ ├── FindPortaudio.cmake │ ├── FindQWT.cmake │ ├── FindQwt.cmake │ └── Findzlib.cmake └── cmake_uninstall.cmake.in ├── decimators ├── decimator.cpp ├── decimator.h ├── newconverter.cpp └── newconverter.h ├── decoders ├── acars-decoder │ ├── acars-constants.h │ ├── acars-decoder.cpp │ ├── acars-decoder.h │ ├── cJSON.c │ ├── cJSON.h │ ├── label.c │ ├── printer.cpp │ ├── printer.h │ └── syndrom.h ├── am-decoder │ ├── am-decoder.cpp │ ├── am-decoder.h │ └── am-decoder.ui ├── amtor-decoder │ ├── amtor-decoder.cpp │ ├── amtor-decoder.h │ └── amtor-widget.ui ├── cw-decoder-ok │ ├── cw-decoder.cpp │ ├── cw-decoder.h │ ├── cw-decoder.ui │ ├── slidingfft.cpp │ └── slidingfft.h ├── cw-decoder │ ├── cw-decoder.cpp │ ├── cw-decoder.h │ ├── cw-decoder.ui │ ├── slidingfft.cpp │ └── slidingfft.h ├── drm-decoder │ ├── LICENSE │ ├── Release │ │ ├── SDRunoPlugin_drm.Build.CppClean.log │ │ ├── SDRunoPlugin_drm.dll │ │ ├── SDRunoPlugin_drm.dll.recipe │ │ ├── SDRunoPlugin_drm.exp │ │ ├── SDRunoPlugin_drm.iobj │ │ ├── SDRunoPlugin_drm.lib │ │ ├── SDRunoPlugin_drm.log │ │ ├── SDRunoPlugin_drm.obj │ │ ├── SDRunoPlugin_drm.pdb │ │ ├── SDRunoPlugin_drm.res │ │ ├── SDRunoPlugin_drm.tlog │ │ │ ├── CL.command.1.tlog │ │ │ ├── CL.read.1.tlog │ │ │ ├── CL.write.1.tlog │ │ │ ├── SDRunoPlugin_drm.lastbuildstate │ │ │ ├── SDRunoPlugin_drm.write.1u.tlog │ │ │ ├── link.command.1.tlog │ │ │ ├── link.read.1.tlog │ │ │ ├── link.write.1.tlog │ │ │ ├── rc.command.1.tlog │ │ │ ├── rc.read.1.tlog │ │ │ └── rc.write.1.tlog │ │ ├── SDRunoPlugin_drm.vcxproj.FileListAbsolute.txt │ │ ├── SDRunoPlugin_drmForm.obj │ │ ├── SDRunoPlugin_drmProject.obj │ │ ├── SDRunoPlugin_drmUi.obj │ │ ├── aac-processor-faad.obj │ │ ├── backend-controller.obj │ │ ├── basics.obj │ │ ├── checkcrc.obj │ │ ├── correlator.obj │ │ ├── data-processor.obj │ │ ├── decimator-25.obj │ │ ├── deinterleaver.obj │ │ ├── dllmain.obj │ │ ├── drm-bandfilter.obj │ │ ├── drm-shifter.obj │ │ ├── equalizer-1.obj │ │ ├── equalizer-base.obj │ │ ├── estimator-1.obj │ │ ├── fac-processor.obj │ │ ├── fac-tables.obj │ │ ├── fft-complex.obj │ │ ├── freqsyncer.obj │ │ ├── lowpassfilter.obj │ │ ├── lowpassfir.obj │ │ ├── mapper.obj │ │ ├── matrix2.obj │ │ ├── mer16-values.obj │ │ ├── mer4-values.obj │ │ ├── mer64-values.obj │ │ ├── message-processor.obj │ │ ├── msc-handler-qam16.obj │ │ ├── msc-handler-qam64.obj │ │ ├── msc-handler.obj │ │ ├── msc-processor.obj │ │ ├── msc-streamer.obj │ │ ├── prbs.obj │ │ ├── protlevels.obj │ │ ├── puncture-tables.obj │ │ ├── qam16-metrics.obj │ │ ├── qam4-metrics.obj │ │ ├── qam64-metrics.obj │ │ ├── reader.obj │ │ ├── referenceframe.obj │ │ ├── sdc-processor.obj │ │ ├── sdc-streamer.obj │ │ ├── state-descriptor.obj │ │ ├── timesync.obj │ │ ├── up-filter.obj │ │ ├── utilities.obj │ │ ├── vc142.pdb │ │ ├── viterbi-drm.obj │ │ └── word-collector.obj │ ├── aac-handler.cpp │ ├── aac-handler.h │ ├── basics.cpp │ ├── basics.h │ ├── data │ │ ├── aac-processor-fdk.cpp │ │ ├── aac-processor-fdk.h │ │ ├── data-processor.cpp │ │ ├── data-processor.h │ │ ├── lowpassfir.cpp │ │ ├── lowpassfir.h │ │ ├── message-processor.cpp │ │ ├── message-processor.h │ │ ├── neaacdec.h │ │ ├── up-filter.cpp │ │ ├── up-filter.h │ │ ├── xheaac-processor.cpp │ │ └── xheaac-processor.h │ ├── drm-bandfilter.cpp │ ├── drm-bandfilter.h │ ├── drm-decoder.cpp │ ├── drm-decoder.h │ ├── drm-decoder.png │ ├── drm-decoder.ui-old │ ├── drm-widget.png │ ├── drmdecoder.ui │ ├── drmdecoder.ui-old │ ├── eqdisplay.cpp │ ├── eqdisplay.h │ ├── equalizer │ │ ├── equalizer-1.cpp │ │ ├── equalizer-1.h │ │ ├── equalizer-base.cpp │ │ ├── equalizer-base.h │ │ ├── estimator-1.cpp │ │ ├── estimator-1.h │ │ ├── estimator-2.cpp │ │ ├── estimator-2.cpp-arma │ │ ├── estimator-2.cpp-jan │ │ ├── estimator-2.h │ │ ├── estimator-2.h-arma │ │ ├── estimator-2.h-jan │ │ ├── estimator-eigen-2.cpp │ │ ├── estimator-eigen-2.h │ │ ├── estimator-h-eigen │ │ ├── matrix2.cpp │ │ ├── matrix2.cpp-old │ │ ├── matrix2.h │ │ ├── matrix2.h-old │ │ ├── referenceframe.cpp │ │ └── referenceframe.h │ ├── fac │ │ ├── fac-processor.cpp │ │ ├── fac-processor.h │ │ ├── fac-tables.cpp │ │ └── fac-tables.h │ ├── iqdisplay.cpp │ ├── iqdisplay.h │ ├── libfaad_drm-2.def │ ├── libfaad_drm-2.dll │ ├── libfaad_drm-2.exp │ ├── libfaad_drm-2.lib │ ├── lowpassfilter.cpp │ ├── lowpassfilter.h │ ├── msc │ │ ├── backend-controller.cpp │ │ ├── backend-controller.h │ │ ├── msc-handler-qam16.cpp │ │ ├── msc-handler-qam16.h │ │ ├── msc-handler-qam64.cpp │ │ ├── msc-handler-qam64.h │ │ ├── msc-handler.cpp │ │ ├── msc-handler.h │ │ ├── msc-processor.cpp │ │ ├── msc-processor.h │ │ ├── msc-streamer.cpp │ │ └── msc-streamer.h │ ├── ofdm │ │ ├── correlator.cpp │ │ ├── correlator.h │ │ ├── freqsyncer.cpp │ │ ├── freqsyncer.h │ │ ├── reader.cpp │ │ ├── reader.h │ │ ├── timesync.cpp │ │ ├── timesync.h │ │ ├── word-collector.cpp │ │ └── word-collector.h │ ├── parameters │ │ ├── msc-config.cpp │ │ ├── msc-config.h │ │ ├── puncture-tables.cpp │ │ ├── puncture-tables.h │ │ ├── state-descriptor.cpp │ │ └── state-descriptor.h │ ├── rate-converter.cpp │ ├── rate-converter.h │ ├── resource.h │ ├── sdc │ │ ├── sdc-include.h │ │ ├── sdc-processor.cpp │ │ ├── sdc-processor.cpp-old │ │ ├── sdc-processor.h │ │ ├── sdc-streamer.cpp │ │ └── sdc-streamer.h │ ├── support │ │ ├── checkcrc.cpp │ │ ├── checkcrc.h │ │ ├── deinterleaver.cpp │ │ ├── deinterleaver.h │ │ ├── drm-shifter.cpp │ │ ├── drm-shifter.h │ │ ├── fft-complex.cpp │ │ ├── fft-complex.h │ │ ├── mapper.cpp │ │ ├── mapper.h │ │ ├── mer16-values.cpp │ │ ├── mer16-values.h │ │ ├── mer4-values.cpp │ │ ├── mer4-values.h │ │ ├── mer64-values.cpp │ │ ├── mer64-values.h │ │ ├── my-array.h │ │ ├── prbs.cpp │ │ ├── prbs.h │ │ ├── protlevels.cpp │ │ ├── protlevels.h │ │ ├── qam16-metrics.cpp │ │ ├── qam16-metrics.h │ │ ├── qam4-metrics.cpp │ │ ├── qam4-metrics.h │ │ ├── qam64-metrics.cpp │ │ ├── qam64-metrics.h │ │ ├── up-converter.cpp │ │ ├── up-converter.h │ │ ├── viterbi-drm.cpp │ │ └── viterbi-drm.h │ ├── the-dll │ │ ├── README │ │ ├── SDRunoPlugin_drm.dll │ │ └── libfaad_drm-2.dll │ ├── up-converter.cpp │ ├── up-converter.h │ ├── utilities.cpp │ └── utilities.h ├── fax-decoder │ ├── _1 │ ├── fax-buffer.cpp │ ├── fax-buffer.h │ ├── fax-decoder.cpp │ ├── fax-decoder.h │ ├── fax-decoder.pro │ ├── fax-decoder.ui │ ├── fax-demodulator.cpp │ ├── fax-demodulator.h │ ├── fax-filenames.cpp │ ├── fax-filenames.h │ ├── fax-image.cpp │ ├── fax-image.h │ ├── fax-params.h │ ├── fax-scroller.cpp │ ├── fax-scroller.h │ └── main.cpp ├── ft8-decoder-win │ ├── PSKReporter.h │ ├── cache.h │ ├── dl-cache.h │ ├── fft │ │ ├── _kiss_fft_guts.h │ │ ├── kiss_fft.c │ │ ├── kiss_fft.h │ │ ├── kiss_fftr.c │ │ └── kiss_fftr.h │ ├── ft8-constants.h │ ├── ft8-decoder.cpp │ ├── ft8-decoder.h │ ├── ft8-decoder.ui │ ├── ft8-processor.cpp │ ├── ft8-processor.h │ ├── hashHandler.cpp │ ├── hashHandler.h │ ├── hashcodes.f90 │ ├── identity-dialog.cpp │ ├── identity-dialog.h │ ├── ldpc.cpp │ ├── ldpc.h │ ├── pack-handler.cpp │ ├── pack-handler.h │ └── semaphore.h ├── ft8-decoder │ ├── cache.h │ ├── dl-cache.h │ ├── fft │ │ ├── _kiss_fft_guts.h │ │ ├── kiss_fft.c │ │ ├── kiss_fft.h │ │ ├── kiss_fftr.c │ │ └── kiss_fftr.h │ ├── ft8-constants.h │ ├── ft8-decoder.cpp │ ├── ft8-decoder.h │ ├── ft8-decoder.ui │ ├── ft8-processor.cpp │ ├── ft8-processor.h │ ├── hashHandler.cpp │ ├── hashHandler.h │ ├── hashcodes.f90 │ ├── identity-dialog.cpp │ ├── identity-dialog.h │ ├── ldpc.cpp │ ├── ldpc.h │ ├── pack-handler.cpp │ ├── pack-handler.h │ ├── psk-writer.cpp │ ├── psk-writer.h │ └── semaphore.h ├── new-decoder │ ├── new-decoder.cpp │ ├── new-decoder.h │ ├── new-decoder.ui │ ├── viterbi.cpp │ └── viterbi.h ├── psk-decoder │ ├── CMakeLists.txt │ ├── psk-decoder.cpp │ ├── psk-decoder.h │ ├── psk-decoder.ui │ ├── psk-decoder │ │ ├── CMakeLists.txt │ │ ├── psk-decoder.cpp │ │ ├── psk-decoder.h │ │ ├── psk-decoder.ui │ │ ├── viterbi.cpp │ │ └── viterbi.h │ ├── viterbi.cpp │ └── viterbi.h ├── rtty-decoder │ ├── rtty-decoder.cpp │ ├── rtty-decoder.h │ └── rtty-decoder.ui ├── ssb-decoder │ ├── ssb-decoder.cpp │ ├── ssb-decoder.h │ └── ssb-decoder.ui ├── test-decoder │ ├── cache.h │ ├── test-decoder.cpp │ ├── test-decoder.h │ └── test-decoder.ui ├── virtual-decoder.cpp └── virtual-decoder.h ├── devices ├── device-handler.cpp ├── device-handler.h ├── deviceselect.cpp ├── deviceselect.h ├── extio-handler │ ├── extio-handler.cpp │ ├── extio-handler.h │ ├── extio-handler.pro │ └── extio-widget.ui ├── filereader │ ├── filehulp.cpp │ ├── filehulp.h │ ├── filereader-widget.ui │ ├── filereader.cpp │ └── filereader.h ├── hackrf-handler │ ├── hackrf-handler.cpp │ ├── hackrf-handler.h │ ├── hackrf-widget.ui │ └── libhackrf │ │ └── hackrf.h ├── pa-reader.cpp ├── pa-reader.h ├── pmsdr-handler │ ├── pmsdr-handler.cpp │ ├── pmsdr-handler.h │ ├── pmsdr-widget.ui │ ├── pmsdr.pro │ ├── pmsdr_comm.cpp │ ├── pmsdr_comm.h │ ├── pmsdr_usb.cpp │ ├── pmsdr_usb.h │ ├── si570-handler.cpp │ └── si570-handler.h ├── rtl_tcp │ ├── rtl_tcp-widget.ui │ ├── rtl_tcp_client.cpp │ └── rtl_tcp_client.h ├── rtlsdr-handler │ ├── dongleselect.cpp │ ├── dongleselect.h │ ├── rtlsdr-handler.cpp │ ├── rtlsdr-handler.h │ ├── rtlsdr-handler.pro │ └── rtlsdr-widget.ui ├── sdrplay-handler-v3-xxx │ ├── Rsp-device.cpp │ ├── Rsp-device.h │ ├── Rsp1A-handler.cpp │ ├── RspDx-handler.cpp │ ├── RspDx-handler.h │ ├── RspII-handler.cpp │ ├── include-v3 │ │ ├── sdrplay_api.h │ │ ├── sdrplay_api_callback.h │ │ ├── sdrplay_api_control.h │ │ ├── sdrplay_api_dev.h │ │ ├── sdrplay_api_rsp1a.h │ │ ├── sdrplay_api_rsp2.h │ │ ├── sdrplay_api_rspDuo.h │ │ ├── sdrplay_api_rspDx.h │ │ ├── sdrplay_api_rx_channel.h │ │ └── sdrplay_api_tuner.h │ ├── sdrplay-commands.h │ ├── sdrplay-handler-v3.cpp │ ├── sdrplay-handler-v3.h │ └── sdrplay-widget-v3.ui ├── sdrplay-handler-v3 │ ├── Rsp-device.cpp │ ├── Rsp-device.h │ ├── Rsp1A-handler.cpp │ ├── Rsp1A-handler.h │ ├── RspDuo-handler.cpp │ ├── RspDuo-handler.h │ ├── RspDx-handler.cpp │ ├── RspDx-handler.h │ ├── RspI-handler.cpp │ ├── RspI-handler.h │ ├── RspII-handler.cpp │ ├── RspII-handler.h │ ├── include-v3 │ │ ├── sdrplay_api.h │ │ ├── sdrplay_api_callback.h │ │ ├── sdrplay_api_control.h │ │ ├── sdrplay_api_dev.h │ │ ├── sdrplay_api_rsp1a.h │ │ ├── sdrplay_api_rsp2.h │ │ ├── sdrplay_api_rspDuo.h │ │ ├── sdrplay_api_rspDx.h │ │ ├── sdrplay_api_rx_channel.h │ │ └── sdrplay_api_tuner.h │ ├── sdrplay-commands.h │ ├── sdrplay-handler-v3.cpp │ ├── sdrplay-handler-v3.h │ └── sdrplay-widget-v3.ui ├── sdrplay-handler │ ├── mirsdrapi-rsp.h │ ├── sdrplay-handler.cpp │ ├── sdrplay-handler.h │ └── sdrplay-widget.ui └── sw-elad-s1 │ ├── CMakeLists.txt │ ├── Makefile │ ├── elad-loader.cpp │ ├── elad-loader.h │ ├── elad-s1.cpp │ ├── elad-s1.h │ ├── elad-s1.pro │ ├── elad-worker.cpp │ ├── elad-worker.h │ └── widget.ui ├── docs └── synchronization-in-drm │ ├── Screenshot-extio-pmsdr-sw.png │ ├── flowvoordrm.png │ ├── ofdm.png │ ├── screenshot-1.png │ ├── screenshot-2.png │ ├── screenshot-3.png │ ├── screenshot-4.png │ ├── screenshot-5.png │ ├── screenshot-babcock.png │ ├── synchronization.aux │ ├── synchronization.log │ ├── synchronization.pdf │ └── synchronization.tex ├── drm-decoder-1.png ├── drm-decoder-2.png ├── fdk-aac ├── FDK_audio.h ├── aacdecoder_lib.h ├── aacenc_lib.h ├── fdk-aac │ ├── .clang-format │ ├── .gitignore │ ├── Android.bp │ ├── ChangeLog │ ├── METADATA │ ├── MODULE_LICENSE_FRAUNHOFER │ ├── Makefile.am │ ├── Makefile.vc │ ├── NOTICE │ ├── OWNERS │ ├── PREUPLOAD.cfg │ ├── aac-enc.c │ ├── autogen.sh │ ├── configure.ac │ ├── documentation │ │ ├── aacDecoder.pdf │ │ └── aacEncoder.pdf │ ├── fdk-aac.pc.in │ ├── fdk-aac.sym │ ├── fuzzer │ │ ├── Android.bp │ │ ├── README.md │ │ └── aac_dec_fuzzer.cpp │ ├── libAACdec │ │ ├── include │ │ │ └── aacdecoder_lib.h │ │ └── src │ │ │ ├── FDK_delay.cpp │ │ │ ├── FDK_delay.h │ │ │ ├── aac_ram.cpp │ │ │ ├── aac_ram.h │ │ │ ├── aac_rom.cpp │ │ │ ├── aac_rom.h │ │ │ ├── aacdec_drc.cpp │ │ │ ├── aacdec_drc.h │ │ │ ├── aacdec_drc_types.h │ │ │ ├── aacdec_hcr.cpp │ │ │ ├── aacdec_hcr.h │ │ │ ├── aacdec_hcr_bit.cpp │ │ │ ├── aacdec_hcr_bit.h │ │ │ ├── aacdec_hcr_types.h │ │ │ ├── aacdec_hcrs.cpp │ │ │ ├── aacdec_hcrs.h │ │ │ ├── aacdec_pns.cpp │ │ │ ├── aacdec_pns.h │ │ │ ├── aacdec_tns.cpp │ │ │ ├── aacdec_tns.h │ │ │ ├── aacdecoder.cpp │ │ │ ├── aacdecoder.h │ │ │ ├── aacdecoder_lib.cpp │ │ │ ├── arm │ │ │ └── block_arm.cpp │ │ │ ├── block.cpp │ │ │ ├── block.h │ │ │ ├── channel.cpp │ │ │ ├── channel.h │ │ │ ├── channelinfo.cpp │ │ │ ├── channelinfo.h │ │ │ ├── conceal.cpp │ │ │ ├── conceal.h │ │ │ ├── conceal_types.h │ │ │ ├── ldfiltbank.cpp │ │ │ ├── ldfiltbank.h │ │ │ ├── overlapadd.h │ │ │ ├── pulsedata.cpp │ │ │ ├── pulsedata.h │ │ │ ├── rvlc.cpp │ │ │ ├── rvlc.h │ │ │ ├── rvlc_info.h │ │ │ ├── rvlcbit.cpp │ │ │ ├── rvlcbit.h │ │ │ ├── rvlcconceal.cpp │ │ │ ├── rvlcconceal.h │ │ │ ├── stereo.cpp │ │ │ ├── stereo.h │ │ │ ├── usacdec_ace_d4t64.cpp │ │ │ ├── usacdec_ace_d4t64.h │ │ │ ├── usacdec_ace_ltp.cpp │ │ │ ├── usacdec_ace_ltp.h │ │ │ ├── usacdec_acelp.cpp │ │ │ ├── usacdec_acelp.h │ │ │ ├── usacdec_const.h │ │ │ ├── usacdec_fac.cpp │ │ │ ├── usacdec_fac.h │ │ │ ├── usacdec_lpc.cpp │ │ │ ├── usacdec_lpc.h │ │ │ ├── usacdec_lpd.cpp │ │ │ ├── usacdec_lpd.h │ │ │ ├── usacdec_rom.cpp │ │ │ └── usacdec_rom.h │ ├── libAACenc │ │ ├── include │ │ │ └── aacenc_lib.h │ │ └── src │ │ │ ├── aacEnc_ram.cpp │ │ │ ├── aacEnc_ram.h │ │ │ ├── aacEnc_rom.cpp │ │ │ ├── aacEnc_rom.h │ │ │ ├── aacenc.cpp │ │ │ ├── aacenc.h │ │ │ ├── aacenc_lib.cpp │ │ │ ├── aacenc_pns.cpp │ │ │ ├── aacenc_pns.h │ │ │ ├── aacenc_tns.cpp │ │ │ ├── aacenc_tns.h │ │ │ ├── adj_thr.cpp │ │ │ ├── adj_thr.h │ │ │ ├── adj_thr_data.h │ │ │ ├── band_nrg.cpp │ │ │ ├── band_nrg.h │ │ │ ├── bandwidth.cpp │ │ │ ├── bandwidth.h │ │ │ ├── bit_cnt.cpp │ │ │ ├── bit_cnt.h │ │ │ ├── bitenc.cpp │ │ │ ├── bitenc.h │ │ │ ├── block_switch.cpp │ │ │ ├── block_switch.h │ │ │ ├── channel_map.cpp │ │ │ ├── channel_map.h │ │ │ ├── chaosmeasure.cpp │ │ │ ├── chaosmeasure.h │ │ │ ├── dyn_bits.cpp │ │ │ ├── dyn_bits.h │ │ │ ├── grp_data.cpp │ │ │ ├── grp_data.h │ │ │ ├── intensity.cpp │ │ │ ├── intensity.h │ │ │ ├── interface.h │ │ │ ├── line_pe.cpp │ │ │ ├── line_pe.h │ │ │ ├── metadata_compressor.cpp │ │ │ ├── metadata_compressor.h │ │ │ ├── metadata_main.cpp │ │ │ ├── metadata_main.h │ │ │ ├── mps_main.cpp │ │ │ ├── mps_main.h │ │ │ ├── ms_stereo.cpp │ │ │ ├── ms_stereo.h │ │ │ ├── noisedet.cpp │ │ │ ├── noisedet.h │ │ │ ├── pns_func.h │ │ │ ├── pnsparam.cpp │ │ │ ├── pnsparam.h │ │ │ ├── pre_echo_control.cpp │ │ │ ├── pre_echo_control.h │ │ │ ├── psy_configuration.cpp │ │ │ ├── psy_configuration.h │ │ │ ├── psy_const.h │ │ │ ├── psy_data.h │ │ │ ├── psy_main.cpp │ │ │ ├── psy_main.h │ │ │ ├── qc_data.h │ │ │ ├── qc_main.cpp │ │ │ ├── qc_main.h │ │ │ ├── quantize.cpp │ │ │ ├── quantize.h │ │ │ ├── sf_estim.cpp │ │ │ ├── sf_estim.h │ │ │ ├── spreading.cpp │ │ │ ├── spreading.h │ │ │ ├── tns_func.h │ │ │ ├── tonality.cpp │ │ │ ├── tonality.h │ │ │ ├── transform.cpp │ │ │ └── transform.h │ ├── libArithCoding │ │ ├── include │ │ │ └── ac_arith_coder.h │ │ └── src │ │ │ └── ac_arith_coder.cpp │ ├── libDRCdec │ │ ├── include │ │ │ └── FDK_drcDecLib.h │ │ └── src │ │ │ ├── FDK_drcDecLib.cpp │ │ │ ├── drcDec_gainDecoder.cpp │ │ │ ├── drcDec_gainDecoder.h │ │ │ ├── drcDec_reader.cpp │ │ │ ├── drcDec_reader.h │ │ │ ├── drcDec_rom.cpp │ │ │ ├── drcDec_rom.h │ │ │ ├── drcDec_selectionProcess.cpp │ │ │ ├── drcDec_selectionProcess.h │ │ │ ├── drcDec_tools.cpp │ │ │ ├── drcDec_tools.h │ │ │ ├── drcDec_types.h │ │ │ ├── drcDecoder.h │ │ │ ├── drcGainDec_init.cpp │ │ │ ├── drcGainDec_init.h │ │ │ ├── drcGainDec_preprocess.cpp │ │ │ ├── drcGainDec_preprocess.h │ │ │ ├── drcGainDec_process.cpp │ │ │ └── drcGainDec_process.h │ ├── libFDK │ │ ├── include │ │ │ ├── FDK_archdef.h │ │ │ ├── FDK_bitbuffer.h │ │ │ ├── FDK_bitstream.h │ │ │ ├── FDK_core.h │ │ │ ├── FDK_crc.h │ │ │ ├── FDK_decorrelate.h │ │ │ ├── FDK_hybrid.h │ │ │ ├── FDK_lpc.h │ │ │ ├── FDK_matrixCalloc.h │ │ │ ├── FDK_qmf_domain.h │ │ │ ├── FDK_tools_rom.h │ │ │ ├── FDK_trigFcts.h │ │ │ ├── abs.h │ │ │ ├── arm │ │ │ │ ├── clz_arm.h │ │ │ │ ├── cplx_mul_arm.h │ │ │ │ ├── fixmadd_arm.h │ │ │ │ ├── fixmul_arm.h │ │ │ │ ├── scale_arm.h │ │ │ │ └── scramble_arm.h │ │ │ ├── autocorr2nd.h │ │ │ ├── clz.h │ │ │ ├── common_fix.h │ │ │ ├── cplx_mul.h │ │ │ ├── dct.h │ │ │ ├── fft.h │ │ │ ├── fft_rad2.h │ │ │ ├── fixmadd.h │ │ │ ├── fixminmax.h │ │ │ ├── fixmul.h │ │ │ ├── fixpoint_math.h │ │ │ ├── huff_nodes.h │ │ │ ├── mdct.h │ │ │ ├── mips │ │ │ │ ├── abs_mips.h │ │ │ │ ├── clz_mips.h │ │ │ │ ├── cplx_mul_mips.h │ │ │ │ ├── fixmul_mips.h │ │ │ │ ├── scale_mips.h │ │ │ │ └── scramble_mips.h │ │ │ ├── nlc_dec.h │ │ │ ├── ppc │ │ │ │ ├── clz_ppc.h │ │ │ │ └── fixmul_ppc.h │ │ │ ├── qmf.h │ │ │ ├── qmf_pcm.h │ │ │ ├── scale.h │ │ │ ├── scramble.h │ │ │ └── x86 │ │ │ │ ├── abs_x86.h │ │ │ │ ├── clz_x86.h │ │ │ │ ├── fixmul_x86.h │ │ │ │ └── fixpoint_math_x86.h │ │ └── src │ │ │ ├── FDK_bitbuffer.cpp │ │ │ ├── FDK_core.cpp │ │ │ ├── FDK_crc.cpp │ │ │ ├── FDK_decorrelate.cpp │ │ │ ├── FDK_hybrid.cpp │ │ │ ├── FDK_lpc.cpp │ │ │ ├── FDK_matrixCalloc.cpp │ │ │ ├── FDK_qmf_domain.cpp │ │ │ ├── FDK_tools_rom.cpp │ │ │ ├── FDK_trigFcts.cpp │ │ │ ├── arm │ │ │ ├── fft_rad2_arm.cpp │ │ │ └── scale_arm.cpp │ │ │ ├── autocorr2nd.cpp │ │ │ ├── dct.cpp │ │ │ ├── fft.cpp │ │ │ ├── fft_rad2.cpp │ │ │ ├── fixpoint_math.cpp │ │ │ ├── huff_nodes.cpp │ │ │ ├── mdct.cpp │ │ │ ├── mips │ │ │ ├── fft_rad2_mips.cpp │ │ │ ├── mips_fft_twiddles.cpp │ │ │ └── scale_mips.cpp │ │ │ ├── nlc_dec.cpp │ │ │ ├── qmf.cpp │ │ │ └── scale.cpp │ ├── libMpegTPDec │ │ ├── include │ │ │ ├── tp_data.h │ │ │ └── tpdec_lib.h │ │ └── src │ │ │ ├── tp_version.h │ │ │ ├── tpdec_adif.cpp │ │ │ ├── tpdec_adif.h │ │ │ ├── tpdec_adts.cpp │ │ │ ├── tpdec_adts.h │ │ │ ├── tpdec_asc.cpp │ │ │ ├── tpdec_drm.cpp │ │ │ ├── tpdec_drm.h │ │ │ ├── tpdec_latm.cpp │ │ │ ├── tpdec_latm.h │ │ │ └── tpdec_lib.cpp │ ├── libMpegTPEnc │ │ ├── include │ │ │ ├── tp_data.h │ │ │ └── tpenc_lib.h │ │ └── src │ │ │ ├── tp_version.h │ │ │ ├── tpenc_adif.cpp │ │ │ ├── tpenc_adif.h │ │ │ ├── tpenc_adts.cpp │ │ │ ├── tpenc_adts.h │ │ │ ├── tpenc_asc.cpp │ │ │ ├── tpenc_asc.h │ │ │ ├── tpenc_latm.cpp │ │ │ ├── tpenc_latm.h │ │ │ └── tpenc_lib.cpp │ ├── libPCMutils │ │ ├── include │ │ │ ├── limiter.h │ │ │ ├── pcm_utils.h │ │ │ └── pcmdmx_lib.h │ │ └── src │ │ │ ├── limiter.cpp │ │ │ ├── pcm_utils.cpp │ │ │ ├── pcmdmx_lib.cpp │ │ │ └── version.h │ ├── libSACdec │ │ ├── include │ │ │ ├── sac_dec_errorcodes.h │ │ │ └── sac_dec_lib.h │ │ └── src │ │ │ ├── sac_bitdec.cpp │ │ │ ├── sac_bitdec.h │ │ │ ├── sac_calcM1andM2.cpp │ │ │ ├── sac_calcM1andM2.h │ │ │ ├── sac_dec.cpp │ │ │ ├── sac_dec.h │ │ │ ├── sac_dec_conceal.cpp │ │ │ ├── sac_dec_conceal.h │ │ │ ├── sac_dec_interface.h │ │ │ ├── sac_dec_lib.cpp │ │ │ ├── sac_dec_ssc_struct.h │ │ │ ├── sac_process.cpp │ │ │ ├── sac_process.h │ │ │ ├── sac_qmf.cpp │ │ │ ├── sac_qmf.h │ │ │ ├── sac_reshapeBBEnv.cpp │ │ │ ├── sac_reshapeBBEnv.h │ │ │ ├── sac_rom.cpp │ │ │ ├── sac_rom.h │ │ │ ├── sac_smoothing.cpp │ │ │ ├── sac_smoothing.h │ │ │ ├── sac_stp.cpp │ │ │ ├── sac_stp.h │ │ │ ├── sac_tsd.cpp │ │ │ └── sac_tsd.h │ ├── libSACenc │ │ ├── include │ │ │ └── sacenc_lib.h │ │ └── src │ │ │ ├── sacenc_bitstream.cpp │ │ │ ├── sacenc_bitstream.h │ │ │ ├── sacenc_const.h │ │ │ ├── sacenc_delay.cpp │ │ │ ├── sacenc_delay.h │ │ │ ├── sacenc_dmx_tdom_enh.cpp │ │ │ ├── sacenc_dmx_tdom_enh.h │ │ │ ├── sacenc_filter.cpp │ │ │ ├── sacenc_filter.h │ │ │ ├── sacenc_framewindowing.cpp │ │ │ ├── sacenc_framewindowing.h │ │ │ ├── sacenc_huff_tab.cpp │ │ │ ├── sacenc_huff_tab.h │ │ │ ├── sacenc_lib.cpp │ │ │ ├── sacenc_nlc_enc.cpp │ │ │ ├── sacenc_nlc_enc.h │ │ │ ├── sacenc_onsetdetect.cpp │ │ │ ├── sacenc_onsetdetect.h │ │ │ ├── sacenc_paramextract.cpp │ │ │ ├── sacenc_paramextract.h │ │ │ ├── sacenc_staticgain.cpp │ │ │ ├── sacenc_staticgain.h │ │ │ ├── sacenc_tree.cpp │ │ │ ├── sacenc_tree.h │ │ │ ├── sacenc_vectorfunctions.cpp │ │ │ └── sacenc_vectorfunctions.h │ ├── libSBRdec │ │ ├── include │ │ │ └── sbrdecoder.h │ │ └── src │ │ │ ├── HFgen_preFlat.cpp │ │ │ ├── HFgen_preFlat.h │ │ │ ├── arm │ │ │ └── lpp_tran_arm.cpp │ │ │ ├── env_calc.cpp │ │ │ ├── env_calc.h │ │ │ ├── env_dec.cpp │ │ │ ├── env_dec.h │ │ │ ├── env_extr.cpp │ │ │ ├── env_extr.h │ │ │ ├── hbe.cpp │ │ │ ├── hbe.h │ │ │ ├── huff_dec.cpp │ │ │ ├── huff_dec.h │ │ │ ├── lpp_tran.cpp │ │ │ ├── lpp_tran.h │ │ │ ├── psbitdec.cpp │ │ │ ├── psbitdec.h │ │ │ ├── psdec.cpp │ │ │ ├── psdec.h │ │ │ ├── psdec_drm.cpp │ │ │ ├── psdec_drm.h │ │ │ ├── psdecrom_drm.cpp │ │ │ ├── pvc_dec.cpp │ │ │ ├── pvc_dec.h │ │ │ ├── sbr_deb.cpp │ │ │ ├── sbr_deb.h │ │ │ ├── sbr_dec.cpp │ │ │ ├── sbr_dec.h │ │ │ ├── sbr_ram.cpp │ │ │ ├── sbr_ram.h │ │ │ ├── sbr_rom.cpp │ │ │ ├── sbr_rom.h │ │ │ ├── sbrdec_drc.cpp │ │ │ ├── sbrdec_drc.h │ │ │ ├── sbrdec_freq_sca.cpp │ │ │ ├── sbrdec_freq_sca.h │ │ │ ├── sbrdecoder.cpp │ │ │ └── transcendent.h │ ├── libSBRenc │ │ ├── include │ │ │ └── sbr_encoder.h │ │ └── src │ │ │ ├── bit_sbr.cpp │ │ │ ├── bit_sbr.h │ │ │ ├── cmondata.h │ │ │ ├── code_env.cpp │ │ │ ├── code_env.h │ │ │ ├── env_bit.cpp │ │ │ ├── env_bit.h │ │ │ ├── env_est.cpp │ │ │ ├── env_est.h │ │ │ ├── fram_gen.cpp │ │ │ ├── fram_gen.h │ │ │ ├── invf_est.cpp │ │ │ ├── invf_est.h │ │ │ ├── mh_det.cpp │ │ │ ├── mh_det.h │ │ │ ├── nf_est.cpp │ │ │ ├── nf_est.h │ │ │ ├── ps_bitenc.cpp │ │ │ ├── ps_bitenc.h │ │ │ ├── ps_const.h │ │ │ ├── ps_encode.cpp │ │ │ ├── ps_encode.h │ │ │ ├── ps_main.cpp │ │ │ ├── ps_main.h │ │ │ ├── resampler.cpp │ │ │ ├── resampler.h │ │ │ ├── sbr.h │ │ │ ├── sbr_def.h │ │ │ ├── sbr_encoder.cpp │ │ │ ├── sbr_misc.cpp │ │ │ ├── sbr_misc.h │ │ │ ├── sbrenc_freq_sca.cpp │ │ │ ├── sbrenc_freq_sca.h │ │ │ ├── sbrenc_ram.cpp │ │ │ ├── sbrenc_ram.h │ │ │ ├── sbrenc_rom.cpp │ │ │ ├── sbrenc_rom.h │ │ │ ├── ton_corr.cpp │ │ │ ├── ton_corr.h │ │ │ ├── tran_det.cpp │ │ │ └── tran_det.h │ ├── libSYS │ │ ├── include │ │ │ ├── FDK_audio.h │ │ │ ├── genericStds.h │ │ │ ├── machine_type.h │ │ │ └── syslib_channelMapDescr.h │ │ └── src │ │ │ ├── genericStds.cpp │ │ │ └── syslib_channelMapDescr.cpp │ ├── m4 │ │ └── .gitkeep │ ├── wavreader.c │ ├── wavreader.h │ └── win32 │ │ └── getopt.h ├── genericStds.h ├── libfdk-aac-2.a ├── libfdk-aac-2.def ├── machine_type.h └── syslib_channelMapDescr.h ├── filters ├── decimating_filter.cpp ├── decimating_filter.h ├── fft-filters.cpp ├── fft-filters.h ├── fir-filters.cpp ├── fir-filters.h ├── hilbertfilter.cpp ├── hilbertfilter.h ├── if-filter.cpp ├── if-filter.h ├── iir-filters.cpp └── iir-filters.h ├── hackrf.tgz ├── main.cpp ├── newUser.txt ├── newradio.ui ├── output ├── audiosink.cpp ├── audiosink.h ├── upconverter.cpp └── upconverter.h ├── radio-constants.h ├── radio.cpp ├── radio.h ├── res ├── Adaptic.qss ├── Combinear.qss ├── sw-bandplan.xml └── swradio.ico ├── resources.qrc ├── rtl-sdr.tgz ├── scopes-qwt6 ├── audio-scope.cpp ├── audio-scope.h ├── fft-scope.cpp ├── fft-scope.h ├── scope.cpp ├── scope.h ├── spectrogramdata.h ├── spectrum-scope.cpp ├── spectrum-scope.h ├── virtual-scope.cpp ├── virtual-scope.h ├── waterfall-scope.cpp └── waterfall-scope.h ├── swradio-8.pro ├── swradio-cw-widget.png ├── swradio-device-selection.png ├── swradio-drm-widget.png ├── swradio-ft8-widget.png ├── swradio-installer.iss ├── swradio-navtex-widget.png ├── swradio-overview.png ├── swradio-pmsdr-drm.png ├── swradio-psk-widget.png ├── swradio-rtty-widget.png ├── swradio-waterfall.png ├── swradio-wfax-widget.png ├── swradio.desktop ├── swradio.ico ├── swradio.png └── various ├── Xtan2.cpp ├── Xtan2.h ├── agchandler.cpp ├── agchandler.h ├── downconverter.cpp ├── downconverter.h ├── fft.cpp ├── fft.h ├── popup-keypad.cpp ├── popup-keypad.h ├── program-list.cpp ├── program-list.h ├── rate-converter.cpp ├── rate-converter.h ├── ringbuffer.h ├── s-meter.cpp ├── s-meter.h ├── shifter.cpp ├── shifter.h ├── slidingfft.cpp ├── slidingfft.h ├── utilities.cpp └── utilities.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | .*.swp 3 | build 4 | linux-bin 5 | Makefile 6 | .qmake.stash 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | swradio is written and maintained by 2 | Jan van Katwijk 3 | Lazy Chair Computing 4 | Copyright 2018 5 | -------------------------------------------------------------------------------- /appimage/AppRun: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | HERE="$(dirname "$(readlink -f "${0}")")" 3 | cp "${HERE}/udev-rules-helper" /tmp/ 4 | # Try to run using sudo, if this does not work ask the user for password 5 | sudo -n -E -- "/tmp/udev-rules-helper" || pkexec "/tmp/udev-rules-helper" 6 | rm "/tmp/udev-rules-helper" 7 | exec "${HERE}/usr/bin/swradio-8" "$@" 8 | -------------------------------------------------------------------------------- /appimage/udev-rules-helper: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HERE="$(dirname "$(readlink -f "${0}")")" 4 | 5 | rmmod dvb_usb_rtl28xxu || true 6 | 7 | cat > /tmp/10-rtl-sdr.rules <<\EOF 8 | SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", MODE="0666", SYMLINK+="rtl_sdr" 9 | EOF 10 | 11 | mv /tmp/10-rtl-sdr.rules /etc/udev/rules.d/10-rtl-sdr.rules 12 | 13 | cat > /tmp/53-hackrf.rules <<\EOF 14 | # HackRF Jawbreaker 15 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660" 16 | # HackRF One 17 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660" 18 | # rad1o 19 | ATTR{idVendor}=="1d50", ATTR{idProduct}=="cc15", SYMLINK+="rad1o-%k", MODE="660" 20 | # NXP Semiconductors DFU mode (HackRF and rad1o) 21 | ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="nxp-dfu-%k", MODE="660" 22 | # rad1o "full flash" mode 23 | KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="1fc9", ENV{ID_MODEL_ID}=="0042", SYMLINK+="rad1o-flash-%k", MODE="660" 24 | # rad1o flash disk 25 | KERNEL=="sd?", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="1fc9", ENV{ID_MODEL_ID}=="0082", SYMLINK+="rad1o-msc-%k", MODE="660" 26 | EOF 27 | 28 | mv /tmp/53-hackrf.rules /etc/udev/rules.d/53-hackrf.rules 29 | 30 | cat > /tmp/66-mirics.rules <<\EOF 31 | SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="2500",MODE:="0666" 32 | SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3010",MODE:="0666" 33 | SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3000",MODE:="0666" 34 | EOF 35 | 36 | mv /tmp/66-mirics.rules /etc/udev/rules.d/66-mirics.rules 37 | 38 | udevadm control --reload-rules 39 | udevadm trigger --attr-match=subsystem=usb 40 | -------------------------------------------------------------------------------- /bandplan.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "bandplan.h" 3 | 4 | bandPlan::bandPlan (QString fileName) { 5 | labelTable. resize (0); 6 | loadPlan (fileName); 7 | 8 | } 9 | 10 | bandPlan::~bandPlan () { 11 | } 12 | 13 | const 14 | QString bandPlan::getFrequencyLabel (uint32_t Frequency) { 15 | int freq = Frequency / 1000; 16 | 17 | for (int i = 0; i < labelTable. size (); i ++) { 18 | if ((labelTable. at (i). low <= freq) && 19 | (freq <= labelTable. at (i). high)) 20 | return QString (labelTable. at (i). label); 21 | } 22 | 23 | return QString (""); 24 | } 25 | 26 | 27 | bool bandPlan::loadPlan (QString fileName) { 28 | QDomDocument xmlBOM; 29 | QFile f (fileName); 30 | 31 | this -> fileName = fileName; 32 | if (!f. open (QIODevice::ReadOnly)) 33 | return false; 34 | 35 | xmlBOM. setContent (&f); 36 | f. close (); 37 | QDomElement root = xmlBOM. documentElement (); 38 | QDomElement component = root. firstChild (). toElement (); 39 | while (!component. isNull ()) { 40 | if (component. tagName () == "Band") { 41 | bandElement bd; 42 | bd. low = component. attribute ("Low", "0"). toInt (); 43 | bd. high = component. attribute ("High", "0"). toInt (); 44 | bd. label = component. attribute ("Label", ""); 45 | labelTable. push_back (bd); 46 | } 47 | component = component. nextSibling (). toElement (); 48 | } 49 | return true; 50 | } 51 | -------------------------------------------------------------------------------- /bandplan.h: -------------------------------------------------------------------------------- 1 | # 2 | #ifndef __BANDPLAN__ 3 | #define __BANDPLAN__ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | typedef struct { 13 | int low; 14 | int high; 15 | QString label; 16 | } bandElement; 17 | 18 | class bandPlan { 19 | public: 20 | bandPlan (QString); 21 | ~bandPlan (); 22 | const 23 | QString getFrequencyLabel (uint32_t); 24 | private: 25 | QString fileName; 26 | std::vector labelTable; 27 | bool loadPlan (QString); 28 | }; 29 | #endif 30 | -------------------------------------------------------------------------------- /build-swradio.txt: -------------------------------------------------------------------------------- 1 | 2 | mkdir -p appdir/usr/bin 3 | cp ./linux-bin/swradio-9 appdir/usr/bin/swradio-9 4 | 5 | mkdir -p appdir/usr/share/applications 6 | cp swradio.desktop appdir/usr/share/applications 7 | cp swradio.png appdir/sw-radio-dab.png 8 | touch appdir/swradio.png 9 | mkdir -p ./appdir/usr/share/icons/hicolor/256x256/apps/ 10 | cp swradio.png appdir/usr/share/icons/hicolor/256x256/apps/ 11 | 12 | wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" 13 | chmod a+x linuxdeployqt*.AppImage 14 | unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH 15 | ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/* -bundle-non-qt-libs -no-translations 16 | ./linuxdeployqt*.AppImage --appimage-extract 17 | find appdir/usr/plugins/ -type f -exec squashfs-root/usr/bin/patchelf --set-rpath '$ORIGIN/../../lib' {} \; 18 | chmod a+x appimage/* ; rm appdir/AppRun ; cp appimage/* appdir/ 19 | export PATH=squashfs-root/usr/bin/:$PATH 20 | squashfs-root/usr/bin/appimagetool $(readlink -f ./appdir/) 21 | find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq 22 | 23 | -------------------------------------------------------------------------------- /cmake/Modules/FindFDKAAC.cmake: -------------------------------------------------------------------------------- 1 | # Find libfdkaac 2 | 3 | #include(FindPkgConfig) 4 | #pkg_check_modules(FDKAAC fdkaac) 5 | 6 | FIND_PATH(FDKAAC_INCLUDE_DIRS 7 | NAMES 8 | aacdecoder_lib.h 9 | PATHS 10 | /usr/include/fdk-aac 11 | /usr/local/include/fdk-aac 12 | ) 13 | 14 | FIND_LIBRARY(FDKAAC_LIBRARIES 15 | NAMES 16 | fdk-aac 17 | libfdk-aac 18 | PATHS 19 | /usr/lib64/fdk-aac 20 | /usr/local/lib/fdk-aac 21 | ) 22 | 23 | IF (FDKAAC_INCLUDE_DIRS AND FDKAAC_LIBRARIES) 24 | SET(FDKAAC_FOUND TRUE) 25 | ENDIF (FDKAAC_INCLUDE_DIRS AND FDKAAC_LIBRARIES) 26 | 27 | IF (FDKAAC_FOUND) 28 | IF (NOT FDKAAC_FIND_QUIETLY) 29 | MESSAGE (STATUS "Found fdkaac: ${FDKAAC_LIBRARY}") 30 | ENDIF (NOT FDKAAC_FIND_QUIETLY) 31 | ELSE (FDKAAC_FOUND) 32 | IF (FDKAAC_FIND_REQUIRED) 33 | MESSAGE (FATAL_ERROR "Could not find fdkaac") 34 | ENDIF (FDKAAC_FIND_REQUIRED) 35 | ENDIF (FDKAAC_FOUND) 36 | -------------------------------------------------------------------------------- /cmake/Modules/FindFFTW3f.cmake: -------------------------------------------------------------------------------- 1 | # http://tim.klingt.org/code/projects/supernova/repository/revisions/d336dd6f400e381bcfd720e96139656de0c53b6a/entry/cmake_modules/FindFFTW3f.cmake 2 | # Modified to use pkg config and use standard var names 3 | 4 | # Find single-precision (float) version of FFTW3 5 | 6 | INCLUDE(FindPkgConfig) 7 | PKG_CHECK_MODULES(PC_FFTW3F "fftw3f >= 3.0") 8 | 9 | FIND_PATH( 10 | FFTW3F_INCLUDE_DIRS 11 | NAMES fftw3.h 12 | HINTS $ENV{FFTW3_DIR}/include 13 | ${PC_FFTW3F_INCLUDE_DIR} 14 | PATHS /usr/local/include 15 | /usr/include 16 | ) 17 | 18 | FIND_LIBRARY( 19 | FFTW3F_LIBRARIES 20 | NAMES fftw3f libfftw3f 21 | HINTS $ENV{FFTW3_DIR}/lib 22 | ${PC_FFTW3F_LIBDIR} 23 | PATHS /usr/local/lib 24 | /usr/lib 25 | /usr/lib64 26 | ) 27 | 28 | FIND_LIBRARY( 29 | FFTW3F_THREADS_LIBRARIES 30 | NAMES fftw3f_threads libfftw3f_threads 31 | HINTS $ENV{FFTW3_DIR}/lib 32 | ${PC_FFTW3F_LIBDIR} 33 | PATHS /usr/local/lib 34 | /usr/lib 35 | /usr/lib64 36 | ) 37 | 38 | 39 | INCLUDE(FindPackageHandleStandardArgs) 40 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFTW3F DEFAULT_MSG FFTW3F_LIBRARIES FFTW3F_INCLUDE_DIRS) 41 | MARK_AS_ADVANCED(FFTW3F_LIBRARIES FFTW3F_INCLUDE_DIRS FFTW3F_THREADS_LIBRARIES) -------------------------------------------------------------------------------- /cmake/Modules/FindFaad.cmake: -------------------------------------------------------------------------------- 1 | # Try to find FAAD library and include path. 2 | # Once done this will define 3 | # 4 | # FAAD_INCLUDE_DIRS - where to find faad.h, etc. 5 | # FAAD_LIBRARIES - List of libraries when using libfaad. 6 | # FAAD_FOUND - True if libfaad_drm found. 7 | 8 | find_path(FAAD_INCLUDE_DIR faad.h DOC "The directory where faad.h resides") 9 | find_library(FAAD_LIBRARY NAMES faad DOC "The libfaad library") 10 | 11 | if(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 12 | set(FAAD_FOUND 1) 13 | set(FAAD_LIBRARIES ${FAAD_LIBRARY}) 14 | set(FAAD_INCLUDE_DIRS ${FAAD_INCLUDE_DIR}) 15 | else(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 16 | set(FAAD_FOUND 0) 17 | set(FAAD_LIBRARIES) 18 | set(FAAD_INCLUDE_DIRS) 19 | endif(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 20 | 21 | mark_as_advanced(FAAD_INCLUDE_DIR) 22 | mark_as_advanced(FAAD_LIBRARY) 23 | mark_as_advanced(FAAD_FOUND) 24 | 25 | if(NOT FAAD_FOUND) 26 | set(FAAD_DIR_MESSAGE "libfaad_drm was not found. Make sure FAAD_LIBRARY and FAAD_INCLUDE_DIR are set.") 27 | if(NOT FAAD_FIND_QUIETLY) 28 | message(STATUS "${FAAD_DIR_MESSAGE}") 29 | else(NOT FAAD_FIND_QUIETLY) 30 | if(FAAD_FIND_REQUIRED) 31 | message(FATAL_ERROR "${FAAD_DIR_MESSAGE}") 32 | endif(FAAD_FIND_REQUIRED) 33 | endif(NOT FAAD_FIND_QUIETLY) 34 | endif(NOT FAAD_FOUND) 35 | -------------------------------------------------------------------------------- /cmake/Modules/FindFaadDRM.cmake: -------------------------------------------------------------------------------- 1 | # Try to find FAAD library and include path. 2 | # Once done this will define 3 | # 4 | # FAAD_INCLUDE_DIRS - where to find faad.h, etc. 5 | # FAAD_LIBRARIES - List of libraries when using libfaad. 6 | # FAAD_FOUND - True if libfaad_drm found. 7 | 8 | find_path(FAAD_INCLUDE_DIR faad.h DOC "The directory where faad.h resides") 9 | find_library(FAAD_LIBRARY NAMES faad_drm DOC "The libfaad library") 10 | 11 | if(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 12 | set(FAAD_FOUND 1) 13 | set(FAAD_LIBRARIES ${FAAD_LIBRARY}) 14 | set(FAAD_INCLUDE_DIRS ${FAAD_INCLUDE_DIR}) 15 | MESSAGE (STATUS "Found Libfaad_drm: ${FAAD_LIBRARY}") 16 | else(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 17 | set(FAAD_FOUND 0) 18 | set(FAAD_LIBRARIES) 19 | set(FAAD_INCLUDE_DIRS) 20 | endif(FAAD_INCLUDE_DIR AND FAAD_LIBRARY) 21 | 22 | mark_as_advanced(FAAD_INCLUDE_DIR) 23 | mark_as_advanced(FAAD_LIBRARY) 24 | mark_as_advanced(FAAD_FOUND) 25 | 26 | if(NOT FAAD_FOUND) 27 | set(FAAD_DIR_MESSAGE "libfaad_drm was not found. Make sure FAAD_LIBRARY and FAAD_INCLUDE_DIR are set.") 28 | if(NOT FAAD_FIND_QUIETLY) 29 | message(STATUS "${FAAD_DIR_MESSAGE}") 30 | else(NOT FAAD_FIND_QUIETLY) 31 | if(FAAD_FIND_REQUIRED) 32 | message(FATAL_ERROR "${FAAD_DIR_MESSAGE}") 33 | endif(FAAD_FIND_REQUIRED) 34 | endif(NOT FAAD_FIND_QUIETLY) 35 | endif(NOT FAAD_FOUND) 36 | -------------------------------------------------------------------------------- /cmake/Modules/FindLSBId.cmake: -------------------------------------------------------------------------------- 1 | # Set a variable to determine which Linux distribution is being used. 2 | # Debian packages things differently to Fedora (which is standard). 3 | # 4 | # This module sets the variable: 5 | # 6 | # LSB_ID_SHORT – the short name of the Linux distribution or unknown. 7 | 8 | set(LSB_ID_SHORT "unknown") 9 | 10 | find_program(LSB_RELEASE lsb_release) 11 | if(LSB_RELEASE) 12 | execute_process(COMMAND ${LSB_RELEASE} -is 13 | OUTPUT_VARIABLE LSB_ID_SHORT 14 | OUTPUT_STRIP_TRAILING_WHITESPACE 15 | ) 16 | endif() 17 | -------------------------------------------------------------------------------- /cmake/Modules/FindLibAIRSPY.cmake: -------------------------------------------------------------------------------- 1 | if(NOT LIBAIRSPY_FOUND) 2 | 3 | pkg_check_modules (LIBAIRSPY_PKG libairspy) 4 | find_path(LIBAIRSPY_INCLUDE_DIR NAMES libairspy/airspy.h 5 | PATHS 6 | ${LIBAIRSPY_PKG_INCLUDE_DIRS} 7 | /usr/include 8 | /usr/local/include 9 | ) 10 | 11 | find_library(LIBAIRSPY_LIBRARIES NAMES airspy 12 | PATHS 13 | ${LIBAIRSPY_PKG_LIBRARY_DIRS} 14 | /usr/lib 15 | /usr/local/lib 16 | ) 17 | 18 | if(LIBAIRSPY_INCLUDE_DIR AND LIBAIRSPY_LIBRARIES) 19 | set(LIBAIRSPY_FOUND TRUE CACHE INTERNAL "libairspy found") 20 | message(STATUS "Found libairspy: ${LIBAIRSPY_INCLUDE_DIR}, ${LIBAIRSPY_LIBRARIES}") 21 | else(LIBAIRSPY_INCLUDE_DIR AND LIBAIRSPY_LIBRARIES) 22 | set(LIBAIRSPY_FOUND FALSE CACHE INTERNAL "libairspy found") 23 | message(STATUS "libairspy not found.") 24 | endif(LIBAIRSPY_INCLUDE_DIR AND LIBAIRSPY_LIBRARIES) 25 | 26 | mark_as_advanced(LIBAIRSPY_INCLUDE_DIR LIBAIRSPY_LIBRARIES) 27 | 28 | endif(NOT LIBAIRSPY_FOUND) 29 | -------------------------------------------------------------------------------- /cmake/Modules/FindLibRTLSDR.cmake: -------------------------------------------------------------------------------- 1 | if(NOT LIBRTLSDR_FOUND) 2 | 3 | pkg_check_modules (LIBRTLSDR_PKG librtlsdr) 4 | find_path(LIBRTLSDR_INCLUDE_DIR NAMES rtl-sdr.h 5 | PATHS 6 | ${LIBRTLSDR_PKG_INCLUDE_DIRS} 7 | /usr/include 8 | /usr/local/include 9 | ) 10 | 11 | find_library(LIBRTLSDR_LIBRARIES NAMES rtlsdr 12 | PATHS 13 | ${LIBRTLSDR_PKG_LIBRARY_DIRS} 14 | /usr/lib 15 | /usr/local/lib 16 | ) 17 | 18 | if(LIBRTLSDR_INCLUDE_DIR AND LIBRTLSDR_LIBRARIES) 19 | set(LIBRTLSDR_FOUND TRUE CACHE INTERNAL "librtlsdr found") 20 | message(STATUS "Found librtlsdr: ${LIBRTLSDR_INCLUDE_DIR}, ${LIBRTLSDR_LIBRARIES}") 21 | else(LIBRTLSDR_INCLUDE_DIR AND LIBRTLSDR_LIBRARIES) 22 | set(LIBRTLSDR_FOUND FALSE CACHE INTERNAL "librtlsdr found") 23 | message(STATUS "librtlsdr not found.") 24 | endif(LIBRTLSDR_INCLUDE_DIR AND LIBRTLSDR_LIBRARIES) 25 | 26 | mark_as_advanced(LIBRTLSDR_INCLUDE_DIR LIBRTLSDR_LIBRARIES) 27 | 28 | endif(NOT LIBRTLSDR_FOUND) 29 | -------------------------------------------------------------------------------- /cmake/Modules/FindLibSampleRate.cmake: -------------------------------------------------------------------------------- 1 | # Find libsamplerate 2 | 3 | FIND_PATH(LIBSAMPLERATE_INCLUDE_DIR samplerate.h) 4 | 5 | SET(LIBSAMPLERATE_NAMES ${LIBSAMPLERATE_NAMES} samplerate libsamplerate) 6 | FIND_LIBRARY(LIBSAMPLERATE_LIBRARY NAMES ${LIBSAMPLERATE_NAMES} PATH) 7 | 8 | IF (LIBSAMPLERATE_INCLUDE_DIR AND LIBSAMPLERATE_LIBRARY) 9 | SET(LIBSAMPLERATE_FOUND TRUE) 10 | ENDIF (LIBSAMPLERATE_INCLUDE_DIR AND LIBSAMPLERATE_LIBRARY) 11 | 12 | IF (LIBSAMPLERATE_FOUND) 13 | IF (NOT LibSampleRate_FIND_QUIETLY) 14 | MESSAGE (STATUS "Found LibSampleRate: ${LIBSNDFILE_LIBRARY}") 15 | ENDIF (NOT LibSampleRate_FIND_QUIETLY) 16 | ELSE (LIBSAMPLERATE_FOUND) 17 | IF (LibSampleRate_FIND_REQUIRED) 18 | MESSAGE (FATAL_ERROR "Could not find samplerate") 19 | ENDIF (LibSampleRate_FIND_REQUIRED) 20 | ENDIF (LIBSAMPLERATE_FOUND) 21 | -------------------------------------------------------------------------------- /cmake/Modules/FindLibSndFile.cmake: -------------------------------------------------------------------------------- 1 | # Find libsndfile 2 | 3 | FIND_PATH(LIBSNDFILE_INCLUDE_DIR sndfile.h) 4 | 5 | SET(LIBSNDFILE_NAMES ${LIBSNDFILE_NAMES} sndfile libsndfile) 6 | FIND_LIBRARY(LIBSNDFILE_LIBRARY NAMES ${LIBSNDFILE_NAMES} PATH) 7 | 8 | IF (LIBSNDFILE_INCLUDE_DIR AND LIBSNDFILE_LIBRARY) 9 | SET(LIBSNDFILE_FOUND TRUE) 10 | ENDIF (LIBSNDFILE_INCLUDE_DIR AND LIBSNDFILE_LIBRARY) 11 | 12 | IF (LIBSNDFILE_FOUND) 13 | IF (NOT LibSndFile_FIND_QUIETLY) 14 | MESSAGE (STATUS "Found LibSndFile: ${LIBSNDFILE_LIBRARY}") 15 | ENDIF (NOT LibSndFile_FIND_QUIETLY) 16 | ELSE (LIBSNDFILE_FOUND) 17 | IF (LibSndFile_FIND_REQUIRED) 18 | MESSAGE (FATAL_ERROR "Could not find sndfile") 19 | ENDIF (LibSndFile_FIND_REQUIRED) 20 | ENDIF (LIBSNDFILE_FOUND) 21 | -------------------------------------------------------------------------------- /cmake/Modules/FindPortaudio.cmake: -------------------------------------------------------------------------------- 1 | # - Try to find Portaudio 2 | # Once done this will define 3 | # 4 | # PORTAUDIO_FOUND - system has Portaudio 5 | # PORTAUDIO_INCLUDE_DIRS - the Portaudio include directory 6 | # PORTAUDIO_LIBRARIES - Link these to use Portaudio 7 | 8 | include(FindPkgConfig) 9 | pkg_check_modules(PC_PORTAUDIO portaudio-2.0) 10 | 11 | find_path(PORTAUDIO_INCLUDE_DIRS 12 | NAMES 13 | portaudio.h 14 | PATHS 15 | /usr/local/include 16 | /usr/include 17 | HINTS 18 | ${PC_PORTAUDIO_INCLUDEDIR} 19 | ) 20 | 21 | find_library(PORTAUDIO_LIBRARIES 22 | NAMES 23 | portaudio 24 | PATHS 25 | /usr/local/lib 26 | /usr/lib 27 | /usr/lib64 28 | HINTS 29 | ${PC_PORTAUDIO_LIBDIR} 30 | ) 31 | 32 | mark_as_advanced(PORTAUDIO_INCLUDE_DIRS PORTAUDIO_LIBRARIES) 33 | 34 | # Found PORTAUDIO, but it may be version 18 which is not acceptable. 35 | if(EXISTS ${PORTAUDIO_INCLUDE_DIRS}/portaudio.h) 36 | include(CheckCXXSourceCompiles) 37 | set(CMAKE_REQUIRED_INCLUDES_SAVED ${CMAKE_REQUIRED_INCLUDES}) 38 | set(CMAKE_REQUIRED_INCLUDES ${PORTAUDIO_INCLUDE_DIRS}) 39 | CHECK_CXX_SOURCE_COMPILES( 40 | "#include \nPaDeviceIndex pa_find_device_by_name(const char *name); int main () {return 0;}" 41 | PORTAUDIO2_FOUND) 42 | set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVED}) 43 | unset(CMAKE_REQUIRED_INCLUDES_SAVED) 44 | if(PORTAUDIO2_FOUND) 45 | INCLUDE(FindPackageHandleStandardArgs) 46 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(PORTAUDIO DEFAULT_MSG PORTAUDIO_INCLUDE_DIRS PORTAUDIO_LIBRARIES) 47 | else(PORTAUDIO2_FOUND) 48 | message(STATUS 49 | " portaudio.h not compatible (requires API 2.0)") 50 | set(PORTAUDIO_FOUND FALSE) 51 | endif(PORTAUDIO2_FOUND) 52 | endif() 53 | -------------------------------------------------------------------------------- /cmake/Modules/Findzlib.cmake: -------------------------------------------------------------------------------- 1 | # Find zlib 2 | 3 | FIND_PATH(ZLIB_INCLUDE_DIR zlib.h) 4 | 5 | SET(ZLIB_NAMES ${ZLIB_NAMES} libz z) 6 | FIND_LIBRARY(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} PATH) 7 | 8 | IF (ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY) 9 | SET(ZLIB_FOUND TRUE) 10 | ENDIF (ZLIB_INCLUDE_DIR AND ZLIB_LIBRARY) 11 | 12 | IF (ZLIB_FOUND) 13 | IF (NOT zlib_FIND_QUIETLY) 14 | MESSAGE (STATUS "Found zlib: ${ZLIBFILE_LIBRARY}") 15 | ENDIF (NOT zlib_FIND_QUIETLY) 16 | ELSE (ZLIB_FOUND) 17 | IF (zlib_FIND_REQUIRED) 18 | MESSAGE (FATAL_ERROR "Could not find zlib") 19 | ENDIF (zlib_FIND_REQUIRED) 20 | ENDIF (ZLIB_FOUND) 21 | -------------------------------------------------------------------------------- /cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 2 | message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 3 | endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 4 | 5 | file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 6 | string(REGEX REPLACE "\n" ";" files "${files}") 7 | foreach(file ${files}) 8 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}") 9 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 10 | exec_program( 11 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 12 | OUTPUT_VARIABLE rm_out 13 | RETURN_VALUE rm_retval 14 | ) 15 | if(NOT "${rm_retval}" STREQUAL 0) 16 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") 17 | endif(NOT "${rm_retval}" STREQUAL 0) 18 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 19 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.") 20 | endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 21 | endforeach(file) 22 | -------------------------------------------------------------------------------- /decimators/decimator.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "decimator.h" 3 | #include "virtual-decoder.h" 4 | 5 | decimator::decimator (int32_t inRate, int32_t outRate) { 6 | int err; 7 | this -> inRate = inRate; 8 | this -> outRate = outRate; 9 | 10 | inputLimit = inRate / 20; 11 | ratio = double(outRate) / inRate; 12 | outputLimit = inputLimit * ratio; 13 | // src_converter = src_new (SRC_SINC_BEST_QUALITY, 2, &err); 14 | src_converter = src_new (SRC_LINEAR, 2, &err); 15 | // src_converter = src_new (SRC_SINC_MEDIUM_QUALITY, 2, &err); 16 | src_data = new SRC_DATA; 17 | inBuffer = new float [2 * inputLimit + 20]; 18 | outBuffer = new float [2 * outputLimit + 20]; 19 | src_data-> data_in = inBuffer; 20 | src_data-> data_out = outBuffer; 21 | src_data-> src_ratio = ratio; 22 | src_data-> end_of_input = 0; 23 | inp = 0; 24 | } 25 | 26 | decimator::~decimator (void) { 27 | } 28 | 29 | int32_t decimator::inSize (void) { 30 | return inputLimit; 31 | } 32 | 33 | int32_t decimator::outSize (void) { 34 | return outputLimit; 35 | } 36 | 37 | bool decimator::add (std::complex val, std::complex *b) { 38 | int j; 39 | inBuffer [2 * inp] = real (val); 40 | inBuffer [2 * inp + 1] = imag (val); 41 | inp ++; 42 | if (inp < inputLimit) 43 | return false; 44 | 45 | src_data -> input_frames = inp; 46 | src_data -> output_frames = outputLimit + 10; 47 | int res = src_process (src_converter, src_data); 48 | inp = 0; 49 | int framesOut = src_data -> output_frames_gen; 50 | for (j = 0; j < framesOut; j ++) 51 | b [j] = std::complex (10 * outBuffer [2 * j], 52 | 10 * outBuffer [2 * j + 1]); 53 | return true; 54 | } 55 | 56 | -------------------------------------------------------------------------------- /decimators/decimator.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2014 .. 2017 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the SDR-J series. 8 | * Many of the ideas as implemented in the SDR-J are derived from 9 | * other work, made available through the (a) GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 | */ 25 | #ifndef __DECIMATOR__ 26 | #define __DECIMATOR__ 27 | 28 | #include 29 | #include 30 | #include "radio-constants.h" 31 | 32 | class decimator { 33 | public: 34 | decimator (int32_t, int32_t); 35 | ~decimator (void); 36 | bool add (std::complex, std::complex *); 37 | int32_t inSize (void); 38 | int32_t outSize (void); 39 | private: 40 | int32_t inRate; 41 | int32_t outRate; 42 | double ratio; 43 | int32_t outputLimit; 44 | int32_t inputLimit; 45 | SRC_STATE *src_converter; 46 | SRC_DATA *src_data; 47 | float *inBuffer; 48 | float *outBuffer; 49 | int32_t inp; 50 | }; 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /decoders/acars-decoder/acars-constants.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 3 | * Jan van Katwijk, lazy Chair Computing 4 | * 5 | * This code is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU Library General Public License version 2 7 | * published by the Free Software Foundation. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU Library General Public License for more details. 13 | */ 14 | #ifndef __ACARS_CONSTANTS__ 15 | #define __ACARS_CONSTANTS__ 16 | #define WORKING_RATE 12000 17 | 18 | #define NETLOG_PLANEPLOTTER 1 19 | #define NETLOG_NATIVE 2 20 | #define NETLOG_JSON 4 21 | #define ANY_NETOUT 07 22 | 23 | 24 | #define OUTTYPE_ONELINE 1 25 | #define OUTTYPE_STD 2 26 | #define OUTTYPE_MONITOR 4 27 | #define OUTTYPE_JSON 010 28 | #define ANY_OUTPUT 017 29 | #endif 30 | 31 | -------------------------------------------------------------------------------- /decoders/cw-decoder-ok/slidingfft.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2008, 2009, 2010, 2017, 2018 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * sw-radio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with sw-radio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __SLIDING_FFT__ 25 | #define __SLIDING_FFT__ 26 | 27 | #include "radio-constants.h" 28 | #include 29 | 30 | #define STABILIZER 0.9999 31 | /* 32 | * a sliding FFT 33 | */ 34 | 35 | class slidingFFT { 36 | public: 37 | slidingFFT (int32_t, int32_t, int32_t); 38 | ~slidingFFT (); 39 | void do_FFT (std::complex, 40 | std::complex *); 41 | std::complex getBin (int32_t); 42 | int32_t first (); 43 | private: 44 | std::vector> fftBase; 45 | std::vector> Bins; /* this is where it happens */ 46 | std::vector> Past; 47 | float Corrector; 48 | int32_t FFTlen; 49 | int32_t First; 50 | int32_t Last; 51 | int32_t Amount; 52 | int32_t Ptr; 53 | }; 54 | 55 | #endif 56 | 57 | -------------------------------------------------------------------------------- /decoders/cw-decoder/slidingfft.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2008, 2009, 2010, 2017, 2018 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * sw-radio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with sw-radio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __SLIDING_FFT__ 25 | #define __SLIDING_FFT__ 26 | 27 | #include "radio-constants.h" 28 | #include 29 | 30 | #define STABILIZER 0.9999 31 | /* 32 | * a sliding FFT 33 | */ 34 | 35 | class slidingFFT { 36 | public: 37 | slidingFFT (int32_t, int32_t, int32_t); 38 | ~slidingFFT (); 39 | void do_FFT (std::complex, 40 | std::complex *); 41 | std::complex getBin (int32_t); 42 | int32_t first (); 43 | void reset (); 44 | private: 45 | std::vector> fftBase; 46 | std::vector> Bins; /* this is where it happens */ 47 | std::vector> Past; 48 | float Corrector; 49 | int32_t FFTlen; 50 | int32_t First; 51 | int32_t Last; 52 | int32_t Amount; 53 | int32_t Ptr; 54 | }; 55 | 56 | #endif 57 | 58 | -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.dll -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.dll.recipe: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | C:\Users\JvanK\Source\Repos\plugins\SDRunoPlugin_drm\Release\SDRunoPlugin_drm.dll 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.exp -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.iobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.iobj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.lib -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.pdb -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.res -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/SDRunoPlugin_drm.lastbuildstate: -------------------------------------------------------------------------------- 1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.18362.0: 2 | Release|Win32|C:\Users\JvanK\Source\Repos\plugins\SDRunoPlugin_drm\| 3 | -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/SDRunoPlugin_drm.write.1u.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/SDRunoPlugin_drm.write.1u.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.command.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.read.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drm.tlog/rc.write.1.tlog -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drm.vcxproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\JvanK\Source\Repos\plugins\SDRunoPlugin_drm\Release\SDRunoPlugin_drm.dll 2 | -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drmForm.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drmForm.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drmProject.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drmProject.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/SDRunoPlugin_drmUi.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/SDRunoPlugin_drmUi.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/aac-processor-faad.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/aac-processor-faad.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/backend-controller.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/backend-controller.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/basics.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/basics.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/checkcrc.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/checkcrc.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/correlator.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/correlator.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/data-processor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/data-processor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/decimator-25.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/decimator-25.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/deinterleaver.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/deinterleaver.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/dllmain.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/dllmain.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/drm-bandfilter.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/drm-bandfilter.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/drm-shifter.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/drm-shifter.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/equalizer-1.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/equalizer-1.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/equalizer-base.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/equalizer-base.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/estimator-1.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/estimator-1.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/fac-processor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/fac-processor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/fac-tables.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/fac-tables.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/fft-complex.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/fft-complex.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/freqsyncer.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/freqsyncer.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/lowpassfilter.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/lowpassfilter.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/lowpassfir.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/lowpassfir.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/mapper.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/mapper.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/matrix2.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/matrix2.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/mer16-values.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/mer16-values.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/mer4-values.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/mer4-values.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/mer64-values.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/mer64-values.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/message-processor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/message-processor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/msc-handler-qam16.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/msc-handler-qam16.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/msc-handler-qam64.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/msc-handler-qam64.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/msc-handler.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/msc-handler.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/msc-processor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/msc-processor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/msc-streamer.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/msc-streamer.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/prbs.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/prbs.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/protlevels.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/protlevels.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/puncture-tables.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/puncture-tables.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/qam16-metrics.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/qam16-metrics.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/qam4-metrics.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/qam4-metrics.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/qam64-metrics.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/qam64-metrics.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/reader.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/reader.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/referenceframe.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/referenceframe.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/sdc-processor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/sdc-processor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/sdc-streamer.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/sdc-streamer.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/state-descriptor.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/state-descriptor.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/timesync.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/timesync.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/up-filter.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/up-filter.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/utilities.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/utilities.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/vc142.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/vc142.pdb -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/viterbi-drm.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/viterbi-drm.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/Release/word-collector.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/Release/word-collector.obj -------------------------------------------------------------------------------- /decoders/drm-decoder/data/lowpassfir.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __LOWPASS_FILTER_H 25 | #define __LOWPASS_FILTER_H 26 | 27 | #include 28 | #include 29 | 30 | class lowpassFIR { 31 | public: 32 | lowpassFIR (int16_t firsize, 33 | int32_t Fc, int32_t fs); 34 | ~lowpassFIR (); 35 | std::complex Pass (std::complex); 36 | private: 37 | std::vector> kernel; 38 | std::vector> buffer; 39 | int filterSize; 40 | int ip; 41 | int sampleRate; 42 | }; 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /decoders/drm-decoder/data/message-processor.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __MESSAGE_PROCESSOR__ 25 | #define __MESSAGE_PROCESSOR__ 26 | 27 | #include 28 | #include 29 | #include 30 | #include "basics.h" 31 | 32 | class drmDecoder; 33 | class DRM_aacDecoder; 34 | 35 | class messageProcessor: public QObject { 36 | Q_OBJECT 37 | public: 38 | messageProcessor (drmDecoder *); 39 | ~messageProcessor (); 40 | void processMessage (uint8_t *, int16_t); 41 | private: 42 | drmDecoder *m_form; 43 | uint8_t messageState; 44 | bool check_CRC (uint8_t *v, int16_t cnt); 45 | void addSegment (uint8_t *v, int16_t cnt); 46 | void setBit (uint8_t *v, int16_t ind, uint8_t bit); 47 | int16_t byteCount; 48 | int16_t byteTeller; 49 | uint8_t theMessage [24]; 50 | std::string myMessage; 51 | signals: 52 | void set_messageLabel (const QString &); 53 | }; 54 | 55 | #endif 56 | 57 | -------------------------------------------------------------------------------- /decoders/drm-decoder/data/up-filter.h: -------------------------------------------------------------------------------- 1 | # 2 | #ifndef __UP_FILTER_H 3 | #define __UP_FILTER_H 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | class upFilter { 11 | std::vector> kernel; 12 | std::vector> buffer; 13 | int ip; 14 | int order; 15 | int bufferSize; 16 | int multiplier; 17 | public: 18 | upFilter (int, int, int); 19 | ~upFilter (); 20 | void Filter (std::complex, std::complex *); 21 | }; 22 | #endif 23 | 24 | -------------------------------------------------------------------------------- /decoders/drm-decoder/drm-bandfilter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRuno drm decoder 8 | * 9 | * drm decoder is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm decoder is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm decoder; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __BANDPASS_FILTER_H 25 | #define __BANDPASS_FILTER_H 26 | 27 | #include "basics.h" 28 | #include 29 | #include 30 | 31 | class drmBandfilter { 32 | public: 33 | drmBandfilter (int16_t, int32_t, int32_t); 34 | ~drmBandfilter (); 35 | std::complex Pass (std::complex); 36 | void modulate (int); 37 | int offset (); 38 | private: 39 | std::vector filterBase; 40 | std::vector> filterKernel; 41 | std::vector> Buffer; 42 | int sampleRate; 43 | int ip; 44 | int filterSize; 45 | int centerFreq; 46 | }; 47 | 48 | #endif 49 | 50 | -------------------------------------------------------------------------------- /decoders/drm-decoder/drm-decoder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/drm-decoder.png -------------------------------------------------------------------------------- /decoders/drm-decoder/drm-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/drm-widget.png -------------------------------------------------------------------------------- /decoders/drm-decoder/equalizer/estimator-1.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | # 25 | #ifndef __ESTIMATOR_1__ 26 | #define __ESTIMATOR_1__ 27 | 28 | #include "referenceframe.h" 29 | 30 | 31 | // The processor for estimating the channel(s) of a single 32 | // symbol 33 | class estimator_1 { 34 | public: 35 | estimator_1 (std::complex **, 36 | uint8_t, uint8_t, int16_t); 37 | ~estimator_1 (); 38 | void estimate (std::complex *, 39 | std::complex *); 40 | private: 41 | std::complex **refFrame; 42 | uint8_t Mode; 43 | uint8_t Spectrum; 44 | int16_t refSymbol; 45 | int16_t K_min; 46 | int16_t K_max; 47 | int16_t indexFor (int16_t); 48 | int16_t getnrPilots (int16_t); 49 | }; 50 | 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /decoders/drm-decoder/equalizer/matrix2.h: -------------------------------------------------------------------------------- 1 | // 2 | // source: 3 | // http://bbs.dartmouth.edu/~fangq/MATH/download/source/inverse_c.htm 4 | // inverse.c 5 | // Source Code for "GRPP, A Scientific Programming Language 6 | // Processor Designed for Lex and Yacc." 7 | // Author: James Kent Blackburn 8 | // Goddard Space Flight Center, Code 664.0, Greenbelt, MD. 20771 9 | // Computers in Physics, Journal Section, Jan/Feb 1994 10 | 11 | /* 12 | Matrix Inversion using 13 | LU Decomposition from 14 | Numerical Recipes in C 15 | Chapter 2 16 | */ 17 | #ifndef __MATRIX_INVERSION_C 18 | #define __MATRIX_INVERSION_C 19 | 20 | #include 21 | #include 22 | #include 23 | #include 24 | #define TINY 1.0e-20 25 | 26 | void inverse (float**,int); 27 | int gjinv (float **aa, int n, float **bb); 28 | void inverseOfMatrix (double** M, int order); 29 | void multMC (std::complex **Left, 30 | std::complex **Right, 31 | std::complex ** Out, int order); 32 | 33 | void C_inverse (std::complex **M, int order); 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /decoders/drm-decoder/equalizer/matrix2.h-old: -------------------------------------------------------------------------------- 1 | // 2 | // source: 3 | // http://bbs.dartmouth.edu/~fangq/MATH/download/source/inverse_c.htm 4 | // inverse.c 5 | // Source Code for "GRPP, A Scientific Programming Language 6 | // Processor Designed for Lex and Yacc." 7 | // Author: James Kent Blackburn 8 | // Goddard Space Flight Center, Code 664.0, Greenbelt, MD. 20771 9 | // Computers in Physics, Journal Section, Jan/Feb 1994 10 | 11 | /* 12 | Matrix Inversion using 13 | LU Decomposition from 14 | Numerical Recipes in C 15 | Chapter 2 16 | */ 17 | #ifndef __MATRIX_INVERSION 18 | #define __MATRIX_INVERSION 19 | 20 | #include "basics.h" 21 | #include 22 | #include 23 | #include 24 | 25 | #define TINY 1.0e-20 26 | 27 | void inverse (float**,int); 28 | void ludcmp (float**, int, int*, float*); 29 | void lubksb (float**, int, int*, float*); 30 | float** matrix (int,int,int,int); 31 | float* vector (int,int); 32 | void free_matrix(float**,int,int,int,int); 33 | void free_vector(float*,int,int); 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /decoders/drm-decoder/equalizer/referenceframe.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __REFERENCE_FRAME__ 25 | #define __REFERENCE_FRAME__ 26 | 27 | #include "basics.h" 28 | #include 29 | #include 30 | 31 | 32 | #ifndef M_PI 33 | # define M_PI 3.14159265358979323846 /* pi */ 34 | #endif 35 | 36 | bool isTimeCell (uint8_t, int16_t, int16_t); 37 | bool isPilotCell (uint8_t, int16_t, int16_t); 38 | bool isBoostCell (uint8_t, uint8_t, int16_t); 39 | bool isFreqCell (uint8_t, int16_t, int16_t); 40 | std::complex getFreqRef (uint8_t, int16_t, int16_t); 41 | std::complex getTimeRef (uint8_t, int16_t, int16_t); 42 | std::complex getGainRef (uint8_t, int16_t, int16_t); 43 | std::complex getPilotValue (uint8_t, uint8_t, int16_t, int16_t); 44 | float init_gain_ref_cells (int16_t *cells_k, 45 | std::complex *cells_v, int16_t *cnt); 46 | #endif 47 | 48 | 49 | -------------------------------------------------------------------------------- /decoders/drm-decoder/fac/fac-tables.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | // Tables for fac entries. To be used ONLY in frameprocessor 24 | #ifndef __FAC_TABLES 25 | #define __FAC_TABLES 26 | 27 | #include 28 | struct facElement { 29 | int16_t symbol; 30 | int16_t carrier; 31 | }; 32 | 33 | struct facElement *getFacTableforMode (uint8_t Mode); 34 | #endif 35 | 36 | -------------------------------------------------------------------------------- /decoders/drm-decoder/libfaad_drm-2.def: -------------------------------------------------------------------------------- 1 | 2 | EXPORTS 3 | ; 4 | ; from libfaad_drm-2.dll 5 | ; 6 | NeAACDecAudioSpecificConfig @1 7 | NeAACDecClose @2 8 | NeAACDecDecode @3 9 | NeAACDecDecode2 @4 10 | NeAACDecGetCapabilities @5 11 | NeAACDecGetCurrentConfiguration @6 12 | NeAACDecGetErrorMessage @7 13 | NeAACDecGetVersion @8 14 | NeAACDecInit @9 15 | NeAACDecInit2 @10 16 | NeAACDecInitDRM @11 17 | NeAACDecOpen @12 18 | NeAACDecPostSeekReset @13 19 | NeAACDecSetConfiguration @14 -------------------------------------------------------------------------------- /decoders/drm-decoder/libfaad_drm-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/libfaad_drm-2.dll -------------------------------------------------------------------------------- /decoders/drm-decoder/libfaad_drm-2.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/libfaad_drm-2.exp -------------------------------------------------------------------------------- /decoders/drm-decoder/libfaad_drm-2.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/libfaad_drm-2.lib -------------------------------------------------------------------------------- /decoders/drm-decoder/lowpassfilter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRuno drm plugin 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation as version 2 of the License. 12 | * 13 | * drm plugin is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with drm plugin; if not, write to the Free Software 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 | */ 22 | 23 | #ifndef __LOWPASSPILTER_H 24 | #define __LOWPASSFILTER_H 25 | 26 | #include 27 | #include 28 | 29 | class LowPassFIR { 30 | public: 31 | LowPassFIR (int16_t filterSize, 32 | int32_t Fc, 33 | int32_t sampleRate); 34 | ~LowPassFIR (); 35 | std::complex Pass (std::complex z); 36 | private: 37 | std::vector> filterKernel; 38 | std::vector> Buffer; 39 | int filterSize; 40 | int sampleRate; 41 | int ip; 42 | }; 43 | #endif 44 | 45 | -------------------------------------------------------------------------------- /decoders/drm-decoder/msc/msc-handler.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | // 25 | // the real msc work is to be done by descendants of the mscHandler 26 | // 27 | #include "msc-handler.h" 28 | #include "state-descriptor.h" 29 | #include "drm-decoder.h" 30 | 31 | mscHandler::mscHandler (drmDecoder *m, 32 | stateDescriptor *theState) { 33 | this -> m_form = m; 34 | this -> theState = theState; 35 | muxLength = theState -> mscCells / 3; 36 | } 37 | 38 | mscHandler::~mscHandler (void) { 39 | } 40 | 41 | void mscHandler::process (theSignal *v, uint8_t * o) { 42 | (void)v; (void)o; 43 | } 44 | 45 | 46 | -------------------------------------------------------------------------------- /decoders/drm-decoder/msc/msc-handler.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __MSC_HANDLERS__ 25 | #define __MSC_HANDLERS__ 26 | 27 | #include "basics.h" 28 | #include 29 | 30 | class stateDescriptor; 31 | class prbs; 32 | class drmDecoder; 33 | 34 | // 35 | // empty base class for the different msc Handlers 36 | 37 | class mscHandler { 38 | public: 39 | mscHandler (drmDecoder *, stateDescriptor *); 40 | virtual ~mscHandler (); 41 | virtual void process (theSignal *, uint8_t *); 42 | protected: 43 | stateDescriptor *theState; 44 | int16_t muxLength; 45 | prbs* thePRBS; 46 | drmDecoder *m_form; 47 | }; 48 | #endif 49 | 50 | -------------------------------------------------------------------------------- /decoders/drm-decoder/ofdm/correlator.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoplugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __CORRELATOR__ 25 | #define __CORRELATOR__ 26 | 27 | #include 28 | #include 29 | #include 30 | #include "basics.h" 31 | 32 | struct workCells { 33 | int16_t index; 34 | int16_t phase; 35 | }; 36 | 37 | class correlator { 38 | public: 39 | correlator (smodeInfo *s); 40 | ~correlator (); 41 | void correlate (std::complex *, int); 42 | int maxIndex (); 43 | void cleanUp (); 44 | bool bestIndex (int); 45 | private: 46 | uint8_t theMode; 47 | uint8_t theSpectrum; 48 | std::vector corrTable; 49 | struct workCells *refTable; 50 | int Tu; 51 | int K_min; 52 | }; 53 | #endif 54 | 55 | -------------------------------------------------------------------------------- /decoders/drm-decoder/ofdm/timesync.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRuno plugin for drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __TIMESYNC__ 25 | #define __TIMESYNC__ 26 | 27 | #include "basics.h" 28 | #include "ringbuffer.h" 29 | #include "reader.h" 30 | 31 | class timeSyncer { 32 | public: 33 | timeSyncer (Reader *, int32_t, int16_t); 34 | ~timeSyncer (void); 35 | void getMode (smodeInfo *); 36 | private: 37 | void compute_gammaRelative (uint8_t mode, 38 | DRM_FLOAT *gammaRelative, 39 | DRM_FLOAT *Epsilon, 40 | int16_t *Offsets); 41 | 42 | Reader *theReader; 43 | int32_t sampleRate; 44 | int16_t nrSymbols; 45 | }; 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /decoders/drm-decoder/parameters/puncture-tables.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J (JSDR). 8 | * SDR-J is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * SDR-J is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with SDR-J; if not, write to the Free Software 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 | */ 22 | # 23 | #ifndef __PUNCTURE_TABLES 24 | #define __PUNCTURE_TABLES 25 | 26 | #include 27 | 28 | 29 | class punctureTables { 30 | public: 31 | punctureTables (void); 32 | ~punctureTables (void); 33 | 34 | uint8_t *getPunctureTable (uint8_t, uint8_t); 35 | uint8_t *getResiduTable (uint8_t, uint8_t, int16_t); 36 | int16_t getResiduBits (uint8_t, uint8_t, int16_t); 37 | }; 38 | 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /decoders/drm-decoder/rate-converter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the DRM+ Decoder 8 | * 9 | * DRM+ Decoder is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * DRM+ Decoder is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with DRM+ Decoder; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __RATE_CONVERTER__ 24 | #define __RATE_CONVERTER__ 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include "radio-constants.h" 33 | 34 | class rateConverter { 35 | private: 36 | int32_t inRate; 37 | int32_t outRate; 38 | double ratio; 39 | int32_t outputLimit; 40 | int32_t inputLimit; 41 | SRC_STATE *converter; 42 | SRC_DATA *src_data; 43 | float *inBuffer; 44 | float *outBuffer; 45 | int32_t inp; 46 | public: 47 | rateConverter (int32_t inRate, int32_t outRate, 48 | int32_t inSize); 49 | 50 | ~rateConverter (void); 51 | 52 | bool convert (std::complex v, 53 | std::complex *out, int32_t *amount); 54 | 55 | int32_t getOutputsize (void); 56 | }; 57 | 58 | #endif 59 | 60 | -------------------------------------------------------------------------------- /decoders/drm-decoder/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by AudioRecorderPlugin.rc 4 | // 5 | #define IDB_BG_BORDER 104 6 | #define IDB_BACKGROUND 106 7 | #define IDB_CLOSE 107 8 | #define IDB_CLOSE_DOWN 108 9 | #define IDB_MIN 109 10 | #define IDB_MIN_DOWN 110 11 | #define IDB_SETT 112 12 | #define IDB_SETT_DOWN 113 13 | #define IDB_BITMAP1 114 14 | #define IDB_HEADER 114 15 | 16 | // Next default values for new objects 17 | // 18 | #ifdef APSTUDIO_INVOKED 19 | #ifndef APSTUDIO_READONLY_SYMBOLS 20 | #define _APS_NEXT_RESOURCE_VALUE 115 21 | #define _APS_NEXT_COMMAND_VALUE 40001 22 | #define _APS_NEXT_CONTROL_VALUE 1001 23 | #define _APS_NEXT_SYMED_VALUE 101 24 | #endif 25 | #endif 26 | -------------------------------------------------------------------------------- /decoders/drm-decoder/sdc/sdc-include.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J (JSDR). 8 | * SDR-J is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * SDR-J is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with SDR-J; if not, write to the Free Software 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 | * 22 | */ 23 | # 24 | // 25 | #ifndef __SDC_INCLUDE 26 | #define __SDC_INCLUDE 27 | #include 28 | 29 | static inline 30 | uint16_t get_SDCBits (uint8_t *v, int16_t offset, int16_t nr) { 31 | int16_t i; 32 | uint16_t res = 0; 33 | 34 | for (i = 0; i < nr; i ++) 35 | res = (res << 1) | (v [offset + i] & 01); 36 | 37 | return res; 38 | } 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /decoders/drm-decoder/sdc/sdc-streamer.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __SDC_STREAMER__ 25 | #define __SDC_STREAMER__ 26 | 27 | #include 28 | #include 29 | #include "basics.h" 30 | #include "puncture-tables.h" 31 | #include "viterbi-drm.h" 32 | 33 | class Mapper; 34 | 35 | class SDC_streamer { 36 | public: 37 | SDC_streamer (uint8_t, uint8_t, Mapper *, int16_t); 38 | ~SDC_streamer (void); 39 | void handle_stream (metrics *, uint8_t *, uint8_t *, bool); 40 | int16_t lengthOut (void); 41 | private: 42 | punctureTables pt; 43 | uint8_t *punctureTable; 44 | uint8_t *residuTable; 45 | int16_t punctureSize; 46 | viterbi_drm deconvolver; 47 | Mapper *demapper; 48 | uint8_t RX, RY; 49 | int16_t nrCells; 50 | int16_t outLength; 51 | int16_t deconvolveLength; 52 | int16_t residuBits; 53 | }; 54 | 55 | #endif 56 | 57 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/checkcrc.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing` 6 | * 7 | * This file is part of the SDRunoPLugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | # 25 | // Simple class for crc checking. 26 | // It is worthwhile to see whether we can include the 27 | // polynomes here 28 | // 29 | #ifndef __CHECK_CRC__ 30 | #define __CHECK_CRC__ 31 | 32 | #include 33 | #include 34 | 35 | class checkCRC { 36 | public: 37 | checkCRC (int16_t size, const uint16_t *polynome); 38 | ~checkCRC (void); 39 | bool doCRC (uint8_t *, int16_t); 40 | private: 41 | int16_t size; 42 | const uint16_t *polynome; 43 | }; 44 | 45 | #endif 46 | 47 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/deinterleaver.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __DEINTERLEAVER__ 25 | #define __DEINTERLEAVER__ 26 | 27 | #include 28 | #include "basics.h" 29 | #include "mapper.h" 30 | // 31 | // Since we have a "short" and a "long" 32 | // interleaver, we create an "mother" class 33 | // from which the two are derived 34 | // 35 | class deInterleaver { 36 | public: 37 | deInterleaver (int16_t); 38 | virtual ~deInterleaver (void); 39 | virtual void deInterleave (theSignal *, theSignal *); 40 | private: 41 | protected: 42 | int16_t Length; 43 | Mapper mapper; 44 | }; 45 | // 46 | 47 | class deInterleaver_long: public deInterleaver { 48 | public: 49 | deInterleaver_long (int16_t length, int16_t depth); 50 | ~deInterleaver_long (void); 51 | void deInterleave (theSignal *in, theSignal *out); 52 | private: 53 | int16_t depth; 54 | theSignal **buffer; 55 | }; 56 | #endif 57 | 58 | 59 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/drm-shifter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRuno drm decoder 8 | * 9 | * drm decoder is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm decoder is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm decoder; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __DRM_SHIFTER_H 25 | #define __DRM_SHIFTER_H 26 | #include 27 | #include "basics.h" 28 | 29 | class drmShifter { 30 | public: 31 | drmShifter (int32_t); 32 | ~drmShifter (void); 33 | std::complex 34 | do_shift (std::complex, int32_t); 35 | void do_shift (std::complex *, int32_t, int32_t); 36 | private: 37 | int32_t phase; 38 | int32_t tableSize; 39 | std::complex *table; 40 | }; 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/mapper.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | * 23 | */ 24 | # 25 | #ifndef __MAPPER__ 26 | #define __MAPPER__ 27 | # 28 | #include 29 | 30 | class Mapper { 31 | public: 32 | Mapper (int16_t size, int16_t key); 33 | ~Mapper (void); 34 | int16_t mapIn (int16_t a); 35 | private: 36 | int16_t *mapperTable; 37 | }; 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/mer16-values.h: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the drm receover and is based on 8 | * parts of the file "Metrics.cpp" of the dream software. 9 | * All rights are acknowledged. 10 | * 11 | * drm receiver is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * drm receiver is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with SDR-J; if not, write to the Free Software 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 | */ 25 | # 26 | #ifndef __MER16_COMPUTE__ 27 | #define __MER16_COMPUTE__ 28 | 29 | #include "basics.h" 30 | 31 | class mer16_compute { 32 | public: 33 | mer16_compute (); 34 | ~mer16_compute (); 35 | DRM_FLOAT computemer (theSignal *signalVector, 36 | int32_t amount); 37 | }; 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/mer4-values.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2020 3 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 4 | * Lazy Chair Computing 5 | * 6 | * This file is part of the drm receover and is based on 7 | * parts of the file "Metrics.cpp" of the dream software. 8 | * All rights are acknowledged. 9 | * 10 | * drm receiver is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * drm receiver is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with SDR-J; if not, write to the Free Software 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 | */ 24 | # 25 | #ifndef __MER4_COMPUTE__ 26 | #define __MER4_COMPUTE__ 27 | 28 | #include "basics.h" 29 | 30 | class mer4_compute { 31 | public: 32 | mer4_compute (); 33 | ~mer4_compute (); 34 | DRM_FLOAT computemer (theSignal *signalVector, 35 | int32_t amount); 36 | }; 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/mer64-values.h: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the drm receover and is based on 8 | * parts of the file "Metrics.cpp" of the dream software. 9 | * All rights are acknowledged. 10 | * 11 | * drm receiver is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * drm receiver is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with SDR-J; if not, write to the Free Software 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 | */ 25 | # 26 | #ifndef __MER64_COMPUTE__ 27 | #define __MER64_COMPUTE__ 28 | 29 | #include "basics.h" 30 | 31 | class mer64_compute { 32 | public: 33 | mer64_compute (); 34 | ~mer64_compute (); 35 | DRM_FLOAT computemer (theSignal *signalVector, 36 | int32_t amount); 37 | }; 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/prbs.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #include "prbs.h" 25 | #include 26 | // 27 | // Simple PRBS-er. I decided that computing each time the PRBS 28 | // is to be applied is OK, so no need to maintain pretty 29 | // lengthy vectors. 30 | prbs::prbs (int32_t length) { 31 | this -> length = length; 32 | } 33 | 34 | prbs::~prbs (void) { 35 | } 36 | 37 | void prbs::doPRBS (uint8_t *v) { 38 | int16_t i, j; 39 | uint8_t shiftRegister [9]; 40 | 41 | memset (shiftRegister, 1, 9); 42 | for (i = 0; i < length; i ++) { 43 | uint8_t t = shiftRegister [8] ^ shiftRegister [4]; 44 | v [i] ^= t; 45 | for (j = 8; j > 0; j --) 46 | shiftRegister [j] = shiftRegister [j - 1]; 47 | shiftRegister [0] = t; 48 | } 49 | } 50 | 51 | 52 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/prbs.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * SDRunoPlugin_drm is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDRunoPlugin_drm is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with SDRunoPlugin_drm; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __PRBS__ 25 | #define __PRBS__ 26 | 27 | #include 28 | 29 | class prbs { 30 | public: 31 | prbs (int32_t); 32 | ~prbs (void); 33 | void doPRBS (uint8_t *); 34 | private: 35 | int32_t length; 36 | // uint8_t *PRBS; 37 | }; 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/protlevels.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | * 23 | * viterbi.h -- Viterbi decoder 24 | * 25 | */ 26 | 27 | #ifndef __PROT_LEVELS__ 28 | #include 29 | void protLevel_qam16 (uint8_t, int16_t, 30 | int16_t *, int16_t *); 31 | void protLevel_qam64 (uint8_t, int16_t, 32 | int16_t *, int16_t *); 33 | float getRp_qam16 (uint8_t, int16_t); 34 | float getRp_qam64 (uint8_t, int16_t); 35 | int16_t getRYlcm_16 (int16_t); 36 | int16_t getRYlcm_64 (int16_t); 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/qam16-metrics.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __QAM16_METRICS__ 25 | #define __QAM16_METRICS__ 26 | 27 | #include 28 | #include "basics.h" 29 | 30 | class qam16_metrics { 31 | public: 32 | qam16_metrics (void); 33 | ~qam16_metrics (void); 34 | void computemetrics (theSignal *, 35 | int32_t, // amount 36 | uint8_t, // level 37 | metrics *, // output 38 | bool, // first time or retry 39 | uint8_t *, // corrected level 0 40 | uint8_t * // corrected level 1 41 | ); 42 | private: 43 | 44 | }; 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/qam4-metrics.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __QAM4_METRICS__ 25 | #define __QAM4_METRICS__ 26 | 27 | #include 28 | #include "basics.h" 29 | 30 | class qam4_metrics { 31 | public: 32 | qam4_metrics (void); 33 | ~qam4_metrics (void); 34 | void computemetrics (theSignal *, int32_t, metrics *); 35 | private: 36 | }; 37 | 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/qam64-metrics.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __QAM64_METRICS__ 25 | #define __QAM64_METRICS__ 26 | 27 | #include 28 | #include "basics.h" 29 | 30 | class qam64_metrics { 31 | public: 32 | qam64_metrics (void); 33 | ~qam64_metrics (void); 34 | void computemetrics (theSignal *, 35 | int32_t, // amount 36 | uint8_t, // level 37 | metrics *, 38 | bool, // retry or first time 39 | uint8_t *, // computed 0-level 40 | uint8_t *, // computed 1-level 41 | uint8_t * // computed 2-level 42 | ); 43 | private: 44 | }; 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /decoders/drm-decoder/support/viterbi-drm.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRunoPlugin_drm 8 | * 9 | * drm plugin is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * drm plugin is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with drm plugin; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | * 23 | * viterbi.h -- Viterbi decoder 24 | * 25 | */ 26 | #ifndef __VITERBI_DECODER_FAC_H 27 | #define __VITERBI_DECODER_FAC_H 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include "basics.h" 33 | // 34 | // experimental setting for 1/6 7 decoder 35 | class viterbi_drm { 36 | public: 37 | viterbi_drm (int16_t); 38 | ~viterbi_drm (void); 39 | void deconvolve (metrics *, int16_t, uint8_t *); 40 | void convolve (uint8_t *, int16_t, uint8_t *); 41 | private: 42 | float costsFor (uint16_t, metrics *); 43 | int32_t **history; 44 | float **Costs; 45 | uint8_t *poly1_table; 46 | uint8_t *poly2_table; 47 | uint8_t *poly3_table; 48 | uint8_t *poly4_table; 49 | uint8_t *poly5_table; 50 | uint8_t *poly6_table; 51 | int16_t *predecessor_for_0; 52 | int16_t *predecessor_for_1; 53 | int16_t blockLength; 54 | uint8_t bitFor (uint16_t, uint16_t, uint8_t); 55 | }; 56 | #endif 57 | -------------------------------------------------------------------------------- /decoders/drm-decoder/the-dll/SDRunoPlugin_drm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/the-dll/SDRunoPlugin_drm.dll -------------------------------------------------------------------------------- /decoders/drm-decoder/the-dll/libfaad_drm-2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/drm-decoder/the-dll/libfaad_drm-2.dll -------------------------------------------------------------------------------- /decoders/drm-decoder/utilities.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDRuno rtty decoder 8 | * 9 | * rtty decoder is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * rtty decoder is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with rtty decoder; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __UTILITY_FUNCTIONS__ 25 | #define __UTILITY_FUNCTIONS__ 26 | 27 | #include 28 | #include "basics.h" 29 | 30 | DRM_FLOAT decayingAverage (DRM_FLOAT, DRM_FLOAT, DRM_FLOAT); 31 | DRM_FLOAT clamp (DRM_FLOAT, DRM_FLOAT, DRM_FLOAT); 32 | class rttyAverage { 33 | public: 34 | rttyAverage (int16_t); 35 | ~rttyAverage (); 36 | DRM_FLOAT filter (DRM_FLOAT); 37 | void clear (DRM_FLOAT); 38 | private: 39 | int16_t size; 40 | DRM_FLOAT *vec; 41 | int16_t filp; 42 | }; 43 | 44 | #endif 45 | 46 | 47 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-buffer.h: -------------------------------------------------------------------------------- 1 | #ifndef __FAX_BUFFER_H 2 | #define __FAX_BUFFER_H 3 | 4 | 5 | class buffer { 6 | public: 7 | buffer (int, int, int); 8 | ~buffer (); 9 | void setMode (int); 10 | void add (int); 11 | void prepare_recognize_start (); 12 | bool startSignal_Detected (); 13 | void prepare_recognize_phaseLine (); 14 | bool phaseLine_recognized (); 15 | void prepare_read_phaseLine (); 16 | void phaseLine_read (); 17 | void prepare_read_imageLine (); 18 | bool imageLine_Read (); 19 | void prepare_recognize_stop (); 20 | bool stopSignal_Detected (); 21 | bool wait_too_long (int); 22 | 23 | private: 24 | 25 | bool checkWite (int, int, int); 26 | bool checkBlack (int, int, int); 27 | int samplesperLine; 28 | int startFrequency; 29 | int stopFrequency; 30 | int linesperImage; 31 | 32 | std::vector theBuffer; 33 | int nrItems; 34 | int bufferP; 35 | int deadLine; 36 | }; 37 | #endif 38 | 39 | 40 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-decoder.pro: -------------------------------------------------------------------------------- 1 | # 2 | TEMPLATE = lib 3 | CONFIG += plugin 4 | QT += core gui widgets 5 | 6 | INCLUDEPATH += . \ 7 | ../ ../.. \ 8 | ../decoder-utils \ 9 | ../../../includes \ 10 | ../../../includes/filters \ 11 | ../../../includes/various 12 | 13 | HEADERS = ../decoder-interface.h \ 14 | ./fax-decoder.h \ 15 | ./fax-demodulator.h \ 16 | ./fax-image.h \ 17 | ./fax-scroller.h \ 18 | ./fax-filenames.h \ 19 | ../../../includes/filters/iir-filters.h \ 20 | ../../../includes/filters/fir-filters.h \ 21 | ../../../includes/various/oscillator.h \ 22 | ../../../includes/various/utilities.h \ 23 | ../../../includes/various/fft.h \ 24 | ../../../includes/swradio-constants.h 25 | SOURCES = ./fax-decoder.cpp \ 26 | ./fax-demodulator.cpp \ 27 | ./fax-image.cpp \ 28 | ./fax-scroller.cpp \ 29 | ./fax-filenames.cpp \ 30 | ../../../src/filters/iir-filters.cpp \ 31 | ../../../src/filters/fir-filters.cpp \ 32 | ../../../src/various/oscillator.cpp \ 33 | ../../../src/various/utilities.cpp \ 34 | ../../../src/various/fft.cpp \ 35 | ./main.cpp 36 | TARGET = $$qtLibraryTarget(faxdecoder) 37 | FORMS += widget.ui 38 | 39 | win32 { 40 | DESTDIR = ../../../../../../windows-bin/decoder-plugins 41 | # includes in mingw differ from the includes in fedora linux 42 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include 43 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt5/qwt 44 | LIBS += -lfftw3f 45 | LIBS += -lqwt-qt5 46 | LIBS += -lole32 47 | LIBS += -lwinmm 48 | } 49 | 50 | unix { 51 | DESTDIR = ../../../../../linux-bin/decoder-plugins 52 | INCLUDEPATH += /usr/include/qt5/qwt 53 | } 54 | 55 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-demodulator.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J. 8 | * Many of the ideas as implemented in SDR-J are derived from 9 | * other work, made available through the GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with SDR-J; if not, write to the Free Software 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | */ 26 | #ifndef __FAX_DEMODULATOR__ 27 | #define __FAX_DEMODULATOR__ 28 | 29 | #include "radio-constants.h" 30 | 31 | class faxDemodulator { 32 | public: 33 | faxDemodulator (int8_t, int32_t, int32_t); 34 | ~faxDemodulator (void); 35 | int16_t demodulate (std::complex); 36 | void setMode (int8_t); 37 | void setDeviation (int16_t); 38 | private: 39 | int8_t mode; 40 | int32_t Rate; 41 | int32_t deviation; 42 | std::complex prevSample; 43 | }; 44 | 45 | #endif 46 | 47 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-filenames.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * 4 | * Copyright (C) 2011, 2012, 2013 5 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 6 | * Lazy Chair Computing 7 | * 8 | * This file is part of the SDR-J. 9 | * Many of the ideas as implemented in SDR-J are derived from 10 | * other work, made available through the GNU general Public License. 11 | * All copyrights of the original authors are recognized. 12 | * 13 | * SDR-J is free software; you can redistribute it and/or modify 14 | * it under the terms of the GNU General Public License as published by 15 | * the Free Software Foundation; either version 2 of the License, or 16 | * (at your option) any later version. 17 | * 18 | * SDR-J is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | * 23 | * You should have received a copy of the GNU General Public License 24 | * along with SDR-J; if not, write to the Free Software 25 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 26 | */ 27 | 28 | #include "fax-filenames.h" 29 | #include 30 | #include 31 | 32 | faxFilenames::faxFilenames (int16_t n) { 33 | base = "sdr-j-fax-"; 34 | base. append (QDate::currentDate (). toString ()); 35 | counter = n; 36 | } 37 | 38 | faxFilenames::~faxFilenames (void) { 39 | } 40 | 41 | QString faxFilenames::newFileName (void) { 42 | QString temp = base; 43 | temp. append (QString::number (counter ++)); 44 | temp. append (QString(".png")); 45 | return temp; 46 | } 47 | 48 | 49 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-filenames.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J. 8 | * 9 | * SDR-J is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDR-J is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with SDR-J; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __FAX_FILENAMES__ 24 | #define __FAX_FILENAMES__ 25 | 26 | #include 27 | #include "radio-constants.h" 28 | 29 | class faxFilenames { 30 | public: 31 | faxFilenames (int16_t n); 32 | ~faxFilenames (void); 33 | QString newFileName (void); 34 | private: 35 | QString base; 36 | int16_t counter; 37 | }; 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-image.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * 4 | * Copyright (C) 2011, 2012, 2013 5 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 6 | * Lazy Chair Computing 7 | * 8 | * The fax implementation is a rewrite of hamfax 9 | * Copyright (c) 2001, 2002 10 | * Christof Schmitt, DH1CS 11 | * 12 | * This file is part of the SDR-J. 13 | * Many of the ideas as implemented in SDR-J are derived from 14 | * other work, made available through the GNU general Public License. 15 | * All copyrights of the original authors are recognized. 16 | * 17 | * SDR-J is free software; you can redistribute it and/or modify 18 | * it under the terms of the GNU General Public License as published by 19 | * the Free Software Foundation; either version 2 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SDR-J is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with JSDR; if not, write to the Free Software 29 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 30 | */ 31 | 32 | #ifndef __FAXIMAGE__ 33 | #define __FAXIMAGE__ 34 | 35 | #include "radio-constants.h" 36 | #include 37 | #include 38 | #include 39 | 40 | class faxImage { 41 | 42 | public: 43 | faxImage (int, int, QWidget *parent = NULL); 44 | ~faxImage (void); 45 | void newSize (int, int, int, int); 46 | bool setPixel (int, int, int, int); 47 | int getCols (void); 48 | int getHeight (void); 49 | QImage getImage (); 50 | void correctWidth (int); 51 | void clear (void); 52 | private: 53 | void resizeHeight (int); 54 | QImage image; 55 | }; 56 | 57 | #endif 58 | 59 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-params.h: -------------------------------------------------------------------------------- 1 | # 2 | // This file is to be included to get/set the parameters 3 | // 4 | 5 | #ifndef __FAX_PARAMS_H 6 | #define __FAX_PARAMS_H 7 | 8 | enum FaxModes { 9 | Wefax576, 10 | Wefax288, 11 | HamColor, 12 | Color240, 13 | FAX480 14 | }; 15 | 16 | typedef struct fax_params { 17 | const char *Name; 18 | int16_t IOC; 19 | int16_t aptStart; 20 | int16_t aptStop; 21 | bool color; 22 | int16_t lpm; 23 | int nrLines; 24 | } faxParams; 25 | 26 | 27 | #endif 28 | 29 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-scroller.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2008, 2009, 2010 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J. 8 | * 9 | * SDR-J is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDR-J is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with SDR-J; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #include "fax-scroller.h" 25 | #include 26 | #include 27 | 28 | faxScroller::faxScroller (QWidget *parent): QScrollArea (parent) { 29 | } 30 | 31 | faxScroller::~faxScroller (void) { 32 | } 33 | 34 | void faxScroller::mousePressEvent (QMouseEvent *m) { 35 | QPoint pos = widget () -> mapFromParent (m -> pos ()); 36 | 37 | emit fax_Clicked ((int)(pos. x()), (int)(pos. y())); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /decoders/fax-decoder/fax-scroller.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2008, 2009, 2010 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J. 8 | * 9 | * SDR-J is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDR-J is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with SDR-J; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __FAX_SCROLLER__ 25 | #define __FAX_SCROLLER__ 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | // 33 | // In the designer we promoted the QScrollarea to this 34 | // nice class faxScroller, such that we are able to attach 35 | // the mouse events. 36 | class faxScroller: public QScrollArea { 37 | Q_OBJECT 38 | public: 39 | faxScroller (QWidget *parent = 0); 40 | 41 | virtual ~faxScroller (void); 42 | signals: 43 | void fax_Clicked (int, int); 44 | private: 45 | virtual void mousePressEvent (QMouseEvent *); 46 | }; 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /decoders/fax-decoder/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "fax-decoder.h" 3 | 4 | int main (int argc, char *argv []) { 5 | return 0; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/fft/kiss_fftr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. 3 | * This file is part of KISS FFT - https://github.com/mborgerding/kissfft 4 | * 5 | * SPDX-License-Identifier: BSD-3-Clause 6 | * See COPYING file for more information. 7 | */ 8 | 9 | #ifndef KISS_FTR_H 10 | #define KISS_FTR_H 11 | 12 | #include "kiss_fft.h" 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | 18 | /* 19 | 20 | Real optimized version can save about 45% cpu time vs. complex fft of a real seq. 21 | 22 | 23 | 24 | */ 25 | 26 | typedef struct kiss_fftr_state *kiss_fftr_cfg; 27 | 28 | 29 | kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); 30 | /* 31 | nfft must be even 32 | 33 | If you don't care to allocate space, use mem = lenmem = NULL 34 | */ 35 | 36 | 37 | void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); 38 | /* 39 | input timedata has nfft scalar points 40 | output freqdata has nfft/2+1 complex points 41 | */ 42 | 43 | void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); 44 | /* 45 | input freqdata has nfft/2+1 complex points 46 | output timedata has nfft scalar points 47 | */ 48 | 49 | #define kiss_fftr_free KISS_FFT_FREE 50 | 51 | #ifdef __cplusplus 52 | } 53 | #endif 54 | #endif 55 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/ft8-constants.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __FT8_CONSTANTS__ 24 | #define __FT8_CONSTANTS__ 25 | 26 | #define nrTONES 79 27 | #define FRAMES_PER_TONE 5 28 | #define nrBUFFERS (3 * nrTONES * FRAMES_PER_TONE) 29 | #define BINWIDTH (12000.0 / 3840) 30 | 31 | #define FT8_M_BYTES (10) 32 | #define FT8_M_BITS (77) 33 | #define FT8_LDPC_BITS 174 34 | #define FTX_LDPC_N (174) 35 | #define FTX_LDPC_K (91) 36 | #define FTX_LDPC_M (83) ///< Number of LDPC checksum bits (FTX_LDPC_N - FTX_LDPC_K) 37 | #define FTX_LDPC_N_BYTES ((FTX_LDPC_N + 7) / 8) ///< Number of whole bytes needed to store 174 bits (full message) 38 | #define FTX_LDPC_K_BYTES ((FTX_LDPC_K + 7) / 8) ///< Number of whole bytes needed to store 91 bits (payload + CRC only) 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/hashHandler.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __HASH_HANDLER__ 24 | #define __HASH_HANDLER__ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | typedef struct hashElement { 31 | uint32_t key; 32 | QString value; 33 | }; 34 | 35 | class hashHandler { 36 | public: 37 | hashHandler (const std::string &s); 38 | ~hashHandler (); 39 | void add_hash (uint32_t key, const QString &value); 40 | QString lookup (uint32_t key); 41 | private: 42 | 43 | std::string saveFile; 44 | void reader (const std::string &s); 45 | void writer (const std::string &s); 46 | std::vector hashTable; 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/hashcodes.f90: -------------------------------------------------------------------------------- 1 | program hashcodes 2 | 3 | parameter (NTOKENS=2063592) 4 | integer*8 nprime,n8(3) 5 | integer nbits(3),ihash(3) 6 | character*11 callsign 7 | character*38 c 8 | data c/' 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ/'/ 9 | data nprime/47055833459_8/,nbits/10,12,22/ 10 | 11 | nargs=iargc() 12 | if(nargs.ne.1) then 13 | print*,'Usage: hashcodes ' 14 | print*,'Examples: hashcodes PJ4/K1ABC' 15 | print*,' hashcodes YW18FIFA' 16 | go to 999 17 | endif 18 | call getarg(1,callsign) 19 | callsign=adjustl(callsign) 20 | 21 | do k=1,3 22 | n8(k)=0 23 | do i=1,11 24 | j=index(c,callsign(i:i)) - 1 25 | n8(k)=38*n8(k) + j 26 | enddo 27 | ihash(k)=ishft(nprime*n8(k),nbits(k)-64) 28 | enddo 29 | ih22_biased=ihash(3) + NTOKENS 30 | write(*,1000) callsign,ihash,ih22_biased 31 | 1000 format('Callsign',9x,'h10',7x,'h12',7x,'h22'/41('-')/ & 32 | a11,i9,2i10,/'Biased for storage in c28:',i14) 33 | 34 | 999 end program hashcodes 35 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/identity-dialog.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __IDENTITY_SELECTOR__ 3 | #define __IDENTITY_SELECTOR__ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class identityDialog: public QDialog { 14 | public: 15 | identityDialog (QSettings *, QWidget *parent = nullptr); 16 | ~identityDialog (); 17 | private slots: 18 | QSettings *ft8Settings; 19 | void verify (); 20 | void reject (); 21 | 22 | QLabel *callsignLabel; 23 | QLineEdit *callsign; 24 | QLabel *gridLabel; 25 | QLineEdit *homeGrid; 26 | QLabel *antennaLabel; 27 | QLineEdit *antenna; 28 | QDialogButtonBox *buttonBox; 29 | 30 | }; 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/ldpc.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2022 4 | * Karlis Goba 5 | * YL33G 6 | * 7 | * This file is the :.h" file for the class made for the ldpc 8 | * functions imported from the ft8 linrary from Karlis Goba 9 | * 10 | * swradio is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * swradio is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with swradio; if not, write to the Free Software 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 | */ 24 | 25 | #ifndef _INCLUDE_LDPC_H_ 26 | #define _INCLUDE_LDPC_H_ 27 | 28 | #include 29 | #include "ft8-constants.h" 30 | 31 | class ldpc { 32 | public: 33 | ldpc (); 34 | ~ldpc (); 35 | 36 | void ldpc_decode (float codeword[], int max_iters, 37 | uint8_t plain[], int* ok); 38 | void bp_decode (float codeword[], int max_iters, 39 | uint8_t plain[], int* ok); 40 | private: 41 | 42 | int ldpc_check (uint8_t codeword []); 43 | float fast_tanh (float x); 44 | float fast_atanh (float x); 45 | }; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /decoders/ft8-decoder-win/semaphore.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __SEMAPHORE 24 | #define __SEMAPHORE 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | class Semaphore { 31 | private: 32 | std::mutex mtx; 33 | std::condition_variable cv; 34 | int count; 35 | public: 36 | Semaphore (int count_ = 0) : count {count_} {} 37 | 38 | void Release () { 39 | std::unique_locklck (mtx); 40 | ++count; 41 | cv. notify_one (); 42 | } 43 | 44 | void acquire () { 45 | std::unique_lock lck (mtx); 46 | while (count == 0) { 47 | cv. wait (lck); 48 | } 49 | -- count; 50 | } 51 | 52 | bool tryAcquire (int delay) { 53 | std::unique_lock lck (mtx); 54 | if (count == 0) { 55 | auto now = std::chrono::system_clock::now (); 56 | cv. wait_until (lck, now + std::chrono::milliseconds (delay)); 57 | } 58 | if (count == 0) 59 | return false; 60 | -- count; 61 | return true; 62 | } 63 | }; 64 | #endif 65 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/fft/kiss_fftr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003-2004, Mark Borgerding. All rights reserved. 3 | * This file is part of KISS FFT - https://github.com/mborgerding/kissfft 4 | * 5 | * SPDX-License-Identifier: BSD-3-Clause 6 | * See COPYING file for more information. 7 | */ 8 | 9 | #ifndef KISS_FTR_H 10 | #define KISS_FTR_H 11 | 12 | #include "kiss_fft.h" 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | 18 | /* 19 | 20 | Real optimized version can save about 45% cpu time vs. complex fft of a real seq. 21 | 22 | 23 | 24 | */ 25 | 26 | typedef struct kiss_fftr_state *kiss_fftr_cfg; 27 | 28 | 29 | kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); 30 | /* 31 | nfft must be even 32 | 33 | If you don't care to allocate space, use mem = lenmem = NULL 34 | */ 35 | 36 | 37 | void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); 38 | /* 39 | input timedata has nfft scalar points 40 | output freqdata has nfft/2+1 complex points 41 | */ 42 | 43 | void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); 44 | /* 45 | input freqdata has nfft/2+1 complex points 46 | output timedata has nfft scalar points 47 | */ 48 | 49 | #define kiss_fftr_free KISS_FFT_FREE 50 | 51 | #ifdef __cplusplus 52 | } 53 | #endif 54 | #endif 55 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/ft8-constants.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __FT8_CONSTANTS__ 24 | #define __FT8_CONSTANTS__ 25 | 26 | #define nrTONES 79 27 | #define FRAMES_PER_TONE 2 28 | #define nrBUFFERS (3 * nrTONES * FRAMES_PER_TONE) 29 | #define BINWIDTH (12000.0 / 3840) 30 | 31 | #define FT8_M_BYTES (10) 32 | #define FT8_M_BITS (77) 33 | #define FT8_LDPC_BITS 174 34 | #define FTX_LDPC_N (174) 35 | #define FTX_LDPC_K (91) 36 | #define FTX_LDPC_M (83) ///< Number of LDPC checksum bits (FTX_LDPC_N - FTX_LDPC_K) 37 | #define FTX_LDPC_N_BYTES ((FTX_LDPC_N + 7) / 8) ///< Number of whole bytes needed to store 174 bits (full message) 38 | #define FTX_LDPC_K_BYTES ((FTX_LDPC_K + 7) / 8) ///< Number of whole bytes needed to store 91 bits (payload + CRC only) 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/hashHandler.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __HASH_HANDLER__ 24 | #define __HASH_HANDLER__ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | typedef struct { 31 | uint32_t key; 32 | QString value; 33 | } hashElement; 34 | 35 | class hashHandler { 36 | public: 37 | hashHandler (const std::string &s); 38 | ~hashHandler (); 39 | void add_hash (uint32_t key, const QString &value); 40 | QString lookup (uint32_t key); 41 | private: 42 | 43 | std::string saveFile; 44 | void reader (const std::string &s); 45 | void writer (const std::string &s); 46 | std::vector hashTable; 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/hashcodes.f90: -------------------------------------------------------------------------------- 1 | program hashcodes 2 | 3 | parameter (NTOKENS=2063592) 4 | integer*8 nprime,n8(3) 5 | integer nbits(3),ihash(3) 6 | character*11 callsign 7 | character*38 c 8 | data c/' 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ/'/ 9 | data nprime/47055833459_8/,nbits/10,12,22/ 10 | 11 | nargs=iargc() 12 | if(nargs.ne.1) then 13 | print*,'Usage: hashcodes ' 14 | print*,'Examples: hashcodes PJ4/K1ABC' 15 | print*,' hashcodes YW18FIFA' 16 | go to 999 17 | endif 18 | call getarg(1,callsign) 19 | callsign=adjustl(callsign) 20 | 21 | do k=1,3 22 | n8(k)=0 23 | do i=1,11 24 | j=index(c,callsign(i:i)) - 1 25 | n8(k)=38*n8(k) + j 26 | enddo 27 | ihash(k)=ishft(nprime*n8(k),nbits(k)-64) 28 | enddo 29 | ih22_biased=ihash(3) + NTOKENS 30 | write(*,1000) callsign,ihash,ih22_biased 31 | 1000 format('Callsign',9x,'h10',7x,'h12',7x,'h22'/41('-')/ & 32 | a11,i9,2i10,/'Biased for storage in c28:',i14) 33 | 34 | 999 end program hashcodes 35 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/identity-dialog.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __IDENTITY_SELECTOR__ 3 | #define __IDENTITY_SELECTOR__ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | class identityDialog: public QDialog { 14 | public: 15 | identityDialog (QSettings *, QWidget *parent = nullptr); 16 | ~identityDialog (); 17 | private slots: 18 | QSettings *ft8Settings; 19 | void verify (); 20 | void reject (); 21 | 22 | QLabel *callsignLabel; 23 | QLineEdit *callsign; 24 | QLabel *gridLabel; 25 | QLineEdit *homeGrid; 26 | QLabel *antennaLabel; 27 | QLineEdit *antenna; 28 | QDialogButtonBox *buttonBox; 29 | 30 | }; 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/ldpc.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2022 4 | * Karlis Goba 5 | * YL33G 6 | * 7 | * This file is the :.h" file for the class made for the ldpc 8 | * functions imported from the ft8 linrary from Karlis Goba 9 | * 10 | * swradio is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * swradio is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with swradio; if not, write to the Free Software 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 | */ 24 | 25 | #ifndef _INCLUDE_LDPC_H_ 26 | #define _INCLUDE_LDPC_H_ 27 | 28 | #include 29 | #include "ft8-constants.h" 30 | 31 | class ldpc { 32 | public: 33 | ldpc (); 34 | ~ldpc (); 35 | 36 | void ldpc_decode (float codeword[], int max_iters, 37 | uint8_t plain[], int* ok); 38 | void bp_decode (float codeword[], int max_iters, 39 | uint8_t plain[], int* ok); 40 | private: 41 | 42 | int ldpc_check (uint8_t codeword []); 43 | float fast_tanh (float x); 44 | float fast_atanh (float x); 45 | }; 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /decoders/ft8-decoder/semaphore.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __SEMAPHORE 24 | #define __SEMAPHORE 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | class Semaphore { 31 | private: 32 | std::mutex mtx; 33 | std::condition_variable cv; 34 | int count; 35 | public: 36 | Semaphore (int count_ = 0) : count {count_} {} 37 | 38 | void Release () { 39 | std::unique_locklck (mtx); 40 | ++count; 41 | cv. notify_one (); 42 | } 43 | 44 | void acquire () { 45 | std::unique_lock lck (mtx); 46 | while (count == 0) { 47 | cv. wait (lck); 48 | } 49 | -- count; 50 | } 51 | 52 | bool tryAcquire (int delay) { 53 | std::unique_lock lck (mtx); 54 | if (count == 0) { 55 | auto now = std::chrono::system_clock::now (); 56 | cv. wait_until (lck, now + std::chrono::milliseconds (delay)); 57 | } 58 | if (count == 0) 59 | return false; 60 | -- count; 61 | return true; 62 | } 63 | }; 64 | #endif 65 | -------------------------------------------------------------------------------- /decoders/rtty-decoder/rtty-decoder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/decoders/rtty-decoder/rtty-decoder.cpp -------------------------------------------------------------------------------- /decoders/test-decoder/cache.h: -------------------------------------------------------------------------------- 1 | # 2 | // 3 | // to be included by the main program of the decoder 4 | 5 | #include 6 | #include 7 | 8 | class Cache { 9 | private: 10 | int nrows; 11 | int ncolums; 12 | std::complex **data; 13 | 14 | public: 15 | Cache (int16_t ncolums, int16_t nrows) { 16 | int16_t i; 17 | 18 | this -> ncolums = ncolums; 19 | this -> nrows = nrows; 20 | data = new std::complex *[nrows]; 21 | for (i = 0; i < nrows; i++) 22 | data [i] = new std::complex [ncolums]; 23 | fprintf (stderr, "new cache with %d rows and %d colums\n", 24 | nrows, ncolums); 25 | } 26 | 27 | ~Cache (void) { 28 | int i; 29 | for (i = 0; i < nrows; i ++) 30 | delete[] data [i]; 31 | 32 | delete[] data; 33 | } 34 | 35 | std::complex *cacheLine (int16_t n) { 36 | return data [n]; 37 | } 38 | 39 | std::complex cacheElement (int16_t line, int16_t element) { 40 | return data [line] [element]; 41 | } 42 | }; 43 | 44 | -------------------------------------------------------------------------------- /decoders/virtual-decoder.cpp: -------------------------------------------------------------------------------- 1 | #include "virtual-decoder.h" 2 | #include "radio.h" 3 | 4 | virtualDecoder::virtualDecoder (int32_t workingRate, 5 | RingBuffer *audioOut) { 6 | // this -> workingRate = workingRate; 7 | (void)workingRate; 8 | this -> audioOut = audioOut; 9 | } 10 | 11 | virtualDecoder::~virtualDecoder (void) { 12 | } 13 | 14 | void virtualDecoder::process (std::complex v) { 15 | (void)v; 16 | } 17 | -------------------------------------------------------------------------------- /decoders/virtual-decoder.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __VIRTUAL_DECODER 3 | #define __VIRTUAL_DECODER 4 | 5 | #include 6 | #include "radio-constants.h" 7 | #include "ringbuffer.h" 8 | 9 | class RadioInterface; 10 | 11 | class virtualDecoder : public QObject { 12 | Q_OBJECT 13 | public: 14 | virtualDecoder (int32_t, 15 | RingBuffer > *); 16 | virtual ~virtualDecoder (void); 17 | virtual void process (std::complex); 18 | protected: 19 | int32_t workingRate; 20 | RingBuffer> *audioOut; 21 | signals: 22 | void audioAvailable (int, int); 23 | void setDetectorMarker (int); 24 | void adjustFrequency (int); 25 | }; 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /devices/device-handler.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J. 8 | * Many of the ideas as implemented in SDR-J are derived from 9 | * other work, made available through the GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with SDR-J; if not, write to the Free Software 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | */ 26 | #include "device-handler.h" 27 | #include "radio.h" 28 | 29 | deviceHandler::deviceHandler (RadioInterface *radio) { 30 | lastFrequency = Mhz (100); 31 | } 32 | 33 | deviceHandler::~deviceHandler (void) { 34 | } 35 | 36 | int32_t deviceHandler::getRate (void) { 37 | return 192000; 38 | } 39 | 40 | void deviceHandler::setVFOFrequency (quint64 f) { 41 | lastFrequency = f; 42 | } 43 | 44 | quint64 deviceHandler::getVFOFrequency (void) { 45 | return lastFrequency; 46 | } 47 | 48 | bool deviceHandler::restartReader (void) { 49 | return true; 50 | } 51 | 52 | void deviceHandler::stopReader (void) { 53 | } 54 | 55 | void deviceHandler::resetBuffer (void) { 56 | } 57 | 58 | int16_t deviceHandler::bitDepth (void) { 59 | return 10; 60 | } 61 | 62 | -------------------------------------------------------------------------------- /devices/deviceselect.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2014 .. 2017 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swradio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swradio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | # 24 | #ifndef __DEVICE_SELECT__ 25 | #define __DEVICE_SELECT__ 26 | # 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | class deviceSelect: public QDialog { 35 | Q_OBJECT 36 | public: 37 | deviceSelect (); 38 | ~deviceSelect (); 39 | void addtoList (const char *); 40 | void addList (const QStringList &); 41 | private: 42 | QLabel *toptext; 43 | QListView *selectorDisplay; 44 | QStringListModel deviceList; 45 | QStringList Devices; 46 | int16_t selectedItem; 47 | private slots: 48 | void select_device (QModelIndex); 49 | }; 50 | 51 | #endif 52 | 53 | -------------------------------------------------------------------------------- /devices/extio-handler/extio-handler.pro: -------------------------------------------------------------------------------- 1 | # 2 | TEMPLATE = lib 3 | CONFIG += plugin 4 | QT += core gui widgets 5 | INCLUDEPATH += . \ 6 | ../ ../.. \ 7 | ../../../includes \ 8 | ../../../includes/various 9 | HEADERS = ../rig-interface.h \ 10 | ./extio-handler.h \ 11 | ./card-reader.h \ 12 | ./reader-base.h \ 13 | ./common-readers.h \ 14 | ./simple-converter.h \ 15 | ../../../includes/swradio-constants.h \ 16 | ../../../includes/various/ringbuffer.h 17 | SOURCES = ./extio-handler.cpp \ 18 | ./card-reader.cpp \ 19 | ./reader-base.cpp \ 20 | ./common-readers.cpp \ 21 | ./simple-converter.cpp 22 | TARGET = $$qtLibraryTarget(device_extiohandler) 23 | FORMS += ./extio-widget.ui 24 | 25 | win32 { 26 | DESTDIR = ../../../../../../windows-bin/input-plugins 27 | # includes in mingw differ from the includes in fedora linux 28 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include 29 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qwt 30 | LIBS += -lportaudio 31 | LIBS += -lusb-1.0 32 | LIBS += -lole32 33 | LIBS += -lwinmm 34 | LIBS += -lsamplerate 35 | } 36 | 37 | unix { 38 | DESTDIR = ../../../../../linux-bin/input-plugins-sw 39 | LIBS += -lportaudio -lsamplerate 40 | } 41 | 42 | -------------------------------------------------------------------------------- /devices/pmsdr-handler/pmsdr.pro: -------------------------------------------------------------------------------- 1 | # 2 | TEMPLATE = lib 3 | CONFIG += plugin 4 | QT += core gui widgets 5 | 6 | INCLUDEPATH += . \ 7 | ../ ../.. \ 8 | ../../../includes \ 9 | ../../../includes/various 10 | HEADERS = ../rig-interface.h \ 11 | ./pmsdr.h \ 12 | ./pmsdr_usb.h \ 13 | ./pmsdr_comm.h \ 14 | ./si570-handler.h \ 15 | ../../../includes/swradio-constants.h \ 16 | ../../../includes/various/ringbuffer.h \ 17 | ../pa-reader.h 18 | SOURCES = ./pmsdr.cpp \ 19 | ./pmsdr_usb.cpp \ 20 | ./pmsdr_comm.cpp \ 21 | ./si570-handler.cpp \ 22 | ../pa-reader.cpp 23 | TARGET = $$qtLibraryTarget(device_pmsdr) 24 | FORMS += ./widget.ui 25 | 26 | win32 { 27 | DESTDIR = ../../../../../../windows-bin/input-plugins 28 | # includes in mingw differ from the includes in fedora linux 29 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include 30 | LIBS += -lportaudio 31 | LIBS += -lusb-1.0 32 | LIBS += -lole32 33 | LIBS += -lwinmm 34 | } 35 | 36 | unix{ 37 | DESTDIR = ../../../../../linux-bin/input-plugins-sw 38 | LIBS += -lusb-1.0 39 | } 40 | 41 | -------------------------------------------------------------------------------- /devices/rtlsdr-handler/dongleselect.cpp: -------------------------------------------------------------------------------- 1 | # 2 | #include "dongleselect.h" 3 | #include 4 | #include 5 | 6 | dongleSelect::dongleSelect (void) { 7 | toptext = new QLabel (this); 8 | toptext -> setText ("Select a dongle"); 9 | selectorDisplay = new QListView (this); 10 | QVBoxLayout *layOut = new QVBoxLayout; 11 | layOut -> addWidget (selectorDisplay); 12 | layOut -> addWidget (toptext); 13 | setWindowTitle (tr("dongle select")); 14 | setLayout (layOut); 15 | 16 | Dongles = QStringList (); 17 | dongleList. setStringList (Dongles); 18 | selectorDisplay -> setModel (&dongleList); 19 | connect (selectorDisplay, SIGNAL (clicked (QModelIndex)), 20 | this, SLOT (selectDongle (QModelIndex))); 21 | selectedItem = -1; 22 | } 23 | 24 | dongleSelect::~dongleSelect () { 25 | } 26 | 27 | void dongleSelect::addtoDongleList (const QString &v) { 28 | 29 | Dongles << v; 30 | dongleList. setStringList (Dongles); 31 | selectorDisplay -> setModel (&dongleList); 32 | selectorDisplay -> adjustSize (); 33 | adjustSize (); 34 | } 35 | 36 | void dongleSelect::selectDongle (QModelIndex s) { 37 | fprintf (stderr, "we have chosen %d\n", s.row ()); 38 | selectedItem = s. row (); 39 | QDialog::done (s. row ()); 40 | // close (); 41 | } 42 | 43 | int16_t dongleSelect::getSelectedItem (void) { 44 | return selectedItem; 45 | } 46 | 47 | -------------------------------------------------------------------------------- /devices/rtlsdr-handler/dongleselect.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2011, 2012, 2013 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the SDR-J (JSDR). 8 | * 9 | * SDR-J is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDR-J is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with SDR-J; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | # 25 | #ifndef __DONGLE_SELECT__ 26 | #define __DONGLE_SELECT__ 27 | # 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | class dongleSelect: public QDialog { 37 | Q_OBJECT 38 | public: 39 | dongleSelect (void); 40 | ~dongleSelect (void); 41 | void addtoDongleList (const QString &); 42 | int16_t getSelectedItem (void); 43 | private: 44 | QLabel *toptext; 45 | QListView *selectorDisplay; 46 | QStringListModel dongleList; 47 | QStringList Dongles; 48 | int16_t selectedItem; 49 | private slots: 50 | void selectDongle (QModelIndex); 51 | }; 52 | 53 | #endif 54 | 55 | -------------------------------------------------------------------------------- /devices/rtlsdr-handler/rtlsdr-handler.pro: -------------------------------------------------------------------------------- 1 | # 2 | TEMPLATE = lib 3 | CONFIG += plugin 4 | QT += core gui widgets 5 | INCLUDEPATH += . \ 6 | ../ ../.. \ 7 | ../../../includes \ 8 | ../../../includes/filters \ 9 | ../../../includes/various 10 | HEADERS = ../rig-interface.h \ 11 | ./dabstick.h \ 12 | ./dongleselect.h \ 13 | ../../../includes/filters/fir-filters.h \ 14 | ../../../includes/various/fft.h \ 15 | ../../../includes/swradio-constants.h 16 | SOURCES = ./dabstick.cpp \ 17 | ./dongleselect.cpp \ 18 | ../../../src/filters/fir-filters.cpp \ 19 | ../../../src/various/fft.cpp 20 | TARGET = $$qtLibraryTarget(device_dabstick) 21 | FORMS += ./widget.ui 22 | 23 | win32 { 24 | DESTDIR = ../../../../../../windows-bin/input-plugins 25 | # includes in mingw differ from the includes in fedora linux 26 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include 27 | INCLUDEPATH += /usr/i686-w64-mingw32/sys-root/mingw/include/qt5/qwt 28 | LIBS += -lfftw3f 29 | LIBS += -lqwt-qt5 30 | LIBS += -lusb-1.0 31 | LIBS += -lole32 32 | LIBS += -lwinmm 33 | } 34 | 35 | unix{ 36 | DESTDIR = ../../../../../linux-bin/input-plugins-sw 37 | } 38 | 39 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/Rsp-device.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSP_DEVICE_H 3 | #define __RSP_DEVICE_H 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class sdrplayHandler_v3; 11 | 12 | class Rsp_device : public QObject { 13 | Q_OBJECT 14 | protected: 15 | sdrplay_api_DeviceT *chosenDevice; 16 | int sampleRate; 17 | int startFreq; 18 | bool agcMode; 19 | int lnaState; 20 | int GRdB; 21 | sdrplay_api_RxChannelParamsT *chParams; 22 | sdrplay_api_DeviceParamsT *deviceParams; 23 | sdrplayHandler_v3 *parent; 24 | int lna_upperBound; 25 | QString deviceModel; 26 | bool antennaSelect; 27 | int nrBits; 28 | public: 29 | Rsp_device (sdrplayHandler_v3 *parent, 30 | sdrplay_api_DeviceT *chosenDevice, 31 | int sampleRate, 32 | int startFrequency, 33 | bool agcMode, 34 | int lnaState, int GRdB); 35 | virtual ~Rsp_device (); 36 | virtual int lnaStates (int frequency); 37 | 38 | virtual bool restart (int freq); 39 | virtual void stop (); 40 | virtual bool set_agc (int setPoint, bool on); 41 | virtual bool set_lna (int lnaState); 42 | virtual bool set_GRdB (int GRdBValue); 43 | virtual bool set_ppm (int ppm); 44 | virtual bool set_antenna (int antenna); 45 | virtual bool set_amPort (int amPort); 46 | signals: 47 | void set_lnabounds_signal (int, int); 48 | void set_deviceName_signal (const QString &); 49 | void set_antennaSelect_signal (bool); 50 | void set_nrBits (int); 51 | }; 52 | #endif 53 | 54 | 55 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/RspDx-handler.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSPDX_HANDLER_H 3 | #define __RSPDX_HANDLER_H 4 | 5 | #include "Rsp-device.h" 6 | 7 | class sdrplayHandler_v3; 8 | 9 | class RspDx_handler: public Rsp_device { 10 | public: 11 | RspDx_handler (sdrplayHandler_v3 *parent, 12 | sdrplay_api_DeviceT *chosenDevice, 13 | int sampleRate, 14 | int freq, 15 | bool agcMode, 16 | int lnaState, 17 | int GRdB); 18 | ~RspDx_handler (); 19 | 20 | int lnaStates (int frequency); 21 | bool restart (int freq); 22 | void stop (); 23 | bool set_agc (int setPoint, bool on); 24 | bool set_GRdB (int GRdBValue); 25 | bool set_ppm (int ppm); 26 | bool set_lna (int lnaState); 27 | bool set_antenna (int antenna); 28 | bool set_amPort (int amPort); 29 | private: 30 | int16_t bankFor_rspdx (int freq); 31 | }; 32 | #endif 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_control.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_CONTROL_H 2 | #define SDRPLAY_API_CONTROL_H 3 | 4 | // Control parameter enums 5 | typedef enum 6 | { 7 | sdrplay_api_AGC_DISABLE = 0, 8 | sdrplay_api_AGC_100HZ = 1, 9 | sdrplay_api_AGC_50HZ = 2, 10 | sdrplay_api_AGC_5HZ = 3, 11 | sdrplay_api_AGC_CTRL_EN = 4 12 | } sdrplay_api_AgcControlT; 13 | 14 | typedef enum 15 | { 16 | sdrplay_api_ADSB_DECIMATION = 0, 17 | sdrplay_api_ADSB_NO_DECIMATION_LOWPASS = 1, 18 | sdrplay_api_ADSB_NO_DECIMATION_BANDPASS_2MHZ = 2, 19 | sdrplay_api_ADSB_NO_DECIMATION_BANDPASS_3MHZ = 3 20 | } sdrplay_api_AdsbModeT; 21 | 22 | // Control parameter structs 23 | typedef struct 24 | { 25 | unsigned char DCenable; // default: 1 26 | unsigned char IQenable; // default: 1 27 | } sdrplay_api_DcOffsetT; 28 | 29 | typedef struct 30 | { 31 | unsigned char enable; // default: 0 32 | unsigned char decimationFactor; // default: 1 33 | unsigned char wideBandSignal; // default: 0 34 | } sdrplay_api_DecimationT; 35 | 36 | typedef struct 37 | { 38 | sdrplay_api_AgcControlT enable; // default: sdrplay_api_AGC_50HZ 39 | int setPoint_dBfs; // default: -60 40 | unsigned short attack_ms; // default: 0 41 | unsigned short decay_ms; // default: 0 42 | unsigned short decay_delay_ms; // default: 0 43 | unsigned short decay_threshold_dB; // default: 0 44 | int syncUpdate; // default: 0 45 | } sdrplay_api_AgcT; 46 | 47 | typedef struct 48 | { 49 | sdrplay_api_DcOffsetT dcOffset; 50 | sdrplay_api_DecimationT decimation; 51 | sdrplay_api_AgcT agc; 52 | sdrplay_api_AdsbModeT adsbMode; //default: sdrplay_api_ADSB_DECIMATION 53 | } sdrplay_api_ControlParamsT; 54 | 55 | #endif //SDRPLAY_API_CONTROL_H 56 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_dev.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_DEV_H 2 | #define SDRPLAY_API_DEV_H 3 | 4 | #include "sdrplay_api_rsp1a.h" 5 | #include "sdrplay_api_rsp2.h" 6 | #include "sdrplay_api_rspDuo.h" 7 | #include "sdrplay_api_rspDx.h" 8 | 9 | // Dev parameter enums 10 | typedef enum 11 | { 12 | sdrplay_api_ISOCH = 0, 13 | sdrplay_api_BULK = 1 14 | } sdrplay_api_TransferModeT; 15 | 16 | // Dev parameter structs 17 | typedef struct 18 | { 19 | double fsHz; // default: 2000000.0 20 | unsigned char syncUpdate; // default: 0 21 | unsigned char reCal; // default: 0 22 | } sdrplay_api_FsFreqT; 23 | 24 | typedef struct 25 | { 26 | unsigned int sampleNum; // default: 0 27 | unsigned int period; // default: 0 28 | } sdrplay_api_SyncUpdateT; 29 | 30 | typedef struct 31 | { 32 | unsigned char resetGainUpdate; // default: 0 33 | unsigned char resetRfUpdate; // default: 0 34 | unsigned char resetFsUpdate; // default: 0 35 | } sdrplay_api_ResetFlagsT; 36 | 37 | typedef struct 38 | { 39 | double ppm; // default: 0.0 40 | sdrplay_api_FsFreqT fsFreq; 41 | sdrplay_api_SyncUpdateT syncUpdate; 42 | sdrplay_api_ResetFlagsT resetFlags; 43 | sdrplay_api_TransferModeT mode; // default: sdrplay_api_ISOCH 44 | unsigned int samplesPerPkt; // default: 0 (output param) 45 | sdrplay_api_Rsp1aParamsT rsp1aParams; 46 | sdrplay_api_Rsp2ParamsT rsp2Params; 47 | sdrplay_api_RspDuoParamsT rspDuoParams; 48 | sdrplay_api_RspDxParamsT rspDxParams; 49 | } sdrplay_api_DevParamsT; 50 | 51 | #endif //SDRPLAY_API_DEV_H 52 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_rsp1a.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSP1A_H 2 | #define SDRPLAY_API_RSP1A_H 3 | 4 | #define RSPIA_NUM_LNA_STATES 10 5 | #define RSPIA_NUM_LNA_STATES_AM 7 6 | #define RSPIA_NUM_LNA_STATES_LBAND 9 7 | 8 | // RSP1A parameter enums 9 | 10 | // RSP1A parameter structs 11 | typedef struct 12 | { 13 | unsigned char rfNotchEnable; // default: 0 14 | unsigned char rfDabNotchEnable; // default: 0 15 | } sdrplay_api_Rsp1aParamsT; 16 | 17 | typedef struct 18 | { 19 | unsigned char biasTEnable; // default: 0 20 | } sdrplay_api_Rsp1aTunerParamsT; 21 | 22 | #endif //SDRPLAY_API_RSP1A_H 23 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_rsp2.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSP2_H 2 | #define SDRPLAY_API_RSP2_H 3 | 4 | #define RSPII_NUM_LNA_STATES 9 5 | #define RSPII_NUM_LNA_STATES_AMPORT 5 6 | #define RSPII_NUM_LNA_STATES_420MHZ 6 7 | 8 | // RSP2 parameter enums 9 | typedef enum 10 | { 11 | sdrplay_api_Rsp2_ANTENNA_A = 5, 12 | sdrplay_api_Rsp2_ANTENNA_B = 6, 13 | } sdrplay_api_Rsp2_AntennaSelectT; 14 | 15 | typedef enum 16 | { 17 | sdrplay_api_Rsp2_AMPORT_1 = 1, 18 | sdrplay_api_Rsp2_AMPORT_2 = 0, 19 | } sdrplay_api_Rsp2_AmPortSelectT; 20 | 21 | // RSP2 parameter structs 22 | typedef struct 23 | { 24 | unsigned char extRefOutputEn; // default: 0 25 | } sdrplay_api_Rsp2ParamsT; 26 | 27 | typedef struct 28 | { 29 | unsigned char biasTEnable; // default: 0 30 | sdrplay_api_Rsp2_AmPortSelectT amPortSel; // default: sdrplay_api_Rsp2_AMPORT_2 31 | sdrplay_api_Rsp2_AntennaSelectT antennaSel; // default: sdrplay_api_Rsp2_ANTENNA_A 32 | unsigned char rfNotchEnable; // default: 0 33 | } sdrplay_api_Rsp2TunerParamsT; 34 | 35 | #endif //SDRPLAY_API_RSP2_H 36 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_rspDuo.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSPduo_H 2 | #define SDRPLAY_API_RSPduo_H 3 | 4 | #define RSPDUO_NUM_LNA_STATES 10 5 | #define RSPDUO_NUM_LNA_STATES_AMPORT 5 6 | #define RSPDUO_NUM_LNA_STATES_AM 7 7 | #define RSPDUO_NUM_LNA_STATES_LBAND 9 8 | 9 | // RSPduo parameter enums 10 | typedef enum 11 | { 12 | sdrplay_api_RspDuoMode_Unknown = 0, 13 | sdrplay_api_RspDuoMode_Single_Tuner = 1, 14 | sdrplay_api_RspDuoMode_Dual_Tuner = 2, 15 | sdrplay_api_RspDuoMode_Master = 4, 16 | sdrplay_api_RspDuoMode_Slave = 8, 17 | } sdrplay_api_RspDuoModeT; 18 | 19 | typedef enum 20 | { 21 | sdrplay_api_RspDuo_AMPORT_1 = 1, 22 | sdrplay_api_RspDuo_AMPORT_2 = 0, 23 | } sdrplay_api_RspDuo_AmPortSelectT; 24 | 25 | // RSPduo parameter structs 26 | typedef struct 27 | { 28 | int extRefOutputEn; // default: 0 29 | } sdrplay_api_RspDuoParamsT; 30 | 31 | typedef struct 32 | { 33 | unsigned char biasTEnable; // default: 0 34 | sdrplay_api_RspDuo_AmPortSelectT tuner1AmPortSel; // default: sdrplay_api_RspDuo_AMPORT_2 35 | unsigned char tuner1AmNotchEnable; // default: 0 36 | unsigned char rfNotchEnable; // default: 0 37 | unsigned char rfDabNotchEnable; // default: 0 38 | } sdrplay_api_RspDuoTunerParamsT; 39 | 40 | #endif //SDRPLAY_API_RSPduo_H 41 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3-xxx/include-v3/sdrplay_api_rx_channel.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RX_CHANNEL_H 2 | #define SDRPLAY_API_RX_CHANNEL_H 3 | 4 | #include "sdrplay_api_tuner.h" 5 | #include "sdrplay_api_control.h" 6 | #include "sdrplay_api_rsp1a.h" 7 | #include "sdrplay_api_rsp2.h" 8 | #include "sdrplay_api_rspDuo.h" 9 | #include "sdrplay_api_rspDx.h" 10 | 11 | typedef struct 12 | { 13 | sdrplay_api_TunerParamsT tunerParams; 14 | sdrplay_api_ControlParamsT ctrlParams; 15 | sdrplay_api_Rsp1aTunerParamsT rsp1aTunerParams; 16 | sdrplay_api_Rsp2TunerParamsT rsp2TunerParams; 17 | sdrplay_api_RspDuoTunerParamsT rspDuoTunerParams; 18 | sdrplay_api_RspDxTunerParamsT rspDxTunerParams; 19 | } sdrplay_api_RxChannelParamsT; 20 | 21 | #endif //SDRPLAY_API_RX_CHANNEL_H 22 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/Rsp-device.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSP_DEVICE_H 3 | #define __RSP_DEVICE_H 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class sdrplayHandler_v3; 11 | 12 | class Rsp_device : public QObject { 13 | Q_OBJECT 14 | protected: 15 | sdrplay_api_DeviceT *chosenDevice; 16 | int sampleRate; 17 | int freq; 18 | bool agcMode; 19 | int lnaState; 20 | int GRdBValue; 21 | sdrplay_api_RxChannelParamsT *chParams; 22 | sdrplay_api_DeviceParamsT *deviceParams; 23 | sdrplayHandler_v3 *parent; 24 | int lna_upperBound; 25 | QString deviceModel; 26 | bool antennaSelect; 27 | int nrBits; 28 | bool biasT; 29 | public: 30 | Rsp_device (sdrplayHandler_v3 *parent, 31 | sdrplay_api_DeviceT *chosenDevice, 32 | int sampleRate, 33 | int startFrequency, 34 | bool agcMode, 35 | int lnaState, 36 | int GRdB, bool biasT); 37 | virtual ~Rsp_device (); 38 | virtual int lnaStates (int frequency); 39 | 40 | virtual bool restart (int freq); 41 | virtual bool set_agc (int setPoint, bool on); 42 | virtual bool set_lna (int lnaState); 43 | virtual bool set_GRdB (int GRdBValue); 44 | virtual bool set_ppm (int ppm); 45 | virtual bool set_antenna (int antenna); 46 | virtual bool set_amPort (int amPort); 47 | virtual bool set_biasT (bool biasT); 48 | signals: 49 | void set_lnabounds_signal (int, int); 50 | void set_deviceName_signal (const QString &); 51 | void set_antennaSelect_signal (int); 52 | void set_nrBits_signal (int); 53 | void show_lnaGain (int); 54 | }; 55 | #endif 56 | 57 | 58 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/Rsp1A-handler.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSP1A_HANDLER_H 3 | #define __RSP1A_HANDLER_H 4 | 5 | #include "Rsp-device.h" 6 | 7 | class sdrplayHandler_v3; 8 | 9 | class Rsp1A_handler: public Rsp_device { 10 | public: 11 | Rsp1A_handler (sdrplayHandler_v3 *parent, 12 | sdrplay_api_DeviceT *chosenDevice, 13 | int sampleRate, 14 | int freq, 15 | bool agcMode, 16 | int lnaState, 17 | int GRdB, 18 | bool biasT); 19 | ~Rsp1A_handler (); 20 | 21 | int lnaStates (int frequency); 22 | bool restart (int freq); 23 | bool set_agc (int setPoint, bool on); 24 | bool set_GRdB (int GRdBValue); 25 | bool set_ppm (int ppm); 26 | bool set_lna (int lnaState); 27 | bool set_biasT (bool); 28 | private: 29 | int16_t bankFor_rsp1A (int freq); 30 | int get_lnaGain (int, int); 31 | }; 32 | #endif 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/RspDuo-handler.h: -------------------------------------------------------------------------------- 1 | #ifndef __RSPDUO_HANDLER_H 2 | #define __RSPDUO_HANDLER_H 3 | 4 | #include "Rsp-device.h" 5 | 6 | class sdrplayHandler_v3; 7 | 8 | class RspDuo_handler: public Rsp_device { 9 | public: 10 | RspDuo_handler (sdrplayHandler_v3 *parent, 11 | sdrplay_api_DeviceT *chosenDevice, 12 | int sampleRate, 13 | int freq, 14 | bool agcMode, 15 | int lnaState, 16 | int GRdB, 17 | int antennaSelect, 18 | bool biasT); 19 | ~RspDuo_handler (); 20 | 21 | int lnaStates (int frequency); 22 | bool restart (int freq); 23 | bool set_agc (int setPoint, bool on); 24 | bool set_GRdB (int GRdBValue); 25 | bool set_ppm (int ppm); 26 | bool set_lna (int lnaState); 27 | bool set_antenna (int antenna); 28 | bool set_biasT (bool biasT); 29 | private: 30 | int16_t bankFor_rspDuo (int freq); 31 | int get_lnaGain (int, int); 32 | }; 33 | #endif 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/RspDx-handler.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSPDX_HANDLER_H 3 | #define __RSPDX_HANDLER_H 4 | 5 | #include "Rsp-device.h" 6 | 7 | class sdrplayHandler_v3; 8 | 9 | class RspDx_handler: public Rsp_device { 10 | public: 11 | RspDx_handler (sdrplayHandler_v3 *parent, 12 | sdrplay_api_DeviceT *chosenDevice, 13 | int sampleRate, 14 | int freq, 15 | bool agcMode, 16 | int lnaState, 17 | int GRdB, 18 | int antennaValue, 19 | bool biasT); 20 | ~RspDx_handler (); 21 | 22 | int lnaStates (int frequency); 23 | bool restart (int freq); 24 | bool set_agc (int setPoint, bool on); 25 | bool set_GRdB (int GRdBValue); 26 | bool set_ppm (int ppm); 27 | bool set_lna (int lnaState); 28 | bool set_antenna (int antenna); 29 | bool set_amPort (int amPort); 30 | bool set_biasT (bool biasT); 31 | private: 32 | int16_t bankFor_rspdx (int freq); 33 | int get_lnaGain (int, int); 34 | }; 35 | #endif 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/RspI-handler.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include "Rsp-device.h" 5 | 6 | class sdrplayHandler_v3; 7 | 8 | class Rsp1_handler: public Rsp_device { 9 | public: 10 | Rsp1_handler (sdrplayHandler_v3 *parent, 11 | sdrplay_api_DeviceT *chosenDevice, 12 | int sampleRate, 13 | int freq, 14 | bool agcMode, 15 | int lnaState, 16 | int GRdB, 17 | bool biasT); 18 | ~Rsp1_handler (); 19 | 20 | int lnaStates (int frequency); 21 | bool restart (int freq); 22 | bool set_agc (int setPoint, bool on); 23 | bool set_GRdB (int GRdBValue); 24 | bool set_ppm (int ppm); 25 | bool set_lna (int lnaState); 26 | bool set_biasT (bool); 27 | private: 28 | int16_t bankFor_rsp1 (int freq); 29 | int get_lnaGain (int, int); 30 | }; 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/RspII-handler.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __RSPII_HANDLER_H 3 | #define __RSPII_HANDLER_H 4 | 5 | #include "Rsp-device.h" 6 | 7 | class sdrplayHandler_v3; 8 | 9 | class RspII_handler: public Rsp_device { 10 | public: 11 | RspII_handler (sdrplayHandler_v3 *parent, 12 | sdrplay_api_DeviceT *chosenDevice, 13 | int sampleRate, 14 | int freq, 15 | bool agcMode, 16 | int lnaState, 17 | int GRdB, 18 | int antennaValue, 19 | bool biasT); 20 | ~RspII_handler (); 21 | 22 | int lnaStates (int frequency); 23 | bool restart (int freq); 24 | bool set_agc (int setPoint, bool on); 25 | bool set_GRdB (int GRdBValue); 26 | bool set_ppm (int ppm); 27 | bool set_lna (int lnaState); 28 | bool set_antenna (int antenna); 29 | bool set_biasT (bool biasT); 30 | private: 31 | int16_t bankFor_rspII (int freq); 32 | int get_lnaGain (int, int); 33 | }; 34 | #endif 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_control.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_CONTROL_H 2 | #define SDRPLAY_API_CONTROL_H 3 | 4 | // Control parameter enums 5 | typedef enum 6 | { 7 | sdrplay_api_AGC_DISABLE = 0, 8 | sdrplay_api_AGC_100HZ = 1, 9 | sdrplay_api_AGC_50HZ = 2, 10 | sdrplay_api_AGC_5HZ = 3, 11 | sdrplay_api_AGC_CTRL_EN = 4 12 | } sdrplay_api_AgcControlT; 13 | 14 | typedef enum 15 | { 16 | sdrplay_api_ADSB_DECIMATION = 0, 17 | sdrplay_api_ADSB_NO_DECIMATION_LOWPASS = 1, 18 | sdrplay_api_ADSB_NO_DECIMATION_BANDPASS_2MHZ = 2, 19 | sdrplay_api_ADSB_NO_DECIMATION_BANDPASS_3MHZ = 3 20 | } sdrplay_api_AdsbModeT; 21 | 22 | // Control parameter structs 23 | typedef struct 24 | { 25 | unsigned char DCenable; // default: 1 26 | unsigned char IQenable; // default: 1 27 | } sdrplay_api_DcOffsetT; 28 | 29 | typedef struct 30 | { 31 | unsigned char enable; // default: 0 32 | unsigned char decimationFactor; // default: 1 33 | unsigned char wideBandSignal; // default: 0 34 | } sdrplay_api_DecimationT; 35 | 36 | typedef struct 37 | { 38 | sdrplay_api_AgcControlT enable; // default: sdrplay_api_AGC_50HZ 39 | int setPoint_dBfs; // default: -60 40 | unsigned short attack_ms; // default: 0 41 | unsigned short decay_ms; // default: 0 42 | unsigned short decay_delay_ms; // default: 0 43 | unsigned short decay_threshold_dB; // default: 0 44 | int syncUpdate; // default: 0 45 | } sdrplay_api_AgcT; 46 | 47 | typedef struct 48 | { 49 | sdrplay_api_DcOffsetT dcOffset; 50 | sdrplay_api_DecimationT decimation; 51 | sdrplay_api_AgcT agc; 52 | sdrplay_api_AdsbModeT adsbMode; //default: sdrplay_api_ADSB_DECIMATION 53 | } sdrplay_api_ControlParamsT; 54 | 55 | #endif //SDRPLAY_API_CONTROL_H 56 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_dev.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_DEV_H 2 | #define SDRPLAY_API_DEV_H 3 | 4 | #include "sdrplay_api_rsp1a.h" 5 | #include "sdrplay_api_rsp2.h" 6 | #include "sdrplay_api_rspDuo.h" 7 | #include "sdrplay_api_rspDx.h" 8 | 9 | // Dev parameter enums 10 | typedef enum 11 | { 12 | sdrplay_api_ISOCH = 0, 13 | sdrplay_api_BULK = 1 14 | } sdrplay_api_TransferModeT; 15 | 16 | // Dev parameter structs 17 | typedef struct 18 | { 19 | double fsHz; // default: 2000000.0 20 | unsigned char syncUpdate; // default: 0 21 | unsigned char reCal; // default: 0 22 | } sdrplay_api_FsFreqT; 23 | 24 | typedef struct 25 | { 26 | unsigned int sampleNum; // default: 0 27 | unsigned int period; // default: 0 28 | } sdrplay_api_SyncUpdateT; 29 | 30 | typedef struct 31 | { 32 | unsigned char resetGainUpdate; // default: 0 33 | unsigned char resetRfUpdate; // default: 0 34 | unsigned char resetFsUpdate; // default: 0 35 | } sdrplay_api_ResetFlagsT; 36 | 37 | typedef struct 38 | { 39 | double ppm; // default: 0.0 40 | sdrplay_api_FsFreqT fsFreq; 41 | sdrplay_api_SyncUpdateT syncUpdate; 42 | sdrplay_api_ResetFlagsT resetFlags; 43 | sdrplay_api_TransferModeT mode; // default: sdrplay_api_ISOCH 44 | unsigned int samplesPerPkt; // default: 0 (output param) 45 | sdrplay_api_Rsp1aParamsT rsp1aParams; 46 | sdrplay_api_Rsp2ParamsT rsp2Params; 47 | sdrplay_api_RspDuoParamsT rspDuoParams; 48 | sdrplay_api_RspDxParamsT rspDxParams; 49 | } sdrplay_api_DevParamsT; 50 | 51 | #endif //SDRPLAY_API_DEV_H 52 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_rsp1a.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSP1A_H 2 | #define SDRPLAY_API_RSP1A_H 3 | 4 | #define RSPIA_NUM_LNA_STATES 10 5 | #define RSPIA_NUM_LNA_STATES_AM 7 6 | #define RSPIA_NUM_LNA_STATES_LBAND 9 7 | 8 | // RSP1A parameter enums 9 | 10 | // RSP1A parameter structs 11 | typedef struct 12 | { 13 | unsigned char rfNotchEnable; // default: 0 14 | unsigned char rfDabNotchEnable; // default: 0 15 | } sdrplay_api_Rsp1aParamsT; 16 | 17 | typedef struct 18 | { 19 | unsigned char biasTEnable; // default: 0 20 | } sdrplay_api_Rsp1aTunerParamsT; 21 | 22 | #endif //SDRPLAY_API_RSP1A_H 23 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_rsp2.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSP2_H 2 | #define SDRPLAY_API_RSP2_H 3 | 4 | #define RSPII_NUM_LNA_STATES 9 5 | #define RSPII_NUM_LNA_STATES_AMPORT 5 6 | #define RSPII_NUM_LNA_STATES_420MHZ 6 7 | 8 | // RSP2 parameter enums 9 | typedef enum 10 | { 11 | sdrplay_api_Rsp2_ANTENNA_A = 5, 12 | sdrplay_api_Rsp2_ANTENNA_B = 6, 13 | } sdrplay_api_Rsp2_AntennaSelectT; 14 | 15 | typedef enum 16 | { 17 | sdrplay_api_Rsp2_AMPORT_1 = 1, 18 | sdrplay_api_Rsp2_AMPORT_2 = 0, 19 | } sdrplay_api_Rsp2_AmPortSelectT; 20 | 21 | // RSP2 parameter structs 22 | typedef struct 23 | { 24 | unsigned char extRefOutputEn; // default: 0 25 | } sdrplay_api_Rsp2ParamsT; 26 | 27 | typedef struct 28 | { 29 | unsigned char biasTEnable; // default: 0 30 | sdrplay_api_Rsp2_AmPortSelectT amPortSel; // default: sdrplay_api_Rsp2_AMPORT_2 31 | sdrplay_api_Rsp2_AntennaSelectT antennaSel; // default: sdrplay_api_Rsp2_ANTENNA_A 32 | unsigned char rfNotchEnable; // default: 0 33 | } sdrplay_api_Rsp2TunerParamsT; 34 | 35 | #endif //SDRPLAY_API_RSP2_H 36 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_rspDuo.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RSPduo_H 2 | #define SDRPLAY_API_RSPduo_H 3 | 4 | #define RSPDUO_NUM_LNA_STATES 10 5 | #define RSPDUO_NUM_LNA_STATES_AMPORT 5 6 | #define RSPDUO_NUM_LNA_STATES_AM 7 7 | #define RSPDUO_NUM_LNA_STATES_LBAND 9 8 | 9 | // RSPduo parameter enums 10 | typedef enum 11 | { 12 | sdrplay_api_RspDuoMode_Unknown = 0, 13 | sdrplay_api_RspDuoMode_Single_Tuner = 1, 14 | sdrplay_api_RspDuoMode_Dual_Tuner = 2, 15 | sdrplay_api_RspDuoMode_Master = 4, 16 | sdrplay_api_RspDuoMode_Slave = 8, 17 | } sdrplay_api_RspDuoModeT; 18 | 19 | typedef enum 20 | { 21 | sdrplay_api_RspDuo_AMPORT_1 = 1, 22 | sdrplay_api_RspDuo_AMPORT_2 = 0, 23 | } sdrplay_api_RspDuo_AmPortSelectT; 24 | 25 | // RSPduo parameter structs 26 | typedef struct 27 | { 28 | int extRefOutputEn; // default: 0 29 | } sdrplay_api_RspDuoParamsT; 30 | 31 | typedef struct 32 | { 33 | unsigned char biasTEnable; // default: 0 34 | sdrplay_api_RspDuo_AmPortSelectT tuner1AmPortSel; // default: sdrplay_api_RspDuo_AMPORT_2 35 | unsigned char tuner1AmNotchEnable; // default: 0 36 | unsigned char rfNotchEnable; // default: 0 37 | unsigned char rfDabNotchEnable; // default: 0 38 | } sdrplay_api_RspDuoTunerParamsT; 39 | 40 | #endif //SDRPLAY_API_RSPduo_H 41 | -------------------------------------------------------------------------------- /devices/sdrplay-handler-v3/include-v3/sdrplay_api_rx_channel.h: -------------------------------------------------------------------------------- 1 | #ifndef SDRPLAY_API_RX_CHANNEL_H 2 | #define SDRPLAY_API_RX_CHANNEL_H 3 | 4 | #include "sdrplay_api_tuner.h" 5 | #include "sdrplay_api_control.h" 6 | #include "sdrplay_api_rsp1a.h" 7 | #include "sdrplay_api_rsp2.h" 8 | #include "sdrplay_api_rspDuo.h" 9 | #include "sdrplay_api_rspDx.h" 10 | 11 | typedef struct 12 | { 13 | sdrplay_api_TunerParamsT tunerParams; 14 | sdrplay_api_ControlParamsT ctrlParams; 15 | sdrplay_api_Rsp1aTunerParamsT rsp1aTunerParams; 16 | sdrplay_api_Rsp2TunerParamsT rsp2TunerParams; 17 | sdrplay_api_RspDuoTunerParamsT rspDuoTunerParams; 18 | sdrplay_api_RspDxTunerParamsT rspDxTunerParams; 19 | } sdrplay_api_RxChannelParamsT; 20 | 21 | #endif //SDRPLAY_API_RX_CHANNEL_H 22 | -------------------------------------------------------------------------------- /devices/sw-elad-s1/elad-s1.pro: -------------------------------------------------------------------------------- 1 | # 2 | TEMPLATE = lib 3 | CONFIG += plugin 4 | QT += core gui widgets 5 | 6 | INCLUDEPATH += . \ 7 | ../ ../.. \ 8 | ../../../includes \ 9 | ../../../includes/various 10 | HEADERS = ../rig-interface.h \ 11 | ../../../includes/swradio-constants.h \ 12 | ./elad-s1.h \ 13 | ./elad-worker.h \ 14 | ./elad-loader.h \ 15 | ../../../includes/various/ringbuffer.h 16 | SOURCES = ./elad-s1.cpp \ 17 | ./elad-worker.cpp \ 18 | ./elad-loader.cpp 19 | TARGET = $$qtLibraryTarget(device_elad-s1sw) 20 | FORMS += ./widget.ui 21 | 22 | unix{ 23 | DESTDIR = ../../../../../linux-bin/input-plugins-sw 24 | LIBS += -lusb-1.0 -ldl 25 | } 26 | 27 | -------------------------------------------------------------------------------- /docs/synchronization-in-drm/Screenshot-extio-pmsdr-sw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/Screenshot-extio-pmsdr-sw.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/flowvoordrm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/flowvoordrm.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/ofdm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/ofdm.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-1.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-2.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-3.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-4.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-5.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/screenshot-babcock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/screenshot-babcock.png -------------------------------------------------------------------------------- /docs/synchronization-in-drm/synchronization.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/synchronization.log -------------------------------------------------------------------------------- /docs/synchronization-in-drm/synchronization.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/docs/synchronization-in-drm/synchronization.pdf -------------------------------------------------------------------------------- /drm-decoder-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/drm-decoder-1.png -------------------------------------------------------------------------------- /drm-decoder-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/drm-decoder-2.png -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: Google 2 | SortIncludes: false 3 | # Do not reformat the Doxygen-style comments in the code 4 | CommentPragmas : "^ * \\\\" 5 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.lo 3 | *.la 4 | .deps 5 | .libs 6 | .dirstamp 7 | Makefile 8 | Makefile.in 9 | aclocal.m4 10 | autom4te.cache 11 | configure 12 | fdk-aac.pc 13 | config.guess 14 | config.log 15 | config.status 16 | config.sub 17 | depcomp 18 | install-sh 19 | libtool 20 | ltmain.sh 21 | m4/libtool.m4 22 | m4/ltoptions.m4 23 | m4/ltsugar.m4 24 | m4/ltversion.m4 25 | m4/lt~obsolete.m4 26 | missing 27 | stamp-h1 28 | aac-enc 29 | compile 30 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/ChangeLog: -------------------------------------------------------------------------------- 1 | 2.0.1 2 | - Minor release with a number of crash/fuzz fixes, primarily for the decoder 3 | 4 | 2.0.0 5 | - Major update in the upstream source base, with support for new 6 | profiles and features, and numerous crash/fuzz fixes. The new 7 | upstream version is referred to as FDKv2, thus skipping the 8 | major version 1 and syncing the fdk-aac major version number to 2. 9 | 10 | 0.1.6 11 | - Lots of minor assorted crash/fuzz fixes, mostly for the decoder but 12 | also some for the encoder 13 | 14 | 0.1.5 15 | - Updated upstream sources 16 | - Fixed building with GCC 3.3 and 3.4 17 | - Fixed building with GCC 6 18 | - AArch64 optimizations 19 | - Makefiles for building with MSVC 20 | - Support building the code in C++11 mode 21 | 22 | 0.1.4 23 | - Updated upstream sources, with minor changes to the decoder API 24 | breaking the ABI. (Calling code using AUDIO_CHANNEL_TYPE may need to 25 | be updated. A new option AAC_PCM_LIMITER_ENABLE has been added, enabled 26 | by default, which incurs extra decoding delay.) 27 | - PowerPC optimizations, fixes for building on AIX 28 | - Support for reading streamed wav files in the encoder example 29 | - Fix VBR encoding of sample rates over 64 kHz 30 | 31 | 0.1.3 32 | - Updated upstream sources, with a number of crash fixes and new features 33 | (including support for encoding 7.1) 34 | 35 | 0.1.2 36 | - Fix a few more crashes 37 | - Include dependency libs (such as -lm) in the pkg-config file 38 | 39 | 0.1.1 40 | - Updated to a new upstream version from Android 4.2, fixing a lot of crashes 41 | - Cleanup of autotools usage 42 | - Make sure the shared library links to libm if necessary 43 | - Performance improvements on x86 44 | - Added support for WG4/DVD audio channel mappings 45 | - Minimized the differences to upstream 46 | - Added an example encoder tool 47 | 48 | 0.1.0 49 | - Initial release of fdk-aac 50 | - autotools based build system 51 | - Enable setting VBR bitrate modes 52 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/METADATA: -------------------------------------------------------------------------------- 1 | third_party { 2 | license_type: BY_EXCEPTION_ONLY 3 | } 4 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/MODULE_LICENSE_FRAUNHOFER: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/MODULE_LICENSE_FRAUNHOFER -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/OWNERS: -------------------------------------------------------------------------------- 1 | jmtrivi@google.com 2 | gkasten@android.com 3 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/PREUPLOAD.cfg: -------------------------------------------------------------------------------- 1 | [Hook Scripts] 2 | mainline_hook = ${REPO_ROOT}/frameworks/av/tools/mainline_hook_project.sh 3 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | autoreconf -fiv 3 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/configure.ac: -------------------------------------------------------------------------------- 1 | dnl -*- Autoconf -*- 2 | dnl Process this file with autoconf to produce a configure script. 3 | 4 | AC_INIT([fdk-aac], [2.0.1], [http://sourceforge.net/projects/opencore-amr/]) 5 | AC_CONFIG_AUX_DIR(.) 6 | AC_CONFIG_MACRO_DIR([m4]) 7 | AM_INIT_AUTOMAKE([tar-ustar foreign]) 8 | m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 9 | 10 | dnl Various options for configure 11 | AC_ARG_ENABLE([example], 12 | [AS_HELP_STRING([--enable-example], 13 | [enable example encoding program (default is no)])], 14 | [example=$enableval], [example=no]) 15 | 16 | dnl Automake conditionals to set 17 | AM_CONDITIONAL(EXAMPLE, test x$example = xyes) 18 | 19 | dnl Checks for programs. 20 | AC_PROG_CC 21 | AC_PROG_CXX 22 | LT_INIT 23 | 24 | AC_SEARCH_LIBS([sin], [m]) 25 | 26 | dnl soname version to use 27 | dnl goes by ‘current[:revision[:age]]’ with the soname ending up as 28 | dnl current.age.revision 29 | FDK_AAC_VERSION=2:1:0 30 | 31 | AS_IF([test x$enable_shared = xyes], [LIBS_PRIVATE=$LIBS], [LIBS_PUBLIC=$LIBS]) 32 | AC_SUBST(FDK_AAC_VERSION) 33 | AC_SUBST(LIBS_PUBLIC) 34 | AC_SUBST(LIBS_PRIVATE) 35 | 36 | AC_CONFIG_FILES([Makefile 37 | fdk-aac.pc]) 38 | AC_OUTPUT 39 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/documentation/aacDecoder.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/documentation/aacDecoder.pdf -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/documentation/aacEncoder.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/documentation/aacEncoder.pdf -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/fdk-aac.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: Fraunhofer FDK AAC Codec Library 7 | Description: AAC codec library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lfdk-aac @LIBS_PUBLIC@ 10 | Libs.private: @LIBS_PRIVATE@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/fdk-aac.sym: -------------------------------------------------------------------------------- 1 | aacDecoder_AncDataGet 2 | aacDecoder_AncDataInit 3 | aacDecoder_Close 4 | aacDecoder_ConfigRaw 5 | aacDecoder_DecodeFrame 6 | aacDecoder_Fill 7 | aacDecoder_GetFreeBytes 8 | aacDecoder_GetLibInfo 9 | aacDecoder_GetStreamInfo 10 | aacDecoder_Open 11 | aacDecoder_SetParam 12 | aacEncClose 13 | aacEncEncode 14 | aacEncGetLibInfo 15 | aacEncInfo 16 | aacEncOpen 17 | aacEncoder_GetParam 18 | aacEncoder_SetParam 19 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/fuzzer/Android.bp: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * 3 | * Copyright (C) 2020 The Android Open Source Project 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at: 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | ***************************************************************************** 18 | * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 | */ 20 | 21 | cc_fuzz { 22 | name: "aac_dec_fuzzer", 23 | host_supported:true, 24 | 25 | static_libs: [ 26 | "libFraunhoferAAC", 27 | "liblog", 28 | ], 29 | 30 | srcs: [ 31 | "aac_dec_fuzzer.cpp", 32 | ], 33 | 34 | target: { 35 | darwin: { 36 | enabled: false, 37 | }, 38 | }, 39 | 40 | fuzz_config: { 41 | cc: [ 42 | "android-media-fuzzing-reports@google.com", 43 | ], 44 | componentid: 155276, 45 | }, 46 | } 47 | -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/libFDK/include/ppc/clz_ppc.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/libFDK/include/ppc/clz_ppc.h -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/libFDK/include/ppc/fixmul_ppc.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/libFDK/include/ppc/fixmul_ppc.h -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/m4/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/fdk-aac/m4/.gitkeep -------------------------------------------------------------------------------- /fdk-aac/fdk-aac/wavreader.h: -------------------------------------------------------------------------------- 1 | /* ------------------------------------------------------------------ 2 | * Copyright (C) 2009 Martin Storsjo 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | * express or implied. 14 | * See the License for the specific language governing permissions 15 | * and limitations under the License. 16 | * ------------------------------------------------------------------- 17 | */ 18 | 19 | #ifndef WAVREADER_H 20 | #define WAVREADER_H 21 | 22 | #ifdef __cplusplus 23 | extern "C" { 24 | #endif 25 | 26 | void* wav_read_open(const char *filename); 27 | void wav_read_close(void* obj); 28 | 29 | int wav_get_header(void* obj, int* format, int* channels, int* sample_rate, int* bits_per_sample, unsigned int* data_length); 30 | int wav_read_data(void* obj, unsigned char* data, unsigned int length); 31 | 32 | #ifdef __cplusplus 33 | } 34 | #endif 35 | 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /fdk-aac/libfdk-aac-2.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/fdk-aac/libfdk-aac-2.a -------------------------------------------------------------------------------- /fdk-aac/libfdk-aac-2.def: -------------------------------------------------------------------------------- 1 | ; 2 | ; Definition file of libfdk-aac-2.dll 3 | ; Automatic generated by gendef 4 | ; written by Kai Tietz 2008 5 | ; 6 | LIBRARY "libfdk-aac-2.dll" 7 | EXPORTS 8 | aacDecoder_AncDataGet 9 | aacDecoder_AncDataInit 10 | aacDecoder_Close 11 | aacDecoder_ConfigRaw 12 | aacDecoder_DecodeFrame 13 | aacDecoder_Fill 14 | aacDecoder_GetFreeBytes 15 | aacDecoder_GetLibInfo 16 | aacDecoder_GetStreamInfo 17 | aacDecoder_Open 18 | aacDecoder_SetParam 19 | aacEncClose 20 | aacEncEncode 21 | aacEncGetLibInfo 22 | aacEncInfo 23 | aacEncOpen 24 | aacEncoder_GetParam 25 | aacEncoder_SetParam 26 | -------------------------------------------------------------------------------- /filters/decimating_filter.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ifndef __DECIMATING_FILTER__ 4 | #define __DECIMATING_FILTER__ 5 | 6 | #include "fft.h" 7 | #include 8 | 9 | class decimating_filter { 10 | public: 11 | decimating_filter (int, int, int); 12 | ~decimating_filter (void); 13 | bool Pass (std::complex, std::complex *); 14 | private: 15 | int inrate; 16 | int outrate; 17 | common_fft fft_in; 18 | common_ifft fft_out; 19 | std::vector inwindow; 20 | std::vector> freqWindow; 21 | std::complex *hulpbuffer; 22 | int inp; 23 | int outp; 24 | std::complex *inbuffer; 25 | std::complex *outbuffer; 26 | }; 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /filters/hilbertfilter.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __HILBERT_TRANSFORM_H 3 | #define __HILBERT_TRANSFORM_H 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | 11 | 12 | class hilbertFilter { 13 | public: 14 | hilbertFilter (int size); 15 | ~hilbertFilter (); 16 | std::complex Pass (float); 17 | 18 | private: 19 | std::complex *fftBuffer_1; 20 | std::complex *fftBuffer_2; 21 | fftwf_plan plan_in; 22 | fftwf_plan plan_uit; 23 | int size; 24 | int inp; 25 | }; 26 | #endif 27 | 28 | 29 | -------------------------------------------------------------------------------- /filters/if-filter.cpp: -------------------------------------------------------------------------------- 1 | 2 | # 3 | /* 4 | * Copyright (C) 2014 5 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 6 | * Lazy Chair Programming 7 | * 8 | * This file is part of the SDR-J series. 9 | * Many of the ideas as implemented in the SDR-J are derived from 10 | * other work, made available through the (a) GNU general Public License. 11 | * All copyrights of the original authors are recognized. 12 | * 13 | * SDR-J is free software; you can redistribute it and/or modify 14 | * it under the terms of the GNU General Public License as published by 15 | * the Free Software Foundation; either version 2 of the License, or 16 | * (at your option) any later version. 17 | * 18 | * SDR-J is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | * 23 | * You should have received a copy of the GNU General Public License 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | */ 26 | #include "if-filter.h" 27 | 28 | 29 | ifFilter::ifFilter (int32_t rate, int32_t width) { 30 | theRate = rate; 31 | theWidth = width; 32 | theMiddle = 0; 33 | 34 | theFilter = new fftFilter (1024, 255); 35 | theFilter -> setBand (-width / 2, width / 2, rate); 36 | } 37 | 38 | ifFilter::~ifFilter (void) { 39 | delete theFilter; 40 | } 41 | 42 | void ifFilter::setMiddle (int32_t m) { 43 | theFilter -> setBand (m - theWidth / 2, 44 | m + theWidth / 2, theRate); 45 | } 46 | 47 | void ifFilter::Pass (DSPCOMPLEX *buffer, int32_t bufSize) { 48 | int32_t i; 49 | for (i = 0; i < bufSize; i ++) 50 | buffer [i] = theFilter -> Pass (buffer [i]); 51 | } 52 | 53 | -------------------------------------------------------------------------------- /filters/if-filter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2014 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the SDR-J series. 8 | * Many of the ideas as implemented in the SDR-J are derived from 9 | * other work, made available through the (a) GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 | */ 25 | 26 | #ifndef __IF_FILTER__ 27 | #define __IF_FILTER__ 28 | 29 | #include "radio-constants.h" 30 | #include "fft-filters.h" 31 | 32 | 33 | class ifFilter { 34 | public: 35 | ifFilter (int32_t rate, int32_t width); 36 | ~ifFilter (void); 37 | void setMiddle (int32_t); 38 | void Pass (DSPCOMPLEX *, int32_t); 39 | private: 40 | fftFilter *theFilter; 41 | int32_t theRate; 42 | int32_t theWidth; 43 | int32_t theMiddle; 44 | }; 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /hackrf.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/hackrf.tgz -------------------------------------------------------------------------------- /newUser.txt: -------------------------------------------------------------------------------- 1 | JvanKatwijk 2 | 3 | -------------------------------------------------------------------------------- /output/upconverter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2017 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the SDR-J 8 | * Many of the ideas as implemented in the SDR-J are derived from 9 | * other work, made available through the (a) GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 | */ 25 | #ifndef __UP_CONVERTER__ 26 | #define __UP_CONVERTER__ 27 | 28 | #include 29 | #include 30 | #include "radio-constants.h" 31 | 32 | class audioSink; 33 | 34 | class upConverter { 35 | public: 36 | upConverter (int32_t, int32_t, audioSink *); 37 | ~upConverter (void); 38 | void handle (DSPCOMPLEX *buffer, int amount); 39 | private: 40 | int32_t inRate; 41 | int32_t outRate; 42 | audioSink *client; 43 | double ratio; 44 | int32_t outputLimit; 45 | int32_t inputLimit; 46 | SRC_STATE *src_converter; 47 | SRC_DATA *src_data; 48 | float *inBuffer; 49 | float *outBuffer; 50 | int32_t inp; 51 | }; 52 | #endif 53 | 54 | -------------------------------------------------------------------------------- /res/swradio.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/res/swradio.ico -------------------------------------------------------------------------------- /resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | AUTHORS 4 | COPYING 5 | res/swradio.ico 6 | res/Adaptic.qss 7 | res/Combinear.qss 8 | res/sw-bandplan.xml 9 | 10 | 11 | -------------------------------------------------------------------------------- /rtl-sdr.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/rtl-sdr.tgz -------------------------------------------------------------------------------- /scopes-qwt6/virtual-scope.cpp: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2017, 2018 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the SDR-J. 8 | * 9 | * SDR-J is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * SDR-J is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with JSDR; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #include "virtual-scope.h" 24 | 25 | virtualScope::virtualScope (QwtPlot *scope, int16_t displaysize) { 26 | plotgrid = scope; 27 | displaySize = displaysize; 28 | bitDepth = 24; 29 | } 30 | 31 | virtualScope::~virtualScope (void) { 32 | } 33 | 34 | void virtualScope::display (double *x_axis, 35 | double *buffer, 36 | double amp, 37 | int32_t marker, 38 | int32_t theBin) { 39 | (void)x_axis; (void)buffer; (void)amp; (void)marker; (void)theBin; 40 | } 41 | 42 | void virtualScope::set_bitDepth (int16_t b) { 43 | (void)b; 44 | } 45 | 46 | -------------------------------------------------------------------------------- /scopes-qwt6/virtual-scope.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2017 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the sw receiver 8 | * 9 | * sw receiver is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * swreceiver is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with swreceiver; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __VIRTUAL_SCOPE_H 25 | #define __VIRTUAL_SCOPE_H 26 | 27 | #include "radio-constants.h" 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | class virtualScope: public QObject { 34 | Q_OBJECT 35 | public: 36 | virtualScope (QwtPlot *, int16_t); 37 | virtual ~virtualScope (void); 38 | virtual void display (double *, double *, 39 | double, int32_t, int32_t); 40 | virtual void set_bitDepth (int16_t); 41 | protected: 42 | QwtPlot *plotgrid; 43 | int16_t displaySize; 44 | int16_t bitDepth; 45 | 46 | 47 | signals: 48 | void clickedwithLeft (int); 49 | void clickedwithRight (int); 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /swradio-cw-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-cw-widget.png -------------------------------------------------------------------------------- /swradio-device-selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-device-selection.png -------------------------------------------------------------------------------- /swradio-drm-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-drm-widget.png -------------------------------------------------------------------------------- /swradio-ft8-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-ft8-widget.png -------------------------------------------------------------------------------- /swradio-navtex-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-navtex-widget.png -------------------------------------------------------------------------------- /swradio-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-overview.png -------------------------------------------------------------------------------- /swradio-pmsdr-drm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-pmsdr-drm.png -------------------------------------------------------------------------------- /swradio-psk-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-psk-widget.png -------------------------------------------------------------------------------- /swradio-rtty-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-rtty-widget.png -------------------------------------------------------------------------------- /swradio-waterfall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-waterfall.png -------------------------------------------------------------------------------- /swradio-wfax-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio-wfax-widget.png -------------------------------------------------------------------------------- /swradio.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=swradio 3 | Exec=swradio-8 4 | Icon=swradio 5 | Type=Application 6 | Categories=AudioVideo; 7 | 8 | -------------------------------------------------------------------------------- /swradio.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio.ico -------------------------------------------------------------------------------- /swradio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JvanKatwijk/swradio-8/c65b436d6bcc43c37afbb96af12ef6fd2c9273a8/swradio.png -------------------------------------------------------------------------------- /various/Xtan2.h: -------------------------------------------------------------------------------- 1 | # 2 | // 3 | // This LUT implementation of atan2 is a C++ translation of 4 | // a Java discussion on the net 5 | // http://www.java-gaming.org/index.php?topic=14647.0 6 | 7 | #ifndef __COMP_ATAN 8 | #define __COMP_ATAN 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include "fm-constants.h" 16 | # 17 | class compAtan { 18 | public: 19 | compAtan (void); 20 | ~compAtan (void); 21 | float atan2 (float, float); 22 | float argX (DSPCOMPLEX); 23 | private: 24 | float *ATAN2_TABLE_PPY; 25 | float *ATAN2_TABLE_PPX; 26 | float *ATAN2_TABLE_PNY; 27 | float *ATAN2_TABLE_PNX; 28 | float *ATAN2_TABLE_NPY; 29 | float *ATAN2_TABLE_NPX; 30 | float *ATAN2_TABLE_NNY; 31 | float *ATAN2_TABLE_NNX; 32 | float Stretch; 33 | }; 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /various/rate-converter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2020 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Computing 6 | * 7 | * This file is part of the DRM+ Decoder 8 | * 9 | * DRM+ Decoder is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * DRM+ Decoder is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with DRM+ Decoder; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | #ifndef __RATE_CONVERTER__ 24 | #define __RATE_CONVERTER__ 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include "radio-constants.h" 33 | 34 | class rateConverter { 35 | private: 36 | int32_t inRate; 37 | int32_t outRate; 38 | double ratio; 39 | int32_t outputLimit; 40 | int32_t inputLimit; 41 | SRC_STATE *converter; 42 | SRC_DATA *src_data; 43 | float *inBuffer; 44 | float *outBuffer; 45 | int32_t inp; 46 | public: 47 | rateConverter (int32_t inRate, int32_t outRate, 48 | int32_t inSize); 49 | 50 | ~rateConverter (void); 51 | 52 | bool convert (std::complex v, 53 | std::complex *out, int32_t *amount); 54 | 55 | int32_t getOutputsize (void); 56 | }; 57 | 58 | #endif 59 | 60 | -------------------------------------------------------------------------------- /various/s-meter.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2010, 2011, 2012 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the SDR-J. 8 | * Many of the ideas as implemented in SDR-J are derived from 9 | * other work, made available through the GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with SDR-J; if not, write to the Free Software 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | * 26 | */ 27 | #ifndef __S_METER__ 28 | #define __S_METER__ 29 | 30 | #include "radio-constants.h" 31 | 32 | class S_Meter { 33 | public: 34 | S_Meter (int32_t rate); 35 | ~S_Meter (void); 36 | float MeterValue (std::complex sample); 37 | void set_bitDepth (int16_t); 38 | 39 | private: 40 | float s_attack; 41 | float s_decay; 42 | float S_attack; 43 | float S_decay; 44 | int16_t bitDepth; 45 | int32_t zeroLevel; 46 | int16_t fromDBtoS (float db); 47 | }; 48 | #endif 49 | 50 | -------------------------------------------------------------------------------- /various/shifter.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ifndef __SHIFTER__ 4 | #define __SHIFTER__ 5 | #include "radio-constants.h" 6 | 7 | class shifter { 8 | public: 9 | shifter (int32_t); 10 | ~shifter (void); 11 | std::complex do_shift (std::complex, int32_t); 12 | void do_shift (std::complex *, 13 | int32_t, int32_t); 14 | private: 15 | int32_t phase; 16 | int32_t tableSize; 17 | std::complex *table; 18 | }; 19 | #endif 20 | 21 | -------------------------------------------------------------------------------- /various/slidingfft.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2008, 2009, 2010, 2017, 2018 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair Programming 6 | * 7 | * This file is part of the swradio 8 | * 9 | * swradio is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * sw-radio is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with sw-radio; if not, write to the Free Software 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 | */ 23 | 24 | #ifndef __SLIDING_FFT__ 25 | #define __SLIDING_FFT__ 26 | 27 | #include "radio-constants.h" 28 | #include 29 | 30 | #define STABILIZER 0.999 31 | /* 32 | * a sliding FFT 33 | */ 34 | 35 | class slidingFFT { 36 | public: 37 | slidingFFT (int32_t, int32_t, int32_t); 38 | ~slidingFFT (); 39 | void do_FFT (std::complex, 40 | std::complex *); 41 | std::complex getBin (int32_t); 42 | int32_t first (); 43 | void reset (); 44 | private: 45 | std::vector> fftBase; 46 | std::vector> Bins; /* this is where it happens */ 47 | std::vector> Past; 48 | float Corrector; 49 | int32_t FFTlen; 50 | int32_t First; 51 | int32_t Last; 52 | int32_t Amount; 53 | int32_t Ptr; 54 | }; 55 | 56 | #endif 57 | 58 | -------------------------------------------------------------------------------- /various/utilities.h: -------------------------------------------------------------------------------- 1 | # 2 | /* 3 | * Copyright (C) 2014 4 | * Jan van Katwijk (J.vanKatwijk@gmail.com) 5 | * Lazy Chair programming 6 | * 7 | * This file is part of the SDR-J 8 | * Many of the ideas as implemented in SDR-J are derived from 9 | * other work, made available through the GNU general Public License. 10 | * All copyrights of the original authors are recognized. 11 | * 12 | * SDR-J is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * SDR-J is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with SDR-J; if not, write to the Free Software 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 | */ 26 | 27 | #ifndef __UTILITY_FUNCTIONS__ 28 | #define __UTILITY_FUNCTIONS__ 29 | 30 | #include 31 | 32 | float decayingAverage (float, float, float); 33 | float clamp (float, float, float); 34 | class average { 35 | public: 36 | average (int16_t); 37 | ~average (void); 38 | float filter (float); 39 | void clear (float); 40 | private: 41 | int16_t size; 42 | float *vec; 43 | int16_t filp; 44 | }; 45 | 46 | #endif 47 | 48 | 49 | --------------------------------------------------------------------------------