public override void Parse(byte[] data, LogRecord record) { record.Header.Name = "SATVIS"; var nOfObservations = BitConverter.ToUInt32(data, HeaderLength + 8); for (int idx = 0; idx < nOfObservations; idx++) { var offset = HeaderLength + idx * 40; LogDataSatvis satvis = new LogDataSatvis() { SatVis = BitConverter.ToInt32(data, HeaderLength) == 1, Prn = BitConverter.ToUInt16(data, offset + 12), GloFreq = BitConverter.ToUInt16(data, offset + 14), Health = BitConverter.ToUInt32(data, offset + 16), Elev = BitConverter.ToDouble(data, offset + 20), Az = BitConverter.ToDouble(data, offset + 28) }; satvis.NavigationSystem = Util.GetNavigationSystemByPrn(satvis.Prn); if (satvis.NavigationSystem == NavigationSystem.GLONASS) { satvis.Prn = Util.GetActualPrn(satvis.Prn); satvis.GloFreq = Util.GetActualGlonassFrequency(satvis.GloFreq); } record.Data.Add(satvis); } }
public override void Parse(string[] body, LogRecord record) { long nOfObservations = Int64.Parse(body[2]); long offset = 3; long rangeFields = 7; long maxIndex = rangeFields * nOfObservations + offset; while (offset < maxIndex) { var data = new LogDataSatvis() { SatVis = String.Compare("TRUE", body[0], true) == 0, Prn = uint.Parse(body[offset]), GloFreq = int.Parse(body[offset + 1]), Health = ulong.Parse(body[offset + 2]), Elev = double.Parse(body[offset + 3], CultureInfo.InvariantCulture), Az = double.Parse(body[offset + 4], CultureInfo.InvariantCulture) }; data.NavigationSystem = Util.GetNavigationSystemByPrn(data.Prn); if (data.NavigationSystem == NavigationSystem.GLONASS) { data.Prn = Util.GetActualPrn(data.Prn); data.GloFreq = Util.GetActualGlonassFrequency(data.GloFreq); } record.Data.Add(data); offset += rangeFields; } }