public LotekData(LotekGpsData gpsData, DateTime mortalityTime, LotekActivityData activityData) : this() { GpsData = gpsData; ActivityData = activityData; MortalityTime = mortalityTime; }
private static LotekData ActivityReader(IEnumerable <byte> data, bool firstByteIsHeader = false) { //Console.WriteLine("ActivityReader"); var crc = CalcCrc8(data.Take(data.Count() - 1)); //var crc2 = CalcCrc8(data.Skip(1).Take(data.Count() - 1)); //Console.WriteLine(" crc1: {0:x2}, crc2: {1:x2}, crc3: {2:x2}", crc, crc2, data.Last()); if (crc == data.Last()) { var offset = firstByteIsHeader ? 1 : 0; var gpsData = GpsReader(data.Skip(offset)); var refTime = gpsData.Timestamp.Round(TimeSpan.FromMinutes(5)); var activityBits = data.Skip(9 + offset).First(); var activityBytes = data.Skip(10 + offset).Take(4).ToArray(); var isMortality = (activityBits & 1) == 1; var activity1 = (activityBits & 2) == 2 ? activityBytes[0] : (byte?)null; if (isMortality) { var mortTime = Time(activityBytes.Skip(1)); var activityData1 = new LotekActivityData(refTime, activity1, null, null, null); return(new LotekData(gpsData, mortTime, activityData1)); } var activity2 = (activityBits & 4) == 4 ? activityBytes[1] : (byte?)null; var activity3 = (activityBits & 8) == 8 ? activityBytes[2] : (byte?)null; var activity4 = (activityBits & 16) == 16 ? activityBytes[3] : (byte?)null; var activityData2 = new LotekActivityData(refTime, activity1, activity2, activity3, activity4); return(new LotekData(gpsData, activityData2)); } return(new LotekData()); }
public LotekData(LotekGpsData gpsData, LotekActivityData activityData) : this() { GpsData = gpsData; ActivityData = activityData; }