UNPKG

extended-nmea

Version:

A TypeScript library for parsing NMEA0183-like sentences with support for custom and proprietary sentences.

68 lines 2.14 kB
"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