//********************************************************************* 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."); } }
//===================================================================== /// <summary> /// Send response to connect by sending ACK to connect request /// </summary> /// <param name="destMan">MAC address od STA device</param> public void SendConnectionACK(string destMan) { var ack = new ConnectionACK(CreatePacket()) {Destination = destMan}; this.SendData(ack); }