From 0b3213bf67bd77798a38c3d0fcbb6e195b6c1eec Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 11 Mar 2017 11:07:01 +0300 Subject: [PATCH] Cannot connect to powered off APs --- EduNetworkBuilder/Network.cs | 1 + EduNetworkBuilder/NetworkBuilder.cs | 2 ++ EduNetworkBuilder/NetworkDevice.cs | 9 ++++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs index 0533e4d..0fb1742 100644 --- a/EduNetworkBuilder/Network.cs +++ b/EduNetworkBuilder/Network.cs @@ -1350,6 +1350,7 @@ namespace EduNetworkBuilder if(NB.GetComponentType(nc) == GeneralComponentType.device) { checking = (NetworkDevice)nc; + if (checking.PowerOff) continue; //we cannot connect to a powered-off device if (checking == starting) continue; answer = checking.HasWPortSSIDKey(start.SSID, start.EncryptionKey); if(answer != null) diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs index 1bfe34b..53ce927 100644 --- a/EduNetworkBuilder/NetworkBuilder.cs +++ b/EduNetworkBuilder/NetworkBuilder.cs @@ -694,6 +694,7 @@ namespace EduNetworkBuilder if (ItemClickedOn != null) { ItemClickedOn.PowerOff = false; + UpdateLinks(); UpdateVisuals(); } } @@ -703,6 +704,7 @@ namespace EduNetworkBuilder if (ItemClickedOn != null) { ItemClickedOn.PowerOff = true; + UpdateLinks(); UpdateVisuals(); } } diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs index 4bf8031..18fac33 100644 --- a/EduNetworkBuilder/NetworkDevice.cs +++ b/EduNetworkBuilder/NetworkDevice.cs @@ -806,7 +806,7 @@ namespace EduNetworkBuilder tryit = true; if(!tryit) { - //Check distance + //Check distance and power for AP NetworkComponent nc = myNet.GetComponentFromID(nic.ConnectedLink); if(nc != null) { @@ -814,6 +814,13 @@ namespace EduNetworkBuilder double distance = nl.LinkDistance(); if (distance > NB.WirelessReconnectDistance) tryit = true; + //Make sure the far end is powered on + HostNicID EndPoint = nl.Dst; + if (nic.myID.HostID == EndPoint.HostID) EndPoint = nl.Src; + NetworkDevice End = myNet.GetDeviceFromID(EndPoint); + if (End != null && End.PowerOff) + tryit = true; + } } //Tryit tells us if we should try to reconnect.