UNPKG

@jbroll/nmea-simple

Version:

NMEA 0183 sentence parser and encoder

61 lines (60 loc) 2.45 kB
"use strict"; /* * === GSA - Active satellites and dilution of precision === * * ------------------------------------------------------------------------------ * 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 * | | | | | | | | | | | | | | | | | | * $--GSA,a,x,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,xx,x.x,x.x,x.x*hh<CR><LF> * ------------------------------------------------------------------------------ * * Field Number: * * 1. Selection of 2D or 3D fix * A - Automatic * M - Manual, forced to operate in 2D or 3D * 2. 3D fix * 1 - no fix * 2 - 2D fix * 3 - 3D fix * 3. PRN of satellite used for fix (may be blank) * ... * 14. PRN of satellite used for fix (may be blank) * 15. Dilution of precision * 16. Horizontal dilution of precision * 17. Vertical dilution of precision * 18. System ID - uBlox extension * 18. Checksum */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var helpers_1 = require("../helpers"); var prn_utils_1 = require("../prn-utils"); var PacketStub_1 = require("./PacketStub"); exports.sentenceId = "GSA"; exports.sentenceName = "Active satellites and dilution of precision"; var ThreeDFixTypes = ["unknown", "none", "2D", "3D"]; function decodeSentence(stub, fields) { var sats = []; var systemId = fields.length > 18 ? helpers_1.parseIntSafe(fields[18]) : 0; for (var i = 3; i < 15; i++) { if (fields[i]) { var rawPrn = helpers_1.parseIntSafe(fields[i]); if (rawPrn > 0) { sats.push(prn_utils_1.adjustPRN(rawPrn, systemId)); } } } return __assign(__assign({}, PacketStub_1.initStubFields(stub, exports.sentenceId, exports.sentenceName)), { selectionMode: fields[1] === "A" ? "automatic" : "manual", fixMode: ThreeDFixTypes[helpers_1.parseIntSafe(fields[2])], satellites: sats, PDOP: helpers_1.parseFloatSafe(fields[15]), HDOP: helpers_1.parseFloatSafe(fields[16]), VDOP: helpers_1.parseFloatSafe(fields[17]) }); } exports.decodeSentence = decodeSentence;