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.

103 lines
4.5KB

  1. package pipeline
  2. import "sdr-wideband-suite/internal/detector"
  3. type AnalysisLevel struct {
  4. Name string `json:"name"`
  5. Role string `json:"role,omitempty"`
  6. Truth string `json:"truth,omitempty"`
  7. SampleRate int `json:"sample_rate"`
  8. FFTSize int `json:"fft_size"`
  9. BinHz float64 `json:"bin_hz,omitempty"`
  10. Decimation int `json:"decimation,omitempty"`
  11. CenterHz float64 `json:"center_hz"`
  12. SpanHz float64 `json:"span_hz"`
  13. Source string `json:"source,omitempty"`
  14. }
  15. type SurveillanceLevelSpectrum struct {
  16. Level AnalysisLevel `json:"level"`
  17. Spectrum []float64 `json:"spectrum_db,omitempty"`
  18. }
  19. type AnalysisContext struct {
  20. Surveillance AnalysisLevel `json:"surveillance,omitempty"`
  21. Refinement AnalysisLevel `json:"refinement,omitempty"`
  22. Presentation AnalysisLevel `json:"presentation,omitempty"`
  23. Detail AnalysisLevel `json:"detail,omitempty"`
  24. Derived []AnalysisLevel `json:"derived,omitempty"`
  25. }
  26. type SurveillanceResult struct {
  27. Level AnalysisLevel `json:"level"`
  28. Levels []AnalysisLevel `json:"levels,omitempty"`
  29. Candidates []Candidate `json:"candidates"`
  30. Scheduled []ScheduledCandidate `json:"scheduled,omitempty"`
  31. Finished []detector.Event `json:"finished"`
  32. Signals []detector.Signal `json:"signals"`
  33. NoiseFloor float64 `json:"noise_floor"`
  34. Thresholds []float64 `json:"thresholds,omitempty"`
  35. DisplayLevel AnalysisLevel `json:"display_level"`
  36. Context AnalysisContext `json:"context,omitempty"`
  37. Spectra []SurveillanceLevelSpectrum `json:"spectra,omitempty"`
  38. }
  39. type RefinementPlan struct {
  40. TotalCandidates int `json:"total_candidates"`
  41. MinCandidateSNRDb float64 `json:"min_candidate_snr_db"`
  42. Budget int `json:"budget"`
  43. BudgetSource string `json:"budget_source,omitempty"`
  44. Strategy string `json:"strategy,omitempty"`
  45. StrategyReason string `json:"strategy_reason,omitempty"`
  46. MonitorStartHz float64 `json:"monitor_start_hz,omitempty"`
  47. MonitorEndHz float64 `json:"monitor_end_hz,omitempty"`
  48. MonitorSpanHz float64 `json:"monitor_span_hz,omitempty"`
  49. DroppedByMonitor int `json:"dropped_by_monitor"`
  50. DroppedBySNR int `json:"dropped_by_snr"`
  51. DroppedByBudget int `json:"dropped_by_budget"`
  52. ScoreModel RefinementScoreModel `json:"score_model,omitempty"`
  53. PriorityMin float64 `json:"priority_min,omitempty"`
  54. PriorityMax float64 `json:"priority_max,omitempty"`
  55. PriorityAvg float64 `json:"priority_avg,omitempty"`
  56. PriorityCutoff float64 `json:"priority_cutoff,omitempty"`
  57. Ranked []ScheduledCandidate `json:"ranked,omitempty"`
  58. Selected []ScheduledCandidate `json:"selected,omitempty"`
  59. WorkItems []RefinementWorkItem `json:"work_items,omitempty"`
  60. }
  61. type RefinementRequest struct {
  62. Strategy string `json:"strategy,omitempty"`
  63. Reason string `json:"reason,omitempty"`
  64. SpanHintHz float64 `json:"span_hint_hz,omitempty"`
  65. }
  66. type RefinementInput struct {
  67. Level AnalysisLevel `json:"level"`
  68. Detail AnalysisLevel `json:"detail,omitempty"`
  69. Context AnalysisContext `json:"context,omitempty"`
  70. Request RefinementRequest `json:"request,omitempty"`
  71. Budgets BudgetModel `json:"budgets,omitempty"`
  72. Admission RefinementAdmission `json:"admission,omitempty"`
  73. Candidates []Candidate `json:"candidates,omitempty"`
  74. Scheduled []ScheduledCandidate `json:"scheduled,omitempty"`
  75. WorkItems []RefinementWorkItem `json:"work_items,omitempty"`
  76. Plan RefinementPlan `json:"plan,omitempty"`
  77. Windows []RefinementWindow `json:"windows,omitempty"`
  78. SampleRate int `json:"sample_rate"`
  79. FFTSize int `json:"fft_size"`
  80. CenterHz float64 `json:"center_hz"`
  81. Source string `json:"source,omitempty"`
  82. }
  83. type RefinementResult struct {
  84. Level AnalysisLevel `json:"level"`
  85. Signals []detector.Signal `json:"signals"`
  86. Decisions []SignalDecision `json:"decisions,omitempty"`
  87. Candidates []Candidate `json:"candidates,omitempty"`
  88. }
  89. type RefinementStep struct {
  90. Input RefinementInput `json:"input"`
  91. Result RefinementResult `json:"result"`
  92. }