private void RemoveGarbage(byte[] buffer, ref int length)
{
//scan for preambles
for (int i = 0; i < (length - 1); i++)
{
if ((buffer[i] == PTP.PTP_PREAMBLE1 && buffer[i + 1] == PTP.PTP_PREAMBLE2) || IsGreeting(buffer, i, length))
{
if (i > 0)
{
//move back
Array.Copy(buffer, i, buffer, 0, length - i);
length -= i;
Trace.WriteLine("Garbage", null);
}
return;
}
}
//one preamble?
if (length > 0 && (buffer[length - 1] == PTP.PTP_PREAMBLE1 || buffer[length - 1] == PTP.PTP_GREETING_PREAMBLE1))
{
buffer[0] = buffer[length - 1];
length = 1;
Trace.WriteLine("Garbage", null);
return;
}
//no preamble?
if (length > 0)
{
length = 0;
Trace.WriteLine("Garbage", null);
}
}