gnssview_old/plugins/gnss/lib/nmea/bwc.dart
tanlinxing 553bde932c getx
2024-07-31 19:04:11 +08:00

62 lines
2.1 KiB
Dart

// ignore_for_file: constant_identifier_names
import 'parser.dart';
import 'sentence.dart';
import 'types.dart';
const TypeBWC = "BWC";
class BWC {
Time time; // UTC Time
double latitude; // latitude of waypoint
double longitude; // longitude of waypoint
double bearingTrue; // true bearing in degrees
String bearingTrueType; // is type of true bearing
double bearingMagnetic; // magnetic bearing in degrees
String bearingMagneticType; // is type of magnetic bearing
double distanceNauticalMiles; // distance to waypoint in nautical miles
String
distanceNauticalMilesUnit; // is unit of distance to waypoint nautical miles
String destinationWaypointID; // destination waypoint ID
String ffaMode; // FAA mode indicator (filled in NMEA 2.3 and later)
BWC({
required this.time,
required this.latitude,
required this.longitude,
required this.bearingTrue,
required this.bearingTrueType,
required this.bearingMagnetic,
required this.bearingMagneticType,
required this.distanceNauticalMiles,
required this.distanceNauticalMilesUnit,
required this.destinationWaypointID,
required this.ffaMode,
});
static BWC newBWC(BaseSentence s) {
var p = Parser(s);
var bwc = BWC(
time: p.time(0, "time"),
latitude: p.latLong(1, 2, "latitude"),
longitude: p.latLong(3, 4, "longitude"),
bearingTrue: p.float64(5, "true bearing"),
bearingTrueType: p.enumString(6, "true bearing type", [BearingTrue]),
bearingMagnetic: p.float64(7, "magnetic bearing"),
bearingMagneticType:
p.enumString(8, "magnetic bearing type", [BearingMagnetic]),
distanceNauticalMiles:
p.float64(9, "distance to waypoint is nautical miles"),
distanceNauticalMilesUnit: p.enumString(
10,
"is distance to waypoint nautical miles unit",
[DistanceUnitNauticalMile]),
destinationWaypointID: p.string(11, "destination waypoint ID"),
ffaMode: "");
if (s.fields.length > 12) {
bwc.ffaMode = p.string(12, "FFA mode");
}
return bwc;
}
}