From ef2fbb844e60760b5dc4c5f5f83ac422a4c94d17 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 4 Mar 2024 23:05:54 +0100 Subject: [PATCH] SigMF file sink: updated API with new record size log2 --- .../channelrx/sigmffilesink/sigmffilesink.cpp | 10 ++++++++ sdrbase/resources/webapi/doc/html2/index.html | 6 ++++- .../doc/swagger/include/SigMFFileSink.yaml | 3 +++ .../api/swagger/include/SigMFFileSink.yaml | 3 +++ swagger/sdrangel/code/html2/index.html | 6 ++++- .../qt5/client/SWGSigMFFileSinkSettings.cpp | 23 +++++++++++++++++++ .../qt5/client/SWGSigMFFileSinkSettings.h | 6 +++++ 7 files changed, 55 insertions(+), 2 deletions(-) diff --git a/plugins/channelrx/sigmffilesink/sigmffilesink.cpp b/plugins/channelrx/sigmffilesink/sigmffilesink.cpp index a382f59eb..b4b5dd893 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesink.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesink.cpp @@ -363,6 +363,9 @@ void SigMFFileSink::applySettings(const SigMFFileSinkSettings& settings, bool fo if ((settings.m_squelchRecordingEnable != m_settings.m_squelchRecordingEnable) || force) { reverseAPIKeys.append("squelchRecordingEnable"); } + if ((settings.m_log2RecordSampleSize != m_settings.m_log2RecordSampleSize) || force) { + reverseAPIKeys.append("log2RecordSampleSize"); + } if (m_settings.m_streamIndex != settings.m_streamIndex) { @@ -570,6 +573,9 @@ void SigMFFileSink::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("squelchRecordingEnable")) { settings.m_squelchRecordingEnable = response.getSigMfFileSinkSettings()->getSquelchRecordingEnable() != 0; } + if (channelSettingsKeys.contains("log2RecordSampleSize")) { + settings.m_log2RecordSampleSize = response.getSigMfFileSinkSettings()->getLog2RecordSampleSize(); + } if (channelSettingsKeys.contains("streamIndex")) { settings.m_streamIndex = response.getSigMfFileSinkSettings()->getStreamIndex(); } @@ -626,6 +632,7 @@ void SigMFFileSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response.getSigMfFileSinkSettings()->setPreRecordTime(settings.m_preRecordTime); response.getSigMfFileSinkSettings()->setSquelchPostRecordTime(settings.m_squelchPostRecordTime); response.getSigMfFileSinkSettings()->setSquelchRecordingEnable(settings.m_squelchRecordingEnable ? 1 : 0); + response.getSigMfFileSinkSettings()->setLog2RecordSampleSize(settings.m_log2RecordSampleSize); response.getSigMfFileSinkSettings()->setStreamIndex(settings.m_streamIndex); response.getSigMfFileSinkSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); @@ -794,6 +801,9 @@ void SigMFFileSink::webapiFormatChannelSettings( if (channelSettingsKeys.contains("squelchRecordingEnable")) { swgSigMFFileSinkSettings->setSquelchRecordingEnable(settings.m_squelchRecordingEnable ? 1 : 0); } + if (channelSettingsKeys.contains("log2RecordSampleSize")) { + swgSigMFFileSinkSettings->setLog2RecordSampleSize(settings.m_log2RecordSampleSize); + } if (channelSettingsKeys.contains("streamIndex")) { swgSigMFFileSinkSettings->setStreamIndex(settings.m_streamIndex); } diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 09d765bd0..9e0651169 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -14562,6 +14562,10 @@ margin-bottom: 20px; "type" : "integer", "description" : "Automatic recording triggered by spectrum squalch * 0 - disabled * 1 - enabled\n" }, + "log2RecordSampleSize" : { + "type" : "integer", + "description" : "log2 of recording sample (I or Q) size in bits. Can be 3, 4 or 5." + }, "streamIndex" : { "type" : "integer", "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." @@ -58773,7 +58777,7 @@ except ApiException as e:
- Generated 2024-03-03T22:27:13.533+01:00 + Generated 2024-03-04T22:20:15.730+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml b/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml index 7215cd3b5..b803b3fd6 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/SigMFFileSink.yaml @@ -34,6 +34,9 @@ SigMFFileSinkSettings: Automatic recording triggered by spectrum squalch * 0 - disabled * 1 - enabled + log2RecordSampleSize: + type: integer + description: log2 of recording sample (I or Q) size in bits. Can be 3, 4 or 5. streamIndex: description: MIMO channel. Not relevant when connected to SI (single Rx). type: integer diff --git a/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml b/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml index 20dca0134..f6bc60025 100644 --- a/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml +++ b/swagger/sdrangel/api/swagger/include/SigMFFileSink.yaml @@ -34,6 +34,9 @@ SigMFFileSinkSettings: Automatic recording triggered by spectrum squalch * 0 - disabled * 1 - enabled + log2RecordSampleSize: + type: integer + description: log2 of recording sample (I or Q) size in bits. Can be 3, 4 or 5. streamIndex: description: MIMO channel. Not relevant when connected to SI (single Rx). type: integer diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 09d765bd0..9e0651169 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -14562,6 +14562,10 @@ margin-bottom: 20px; "type" : "integer", "description" : "Automatic recording triggered by spectrum squalch * 0 - disabled * 1 - enabled\n" }, + "log2RecordSampleSize" : { + "type" : "integer", + "description" : "log2 of recording sample (I or Q) size in bits. Can be 3, 4 or 5." + }, "streamIndex" : { "type" : "integer", "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." @@ -58773,7 +58777,7 @@ except ApiException as e:
- Generated 2024-03-03T22:27:13.533+01:00 + Generated 2024-03-04T22:20:15.730+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp index 6e7850d22..4eb866f0e 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.cpp @@ -48,6 +48,8 @@ SWGSigMFFileSinkSettings::SWGSigMFFileSinkSettings() { m_squelch_post_record_time_isSet = false; squelch_recording_enable = 0; m_squelch_recording_enable_isSet = false; + log2_record_sample_size = 0; + m_log2_record_sample_size_isSet = false; stream_index = 0; m_stream_index_isSet = false; use_reverse_api = 0; @@ -94,6 +96,8 @@ SWGSigMFFileSinkSettings::init() { m_squelch_post_record_time_isSet = false; squelch_recording_enable = 0; m_squelch_recording_enable_isSet = false; + log2_record_sample_size = 0; + m_log2_record_sample_size_isSet = false; stream_index = 0; m_stream_index_isSet = false; use_reverse_api = 0; @@ -132,6 +136,7 @@ SWGSigMFFileSinkSettings::cleanup() { + if(reverse_api_address != nullptr) { delete reverse_api_address; } @@ -180,6 +185,8 @@ SWGSigMFFileSinkSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&squelch_recording_enable, pJson["squelchRecordingEnable"], "qint32", ""); + ::SWGSDRangel::setValue(&log2_record_sample_size, pJson["log2RecordSampleSize"], "qint32", ""); + ::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", ""); ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); @@ -244,6 +251,9 @@ SWGSigMFFileSinkSettings::asJsonObject() { if(m_squelch_recording_enable_isSet){ obj->insert("squelchRecordingEnable", QJsonValue(squelch_recording_enable)); } + if(m_log2_record_sample_size_isSet){ + obj->insert("log2RecordSampleSize", QJsonValue(log2_record_sample_size)); + } if(m_stream_index_isSet){ obj->insert("streamIndex", QJsonValue(stream_index)); } @@ -375,6 +385,16 @@ SWGSigMFFileSinkSettings::setSquelchRecordingEnable(qint32 squelch_recording_ena this->m_squelch_recording_enable_isSet = true; } +qint32 +SWGSigMFFileSinkSettings::getLog2RecordSampleSize() { + return log2_record_sample_size; +} +void +SWGSigMFFileSinkSettings::setLog2RecordSampleSize(qint32 log2_record_sample_size) { + this->log2_record_sample_size = log2_record_sample_size; + this->m_log2_record_sample_size_isSet = true; +} + qint32 SWGSigMFFileSinkSettings::getStreamIndex() { return stream_index; @@ -500,6 +520,9 @@ SWGSigMFFileSinkSettings::isSet(){ if(m_squelch_recording_enable_isSet){ isObjectUpdated = true; break; } + if(m_log2_record_sample_size_isSet){ + isObjectUpdated = true; break; + } if(m_stream_index_isSet){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h index 10eed831c..f05a8a51b 100644 --- a/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGSigMFFileSinkSettings.h @@ -75,6 +75,9 @@ public: qint32 getSquelchRecordingEnable(); void setSquelchRecordingEnable(qint32 squelch_recording_enable); + qint32 getLog2RecordSampleSize(); + void setLog2RecordSampleSize(qint32 log2_record_sample_size); + qint32 getStreamIndex(); void setStreamIndex(qint32 stream_index); @@ -136,6 +139,9 @@ private: qint32 squelch_recording_enable; bool m_squelch_recording_enable_isSet; + qint32 log2_record_sample_size; + bool m_log2_record_sample_size_isSet; + qint32 stream_index; bool m_stream_index_isSet;