using System;
namespace SWModules
{
public class Utils
{
public static int getField(byte[] inBytes, byte token, int desiredField, ref byte[] returnField)
{
int currentField = 0;
int returnFieldIndex = 0;
bool inDesiredField;
if (desiredField == 0)
inDesiredField = true;
else
inDesiredField = false;
Array.Clear(returnField, 0, returnField.Length);
for (int i = 0; i < inBytes.Length; i++)
{
if ((inBytes[i] == token) && !inDesiredField)
currentField++;
else if (currentField == desiredField)
{
inDesiredField = true;
if ((inBytes[i] == token) || (inBytes[i] == 10) || (inBytes[i] == 13))
return (returnFieldIndex);
else
{
returnField[returnFieldIndex++] = inBytes[i];
if(returnFieldIndex > returnField.Length)
return returnFieldIndex;
}
}
}
return (0);
}
///
/// Compares values in sequence for two byte arrays, and returns true if A = B for the subset that is identified.
///
/// Input Array to check
/// Array offset to start comparison in A
/// Second input array to check
/// Array offset for second input
/// Number of bytes to compare
///
public static bool CompareArray(byte[] aBytes, int aOffset, byte[] bBytes, int bOffset, int count)
{
if ((aBytes.Length < aOffset+count)||(bBytes.Length < bOffset+count))
return false;
for (int i = 0; i < count; i++)
{
if (aBytes[i + aOffset] != bBytes[bOffset + i])
return false;
}
return true;
}
public static uint SecondsSinceEpoch
{
get
{
TimeSpan t = DateTime.UtcNow - new DateTime(1970, 1, 1);
return (uint)(t.Seconds + t.Minutes * 60 + t.Hours * 3600 + t.Days * 86400 );
}
}
}
public enum WfrState
{
Waiting = 0,
GotResponse = 1,
NotWaiting = -2,
TimedOut = -1,
}
}