public AvlData(AvlDataPriority priority, DateTime dateTime, GpsElement gps, IoElement data = null) { _priority = priority; _dateTime = dateTime; _gps = gps; _data = data; }
public AvlData Decode(IBitReader reader) { DateTime dateTime = reader != null?DateTimeExt.FromAvl(reader.ReadInt64()) : throw new ArgumentNullException(nameof(reader)); AvlDataPriority priority = (AvlDataPriority)reader.ReadByte(); GpsElement gps = DefaultGpsElementEncoding.Instance.Decode(reader); IoElement data = DefaultIOElementEncoding.Instance16.Decode(reader); return(new AvlData(priority, dateTime, gps, data)); }
public AvlData Decode(IBitReader reader) { DateTime dateTime = reader != null?DateTimeExt.FromAvl(reader.ReadUInt32() * 1000L + reader.ReadByte() * 10) : throw new ArgumentNullException(nameof(reader)); AvlDataPriority priority = (AvlDataPriority)reader.ReadByte(); GpsElementExt gpsElementExt = FMPro3GpsElementEncoding.Instance.Decode(reader); IoElement data = FMPro3IOElementEncoding.Instance.Decode(reader); data.Add(gpsElementExt.IO[500001]); return(new AvlData(priority, dateTime, gpsElementExt.GPS, data)); }
public AvlData Decode(IBitReader reader) { DateTime dateTime = reader != null?DateTimeExt.FromAvl(reader.ReadInt64()) : throw new ArgumentNullException(nameof(reader)); AvlDataPriority priority = AvlDataPriority.Low; byte num = reader.ReadByte(); if (num > 10 && num <= 20) { priority = AvlDataPriority.High; } GpsElement gps = DefaultGpsElementEncoding.Instance.Decode(reader); IoElement data = LegacyIoElementEncoding.Instance.Decode(reader); if (priority == AvlDataPriority.High) { data = new IoElement(-1, data.Properties); } return(new AvlData(priority, dateTime, gps, data)); }
public AvlData Decode(IBitReader reader) { int num1 = reader != null?reader.ReadInt32() : throw new ArgumentNullException(nameof(reader)); int index = 3 & num1 >> 30; AvlDataPriority priority = Priorities[index]; long num2 = num1 & 1073741823; DateTime dateTime = GHepoch.AddSeconds(num2); GhGlobalMask mask = (GhGlobalMask)reader.ReadByte(); GpsElement gps = GpsElement.Default; IoElement ioElement = new IoElement(); if (mask.HasFlag(GhGlobalMask.GpsElement)) { GpsElementExt gpsElementExt = GhGpsElementEncoding.Instance.Decode(reader); gps = gpsElementExt.GPS; ioElement = gpsElementExt.IO; } IList <IoProperty> properties1 = GetProperties(reader, mask, GhGlobalMask.IoInt8, GhIoElementEncoding.Int8); IList <IoProperty> properties2 = GetProperties(reader, mask, GhGlobalMask.IoInt16, GhIoElementEncoding.Int16); IList <IoProperty> properties3 = GetProperties(reader, mask, GhGlobalMask.IoInt32, GhIoElementEncoding.Int32); List <IoProperty> ioPropertyList = new List <IoProperty>(); ioPropertyList.AddRange(ioElement); ioPropertyList.AddRange(properties1 ?? Enumerable.Empty <IoProperty>()); ioPropertyList.AddRange(properties2 ?? Enumerable.Empty <IoProperty>()); ioPropertyList.AddRange(properties3 ?? Enumerable.Empty <IoProperty>()); int eventId = 0; if (priority == AvlDataPriority.Panic) { IoProperty ioProperty = IoProperty.Create(204, (byte)1); ioPropertyList.Add(ioProperty); eventId = ioPropertyList.SingleOrDefault(x => x.Id == 222) == IoProperty.Default ? 204 : 222; } IoElement data = new IoElement(eventId, ioPropertyList); return(new AvlData(priority, dateTime, gps, data)); }
public AvlData Decode(IBitReader reader) { byte num = reader != null?reader.ReadByte() : throw new ArgumentNullException(nameof(reader)); byte[] buffer = reader.ReadBytes(num); if (reader.ReadByte() != CRC.CalculateXor(buffer)) { throw new Exception("AvlData Record CRC failure. Received CRC - {0}, calculated CRC - {1}."); } using (MemoryStream stream = new MemoryStream()) { using (IBitReader suitableBitReader = stream.CreateSuitableBitReader()) { stream.Write(buffer, 0, num); stream.Position = 0L; long timestamp = suitableBitReader.ReadUInt32() * 1000L; AvlDataPriority priority = (AvlDataPriority)suitableBitReader.ReadByte(); GpsElement gps = DefaultGpsElementEncoding.Instance.Decode(suitableBitReader); IoElement data = DefaultIOElementEncoding.Instance.Decode(suitableBitReader); DateTime dateTime = DateTimeExt.FromAvl(timestamp); return(new AvlData(priority, dateTime, gps, data)); } } }