private Packet GeneratePacket(Sensor sourceNode, bool IncreasePid) { if (IncreasePid) { //This is for the query request PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = sourceNode; pck.DestinationPoint = sourceNode.getDestinationForRingAccess(); pck.Path = "" + sourceNode.ID; pck.Destination = null; // has no destination. pck.PacketType = PacketType.ObtainSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(sourceNode.CenterLocation, pck.DestinationPoint) / (PublicParamerters.CommunicationRangeRadius / 3))); counter.DisplayRefreshAtGenertingPacket(sourceNode, PacketType.ObtainSinkPosition); return(pck); } else { //This is for the query request // PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = sourceNode; pck.DestinationPoint = sourceNode.getDestinationForRingAccess(); pck.Path = "" + sourceNode.ID; pck.Destination = null; // has no destination. pck.PacketType = PacketType.ObtainSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(sourceNode.CenterLocation, pck.DestinationPoint) / (PublicParamerters.CommunicationRangeRadius / 3))); counter.DisplayRefreshAtGenertingPacket(sourceNode, PacketType.ObtainSinkPosition); return(pck); } }
private Packet GeneragtePacket(Sensor firstRingNode, SinksAgentsRow reportSinkPositionRow) { PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = firstRingNode; pck.ReportSinkPosition = reportSinkPositionRow; pck.Path = "" + firstRingNode.ID; pck.Destination = null; pck.PacketType = PacketType.ShareSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; counter.DisplayRefreshAtGenertingPacket(firstRingNode, PacketType.ShareSinkPosition); return(pck); }
/// <summary> /// generate a DiagonalVirtualLineConstruction packet. /// </summary> /// <param name="scr">anchor1</param> /// <param name="des">anchor2</param> /// <returns></returns> private Packet GeneratePacket(Sensor scr, Sensor des) { PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = scr; pck.Path = "" + scr.ID; pck.Destination = des; pck.PacketType = PacketType.RingConstruction; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.TimeToLive = System.Convert.ToInt16((Operations.DistanceBetweenTwoPoints(scr.CenterLocation, des.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); counter.DisplayRefreshAtGenertingPacket(scr, PacketType.RingConstruction); return(pck); }
private Packet GeneragtePacket(Sensor sender, SinksAgentsRow row) { //Should not enter here if its an agent PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = sender; pck.Path = "" + sender.ID; pck.Destination = row.AgentNode; pck.PacketType = PacketType.Data; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(sender.CenterLocation, pck.Destination.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); pck.TimeToLive += PublicParamerters.HopsErrorRange; counter.DisplayRefreshAtGenertingPacket(sender, PacketType.Data); return(pck); }
private Packet GeneratePacket(SinksAgentsRow reportSinkPosition) { PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.Source = reportSinkPosition.AgentNode; pck.Path = "" + reportSinkPosition.AgentNode.ID; pck.Destination = null; // has no destination. pck.PacketType = PacketType.ReportSinkPosition; pck.DestinationPoint = reportSinkPosition.RingAccessPointDestination; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.ReportSinkPosition = reportSinkPosition; pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(reportSinkPosition.AgentNode.CenterLocation, reportSinkPosition.RingAccessPointDestination) / (PublicParamerters.CommunicationRangeRadius / 3))); pck.TimeToLive += PublicParamerters.HopsErrorRange; counter.DisplayRefreshAtGenertingPacket(reportSinkPosition.AgentNode, PacketType.ReportSinkPosition); return(pck); }
public Packet GeneratePacket(Sensor hightierNode, Sensor lowtiernode, List <int> SinkIDs, bool IncreasePid) { if (IncreasePid) { if (SinkIDs == null) { // normal ResponseSinkPosition: PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.SinkIDsNeedsRecovery = null; pck.Source = hightierNode; pck.Path = "" + hightierNode.ID; pck.Destination = lowtiernode; pck.PacketType = PacketType.ResponseSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.SinksAgentsList = CopyAllSinks(hightierNode.GetAnchorNodesFromHighTierNodes); // normal packet. not recovery packet pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(hightierNode.CenterLocation, lowtiernode.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); pck.TimeToLive += PublicParamerters.HopsErrorRange; counter.DisplayRefreshAtGenertingPacket(hightierNode, PacketType.ResponseSinkPosition); return(pck); } else { // recovery packet: that is to say , only few sinks are reqiured. not need to respnse by all sinks. PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.SinkIDsNeedsRecovery = SinkIDs; pck.Source = hightierNode; pck.Path = "" + hightierNode.ID; pck.Destination = lowtiernode; // has no destination. pck.PacketType = PacketType.ResponseSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.SinksAgentsList = CopyFewSinks(hightierNode.GetAnchorNodesFromHighTierNodes, SinkIDs); // needs recovery pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(hightierNode.CenterLocation, lowtiernode.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); counter.DisplayRefreshAtGenertingPacket(hightierNode, PacketType.ResponseSinkPosition); return(pck); } } else { if (SinkIDs == null) { // normal ResponseSinkPosition: // PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.SinkIDsNeedsRecovery = null; pck.Source = hightierNode; pck.Path = "" + hightierNode.ID; pck.Destination = lowtiernode; pck.PacketType = PacketType.ResponseSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.SinksAgentsList = CopyAllSinks(hightierNode.GetAnchorNodesFromHighTierNodes); // normal packet. not recovery packet pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(hightierNode.CenterLocation, lowtiernode.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); pck.TimeToLive += PublicParamerters.HopsErrorRange; counter.DisplayRefreshAtGenertingPacket(hightierNode, PacketType.ResponseSinkPosition); return(pck); } else { // recovery packet: that is to say , only few sinks are reqiured. not need to respnse by all sinks. // PublicParamerters.NumberofGeneratedPackets += 1; Packet pck = new Packet(); pck.SinkIDsNeedsRecovery = SinkIDs; pck.Source = hightierNode; pck.Path = "" + hightierNode.ID; pck.Destination = lowtiernode; // has no destination. pck.PacketType = PacketType.ResponseSinkPosition; pck.PID = PublicParamerters.NumberofGeneratedPackets; pck.SinksAgentsList = CopyFewSinks(hightierNode.GetAnchorNodesFromHighTierNodes, SinkIDs); // needs recovery pck.TimeToLive = Convert.ToInt16((Operations.DistanceBetweenTwoPoints(hightierNode.CenterLocation, lowtiernode.CenterLocation) / (PublicParamerters.CommunicationRangeRadius / 3))); counter.DisplayRefreshAtGenertingPacket(hightierNode, PacketType.ResponseSinkPosition); return(pck); } } }