diff --git a/sdrbase/dsp/glspectrumsettings.cpp b/sdrbase/dsp/glspectrumsettings.cpp index 3bd2c742c..3ccbdc8ea 100644 --- a/sdrbase/dsp/glspectrumsettings.cpp +++ b/sdrbase/dsp/glspectrumsettings.cpp @@ -39,16 +39,17 @@ void GLSpectrumSettings::resetToDefaults() m_histogramStroke = 30; m_displayGridIntensity = 5, m_displayWaterfall = true; - m_invertedWaterfall = false; + m_invertedWaterfall = true; m_displayMaxHold = false; m_displayHistogram = false; m_displayGrid = false; - m_invert = true; m_averagingMode = AvgModeNone; m_averagingIndex = 0; m_linear = false; m_wsSpectrumAddress = "127.0.0.1"; m_wsSpectrumPort = 8887; + m_ssb = false; + m_usb = true; } QByteArray GLSpectrumSettings::serialize() const @@ -66,7 +67,6 @@ QByteArray GLSpectrumSettings::serialize() const s.writeBool(9, m_displayHistogram); s.writeS32(10, m_decay); s.writeBool(11, m_displayGrid); - s.writeBool(12, m_invert); s.writeS32(13, m_displayGridIntensity); s.writeS32(14, m_decayDivisor); s.writeS32(15, m_histogramStroke); @@ -78,6 +78,8 @@ QByteArray GLSpectrumSettings::serialize() const s.writeBool(21, m_linear); s.writeString(22, m_wsSpectrumAddress); s.writeU32(23, m_wsSpectrumPort); + s.writeBool(24, m_ssb); + s.writeBool(25, m_usb); return s.final(); } @@ -108,7 +110,6 @@ bool GLSpectrumSettings::deserialize(const QByteArray& data) d.readBool(9, &m_displayHistogram, false); d.readS32(10, &m_decay, 1); d.readBool(11, &m_displayGrid, false); - d.readBool(12, &m_invert, true); d.readS32(13, &m_displayGridIntensity, 5); d.readS32(14, &m_decayDivisor, 1); d.readS32(15, &m_histogramStroke, 30); @@ -124,6 +125,8 @@ bool GLSpectrumSettings::deserialize(const QByteArray& data) d.readString(22, &m_wsSpectrumAddress, "127.0.0.1"); d.readU32(23, &utmp, 8887); m_wsSpectrumPort = utmp < 1024 ? 1024 : utmp > 65535 ? 65535 : utmp; + d.readBool(24, &m_ssb, false); + d.readBool(25, &m_usb, true); return true; } diff --git a/sdrbase/dsp/glspectrumsettings.h b/sdrbase/dsp/glspectrumsettings.h index 4e5c9cb32..2fd88e05e 100644 --- a/sdrbase/dsp/glspectrumsettings.h +++ b/sdrbase/dsp/glspectrumsettings.h @@ -53,11 +53,12 @@ public: bool m_displayCurrent; bool m_displayHistogram; bool m_displayGrid; - bool m_invert; AveragingMode m_averagingMode; int m_averagingIndex; unsigned int m_averagingNb; bool m_linear; //!< linear else logarithmic scale + bool m_ssb; //!< SSB display with spectrum center at start of array or display - else spectrum center is on center + bool m_usb; //!< USB display with increasing frequencies towads the right - else decreasing frequencies QString m_wsSpectrumAddress; uint16_t m_wsSpectrumPort; diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index 17c929bb0..583b0ef0a 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -142,7 +142,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -175,7 +177,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } @@ -219,7 +223,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -262,7 +268,9 @@ void SpectrumVis::feed(const Complex *begin, unsigned int length) m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -354,7 +362,9 @@ void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleV m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -403,7 +413,9 @@ void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleV m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } @@ -470,7 +482,9 @@ void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleV m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -536,7 +550,9 @@ void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleV m_settings.m_fftSize, m_centerFrequency, m_sampleRate, - m_settings.m_linear + m_settings.m_linear, + m_settings.m_ssb, + m_settings.m_usb ); } } @@ -640,6 +656,8 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force) << " m_refLevel: " << settings.m_refLevel << " m_powerRange: " << settings.m_powerRange << " m_linear: " << settings.m_linear + << " m_ssb: " << settings.m_ssb + << " m_usb: " << settings.m_usb << " m_wsSpectrumAddress: " << settings.m_wsSpectrumAddress << " m_wsSpectrumPort: " << settings.m_wsSpectrumPort << " force: " << force; diff --git a/sdrbase/webapi/webapiadapterbase.cpp b/sdrbase/webapi/webapiadapterbase.cpp index 603c9fe89..e195825e4 100644 --- a/sdrbase/webapi/webapiadapterbase.cpp +++ b/sdrbase/webapi/webapiadapterbase.cpp @@ -120,7 +120,6 @@ void WebAPIAdapterBase::webapiFormatPreset( swgSpectrumConfig->setDisplayHistogram(m_spectrumSettings.m_displayHistogram ? 1 : 0); swgSpectrumConfig->setDecay(m_spectrumSettings.m_decay); swgSpectrumConfig->setDisplayGrid(m_spectrumSettings.m_displayGrid ? 1 : 0); - swgSpectrumConfig->setInvert(m_spectrumSettings.m_invert ? 1 : 0); swgSpectrumConfig->setDisplayGridIntensity(m_spectrumSettings.m_displayGridIntensity); swgSpectrumConfig->setDecayDivisor(m_spectrumSettings.m_decayDivisor); swgSpectrumConfig->setHistogramStroke(m_spectrumSettings.m_histogramStroke); @@ -264,9 +263,6 @@ void WebAPIAdapterBase::webapiUpdatePreset( if (spectrumIt->contains("histogramStroke")) { spectrumSettings.m_histogramStroke = apiPreset->getSpectrumConfig()->getHistogramStroke(); } - if (spectrumIt->contains("invert")) { - spectrumSettings.m_invert = apiPreset->getSpectrumConfig()->getInvert() != 0; - } if (spectrumIt->contains("invertedWaterfall")) { spectrumSettings.m_invertedWaterfall = apiPreset->getSpectrumConfig()->getInvertedWaterfall() != 0; } diff --git a/sdrbase/websockets/wsspectrum.cpp b/sdrbase/websockets/wsspectrum.cpp index 53dc4cd4f..1b79abb4f 100644 --- a/sdrbase/websockets/wsspectrum.cpp +++ b/sdrbase/websockets/wsspectrum.cpp @@ -117,7 +117,9 @@ void WSSpectrum::newSpectrum( int fftSize, uint64_t centerFrequency, int bandwidth, - bool linear + bool linear, + bool ssb, + bool usb ) { if (m_timer.elapsed() < 200) { // Max 5 frames per second @@ -137,7 +139,9 @@ void WSSpectrum::newSpectrum( nowMs, centerFrequency, bandwidth, - linear + linear, + ssb, + usb ); //qDebug() << "WSSpectrum::newSpectrum: " << payload.size() << " bytes in " << elapsed << " ms"; emit payloadToSend(payload); @@ -159,7 +163,9 @@ void WSSpectrum::buildPayload( uint64_t timestampMs, uint64_t centerFrequency, int bandwidth, - bool linear + bool linear, + bool ssb, + bool usb ) { QBuffer buffer(&bytes); @@ -169,8 +175,8 @@ void WSSpectrum::buildPayload( buffer.write((char*) ×tampMs, sizeof(uint64_t)); // 16 buffer.write((char*) &fftSize, sizeof(int)); // 24 buffer.write((char*) &bandwidth, sizeof(int)); // 28 - int linearInt = linear ? 1 : 0; - buffer.write((char*) &linearInt, sizeof(int)); // 32 + int indicators = (linear ? 1 : 0) + (ssb ? 2 : 0) + (usb ? 4 : 0); + buffer.write((char*) &indicators, sizeof(int)); // 32 buffer.write((char*) spectrum.data(), fftSize*sizeof(Real)); // 36 buffer.close(); } diff --git a/sdrbase/websockets/wsspectrum.h b/sdrbase/websockets/wsspectrum.h index 133526e85..bcc092c2a 100644 --- a/sdrbase/websockets/wsspectrum.h +++ b/sdrbase/websockets/wsspectrum.h @@ -49,7 +49,9 @@ public: int fftSize, uint64_t centerFrequency, int bandwidth, - bool linear + bool linear, + bool ssb = false, + bool usb = true ); signals: @@ -77,7 +79,9 @@ private: uint64_t timestampMs, uint64_t centerFrequency, int bandwidth, - bool linear + bool linear, + bool ssb, + bool usb ); }; diff --git a/sdrgui/gui/glspectrumgui.cpp b/sdrgui/gui/glspectrumgui.cpp index dd62cd2ef..16a807c5c 100644 --- a/sdrgui/gui/glspectrumgui.cpp +++ b/sdrgui/gui/glspectrumgui.cpp @@ -110,7 +110,7 @@ void GLSpectrumGUI::displaySettings() ui->maxHold->setChecked(m_settings.m_displayMaxHold); ui->current->setChecked(m_settings.m_displayCurrent); ui->histogram->setChecked(m_settings.m_displayHistogram); - ui->invert->setChecked(m_settings.m_invert); + ui->invertWaterfall->setChecked(m_settings.m_invertedWaterfall); ui->grid->setChecked(m_settings.m_displayGrid); ui->gridIntensity->setSliderPosition(m_settings.m_displayGridIntensity); @@ -169,7 +169,7 @@ void GLSpectrumGUI::applySettings() m_glSpectrum->setDecay(m_settings.m_decay); m_glSpectrum->setDecayDivisor(m_settings.m_decayDivisor); m_glSpectrum->setHistoStroke(m_settings.m_histogramStroke); - m_glSpectrum->setInvertedWaterfall(m_settings.m_invert); + m_glSpectrum->setInvertedWaterfall(m_settings.m_invertedWaterfall); m_glSpectrum->setDisplayGrid(m_settings.m_displayGrid); m_glSpectrum->setDisplayGridIntensity(m_settings.m_displayGridIntensity); m_glSpectrum->setDisplayTraceIntensity(m_settings.m_displayTraceIntensity); @@ -306,9 +306,9 @@ void GLSpectrumGUI::on_current_toggled(bool checked) applySettings(); } -void GLSpectrumGUI::on_invert_toggled(bool checked) +void GLSpectrumGUI::on_invertWaterfall_toggled(bool checked) { - m_settings.m_invert = checked; + m_settings.m_invertedWaterfall = checked; applySettings(); } diff --git a/sdrgui/gui/glspectrumgui.h b/sdrgui/gui/glspectrumgui.h index b389c8ccf..00eac0725 100644 --- a/sdrgui/gui/glspectrumgui.h +++ b/sdrgui/gui/glspectrumgui.h @@ -99,7 +99,7 @@ private slots: void on_histogram_toggled(bool checked); void on_maxHold_toggled(bool checked); void on_current_toggled(bool checked); - void on_invert_toggled(bool checked); + void on_invertWaterfall_toggled(bool checked); void on_grid_toggled(bool checked); void on_clearSpectrum_clicked(bool checked); diff --git a/sdrgui/gui/glspectrumgui.ui b/sdrgui/gui/glspectrumgui.ui index e468dcd11..ecdf8af3f 100644 --- a/sdrgui/gui/glspectrumgui.ui +++ b/sdrgui/gui/glspectrumgui.ui @@ -215,7 +215,7 @@ - + Exchange waterfall and histogram @@ -748,7 +748,7 @@ histogram maxHold - invert + invertWaterfall grid