Drop wireless packets if the link is too long
This commit is contained in:
parent
1bf394833d
commit
69f00f4a48
@ -229,6 +229,9 @@ namespace EduNetworkBuilder
|
|||||||
public static int PacketVersionNum = 2; //2 uses the new stuff. Anything else uses the old stuff
|
public static int PacketVersionNum = 2; //2 uses the new stuff. Anything else uses the old stuff
|
||||||
public const int GridSize = 10;
|
public const int GridSize = 10;
|
||||||
public static string[,] LanguageChoices = { { "English", "en" }, { "French", "fr" } };
|
public static string[,] LanguageChoices = { { "English", "en" }, { "French", "fr" } };
|
||||||
|
public static int WirelessMaxUnsuccessfulLink = 120; //The link will connect, but the packet will drop
|
||||||
|
public static int WirelessMaxSuccessfulLink = 100; //Packets will drop after this distance
|
||||||
|
public static int WirelessReconnectDistance = 70; //Try to find a closer AP if we are this far out.
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Find the global random number generator.
|
/// Find the global random number generator.
|
||||||
|
@ -1105,6 +1105,12 @@ namespace EduNetworkBuilder
|
|||||||
return Math.Sqrt(Math.Pow((start.X - dest.X),2) + Math.Pow((start.Y - dest.Y),2)) / 5; //use grid size...
|
return Math.Sqrt(Math.Pow((start.X - dest.X),2) + Math.Pow((start.Y - dest.Y),2)) / 5; //use grid size...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double distance(NetworkDevice start, NetworkDevice dest)
|
||||||
|
{
|
||||||
|
if (start == null || dest == null) return 0;
|
||||||
|
return distance(start.myLocation(), dest.myLocation());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* Do On All Devices
|
* Do On All Devices
|
||||||
|
@ -167,6 +167,19 @@ namespace EduNetworkBuilder
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double LinkDistance()
|
||||||
|
{
|
||||||
|
Network myNet = NB.GetNetwork();
|
||||||
|
if (myNet == null)
|
||||||
|
return -1;
|
||||||
|
NetworkDevice sDev = myNet.GetDeviceFromID(SrcNic);
|
||||||
|
NetworkDevice dDev = myNet.GetDeviceFromID(DstNic);
|
||||||
|
if (sDev == null || dDev == null)
|
||||||
|
return -1;
|
||||||
|
double distance = myNet.distance(sDev.myLocation(), dDev.myLocation());
|
||||||
|
return distance;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Check that the link works. If not, drop the link. It usually only
|
/// Check that the link works. If not, drop the link. It usually only
|
||||||
/// fails in wireless if the ssid and key do not match
|
/// fails in wireless if the ssid and key do not match
|
||||||
@ -189,6 +202,8 @@ namespace EduNetworkBuilder
|
|||||||
deleteme = true;
|
deleteme = true;
|
||||||
if (sNic.SSID != dNic.SSID)
|
if (sNic.SSID != dNic.SSID)
|
||||||
deleteme = true;
|
deleteme = true;
|
||||||
|
if (LinkDistance() > NB.WirelessMaxUnsuccessfulLink)
|
||||||
|
deleteme = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sNic.isWireless() != dNic.isWireless())
|
if (sNic.isWireless() != dNic.isWireless())
|
||||||
@ -273,11 +288,26 @@ namespace EduNetworkBuilder
|
|||||||
tPacket.health -= 10;
|
tPacket.health -= 10;
|
||||||
//Console.WriteLine(" health=" + tPacket.health.ToString());
|
//Console.WriteLine(" health=" + tPacket.health.ToString());
|
||||||
}
|
}
|
||||||
|
if(theLinkType == LinkType.wireless)
|
||||||
|
{
|
||||||
|
NetworkDevice sDev = myNet.GetDeviceFromID(SrcNic);
|
||||||
|
NetworkDevice dDev = myNet.GetDeviceFromID(DstNic);
|
||||||
|
double distance = myNet.distance(sDev, dDev) * (tPacket.myLinkPercent * 0.01);
|
||||||
|
if(distance > NB.WirelessMaxSuccessfulLink)
|
||||||
|
{
|
||||||
|
//The wireless link is too far. Drop the packet
|
||||||
|
tPacket.Tracking.AddMessage(DebugLevel.info, this, NB.Translate("NL_WirelessDropped"));
|
||||||
|
tPacket.Tracking.Status = NB.Translate("NL_WirelessDropped");
|
||||||
|
tPacket.Tracking.Finished = true;
|
||||||
|
tPacket.MyStatus = PacketStatus.finished_failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(tPacket.health <= 0)
|
if(tPacket.health <= 0)
|
||||||
{
|
{
|
||||||
//The link is broken. Drop the packet
|
//The link is broken. Drop the packet
|
||||||
tPacket.Tracking.AddMessage(DebugLevel.info, this, "The packet was corrupted. The network wire may run too close to electricity or fluorescent lighting, or the wireless path is being interfered by a microwave, wireless phone, or other radio device.");
|
tPacket.Tracking.AddMessage(DebugLevel.info, this, "The packet was corrupted. The network wire may run too close to electricity or fluorescent lighting, or the wireless path is being interfered by a microwave, wireless phone, or other radio device.");
|
||||||
tPacket.Tracking.Status = "The packet got corrupted and was dropped.";
|
tPacket.Tracking.Status = "The packet got corrupted and was dropped.";
|
||||||
|
tPacket.Tracking.Finished = true;
|
||||||
tPacket.MyStatus = PacketStatus.finished_failed;
|
tPacket.MyStatus = PacketStatus.finished_failed;
|
||||||
}
|
}
|
||||||
if(theLinkType == LinkType.broken && tPacket.myLinkPercent > 50)
|
if(theLinkType == LinkType.broken && tPacket.myLinkPercent > 50)
|
||||||
|
@ -727,4 +727,8 @@
|
|||||||
<data name="H_PacketCorruption_Title" xml:space="preserve">
|
<data name="H_PacketCorruption_Title" xml:space="preserve">
|
||||||
<value>Packet Corruption</value>
|
<value>Packet Corruption</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="NL_WirelessDropped" xml:space="preserve">
|
||||||
|
<value>The wireless signal was too weak. Packet dropped.</value>
|
||||||
|
<comment>NetworkLink WirelessDropped = The wireless signal was too weak. Packet dropped.</comment>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue
Block a user