Exemplo n.º 1
0
 //=====================================================================
 /// <summary>
 /// DataAck routine
 /// </summary>
 /// <param name="dataAckPacket">DataAck packet</param>
 private void DataAckRoutine(DataAck dataAckPacket)
 {
     //Queue<Packets.Data> temporaryQ = (Queue<Packets.Data>)_packet_queues[_wp.Source];
     try
     {
         if (((Queue<Data>)_packet_queues[dataAckPacket.Source]).Count > 0)
         {
             lock (Sync)
             {
                 var temp = ((Queue<Data>)_packet_queues[dataAckPacket.Source]).First();
                 if (temp.GuidD.Equals(dataAckPacket.GuiDforDataPacket))
                     ((Queue<Data>)_packet_queues[dataAckPacket.Source]).Dequeue();
                 Monitor.PulseAll(Sync);
             }
         }
     }
     catch (Exception ex) { AddToLog("DataAckRoutine: " + ex.Message); }
     DataAckReceived++;
 }
        //*********************************************************************
        public void ParseReceivedPacket(IPacket pack)
        {
            Type _Pt = pack.GetType();

            if (_Pt == typeof(Packets.ConnectionACK))
            {
                Packets.ConnectionACK _ack = (Packets.ConnectionACK)pack;
                if (!_AssociatedWithAPList.Contains(_ack.SSID))
                {
                    _AssociatedWithAPList.Add(_ack.SSID);

                    Thread.Sleep(5);
                }
            }
            else if (_Pt == typeof(Packets.Beacon))
            {
                Packets.Beacon bec = (Packets.Beacon)pack;
                if (!_AccessPoint.Contains(bec.SSID))
                {
                    _AccessPoint.Add(bec.SSID);
                }
                _AccessPoint.Increase(bec.SSID);
                //Thread.Sleep(2);
            }

            else if (_Pt == typeof(Packets.Data))
            {
                Packets.Data dat     = (Packets.Data)pack;
                bool         recieve = dat.PacketID != PrevDataID;

                if (recieve)
                {
                    _DataReceived++;


                    DataAck da = new DataAck(CreatePacket());
                    PrevDataID = dat.PacketID;
                    AP _connecttoAP = GetAPBySSID(_AccessPoint[0].ToString());
                    da.Destination   = _connecttoAP.getMACAddress();
                    da.PacketChannel = this.getOperateChannel();
                    da.PacketBand    = this.getOperateBand();
                    da.Reciver       = dat.Source;
                    DataReceivedContainer.Append(dat.getData() + "\r\n");
                    //Thread.Sleep(2);
                    da.PacketID = dat.PacketID;
                    SendData(da);
                }
                else
                {
                    //  ACK Not received
                    AddToLog("ACK Not received :" + dat.PacketID);
                    DataAck da = new DataAck(CreatePacket());
                    //PrevDataID = dat.PacketID;
                    AP _connecttoAP = GetAPBySSID(_AccessPoint[0].ToString());
                    da.Destination   = _connecttoAP.getMACAddress();
                    da.PacketChannel = this.getOperateChannel();
                    da.PacketBand    = this.getOperateBand();
                    da.Reciver       = dat.Source;
                    //DataReceivedContainer.Append(dat.getData() + "\r\n");
                    //Thread.Sleep(2);
                    DataAckRetransmitted++;
                    da.PacketID = dat.PacketID;
                    SendData(da);
                }
            }
            else if (_Pt == typeof(Packets.DataAck))
            {
                Packets.DataAck dat = (Packets.DataAck)pack;

                if (PrevDataAckID != dat.PacketID)
                {
                    _DataAckReceived++;
                    ackReceived   = true;
                    PrevDataAckID = dat.PacketID;
                }
            }
            else
            {
                //Console.WriteLine("[" + getMACAddress() + "]" + " listening.");
            }
        }
Exemplo n.º 3
0
 //=====================================================================
 public void MACsandACK(string Destination , Guid _DataGuid,int TXrate)
 {
     DataAck da = new DataAck(CreatePacket());
     da.Destination = Destination;
     da.PacketChannel = this.getOperateChannel();
     //da.PacketBand = this.getOperateBand();
     da.PacketBandWith = this.BandWidth;
     da.PacketStandart = this.Stand80211;
     da.PacketFrequency = this.Freq;
     da.Source = this.getMACAddress();//.ToString();
     da.GuiDforDataPacket = _DataGuid;
     da.setTransmitRate(TXrate);
     this.SendData(da);
 }