extended-nmea
Version:
A TypeScript library for parsing NMEA0183-like sentences with support for custom and proprietary sentences.
68 lines • 2.14 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RMC = void 0;
const TalkerSentence_1 = require("../../types/sentences/TalkerSentence");
const helpers_1 = require("../../helpers");
var parseTime = helpers_1.Helpers.parseTime;
var parseDate = helpers_1.Helpers.parseDate;
var parseGeoCoordinate = helpers_1.Helpers.parseGeoCoordinate;
class RMC extends TalkerSentence_1.TalkerSentence {
constructor(data) {
super(data);
}
get time() {
return parseTime(this.dataFields[0]);
}
get status() {
return this.dataFields[1];
}
get latitude() {
return parseGeoCoordinate(this.dataFields[2], this.dataFields[3]);
}
get longitude() {
return parseGeoCoordinate(this.dataFields[4], this.dataFields[5]);
}
get speedOverGround() {
return parseFloat(this.dataFields[6]);
}
get courseOverGround() {
return parseFloat(this.dataFields[7]);
}
get date() {
return parseDate(this.dataFields[8]);
}
get magneticVariation() {
const degrees = parseFloat(this.dataFields[9]);
const east = this.dataFields[10] === 'E';
return (east ? -1 : 1) * degrees;
}
get posMode() {
if (this.dataFields.length <= 11) {
return null;
}
return this.dataFields[11];
}
get navStatus() {
if (this.dataFields.length <= 12) {
return null;
}
return this.dataFields[12];
}
get valid() {
const fieldCount = this.dataFields.length;
// NMEA 2.3 and later add a navStatus field
return super.valid && (fieldCount >= 11 && fieldCount <= 13);
}
get invalidReason() {
if (!super.valid) {
return super.invalidReason;
}
if (this.dataFields.length < 11 || this.dataFields.length > 13) {
return `Expected between 11 and 13 fields, got ${this.dataFields.length}`;
}
return null;
}
}
exports.RMC = RMC;
RMC.ID = "RMC";
//# sourceMappingURL=RMC.js.map