@@ -38,6 +38,8 @@ import { projectWgs84 } from 'apps/server/src/terrain/processing/gpu/helper';
3838const DisplayScreenPixelHeightWithoutVerticalDisplay = 768 ;
3939const DisplayScreenPixelHeightWithVerticalDisplay = 1024 ;
4040
41+ const SimBridgeClientDataTimeout = 2 * 60 * 1_000 ; // ms, equals two minutes
42+
4143class TerrainWorker {
4244 private initialized : boolean = false ;
4345
@@ -54,6 +56,7 @@ class TerrainWorker {
5456 private currentTrackChangesSignificantlyAtDistance : { [ side : string ] : number } = { L : - 1 , R : - 1 } ;
5557
5658 private simBridgeClientUsed = false ;
59+ public simBridgeClientTimeout : NodeJS . Timeout = null ;
5760
5861 private gpu : GPU = null ;
5962
@@ -111,6 +114,13 @@ class TerrainWorker {
111114 this . simBridgeClientUsed = true ;
112115 }
113116
117+ public disableSimBridgeClientData ( ) : void {
118+ if ( this . simBridgeClientUsed ) {
119+ this . logging . info ( 'SimBridge client data stopped (due to timeout), resuming SimConnect aircraftStatusUpdate.' ) ;
120+ }
121+ this . simBridgeClientUsed = false ;
122+ }
123+
114124 private onPositionUpdate ( data : PositionData ) : void {
115125 if ( this . initialized === false ) return ;
116126
@@ -630,6 +640,17 @@ parentPort.on('message', (data: MainToWorkerThreadMessage) => {
630640 } else if ( data . type === MainToWorkerThreadMessageTypes . AircraftStatusData ) {
631641 terrainWorker . enableSimBridgeClientData ( ) ;
632642 terrainWorker . onAircraftStatusUpdate ( data . content ) ;
643+
644+ // Re-start timeout for disabling the SimBridge client data after two minutes of inactivity
645+ if ( terrainWorker . simBridgeClientTimeout !== null ) {
646+ clearTimeout ( terrainWorker . simBridgeClientTimeout ) ;
647+ terrainWorker . simBridgeClientTimeout = null ;
648+ }
649+
650+ terrainWorker . simBridgeClientTimeout = setTimeout (
651+ ( ) => terrainWorker . disableSimBridgeClientData ( ) ,
652+ SimBridgeClientDataTimeout ,
653+ ) ;
633654 } else if ( data . type === MainToWorkerThreadMessageTypes . VerticalDisplayPath ) {
634655 terrainWorker . onVerticalPathDataUpdate ( data . content ) ;
635656 }
0 commit comments