Exemplo n.º 1
0
        public DroneInfo(PacketBuffer buffer)
        {
            Name       = buffer.ReadString();
            ModelName  = buffer.ReadString();
            SerialCode = buffer.ReadString();

            BuildName    = buffer.ReadString().Trim().Replace(' ', '_');
            BuildVersion = buffer.ReadByte();

            ResetReason    = (ResetReason)buffer.ReadByte();
            ResetException = (ResetException)buffer.ReadByte();
            ResetEpc       = buffer.ReadUInt();
            ResetExcvaddr  = buffer.ReadUInt();

            if (ResetReason != ResetReason.Exception)
            {
                ResetException = ResetException.None;
            }

            StopReason = (StopReason)buffer.ReadByte();

            GyroSensor   = buffer.ReadString();
            Magnetometer = buffer.ReadString();
            BaroSensor   = buffer.ReadString();
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
0
        private void HandleDataPacket(byte[] packet)
        {
            using (MemoryStream stream = new MemoryStream(packet))
            {
                PacketBuffer buffer = new PacketBuffer(stream);
                if (buffer.Size < 3 || buffer.ReadByte() != 'F' || buffer.ReadByte() != 'L' || buffer.ReadByte() != 'Y')
                    return;

                int revision = buffer.ReadInt();
                DataPacketType type = (DataPacketType)buffer.ReadByte();

                lastDataTime = Environment.TickCount;

                switch (type)
                {
                    case DataPacketType.Drone:
                        if (!CheckRevision(lastDataDroneRevision, revision))
                            return;

                        DroneState state = (DroneState)buffer.ReadByte();

                        QuadMotorValues motorValues = new QuadMotorValues(buffer);
                        GyroData gyro = new GyroData(buffer);

                        float batteryVoltage = buffer.ReadFloat();

                        int wifiRssi = buffer.ReadInt();

                        Data = new DroneData(state, motorValues, gyro, batteryVoltage, wifiRssi);

                        lastDataDroneRevision = revision;
                        break;
                    case DataPacketType.Log:
                        if (!CheckRevision(lastDataLogRevision, revision))
                            return;

                        int lines = buffer.ReadInt();

                        for (int i = 0; i < lines; i++)
                        {
                            string msg = buffer.ReadString();

                            if (OnLogMessage == null)
                                Log.Info("[Drone] " + msg);
                            else
                                OnLogMessage(msg + Environment.NewLine);
                        }

                        lastDataLogRevision = revision;
                        break;
                    case DataPacketType.Debug:
                        if (!CheckRevision(lastDataDebugRevision, revision))
                            return;

                        DebugData = new DebugData(buffer);
                        lastDataDebugRevision = revision;
                        break;
                }
            }
        }
Exemplo n.º 4
0
 public Entry(PacketBuffer buffer)
 {
     Name          = buffer.ReadString();
     TimeMicros    = buffer.ReadUInt();
     TimeMaxMicros = buffer.ReadUInt();
 }
Exemplo n.º 5
0
        private void HandleDataPacket(byte[] packet)
        {
            using (MemoryStream stream = new MemoryStream(packet))
            {
                PacketBuffer buffer = new PacketBuffer(stream);
                if (buffer.Size < 3 || buffer.ReadByte() != 'F' || buffer.ReadByte() != 'L' || buffer.ReadByte() != 'Y')
                {
                    return;
                }

                int            revision = buffer.ReadInt();
                DataPacketType type     = (DataPacketType)buffer.ReadByte();

                lastDataTime = Environment.TickCount;

                switch (type)
                {
                case DataPacketType.Drone:
                    if (!CheckRevision(lastDataDroneRevision, revision))
                    {
                        return;
                    }

                    DroneState state = (DroneState)buffer.ReadByte();

                    QuadMotorValues motorValues = new QuadMotorValues(buffer);
                    GyroData        gyro        = new GyroData(buffer);

                    float batteryVoltage = buffer.ReadFloat();

                    int wifiRssi = buffer.ReadInt();

                    Data = new DroneData(state, motorValues, gyro, batteryVoltage, wifiRssi);

                    lastDataDroneRevision = revision;
                    break;

                case DataPacketType.Log:
                    if (!CheckRevision(lastDataLogRevision, revision))
                    {
                        return;
                    }

                    int lines = buffer.ReadInt();

                    for (int i = 0; i < lines; i++)
                    {
                        string msg = buffer.ReadString();

                        if (OnLogMessage == null)
                        {
                            Log.Info("[Drone] " + msg);
                        }
                        else
                        {
                            OnLogMessage(msg + Environment.NewLine);
                        }
                    }

                    lastDataLogRevision = revision;
                    break;

                case DataPacketType.Debug:
                    if (!CheckRevision(lastDataDebugRevision, revision))
                    {
                        return;
                    }

                    DebugData             = new DebugData(buffer);
                    lastDataDebugRevision = revision;
                    break;
                }
            }
        }
Exemplo n.º 6
0
 public Entry(PacketBuffer buffer)
 {
     Name = buffer.ReadString();
     TimeMicros = buffer.ReadUInt();
     TimeMaxMicros = buffer.ReadUInt();
 }
Exemplo n.º 7
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("Hello: 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(e.ToString());
            }
        }
Exemplo n.º 8
0
        private void HandleDataPacket(byte[] packet)
        {
            using (MemoryStream stream = new MemoryStream(packet))
            {
                PacketBuffer buffer = new PacketBuffer(stream);
                if (buffer.Size < 3 || buffer.ReadByte() != 'F' || buffer.ReadByte() != 'L' || buffer.ReadByte() != 'Y')
                {
                    return;
                }

                int            revision = buffer.ReadInt();
                DataPacketType type     = (DataPacketType)buffer.ReadByte();

                lastDataTime = Environment.TickCount;

                switch (type)
                {
                case DataPacketType.Drone:
                    if (!CheckRevision(lastDataDroneRevision, revision))
                    {
                        return;
                    }

                    DroneState      state       = (DroneState)buffer.ReadByte();
                    QuadMotorValues motorValues = new QuadMotorValues(buffer);
                    SensorData      sensor      = new SensorData(buffer);

                    float batteryVoltage = buffer.ReadFloat();
                    int   wifiRssi       = buffer.ReadInt();

                    Data = new DroneData(state, motorValues, sensor, batteryVoltage, wifiRssi);

                    lastDataDroneRevision = revision;
                    break;

                case DataPacketType.Log:
                    if (!CheckRevision(lastDataLogRevision, revision))
                    {
                        return;
                    }

                    int lines = buffer.ReadInt();

                    for (int i = 0; i < lines; i++)
                    {
                        string msg = buffer.ReadString();

                        DroneLog.AddLine(msg);
                    }

                    lastDataLogRevision = revision;
                    break;

                case DataPacketType.DebugOutput:
                    if (!CheckRevision(lastDataOutputRevision, revision))
                    {
                        return;
                    }

                    DebugOutputData        = new OutputData(buffer);
                    lastDataOutputRevision = revision;

                    NotifyDebugDataChanged();
                    break;

                case DataPacketType.DebugProfiler:
                    if (!CheckRevision(lastDataProfilerRevision, revision))
                    {
                        return;
                    }

                    DebugProfilerData        = new ProfilerData(buffer);
                    lastDataProfilerRevision = revision;

                    NotifyDebugDataChanged();
                    break;
                }
            }
        }