hawkeye camera support(not tested)
This commit is contained in:
91
framework/Inspectron.HawkEye/UDPB/UDPBPacket.cs
Normal file
91
framework/Inspectron.HawkEye/UDPB/UDPBPacket.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Inspectron.HawkEye.UDPB
|
||||
{
|
||||
public class UDPBPacket
|
||||
{
|
||||
|
||||
public enum EPacketType:uint
|
||||
{
|
||||
Data=0,
|
||||
CloseSequence=1,
|
||||
BeginSequence=2,
|
||||
Nak=3,
|
||||
Ok=4
|
||||
}
|
||||
|
||||
public UDPBPacket()
|
||||
{
|
||||
}
|
||||
|
||||
private const int sequenceIndex = 0;
|
||||
private const int messageIndex = 1;
|
||||
private const int typeIndex = 2;
|
||||
private const int datalengthIndex = 3;
|
||||
|
||||
public const int packetHeaderSize = 16;
|
||||
|
||||
private uint[] _header=new uint[4];
|
||||
|
||||
public uint SequenceId
|
||||
{
|
||||
get => _header[sequenceIndex];
|
||||
set => _header[sequenceIndex] = value;
|
||||
}
|
||||
|
||||
public uint MessageId
|
||||
{
|
||||
get => _header[messageIndex];
|
||||
set => _header[messageIndex] = value;
|
||||
}
|
||||
|
||||
public EPacketType Type
|
||||
{
|
||||
get => (EPacketType)_header[typeIndex];
|
||||
set => _header[typeIndex] = (uint)value;
|
||||
}
|
||||
|
||||
private byte[] _payload;
|
||||
|
||||
public byte[] Payload
|
||||
{
|
||||
get => _payload??new byte[0];
|
||||
set
|
||||
{
|
||||
_payload = value;
|
||||
}
|
||||
}
|
||||
public uint Length
|
||||
{
|
||||
get => _header[datalengthIndex];
|
||||
set => _header[datalengthIndex] = value;
|
||||
}
|
||||
|
||||
|
||||
public byte[] Serialize()
|
||||
{
|
||||
|
||||
byte[] bytes = new byte[UDPBQueue.PACKET_SIZE+packetHeaderSize];
|
||||
Buffer.BlockCopy(_header, 0, bytes, 0, packetHeaderSize);
|
||||
if(_payload!=null)
|
||||
Array.Copy(_payload, 0, bytes, packetHeaderSize, _payload.Length);
|
||||
return bytes;
|
||||
}
|
||||
|
||||
public void Deserialize(byte[] data,int offset,int len)
|
||||
{
|
||||
|
||||
Buffer.BlockCopy(data, offset, _header, 0, packetHeaderSize);
|
||||
var dataLen = _header[datalengthIndex];
|
||||
if (dataLen > 0)
|
||||
{
|
||||
_payload = new byte[dataLen];
|
||||
|
||||
|
||||
Array.Copy(data, packetHeaderSize+ offset, _payload, 0, (int) dataLen);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user