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, } }