Exemplo n.º 1
0
        private void AddDrone(DroneEntry entry)
        {
            lock (foundDrones)
            {
                if (UpdateDrone(entry))
                {
                    return;
                }

                // alte Drone mit gleicher IP-Adresse entfernen
                RemoveDrone(entry.Address);

                foundDrones.Add(entry);
            }

            InvokeEvent();
        }
Exemplo n.º 2
0
        private bool UpdateDrone(DroneEntry entry)
        {
            for (int i = 0; i < foundDrones.Count; i++)
            {
                DroneEntry e = foundDrones[i];
                if (e.Address.Equals(entry.Address))
                {
                    foundDrones[i] = DroneEntry.UpdateEntry(entry);

                    if (!e.Equals(entry))
                    {
                        InvokeEvent();
                    }
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 3
0
        private void HandlePacket(byte[] packet, IPEndPoint sender)
        {
            try
            {
                using (MemoryStream stream = new MemoryStream(packet))
                {
                    PacketBuffer buffer = new PacketBuffer(stream);

                    if (packet.Length < 3 || buffer.ReadByte() != 'F' || buffer.ReadByte() != 'L' || buffer.ReadByte() != 'Y')
                    {
                        Log.Debug("DroneList: Invalid magic value!");
                        return;
                    }

                    if (buffer.ReadByte() != (byte)HelloPacketType.Answer)
                    {
                        return;
                    }

                    DroneEntry entry = new DroneEntry();
                    entry.Address = sender.Address;

                    entry.LastFound       = DateTime.Now;
                    entry.Name            = buffer.ReadString();
                    entry.Model           = buffer.ReadString();
                    entry.SerialCode      = buffer.ReadString();
                    entry.FirmwareVersion = buffer.ReadByte();

                    AddDrone(entry);
                }
            }
            catch (Exception e)
            {
                Log.Error("Error while searching for drones:");
                Log.Error(e);
            }
        }