選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
Jan Svabenik 8c762a0691 Add events API and timeline UI 5日前
cmd/sdrd Add events API and timeline UI 5日前
internal Add events API and timeline UI 5日前
web Add events API and timeline UI 5日前
.gitignore Add events API and timeline UI 5日前
README.md Add events API and timeline UI 5日前
config.yaml Initial SDR visual suite 5日前
go.mod Initial SDR visual suite 5日前
go.sum Initial SDR visual suite 5日前

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.