public void Start() { MessageHub.Instance.Subscribe <ReadyMessage>(ReadyToSend); MessageHub.Instance.Subscribe <DisconnectedMessage>(Disconnected); gameState = new DCSPlayerRadioInfo(); gameState.radios[1].modulation = modulation[0]; gameState.radios[1].freq = freq[0]; // get into Hz gameState.radios[1].name = opts.Name; Logger.Info($"Starting with params:"); for (int i = 0; i < freq.Length; i++) { Logger.Info($"Frequency: {freq[i]} Hz - {modulation[i]} "); } DCSLatLngPosition position = new DCSLatLngPosition() { alt = opts.Altitude, lat = opts.Latitude, lng = opts.Longitude }; var srsClientSyncHandler = new SRSClientSyncHandler(Guid, gameState, opts.Name, opts.Coalition, position); srsClientSyncHandler.TryConnect(new IPEndPoint(IPAddress.Loopback, opts.Port)); //wait for it to end finished.Token.WaitHandle.WaitOne(); Logger.Info("Finished - Closing"); udpVoiceHandler?.RequestStop(); srsClientSyncHandler?.Disconnect(); MessageHub.Instance.ClearSubscriptions(); }