|
|
|
@@ -0,0 +1,29 @@ |
|
|
|
package main |
|
|
|
|
|
|
|
import "sdr-wideband-suite/internal/pipeline" |
|
|
|
|
|
|
|
func enforceDecisionBudgets(decisions []pipeline.SignalDecision, maxRecord int, maxDecode int) (int, int) { |
|
|
|
recorded := 0 |
|
|
|
decoded := 0 |
|
|
|
for i := range decisions { |
|
|
|
if decisions[i].ShouldRecord { |
|
|
|
if maxRecord > 0 && recorded >= maxRecord { |
|
|
|
decisions[i].ShouldRecord = false |
|
|
|
decisions[i].Reason = "recording budget exceeded" |
|
|
|
} else { |
|
|
|
recorded++ |
|
|
|
} |
|
|
|
} |
|
|
|
if decisions[i].ShouldAutoDecode { |
|
|
|
if maxDecode > 0 && decoded >= maxDecode { |
|
|
|
decisions[i].ShouldAutoDecode = false |
|
|
|
if decisions[i].Reason == "" { |
|
|
|
decisions[i].Reason = "decode budget exceeded" |
|
|
|
} |
|
|
|
} else { |
|
|
|
decoded++ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return recorded, decoded |
|
|
|
} |