// ignore_for_file: constant_identifier_names import 'parser.dart'; import 'sentence.dart'; const TypeGSA = "GSA"; // Auto - Field 1, auto or manual fix. const Auto = "A"; // Manual - Field 1, auto or manual fix. const Manual = "M"; // FixNone - Field 2, fix type. const FixNone = "1"; // Fix2D - Field 2, fix type. const Fix2D = "2"; // Fix3D - Field 2, fix type. const Fix3D = "3"; class GSA { String mode; String fixType; List sv; double pdop; double hdop; double vdop; int systemID; GSA( {required this.mode, required this.fixType, required this.sv, required this.pdop, required this.hdop, required this.vdop, required this.systemID}); static GSA newGSA(BaseSentence s) { var p = Parser(s); var m = GSA( mode: p.enumString(0, "selection mode", [Auto, Manual]), fixType: p.enumString(1, "fix type", [FixNone, Fix2D, Fix3D]), sv: [], pdop: 0, hdop: 0, vdop: 0, systemID: 0, ); for (int i = 2; i < 14; i++) { var v = p.string(i, "satellite in view"); if (v != "") { m.sv.add(v); } } m.pdop = p.float64(14, "pdop"); m.hdop = p.float64(15, "hdop"); m.vdop = p.float64(16, "vdop"); if (s.fields.length > 17) { m.systemID = p.int64(17, "system ID"); } return m; } }