public frmDeviceSettings(GatewayItem gw) { InitializeComponent(); btnCancel.DialogResult = DialogResult.Cancel; Gateway = gw; if (gw.DhcpEnabled) { cbDhcpEnabled.Checked = true; } else { tbIpAddress.Text = gw.StaticIP; tbSubnetMask.Text = gw.StaticSubnet; tbGatewayAddress.Text = gw.StaticGateway; tbDns1.Text = gw.StaticDns1; tbDns2.Text = gw.StaticDns2; } if (gw.LocalUdpEnabled) { cbLocalServerEnabled.Checked = true; } if (gw.BroadcastKnx) { cbBroadcastKnxTraffic.Checked = true; } cbDhcpEnabled.Focus(); }
private void AddIPAddress2Gateways(string IP, string MAC, string Model, string Firmware) { GatewayItem item = new GatewayItem(); item.IP = IP; item.Mac = MAC; item.Model = Model; item.Firmware = Firmware; FoundGateways.Add(item); Debug.WriteLine("Gateways collection now has " + FoundGateways.Count.ToString() + " element(s)"); UpdateFoundDeviceLabel(FoundGateways.Count); AddDiscoveryEntry(item.IP + "\n" + item.Mac + "\n" + item.Model + "\n" + item.Firmware); }
private void recv(IAsyncResult res) { byte[] received = new byte[1]; IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 4200); try { received = UdpClient.EndReceive(res, ref RemoteIpEndPoint); } catch (SocketException e) { Debug.WriteLine(e.Message); return; } catch (Exception e) { Debug.WriteLine(e.Message); return; } finally { UdpClient.BeginReceive(new AsyncCallback(recv), null); } if (received[0] == 0x5A) { switch (received[2]) // Message Type { case 0x74: case 0x75: case 0x76: AddKnxMessageEntry(ParseKNXTelegram(received) + " Demopad: " + KNX2Demopad(received)); break; case 0x30: string rcvString = Encoding.ASCII.GetString(received); int i = rcvString.IndexOf("\0"); int y = rcvString.IndexOf("\0", i + 1); string ModelString = rcvString.Substring(3, (i - 3)); string FirmwareString = rcvString.Substring(i + 1, (y - i - 1)); string ReceivedMAC = Convert.ToByte(received[received.Length - 7]).ToString("X2") + ":" + Convert.ToByte(received[received.Length - 6]).ToString("X2") + ":" + Convert.ToByte(received[received.Length - 5]).ToString("X2") + ":" + Convert.ToByte(received[received.Length - 4]).ToString("X2") + ":" + Convert.ToByte(received[received.Length - 3]).ToString("X2") + ":" + Convert.ToByte(received[received.Length - 2]).ToString("X2"); GatewayItem isAnyGateway = null; try { isAnyGateway = FoundGateways.First(w => w.Mac == ReceivedMAC); } catch (Exception e) // Not found in list { Debug.WriteLine(e.Message); } finally // Found in list already { Debug.WriteLine("Recieved MAC " + ReceivedMAC + " is found in the list already and removed"); RemoveDiscoveryEntry(ReceivedMAC); FoundGateways.Remove(isAnyGateway); } AddIPAddress2Gateways(RemoteIpEndPoint.Address.ToString(), ReceivedMAC, ModelString, FirmwareString); byte[] GetSettings = { 0x5A, 0x01, 0x31, 0x00 }; GetSettings[3] = Helper.calculateChecksum(GetSettings); IPEndPoint remoteIp = new IPEndPoint(RemoteIpEndPoint.Address, 4200); UdpClient.Send(GetSettings, GetSettings.Length, remoteIp); break; case 0x31: if (received[1] == 0x01 && received.Length == 4) { MessageBox.Show("Settings successfully saved", "Affirmative", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } if (received[1] != 0x19 || received.Length != 28) { break; } Debug.WriteLine("Device settings recieved: " + BitConverter.ToString(received)); GatewayItem gw = new GatewayItem(); try { gw = FoundGateways.First(w => w.IP == RemoteIpEndPoint.Address.ToString()); } catch (Exception e) { Debug.WriteLine(e.Message); return; } finally { gw.StaticIP = Convert.ToString(received[10]) + "." + Convert.ToString(received[9]) + "." + Convert.ToString(received[8]) + "." + Convert.ToString(received[7]); gw.StaticSubnet = Convert.ToString(received[14]) + "." + Convert.ToString(received[13]) + "." + Convert.ToString(received[12]) + "." + Convert.ToString(received[11]); gw.StaticGateway = Convert.ToString(received[18]) + "." + Convert.ToString(received[17]) + "." + Convert.ToString(received[16]) + "." + Convert.ToString(received[15]); gw.StaticDns1 = Convert.ToString(received[22]) + "." + Convert.ToString(received[21]) + "." + Convert.ToString(received[20]) + "." + Convert.ToString(received[19]); gw.StaticDns2 = Convert.ToString(received[26]) + "." + Convert.ToString(received[25]) + "." + Convert.ToString(received[24]) + "." + Convert.ToString(received[23]); if (received[4] > 0) { gw.DhcpEnabled = true; } else { gw.DhcpEnabled = false; } if (received[5] > 0) { gw.LocalUdpEnabled = true; } else { gw.LocalUdpEnabled = false; } if (received[6] == 0) { gw.BroadcastKnx = true; } else { gw.BroadcastKnx = false; } } break; case 0x3F: //MessageBox.Show("Awaiting firmware upload for 4 seconds", "Affirmative", MessageBoxButtons.OK, MessageBoxIcon.Information); break; default: break; } } }