Added packet class and
This commit is contained in:
56
Tracking/Packet.cs
Normal file
56
Tracking/Packet.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text;
|
||||
|
||||
namespace EFBTracker.Tracking
|
||||
{
|
||||
public class Packet
|
||||
{
|
||||
private string Type { get; set; }
|
||||
private float[]? Data { get; set; }
|
||||
|
||||
public Packet(string type, float[] data){
|
||||
Type = type;
|
||||
Data = data;
|
||||
}
|
||||
|
||||
public static Packet[]? ReadPackets(byte[] data){
|
||||
|
||||
|
||||
if((data.Length - 5) % 36 == 0){//If there are correctly sized packets
|
||||
int packetPos = 0;
|
||||
List<Packet> packets = new List<Packet>();
|
||||
|
||||
//Next 4 bytes are packet header
|
||||
string header = Encoding.UTF8.GetString(data, packetPos, 4);
|
||||
packetPos += 5;
|
||||
|
||||
while(packetPos < data.Length)
|
||||
{
|
||||
|
||||
int id = BitConverter.ToInt32(data, packetPos);
|
||||
packetPos += 4;
|
||||
|
||||
//Array to take 4 values
|
||||
float[] values = new float[4];
|
||||
|
||||
for (var i = 0; i < values.Length; i++)
|
||||
{//Read 4 values from packet and save into array
|
||||
var value = BitConverter.ToSingle(data, packetPos);
|
||||
values[i] = value;
|
||||
packetPos += 8;
|
||||
}
|
||||
|
||||
//Generate new packet object and add to list
|
||||
packets.Add(new Packet(header, values));
|
||||
}
|
||||
return packets.ToArray();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user