mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
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]>
49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
import { createLocalAdsbLayer } from '../../layers/localAdsb/index.js';
|
|
import { createLocalReceiverFeeds } from '../../layers/localAdsb/feeds.js';
|
|
import { SdrController } from '../../sdr/controller.js';
|
|
import * as render from '../../renderGovernor.js';
|
|
import * as context from '../../data/contextStore.js';
|
|
import * as picking from '../../data/pickRegistry.js';
|
|
import * as trails from '../../data/trailRenderer.js';
|
|
import * as geoid from '../../data/geoid.js';
|
|
import { markDetectionSourcesChanged } from '../../data/detection.js';
|
|
import { refreshTrackedReadout } from '../../data/trackedReadout.js';
|
|
|
|
/**
|
|
* Construct the Local ADS-B layer, the browser RTL-SDR session it shares with
|
|
* the Radio panel, and the decoder-feed session. Construction opens no device
|
|
* and makes no request; the SDR starts only from an explicit Connect and the
|
|
* feeds are polled only while the layer is enabled.
|
|
*
|
|
* `displayParams` reads the public Flights layer's DISPLAY-rail 3D preference
|
|
* (`{ models3d, models3dMode }`) so local aircraft follow the same toggle;
|
|
* `enrichment` is the Flights source whose cached adsbdb proxy they share.
|
|
*/
|
|
export function createApplicationLocalAdsb({
|
|
receiver = new SdrController(),
|
|
feeds = createLocalReceiverFeeds(),
|
|
surface = null,
|
|
enrichment = null,
|
|
displayParams = null,
|
|
resolveAsset = (url) =>
|
|
`${import.meta.env?.BASE_URL || '/'}${url.replace(/^\//, '')}`,
|
|
} = {}) {
|
|
return createLocalAdsbLayer({
|
|
receiver,
|
|
feeds,
|
|
resolveAsset,
|
|
services: {
|
|
render,
|
|
context,
|
|
picking,
|
|
trails,
|
|
geoid,
|
|
groundSnap: surface?.groundSnap || null,
|
|
enrichment,
|
|
display: displayParams ? { getParams: displayParams } : null,
|
|
detection: { markSourcesChanged: markDetectionSourcesChanged },
|
|
overlays: { refreshReadout: refreshTrackedReadout },
|
|
},
|
|
});
|
|
}
|