| @@ -10,7 +10,7 @@ func TestPhaseStateCarriesPhaseResults(t *testing.T) { | |||||
| ps := &phaseState{ | ps := &phaseState{ | ||||
| surveillance: pipeline.SurveillanceResult{NoiseFloor: -90, Scheduled: []pipeline.ScheduledCandidate{{Candidate: pipeline.Candidate{ID: 1}, Priority: 5}}}, | surveillance: pipeline.SurveillanceResult{NoiseFloor: -90, Scheduled: []pipeline.ScheduledCandidate{{Candidate: pipeline.Candidate{ID: 1}, Priority: 5}}}, | ||||
| refinementInput: pipeline.RefinementInput{Scheduled: []pipeline.ScheduledCandidate{{Candidate: pipeline.Candidate{ID: 1}, Priority: 5}}, SampleRate: 2048000, FFTSize: 2048, CenterHz: 7.1e6}, | refinementInput: pipeline.RefinementInput{Scheduled: []pipeline.ScheduledCandidate{{Candidate: pipeline.Candidate{ID: 1}, Priority: 5}}, SampleRate: 2048000, FFTSize: 2048, CenterHz: 7.1e6}, | ||||
| refinement: pipeline.RefinementResult{Decisions: []pipeline.SignalDecision{{ShouldRecord: true}}, Candidates: []pipeline.Candidate{{ID: 1}}}, | |||||
| refinement: pipeline.RefinementResult{Level: pipeline.AnalysisLevel{Name: "refinement"}, Decisions: []pipeline.SignalDecision{{ShouldRecord: true}}, Candidates: []pipeline.Candidate{{ID: 1}}}, | |||||
| } | } | ||||
| if ps.surveillance.NoiseFloor != -90 || len(ps.surveillance.Scheduled) != 1 { | if ps.surveillance.NoiseFloor != -90 || len(ps.surveillance.Scheduled) != 1 { | ||||
| t.Fatalf("unexpected surveillance state: %+v", ps.surveillance) | t.Fatalf("unexpected surveillance state: %+v", ps.surveillance) | ||||
| @@ -364,7 +364,7 @@ func (rt *dspRuntime) refineSignals(art *spectrumArtifacts, input pipeline.Refin | |||||
| maxDecode := rt.cfg.Resources.MaxDecodeJobs | maxDecode := rt.cfg.Resources.MaxDecodeJobs | ||||
| enforceDecisionBudgets(decisions, maxRecord, maxDecode) | enforceDecisionBudgets(decisions, maxRecord, maxDecode) | ||||
| rt.det.UpdateClasses(signals) | rt.det.UpdateClasses(signals) | ||||
| return pipeline.RefinementResult{Signals: signals, Decisions: decisions, Candidates: selectedCandidates} | |||||
| return pipeline.RefinementResult{Level: input.Level, Signals: signals, Decisions: decisions, Candidates: selectedCandidates} | |||||
| } | } | ||||
| func (rt *dspRuntime) updateRDS(now time.Time, rec *recorder.Manager, sig *detector.Signal, cls *classifier.Classification) { | func (rt *dspRuntime) updateRDS(now time.Time, rec *recorder.Manager, sig *detector.Signal, cls *classifier.Classification) { | ||||
| @@ -43,6 +43,7 @@ type RefinementInput struct { | |||||
| } | } | ||||
| type RefinementResult struct { | type RefinementResult struct { | ||||
| Level AnalysisLevel `json:"level"` | |||||
| Signals []detector.Signal `json:"signals"` | Signals []detector.Signal `json:"signals"` | ||||
| Decisions []SignalDecision `json:"decisions,omitempty"` | Decisions []SignalDecision `json:"decisions,omitempty"` | ||||
| Candidates []Candidate `json:"candidates,omitempty"` | Candidates []Candidate `json:"candidates,omitempty"` | ||||
| @@ -8,6 +8,7 @@ import ( | |||||
| func TestRefinementResultCarriesDecisions(t *testing.T) { | func TestRefinementResultCarriesDecisions(t *testing.T) { | ||||
| res := RefinementResult{ | res := RefinementResult{ | ||||
| Level: AnalysisLevel{Name: "refinement"}, | |||||
| Signals: []detector.Signal{{ID: 1}}, | Signals: []detector.Signal{{ID: 1}}, | ||||
| Decisions: []SignalDecision{{ShouldRecord: true}}, | Decisions: []SignalDecision{{ShouldRecord: true}}, | ||||
| Candidates: []Candidate{{ID: 1}}, | Candidates: []Candidate{{ID: 1}}, | ||||