From 30885695e622ec7f266799c4687e67791b7d8037 Mon Sep 17 00:00:00 2001 From: Jan Svabenik Date: Wed, 18 Mar 2026 15:05:32 +0100 Subject: [PATCH] Persist config updates and add detector stability controls --- cmd/sdrd/main.go | 9 ++++++++- internal/config/save.go | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 internal/config/save.go diff --git a/cmd/sdrd/main.go b/cmd/sdrd/main.go index df1418f..2523dc3 100644 --- a/cmd/sdrd/main.go +++ b/cmd/sdrd/main.go @@ -12,6 +12,8 @@ import ( "path/filepath" "runtime/debug" "sort" + + "sdr-visual-suite/internal/config" "strconv" "strings" "sync" @@ -21,7 +23,6 @@ import ( "github.com/gorilla/websocket" "sdr-visual-suite/internal/classifier" - "sdr-visual-suite/internal/config" "sdr-visual-suite/internal/detector" "sdr-visual-suite/internal/dsp" "sdr-visual-suite/internal/events" @@ -428,6 +429,9 @@ func main() { return } } + if err := config.Save(cfgPath, next); err != nil { + log.Printf("config save failed: %v", err) + } detChanged := prev.Detector.ThresholdDb != next.Detector.ThresholdDb || prev.Detector.MinDurationMs != next.Detector.MinDurationMs || prev.Detector.HoldMs != next.Detector.HoldMs || @@ -497,6 +501,9 @@ func main() { iqBalance: next.IQBalance, }) } + if err := config.Save(cfgPath, next); err != nil { + log.Printf("config save failed: %v", err) + } _ = json.NewEncoder(w).Encode(next) }) diff --git a/internal/config/save.go b/internal/config/save.go new file mode 100644 index 0000000..a81358f --- /dev/null +++ b/internal/config/save.go @@ -0,0 +1,16 @@ +package config + +import ( + "os" + + "gopkg.in/yaml.v3" +) + +// Save writes the current config back to disk. +func Save(path string, cfg Config) error { + b, err := yaml.Marshal(cfg) + if err != nil { + return err + } + return os.WriteFile(path, b, 0o644) +}