Пример #1
0
 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);
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 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);
         }
     }
 }