private void SaveButton_Click(object sender, System.Windows.RoutedEventArgs e) { // setup device network configuration block to save var networkConfigurationToSave = (DataContext as DeviceExplorerViewModel).DeviceNetworkConfiguration; // IPv4 address options if (IPv4Automatic.IsChecked.GetValueOrDefault()) { // IPv4 from DHCP networkConfigurationToSave.StartupAddressMode = AddressMode.DHCP; // clear remaining options networkConfigurationToSave.IPv4Address = IPAddress.None; networkConfigurationToSave.IPv4NetMask = IPAddress.None; networkConfigurationToSave.IPv4GatewayAddress = IPAddress.None; } else { // IPv4 has static configuration networkConfigurationToSave.StartupAddressMode = AddressMode.Static; // clear remaining options networkConfigurationToSave.IPv4Address = IPv4Address.GetAddress(); networkConfigurationToSave.IPv4NetMask = IPv4NetMask.GetAddress(); networkConfigurationToSave.IPv4GatewayAddress = IPv4GatewayAddress.GetAddress(); } // IPv4 DNS options if (IPv4DnsAutomatic.IsChecked.GetValueOrDefault()) { // IPv4 DNS is automatic and provided by DHCP server networkConfigurationToSave.AutomaticDNS = true; // clear DNS addresses networkConfigurationToSave.IPv4DNSAddress1 = IPAddress.None; networkConfigurationToSave.IPv4DNSAddress2 = IPAddress.None; } else { // IPv4 DNS is static networkConfigurationToSave.AutomaticDNS = false; networkConfigurationToSave.IPv4DNSAddress1 = IPv4Dns1Address.GetAddress(); networkConfigurationToSave.IPv4DNSAddress2 = IPv4Dns2Address.GetAddress(); } // IPv6 options are not being handled for now // FIXME networkConfigurationToSave.IPv6Address = IPAddress.None; networkConfigurationToSave.IPv6NetMask = IPAddress.None; networkConfigurationToSave.IPv6GatewayAddress = IPAddress.None; networkConfigurationToSave.IPv6DNSAddress1 = IPAddress.None; networkConfigurationToSave.IPv6DNSAddress2 = IPAddress.None; // check MAC address try { var newMACAddress = MACAddress.Text; var newMACAddressArray = newMACAddress.Split(':'); var dummyMacAddress = newMACAddressArray.Select(a => byte.Parse(a, System.Globalization.NumberStyles.HexNumber)).ToArray(); } catch (Exception ex) { // error parsing MAC address field throw new Exception("Invalid MAC address format. Check value."); } // Wi-Fi config (DataContext as DeviceExplorerViewModel).DeviceWireless80211Configuration.Password = WiFiPassword.Password; MessageCentre.StartProgressMessage($"Uploading network configuration to {(DataContext as DeviceExplorerViewModel).SelectedDevice.Description}..."); // check if debugger engine exists if ((DataContext as DeviceExplorerViewModel).SelectedDevice.DebugEngine == null) { (DataContext as DeviceExplorerViewModel).SelectedDevice.CreateDebugEngine(); } // save network configuration to target if ((DataContext as DeviceExplorerViewModel).SelectedDevice.DebugEngine.UpdateDeviceConfiguration(networkConfigurationToSave, 0)) { if ((DataContext as DeviceExplorerViewModel).DeviceNetworkConfiguration.InterfaceType == NetworkInterfaceType.Wireless80211) { // save Wi-Fi profile to target if ((DataContext as DeviceExplorerViewModel).SelectedDevice.DebugEngine.UpdateDeviceConfiguration((DataContext as DeviceExplorerViewModel).DeviceWireless80211Configuration, 0)) { MessageCentre.OutputMessage($"{(DataContext as DeviceExplorerViewModel).SelectedDevice.Description} network configuration updated."); MessageCentre.StopProgressMessage(); // close on success Close(); } } else { // close on success Close(); } } else { MessageCentre.OutputMessage($"Error updating {(DataContext as DeviceExplorerViewModel).SelectedDevice.Description} network configuration."); MessageCentre.StopProgressMessage(); } }