コード例 #1
0
ファイル: Client.cs プロジェクト: vinodmishra/Broadlink.NET
 /// <summary>
 /// Discover Broadlink Device
 /// </summary>
 /// <returns>Triggered Event <see cref="DeviceHandler" /></returns>
 public async Task DiscoverAsync()
 {
     try
     {
         if (ClientSocket == null)
         {
             bool internetVarmi = HelperMy.IsInternetAvailable;
             if (!internetVarmi)
             {
                 HelperMy.Notification(Color.Red, "İnternet bağlantısı yok!");
             }
             do
             {
                 internetVarmi = HelperMy.IsInternetAvailable;
                 if (internetVarmi)
                 {
                     ClientSocket = new MyUdpSocketReceiver();
                     ClientSocket.MessageReceived += new EventHandler <UdpReceiveResult>(ClientSocket_MessageReceived);
                     await ClientSocket.StartListeningAsync();
                 }
                 else
                 {
                     await Task.Delay(500);
                 }
             } while (!internetVarmi);
         }
         await SendDiscoveryPacketAsync();
     }
     catch (Exception)
     {
         HelperMy.Notification(Color.Red, "Soket Bağlantısı Kurulamadı!");
     }
 }
コード例 #2
0
 private async Task Start_ClientListenAsync()
 {
     try
     {
         bool internetVarmi = true;
         if (!internetVarmi)
         {
             HelperMy.Notification(Color.Red, "İnternet bağlantısı yok!");
         }
         do
         {
             internetVarmi = true;
             if (internetVarmi)
             {
                 ClientSocket = new MyUdpSocketReceiver();
                 ClientSocket.MessageReceived += new EventHandler <UdpReceiveResult>(ClientSocket_MessageReceived);
                 await ClientSocket.StartListeningAsync();
             }
             else
             {
                 await Task.Delay(500);
             }
         } while (!internetVarmi);
     }
     catch (Exception)
     {
         HelperMy.Notification(Color.Red, "Soket Bağlantısı Kurulamadı!");
     }
 }
コード例 #3
0
        /// <summary>
        /// Setup a new Broadlink device via AP Mode. Review the README to see how to enter AP Mode.
        /// Only tested with Broadlink RM Pro 2017 RM03
        /// </summary>
        /// <param name="SSID">Modem SSID</param>
        /// <param name="Password">Modem Password</param>
        /// <param name="SecurityMode">Security mode options are (0 - none, 1 = WEP, 2 = WPA1, 3 = WPA2, 4 = WPA1/2)</param>
        public static async Task SetupAsync(string SSID, string Password, int SecurityMode)
        {
            var payload = new byte[0x88];

            payload[0x26] = 0x14;// This seems to always be set to 14;

            //Add the SSID to the payload
            int ssid_start = 68, ssid_length = 0;

            foreach (var letter in SSID)
            {
                payload[(ssid_start + ssid_length)] = (byte)letter;
                ssid_length++;
            }

            //Add the WiFi password to the payload
            int pass_start = 100, pass_length = 0;

            foreach (var letter in Password)
            {
                payload[(pass_start + pass_length)] = (byte)letter;
                pass_length++;
            }

            payload[0x84] = Convert.ToByte(ssid_length);  // Character length of SSID
            payload[0x85] = Convert.ToByte(pass_length);  // Character length of password
            payload[0x86] = Convert.ToByte(SecurityMode); // Type of encryption (00 - none, 01 = WEP, 02 = WPA1, 03 = WPA2, 04 = WPA1/2)

            var checksum = 0xbeaf;

            for (int i = 0; i < payload.Length; i++)
            {
                checksum += payload[i];
                checksum  = checksum & 0xffff;
            }

            payload[0x20] = Convert.ToByte(checksum & 0xff); //Checksum 1 position
            payload[0x21] = Convert.ToByte(checksum >> 8);   //Checksum 2 position

            using (var sock = new UdpClient(AddressFamily.InterNetwork))
            {
                sock.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
                sock.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
                foreach (var item in Network.GetNetworks())
                {
                    await sock.SendAsync(payload, payload.Length, new IPEndPoint(item.BroadcastIPAddress, 80));
                }
            }
            HelperMy.Notification(Color.Lime, "SSID ayarlandı.");
        }
コード例 #4
0
ファイル: Client.cs プロジェクト: vinodmishra/Broadlink.NET
        private async Task SendDiscoveryPacketAsync()
        {
            var ports = Network.GetAvailablePort(1000, Networks.Count);

            if (ports.Count == 0 || ports.Count < Networks.Count)
            {
                HelperMy.Notification(Color.Red, "Kullanılabilir port bulunamadığı için işlem iptal edildi.");
                await ClientSocket.StopListeningAsync();

                ClientSocket.Dispose();
                ClientSocket = null;
                return;
            }
            for (int i = 0; i < Networks.Count; i++)
            {
                var item = Networks[i];
                var data = PacketGenerator.GenerateDiscoveryPacket(item.LocalIPAddress, (short)ports[i]);
                await ClientSocket.SendToAsync(data, new IPEndPoint(item.BroadcastIPAddress, 80));
            }
        }