|
- package pipeline
-
- import "sdr-wideband-suite/internal/classifier"
-
- type SignalDecision struct {
- Candidate Candidate `json:"candidate"`
- Class string `json:"class,omitempty"`
- ShouldRecord bool `json:"should_record"`
- ShouldAutoDecode bool `json:"should_auto_decode"`
- Reason string `json:"reason,omitempty"`
- }
-
- func DecideSignalAction(policy Policy, candidate Candidate, cls *classifier.Classification) SignalDecision {
- decision := SignalDecision{Candidate: candidate}
- if cls != nil {
- decision.Class = string(cls.ModType)
- }
- if cls != nil && WantsClass(policy.AutoRecordClasses, string(cls.ModType)) {
- decision.ShouldRecord = true
- decision.Reason = "matched auto_record_classes"
- }
- if cls != nil && WantsClass(policy.AutoDecodeClasses, string(cls.ModType)) {
- decision.ShouldAutoDecode = true
- if decision.Reason == "" {
- decision.Reason = "matched auto_decode_classes"
- }
- }
- if decision.Reason == "" && candidate.Hint != "" {
- decision.Reason = "policy evaluated candidate hint"
- }
- return decision
- }
|