internal void ProcessPacket(SerialHeader sh, byte[] buffer, int offset)
{
if (sh is SafeSerialHeader)
{
if (sh.length > 0)
{
headerACK.CRC = 0;
headerACK.sequence = ((SafeSerialHeader)sh).sequence;
headerACK.CRC = SerialCRC.Calculate(headerACK.GetBytes(), headerACK.size);
WriteToPort(headerACK.GetBytes(), 0, headerACK.size, true);
}
else
{
byte seq = ((SafeSerialHeader)sh).sequence;
lock (SendBuffer)
{
if (SendBuffer.ContainsKey(seq))
{
SendBuffer.Remove(seq);
}
}
}
}
if (sh.length > 0)
{
coder.DataReceived(buffer, offset, sh.length, sta);
}
}