[feat](trx-backend-soapysdr): add wfm denoise levels
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
@@ -1428,8 +1428,10 @@ function render(update) {
|
||||
saveSetting("wfmAudioMode", nextMode);
|
||||
}
|
||||
}
|
||||
if (wfmDenoiseEl && typeof update.filter.wfm_denoise === "boolean") {
|
||||
const nextDenoise = update.filter.wfm_denoise ? "on" : "off";
|
||||
if (wfmDenoiseEl && (typeof update.filter.wfm_denoise === "string" || typeof update.filter.wfm_denoise === "boolean")) {
|
||||
const nextDenoise = typeof update.filter.wfm_denoise === "string"
|
||||
? normalizeWfmDenoiseLevel(update.filter.wfm_denoise)
|
||||
: (update.filter.wfm_denoise ? "auto" : "low");
|
||||
if (wfmDenoiseEl.value !== nextDenoise) {
|
||||
wfmDenoiseEl.value = nextDenoise;
|
||||
saveSetting("wfmDenoise", nextDenoise);
|
||||
@@ -2990,6 +2992,13 @@ function levelFromChannels(channels, frameCount) {
|
||||
return Math.min(100, rms * 220);
|
||||
}
|
||||
|
||||
function normalizeWfmDenoiseLevel(value) {
|
||||
const next = String(value ?? "").toLowerCase();
|
||||
if (next === "auto" || next === "low" || next === "medium" || next === "high") return next;
|
||||
if (next === "off") return "low";
|
||||
return "auto";
|
||||
}
|
||||
|
||||
if (wfmAudioModeEl) {
|
||||
wfmAudioModeEl.value = loadSetting("wfmAudioMode", "stereo");
|
||||
wfmAudioModeEl.addEventListener("change", () => {
|
||||
@@ -2999,11 +3008,12 @@ if (wfmAudioModeEl) {
|
||||
});
|
||||
}
|
||||
if (wfmDenoiseEl) {
|
||||
wfmDenoiseEl.value = loadSetting("wfmDenoise", "on");
|
||||
wfmDenoiseEl.value = normalizeWfmDenoiseLevel(loadSetting("wfmDenoise", "auto"));
|
||||
wfmDenoiseEl.addEventListener("change", () => {
|
||||
saveSetting("wfmDenoise", wfmDenoiseEl.value);
|
||||
const enabled = wfmDenoiseEl.value !== "off";
|
||||
postPath(`/set_wfm_denoise?enabled=${enabled ? "true" : "false"}`).catch(() => {});
|
||||
const level = normalizeWfmDenoiseLevel(wfmDenoiseEl.value);
|
||||
wfmDenoiseEl.value = level;
|
||||
saveSetting("wfmDenoise", level);
|
||||
postPath(`/set_wfm_denoise?level=${encodeURIComponent(level)}`).catch(() => {});
|
||||
});
|
||||
}
|
||||
if (wfmDeemphasisEl) {
|
||||
|
||||
@@ -14,6 +14,7 @@ use tokio::time::{self, Duration};
|
||||
use tokio_stream::wrappers::{IntervalStream, WatchStream};
|
||||
|
||||
use trx_core::radio::freq::Freq;
|
||||
use trx_core::rig::state::WfmDenoiseLevel;
|
||||
use trx_core::rig::{RigAccessMethod, RigCapabilities, RigInfo};
|
||||
use trx_core::{RigCommand, RigRequest, RigSnapshot, RigState};
|
||||
use trx_frontend::{FrontendRuntimeContext, RemoteRigEntry};
|
||||
@@ -551,7 +552,7 @@ pub async fn set_wfm_stereo(
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
pub struct WfmDenoiseQuery {
|
||||
pub enabled: bool,
|
||||
pub level: WfmDenoiseLevel,
|
||||
}
|
||||
|
||||
#[post("/set_wfm_denoise")]
|
||||
@@ -559,7 +560,7 @@ pub async fn set_wfm_denoise(
|
||||
query: web::Query<WfmDenoiseQuery>,
|
||||
rig_tx: web::Data<mpsc::Sender<RigRequest>>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
send_command(&rig_tx, RigCommand::SetWfmDenoise(query.enabled)).await
|
||||
send_command(&rig_tx, RigCommand::SetWfmDenoise(query.level)).await
|
||||
}
|
||||
|
||||
#[post("/toggle_aprs_decode")]
|
||||
|
||||
Reference in New Issue
Block a user