Wideband autonomous SDR analysis engine forked from sdr-visual-suite
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

33 wiersze
1.0KB

  1. package pipeline
  2. import "sdr-wideband-suite/internal/classifier"
  3. type SignalDecision struct {
  4. Candidate Candidate `json:"candidate"`
  5. Class string `json:"class,omitempty"`
  6. ShouldRecord bool `json:"should_record"`
  7. ShouldAutoDecode bool `json:"should_auto_decode"`
  8. Reason string `json:"reason,omitempty"`
  9. }
  10. func DecideSignalAction(policy Policy, candidate Candidate, cls *classifier.Classification) SignalDecision {
  11. decision := SignalDecision{Candidate: candidate}
  12. if cls != nil {
  13. decision.Class = string(cls.ModType)
  14. }
  15. if cls != nil && WantsClass(policy.AutoRecordClasses, string(cls.ModType)) {
  16. decision.ShouldRecord = true
  17. decision.Reason = "matched auto_record_classes"
  18. }
  19. if cls != nil && WantsClass(policy.AutoDecodeClasses, string(cls.ModType)) {
  20. decision.ShouldAutoDecode = true
  21. if decision.Reason == "" {
  22. decision.Reason = "matched auto_decode_classes"
  23. }
  24. }
  25. if decision.Reason == "" && candidate.Hint != "" {
  26. decision.Reason = "policy evaluated candidate hint"
  27. }
  28. return decision
  29. }