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();
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
                }
            }
        }