Wideband autonomous SDR analysis engine forked from sdr-visual-suite
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
718B

  1. package main
  2. import "sdr-wideband-suite/internal/pipeline"
  3. func enforceDecisionBudgets(decisions []pipeline.SignalDecision, maxRecord int, maxDecode int) (int, int) {
  4. recorded := 0
  5. decoded := 0
  6. for i := range decisions {
  7. if decisions[i].ShouldRecord {
  8. if maxRecord > 0 && recorded >= maxRecord {
  9. decisions[i].ShouldRecord = false
  10. decisions[i].Reason = "recording budget exceeded"
  11. } else {
  12. recorded++
  13. }
  14. }
  15. if decisions[i].ShouldAutoDecode {
  16. if maxDecode > 0 && decoded >= maxDecode {
  17. decisions[i].ShouldAutoDecode = false
  18. if decisions[i].Reason == "" {
  19. decisions[i].Reason = "decode budget exceeded"
  20. }
  21. } else {
  22. decoded++
  23. }
  24. }
  25. }
  26. return recorded, decoded
  27. }