Переглянути джерело

feat: gate refinement via policy and explicit input

master
Jan Svabenik 16 години тому
джерело
коміт
6afbbada44
1 змінених файлів з 21 додано та 4 видалено
  1. +21
    -4
      cmd/sdrd/pipeline_runtime.go

+ 21
- 4
cmd/sdrd/pipeline_runtime.go Переглянути файл

@@ -230,7 +230,8 @@ func (rt *dspRuntime) buildSurveillanceResult(art *spectrumArtifacts) pipeline.S
}

func (rt *dspRuntime) buildRefinementInput(surv pipeline.SurveillanceResult) pipeline.RefinementInput {
return pipeline.RefinementInput{
policy := pipeline.PolicyFromConfig(rt.cfg)
input := pipeline.RefinementInput{
Candidates: append([]pipeline.Candidate(nil), surv.Candidates...),
Scheduled: append([]pipeline.ScheduledCandidate(nil), surv.Scheduled...),
SampleRate: rt.cfg.SampleRate,
@@ -238,10 +239,14 @@ func (rt *dspRuntime) buildRefinementInput(surv pipeline.SurveillanceResult) pip
CenterHz: rt.cfg.CenterHz,
Source: "surveillance-detector",
}
if !policy.RefinementEnabled {
input.Scheduled = nil
}
return input
}

func (rt *dspRuntime) refineSignals(art *spectrumArtifacts, input pipeline.RefinementInput, extractMgr *extractionManager, rec *recorder.Manager) pipeline.RefinementResult {
if art == nil || len(art.iq) == 0 {
if art == nil || len(art.iq) == 0 || len(input.Scheduled) == 0 {
return pipeline.RefinementResult{}
}
policy := pipeline.PolicyFromConfig(rt.cfg)
@@ -260,8 +265,20 @@ func (rt *dspRuntime) refineSignals(art *spectrumArtifacts, input pipeline.Refin
NoiseDb: sc.Candidate.NoiseDb,
})
}
snips, snipRates := extractSignalIQBatch(extractMgr, art.iq, rt.cfg.SampleRate, rt.cfg.CenterHz, selectedSignals)
refined := pipeline.RefineCandidates(selectedCandidates, art.spectrum, rt.cfg.SampleRate, rt.cfg.FFTSize, snips, snipRates, classifier.ClassifierMode(rt.cfg.ClassifierMode))
sampleRate := input.SampleRate
fftSize := input.FFTSize
centerHz := input.CenterHz
if sampleRate <= 0 {
sampleRate = rt.cfg.SampleRate
}
if fftSize <= 0 {
fftSize = rt.cfg.FFTSize
}
if centerHz == 0 {
centerHz = rt.cfg.CenterHz
}
snips, snipRates := extractSignalIQBatch(extractMgr, art.iq, sampleRate, centerHz, selectedSignals)
refined := pipeline.RefineCandidates(selectedCandidates, art.spectrum, sampleRate, fftSize, snips, snipRates, classifier.ClassifierMode(rt.cfg.ClassifierMode))
signals := make([]detector.Signal, 0, len(refined))
decisions := make([]pipeline.SignalDecision, 0, len(refined))
for i, ref := range refined {


Завантаження…
Відмінити
Зберегти