public AvionicsBridgeViewModel() { ErrorMessages = new ObservableCollection <string>(); ToggleConnectCommand = new BaseCommand((p) => { ToggleConnect(); }); ToggleBroadcastCommand = new BaseCommand((p) => { ToggleBroadcast(); }); _timer.Interval = new TimeSpan(0, 0, 0, 1, 0); _timer.Tick += new EventHandler(OnTick); ConnectionSettingsViewModel = new ConnectionSettingsViewModel(); SimVarsViewModel = new SimVarsViewModel(); }
private void ToggleBroadcast() { if (socket == null) { var maybeSettings = ConnectionSettingsViewModel.GetConnectionSettings(); if (maybeSettings.HasValue) { try { var settings = maybeSettings.Value; socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.DontFragment = true; if (settings.ConnectionType != ConnectionType.Broadcast) { socket.Connect(settings.IPAddress, settings.Port); } else { socket.EnableBroadcast = true; socket.MulticastLoopback = false; socket.Connect("255.255.255.255", settings.Port); } BroadcastButtonLabel = "Stop Broadcast"; } catch (Exception ex) { ErrorMessages.Add("Network connection error: " + ex.ToString()); } } else { ErrorMessages.Add("Invalid connection settings"); } } else { socket.Close(); socket = null; BroadcastButtonLabel = "Start Broadcast"; } }