25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jan Svabenik 8c762a0691 Add events API and timeline UI 4 일 전
cmd/sdrd Add events API and timeline UI 4 일 전
internal Add events API and timeline UI 4 일 전
web Add events API and timeline UI 4 일 전
.gitignore Add events API and timeline UI 4 일 전
README.md Add events API and timeline UI 4 일 전
config.yaml Initial SDR visual suite 4 일 전
go.mod Initial SDR visual suite 4 일 전
go.sum Initial SDR visual suite 4 일 전

README.md

SDR Visual Suite

Go-based SDRplay RSP1b live spectrum + waterfall visualizer with a minimal event recorder.

Features

  • Live spectrum + waterfall web UI (WebSocket streaming)
  • Event timeline view (time vs frequency) with detail drawer
  • In-browser spectrogram slice for selected events
  • Basic detector with event JSONL output (data/events.jsonl)
  • Events API (/api/events?limit=...&since=...)
  • Recorded clips list placeholder (metadata only for now)
  • Windows + Linux support
  • Mock mode for testing without hardware

Quick Start (Mock)

# From repo root

go run ./cmd/sdrd --mock

Open http://localhost:8080.

SDRplay Build/Run (Real Device)

This project uses the SDRplay API via cgo (sdrplay_api.h). Ensure the SDRplay API is installed.

Windows

$env:CGO_CFLAGS='-IC:\Program Files\SDRplay\API\inc'
$env:CGO_LDFLAGS='-LC:\Program Files\SDRplay\API\x64 -lsdrplay_api'

go build -tags sdrplay ./cmd/sdrd
.\sdrd.exe -config config.yaml

Linux

export CGO_CFLAGS='-I/opt/sdrplay_api/include'
export CGO_LDFLAGS='-L/opt/sdrplay_api/lib -lsdrplay_api'

go build -tags sdrplay ./cmd/sdrd
./cmd/sdrd/sdrd -config config.yaml

Configuration

Edit config.yaml:

  • bands: list of band ranges
  • center_hz: center frequency
  • sample_rate: sample rate
  • fft_size: FFT size
  • gain_db: device gain
  • detector.threshold_db: power threshold in dB
  • detector.min_duration_ms, detector.hold_ms: debounce/merge

Web UI

The UI is served from web/ and connects to /ws for spectrum frames.

Event Timeline

  • The timeline panel displays recent events (time vs frequency).
  • Click any event block to open the detail drawer with event stats and a mini spectrogram slice from the latest frame.

Events API

/api/events reads from the JSONL event log and returns the most recent events:

  • limit (optional): max number of events (default 200, max 2000)
  • since (optional): Unix milliseconds or RFC3339 timestamp

Example:

curl "http://localhost:8080/api/events?limit=100&since=1700000000000"

Tests


go test ./...

Troubleshooting

  • If you see sdrplay support not built, rebuild with -tags sdrplay.
  • If the SDRplay library is not found, ensure CGO_CFLAGS and CGO_LDFLAGS point to the API headers and library.
  • Use --mock to run without hardware.