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); } }
public void AddMgr(IWifiManagerOperations mgr) { this.mgr = mgr; IsConnected = mgr.IsConnected(); }