Exemple #1
0
        public async Task DoRefreshNetworks()
        {
            try
            {
                IsFailed = false;

                var ts0 = DateTime.Now;

                FirstFailedLineInCSV = null;
                if (DoDisconnectBeforeRefresh)
                {
                    mgr.DeleteInfoAboutWifiNetworks();
                }
                if (TryCopyFromBluetoothFolder)
                {
                    await mgr.MoveCSVFromBluetoothFolder();
                }
                // clean CSV cache if it was used
                mgr.ClearCachedCSVNetworkList();
                var allOnAir = mgr.GetActiveWifiNetworks();

                //var ts1 = DateTime.Now;
                //var elapsed = ts1 - ts0;
                //Logging.Info("WiFiManager", $"GetActiveWifiNetworks: finished, elapsed: {elapsed.TotalSeconds} sec");

                // in hunting mode leave only those who's in hunting list
                if (WifiNetworksHunting.Count > 0)
                {
                    // inner join
                    var results = from w1 in allOnAir
                                  join t2 in WifiNetworksHunting on w1.BssID equals t2.BssID
                                  select w1;
                    allOnAir = results.ToList();
                }

                // try to find info in CSV file
                if (mgr.CanLoadFromFile)
                {
                    for (int i = 0; i < allOnAir.Count; i++)
                    {
                        var wifiOnAir       = allOnAir[i];
                        var wifiDtoFromFile = await mgr.FindWifiInCSV(wifiOnAir, SearchByBssIDOnly);

                        var isInFileAndOnAir = wifiDtoFromFile != null;
                        if (isInFileAndOnAir)
                        {
                            // update existing Wifi info from file (except for BSSID)
                            wifiOnAir.IsInCSVList = isInFileAndOnAir;
                            var nameOnAir  = wifiOnAir.Name;
                            var bssidOnAir = wifiOnAir.BssID;
                            wifiDtoFromFile.CopyTo(wifiOnAir);
                            // only Name & BssID is taken from air
                            wifiOnAir.Name  = nameOnAir;
                            wifiOnAir.BssID = bssidOnAir;
                        }
                    }
                }

                if (WEPOnly)
                {
                    allOnAir = allOnAir.Where(x => x.IsWEP).ToList();
                }

                if (WithVPNOnly)
                {
                    allOnAir = allOnAir.Where(x => x.IsWithVPN).ToList();
                }
                // put currently connected on the top
                var lst1 = allOnAir.OrderByDescending(nw => nw.IsBeingUsed).ThenBy(nw => nw.IsInCSVList).ThenBy(nw => Math.Abs(nw.Level));
                WifiNetworks = new WifiNetworksObservableCollection(lst1);


                //var ts2 = DateTime.Now;
                //var elapsed2 = ts2 - ts0;
                //Logging.Info("WiFiManager", $"DoRefreshNetworks: finished, elapsed: {elapsed2.TotalSeconds} sec");

                IsConnected     = mgr.IsConnected();
                SelectedNetwork = null;

                if (ScanWifiAndGps)
                {
                    await DoRefreshCoords();
                }

                //var v = Plugin.Vibrate.CrossVibrate.Current;
                //v.Vibration(TimeSpan.FromSeconds(0.5));
            }
            catch (Exception ex)
            {
                IsFailed = true;
                Logging.Error("DoRefreshNetworks", ex);
            }
        }
Exemple #2
0
        public void AddMgr(IWifiManagerOperations mgr)
        {
            this.mgr = mgr;

            IsConnected = mgr.IsConnected();
        }