feat(sdr): local receivers — browser RTL-SDR, Local ADS-B layer and decoder feeds (#732)

Adds a Local ADS-B layer fed by your own receivers: a browser WebUSB
RTL-SDR (with FM listening) and local 1090/978 MHz decoder feeds
(LOCAL_RECEIVER_FEEDS, local and private addresses only). Local aircraft
draw in magenta with class, silhouettes, 3D models, trails and a position
sanity filter; the click card names the band and input that heard them.

Builds on Sameh Khamis's SDR prototype and the initial GEV port by
Mazeyar Moeini Feizabadi (#134); the decoder-feed design follows the
notes on #57. Closes #57.

Co-authored-by: Sameh Khamis <[email protected]>
Co-authored-by: Mazeyar Moeini Feizabadi <[email protected]>
This commit is contained in:
authored and GitHub committed 2026-09-23 16:00:53 -05:00
1 parent 143cffd7ca
commit 1fc795577a
78 files changed
+12267 -108

No files matched your search

+52 -5
View File
@@ -602,7 +602,10 @@
"src/layers/weather/imageryHost.js",
"src/ui/layerBindings.js",
"src/ui/displayBindings.js",
"src/ui/shellFacade.js"
"src/ui/shellFacade.js",
"src/ui/localSdrControls.js",
"src/layers/localAdsb/feedNames.js",
"src/ui/localSdrPresentation.js"
],
"external": ["cesium"]
},
@@ -755,7 +758,9 @@
"src/layers/flights/records.js",
"src/layers/flights/recordPolicy.js",
"src/layers/flights/snapshotRenderer.js",
"src/data/inputOwnership.js"
"src/layers/flights/modelSpec.js",
"src/data/inputOwnership.js",
"src/data/modelEligibility.js"
],
"external": ["cesium"]
},
@@ -790,7 +795,8 @@
"src/layers/military/records.js",
"src/layers/military/recordPolicy.js",
"src/layers/military/snapshotRenderer.js",
"src/data/inputOwnership.js"
"src/data/inputOwnership.js",
"src/data/modelEligibility.js"
],
"external": ["cesium"]
},
@@ -1771,6 +1777,7 @@
"src/layers/flights/records.js",
"src/layers/flights/recordPolicy.js",
"src/layers/flights/snapshotRenderer.js",
"src/layers/flights/modelSpec.js",
"src/layers/military/records.js",
"src/layers/military/recordPolicy.js",
"src/layers/military/snapshotRenderer.js",
@@ -1824,6 +1831,7 @@
"src/data/contactTrailRenderer.js",
"src/data/transitProxy.js",
"src/data/gtfsRealtime.js",
"src/data/modelEligibility.js",
"src/layers/transit/trails.js",
"src/layers/transit/movement.js",
"src/layers/transit/qaMetrics.js",
@@ -1890,6 +1898,23 @@
"src/layers/cyclones/rendering.js",
"src/layers/cyclones/labels.js",
"src/layers/cyclones/source.js",
"src/app/layers/localAdsb.js",
"src/layers/localAdsb/index.js",
"src/layers/localAdsb/policy.js",
"src/layers/localAdsb/card.js",
"src/layers/localAdsb/feeds.js",
"src/layers/localAdsb/status.js",
"src/layers/localAdsb/feedNames.js",
"src/layers/localAdsb/motion.js",
"src/layers/localAdsb/models.js",
"src/layers/localAdsb/enrichment.js",
"src/sources/adsbRecords.js",
"src/sdr/controller.js",
"src/sdr/spectrum.js",
"src/sdr/gain.js",
"src/sdr/usbDevices.js",
"src/ui/localSdrControls.js",
"src/ui/localSdrPresentation.js",
"src/app/layers/recentImagery.js",
"src/layers/recentImagery/index.js",
"src/layers/recentImagery/model.js",
@@ -1907,7 +1932,8 @@
"egm96-universal",
"mgrs",
"pbf",
"satellite.js"
"satellite.js",
"@jtarrio/webrtlsdr"
]
},
"application-catalog": {
@@ -2249,6 +2275,7 @@
"src/layers/flights/records.js",
"src/layers/flights/recordPolicy.js",
"src/layers/flights/snapshotRenderer.js",
"src/layers/flights/modelSpec.js",
"src/layers/military/records.js",
"src/layers/military/recordPolicy.js",
"src/layers/military/snapshotRenderer.js",
@@ -2322,6 +2349,25 @@
"src/layers/cyclones/rendering.js",
"src/layers/cyclones/labels.js",
"src/layers/cyclones/source.js",
"src/app/layers/localAdsb.js",
"src/layers/localAdsb/index.js",
"src/layers/localAdsb/policy.js",
"src/layers/localAdsb/card.js",
"src/layers/localAdsb/feeds.js",
"src/layers/localAdsb/status.js",
"src/layers/localAdsb/feedNames.js",
"src/layers/localAdsb/motion.js",
"src/layers/localAdsb/models.js",
"src/layers/localAdsb/enrichment.js",
"src/sources/adsbRecords.js",
"src/sdr/controller.js",
"src/sdr/spectrum.js",
"src/sdr/gain.js",
"src/sdr/usbDevices.js",
"src/data/detection.js",
"src/data/detectionRenderDemand.js",
"src/data/detectionPresentation.js",
"src/data/modelEligibility.js",
"src/app/layers/recentImagery.js",
"src/layers/recentImagery/index.js",
"src/layers/recentImagery/model.js",
@@ -2337,7 +2383,8 @@
"satellite.js",
"@mapbox/vector-tile",
"pbf",
"mgrs"
"mgrs",
"@jtarrio/webrtlsdr"
]
},
"application-operations": {