GGA, GST és RMC nmea mondat értelemző refraktorálás

This commit is contained in:
2026-05-19 00:37:18 +02:00
parent 20a8078f3c
commit 53888c9dcb
3 changed files with 127 additions and 55 deletions
+29 -10
View File
@@ -1,18 +1,37 @@
import 'package:nmea/nmea.dart';
class Gngst extends TalkerSentence {
static const String id = "GNGST";
static const String id = 'GxGST';
Gngst({required super.raw});
@override
bool get valid => super.valid && fields.length == 9;
bool get valid => super.valid && fields.length >= 9;
String get utcOfPositionFix => fields[1];
double get rms => double.parse(fields[2]);
double get errorEllipseSemiMajorAxis => double.parse(fields[3]);
double get errorEllipseSemiMinorAxis => double.parse(fields[4]);
double get errorEllipseOrientation => double.parse(fields[5]);
double get longitudeError => double.parse(fields[6]);
double get latitudeError => double.parse(fields[7]);
double get heightError => double.parse(fields[8]);
String get utcOfPositionFix => _field(1);
double get rms => _parseDouble(_field(2), fallback: 0.0);
double get errorEllipseSemiMajorAxis =>
_parseDouble(_field(3), fallback: 0.0);
double get errorEllipseSemiMinorAxis =>
_parseDouble(_field(4), fallback: 0.0);
double get errorEllipseOrientation => _parseDouble(_field(5), fallback: 0.0);
double get longitudeError => _parseDouble(_field(6), fallback: 0.0);
double get latitudeError => _parseDouble(_field(7), fallback: 0.0);
double get heightError => _parseDouble(_field(8), fallback: 0.0);
String _field(int index) {
if (index < 0 || index >= fields.length) return '';
return fields[index].trim();
}
double _parseDouble(String value, {required double fallback}) {
return double.tryParse(value) ?? fallback;
}
}