コード例 #1
0
ファイル: SsidTracker.cs プロジェクト: cssack/CsGlobals
		internal void SetActual(DateTime time, Ssid ssid)
		{
			Ssid = ssid;
			LastSeen = time;
			Events.Add(new SignalEvent(time, Ssid.SignalQuality));
			LimitEvents();
			IsActual = true;
		}
コード例 #2
0
ファイル: Bss.cs プロジェクト: cssack/CsGlobals
		internal Bss(Ssid owner, WlanInternBssEntry bss)
		{
			_owner = owner;
			Reload(bss);
		}
コード例 #3
0
ファイル: SsidTracker.cs プロジェクト: cssack/CsGlobals
		internal SsidTracker(Ssid ssid)
		{
			Ssid = ssid;
		}
コード例 #4
0
ファイル: Wlan.cs プロジェクト: cssack/CsGlobals
		private void ReloadSsidList()
		{
			var ssidEntries = WlanProtocol.TryGetSsidList(Owner);
			Application.Current.Dispatcher.BeginInvoke(new Action(() =>
			{
				var actualItems = Ssids.ToList();
				var currentConnected = ssidEntries.FirstOrDefault(x => x.flags.HasFlag(WlanInternSsidEntryFlags.Connected));
				var currentConnectedSsid = currentConnected.Dot11Ssid.GetSsid();
				var currentConnectedSsidSet = false;
				ssidEntries = ssidEntries.Where(x => x.flags == 0).ToArray();
				for (var i = 0; i < ssidEntries.Length; i++)
				{
					var ssidEntry = ssidEntries[i];
					var name = ssidEntry.Dot11Ssid.GetSsid();
					var item = _ssids.FirstOrDefault(x => x.Name == name);
					if (item == null)
					{
						item = new Ssid(Owner, ssidEntry, name == currentConnectedSsid);
						_ssids.Add(item);
					}
					else
					{
						item.Reload(ssidEntry, name == currentConnectedSsid);
						actualItems.Remove(item);
					}
					if (item.IsConnected)
					{
						ConnectedWlan = item;
						currentConnectedSsidSet = true;
					}
					var oldIndex = _ssids.IndexOf(item);
					_ssids.Move(oldIndex, i);
				}
				if (currentConnectedSsidSet == false)
					ConnectedWlan = null;
				foreach (var itemToRemove in actualItems)
				{
					_ssids.Remove(itemToRemove);
				}
			}));
		}