Ejemplo n.º 1
0
        public async void Search(int startIndex, int endIndex, int timeout = 300)
        {
            // 1. Convert the passed IP down to 3 places.
            // 2. Create System.Net.Http.HttpClient (NOTE: Windows HttpClient doesn't seem to have
            //    adjustable timeout.)
            // 3. Set the POST string to "name".  This will be used as a handshake.
            // 4. Iterate over the IP range, POSTing handshake.
            // 5. If handshake successful at IP, create a peripheral and add it to list.
            // 6. Update DeviceState: Searching->On
            // 7. After iteration, return list, even if empty.

            DiscoveredPeripherals = new Dictionary <string, WebServerPeripheral>();

            DataConversion dataConverter  = new DataConversion();
            var            fourthPartOfIp = DataConversion.SeperateStringByCharacterIndex(IP.ToString(), 3, '.');
            var            threePartIP    = IP.ToString().Replace(fourthPartOfIp, "");
            var            httpClient     = new System.Net.Http.HttpClient();

            httpClient.Timeout = new TimeSpan(0, 0, 0, 0, timeout);

            DeviceState.State = States.Searching;
            OnDeviceStateChange(DeviceState);

            for (int i = startIndex; i < endIndex; i++)
            {
                try
                {
                    string ip          = threePartIP + i.ToString() + "/";
                    var    resourceUri = new Uri(ip + WebServerPeripheral.WebServiceGetName);
                    var    response    = await httpClient.PostAsync(resourceUri, null);

                    if (response.IsSuccessStatusCode == true)
                    {
                        var deviceName = await response.Content.ReadAsStringAsync();

                        if (deviceName != "")
                        {
                            try
                            {
                                WebServerPeripheral peripheral = new WebServerPeripheral(deviceName, new Uri(ip));
                                DiscoveredPeripherals.Add(deviceName, peripheral);
                                OnDiscoveringDevice(peripheral);
                            } catch (Exception ex)
                            {
                                Debug.WriteLine("Exception in WifiCentralManager.Search: " + ex.Message);
                            }
                        }
                    }
                    response.Dispose();
                }
                catch (Exception ex)
                {
                    OnDiscoveringDevice(null);
                    Debug.WriteLine("Exception in WifiCentralManager.Search: " + ex.Message);
                    DeviceState.State = States.Unknown;
                }
            }
            UpdateDeviceStateWithWifiStatus();
        }
Ejemplo n.º 2
0
            public void DataConversion_HighNonReadableSeperationChar_ReturnEmptyString()
            {
                var seperatedString = DataConversion.SeperateStringByCharacterIndex(".123.123.123", 2, Convert.ToChar(0xFF));

                Assert.AreEqual("", seperatedString);
            }
Ejemplo n.º 3
0
            public void DataConversion_StringWithStartIndexThree_ReturnSeperatedString()
            {
                var seperatedString = DataConversion.SeperateStringByCharacterIndex(".123.123.123", 0, '.');

                Assert.AreEqual("123.123.123", seperatedString);
            }
Ejemplo n.º 4
0
            public void DataConversion_StringWithAllSeperators_ReturnSeperatedString()
            {
                var seperatedString = DataConversion.SeperateStringByCharacterIndex("....", 1, '.');

                Assert.AreEqual("...", seperatedString);
            }
Ejemplo n.º 5
0
            public void DataConversion_EmptyString_ReturnSeperatedString()
            {
                var seperatedString = DataConversion.SeperateStringByCharacterIndex("", 1, '.');

                Assert.AreEqual("", seperatedString);
            }
Ejemplo n.º 6
0
            public void DataConversion_StringWithThreeSeperatorsNegativeIndex_ReturnSeperatedString()
            {
                var seperatedString = DataConversion.SeperateStringByCharacterIndex("123.12.3.", -1, '.');

                Assert.AreEqual("12.3.", seperatedString);
            }