gnssview_old/plugins/gnss/lib/nmea/bec.dart

59 lines
2.0 KiB
Dart
Raw Normal View History

2024-07-31 19:04:11 +08:00
// ignore_for_file: constant_identifier_names
import 'parser.dart';
import 'sentence.dart';
import 'types.dart';
const TypeBEC = "BEC";
class BEC {
Time time; // UTC Time
double latitude; // latitude of waypoint
double longitude; // longitude of waypoint
double bearingTrue; // true bearing in degrees
bool bearingTrueValid; // is unit of true bearing valid
double bearingMagnetic; // magnetic bearing in degrees
bool bearingMagneticValid; // is unit of magnetic bearing valid
double distanceNauticalMiles; // distance to waypoint in nautical miles
bool
distanceNauticalMilesValid; // is unit of distance to waypoint nautical miles valid
String destinationWaypointID; // destination waypoint ID
BEC({
required this.time,
required this.latitude,
required this.longitude,
required this.bearingTrue,
required this.bearingTrueValid,
required this.bearingMagnetic,
required this.bearingMagneticValid,
required this.distanceNauticalMiles,
required this.distanceNauticalMilesValid,
required this.destinationWaypointID,
});
static BEC newBEC(BaseSentence s) {
var p = Parser(s);
return BEC(
time: p.time(0, "time"),
latitude: p.latLong(1, 2, "latitude"),
longitude: p.latLong(3, 4, "longitude"),
bearingTrue: p.float64(5, "true bearing"),
bearingTrueValid:
p.enumString(6, "true bearing unit valid", [BearingTrue]) ==
BearingTrue,
bearingMagnetic: p.float64(7, "magnetic bearing"),
bearingMagneticValid:
p.enumString(8, "magnetic bearing unit valid", [BearingMagnetic]) ==
BearingMagnetic,
distanceNauticalMiles:
p.float64(9, "distance to waypoint is nautical miles"),
distanceNauticalMilesValid: p.enumString(
10,
"is distance to waypoint nautical miles valid",
[DistanceUnitNauticalMile]) ==
DistanceUnitNauticalMile,
destinationWaypointID: p.string(11, "destination waypoint ID"),
);
}
}