/////////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2024 Edouard Griffiths, F4EXB // // // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation as version 3 of the License, or // // (at your option) any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License V3 for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// #ifndef PLUGINS_CHANNELRX_WDSPRX_WDSPRXSETTINGS_H_ #define PLUGINS_CHANNELRX_WDSPRX_WDSPRXSETTINGS_H_ #include #include #include "dsp/fftwindow.h" class Serializable; struct WDSPRxFilterSettings { int m_spanLog2; Real m_highCutoff; Real m_lowCutoff; int m_fftWindow; // 0: 4-term Blackman-Harris, 1: 7-term Blackman-Harris bool m_dnr; int m_dnrScheme; float m_dnrAboveAvgFactor; float m_dnrSigmaFactor; int m_dnrNbPeaks; float m_dnrAlpha; WDSPRxFilterSettings() : m_spanLog2(3), m_highCutoff(3000), m_lowCutoff(300), m_fftWindow(0) {} }; struct WDSPRxSettings { enum AGCMode { AGCLong, AGCSlow, AGCMedium, AGCFast, }; qint32 m_inputFrequencyOffset; // Real m_highCutoff; // Real m_lowCutoff; Real m_volume; // int m_spanLog2; bool m_audioBinaural; bool m_audioFlipChannels; bool m_dsb; bool m_audioMute; bool m_agc; AGCMode m_agcMode; int m_agcGain; //!< Fixed gain if AGC is off else top gain int m_agcSlope; int m_agcHangThreshold; bool m_dnr; int m_dnrScheme; float m_dnrAboveAvgFactor; float m_dnrSigmaFactor; int m_dnrNbPeaks; float m_dnrAlpha; quint32 m_rgbColor; QString m_title; QString m_audioDeviceName; int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx). bool m_useReverseAPI; QString m_reverseAPIAddress; uint16_t m_reverseAPIPort; uint16_t m_reverseAPIDeviceIndex; uint16_t m_reverseAPIChannelIndex; int m_workspaceIndex; QByteArray m_geometryBytes; bool m_hidden; // FFTWindow::Function m_fftWindow; std::vector m_filterBank; unsigned int m_filterIndex; Serializable *m_channelMarker; Serializable *m_spectrumGUI; Serializable *m_rollupState; WDSPRxSettings(); void resetToDefaults(); void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } QByteArray serialize() const; bool deserialize(const QByteArray& data); static const int m_minPowerThresholdDB; static const float m_mminPowerThresholdDBf; }; #endif /* PLUGINS_CHANNELRX_WDSPRX_WDSPRXSETTINGS_H_ */