UNPKG

@jbroll/nmea-simple

Version:

NMEA 0183 sentence parser and encoder

55 lines (54 loc) 2.14 kB
"use strict"; /* * === DTM - Datum reference === * * ------------------------------------------------------------------------------ * 1 2 3 4 5 6 7 8 9 * | | | | | | | | | * $ --DTM,ref,x,llll,c,llll,c,aaa,ref*hh<CR><LF> * ------------------------------------------------------------------------------ * * Field Number: * 1. Local datum code. * W84 - WGS84 * W72 - WGS72 * S85 - SGS85 * P90 - PE90 * 999 - User defined IHO datum code * 2. Local datum subcode. May be blank. * 3. Latitude offset (minutes) * 4. N or S * 5. Longitude offset (minutes) * 6. E or W * 7. Altitude offset in meters * 8. Datum name. What’s usually seen here is "W84", the standard WGS84 datum used by GPS. * 9. 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 PacketStub_1 = require("./PacketStub"); exports.sentenceId = "DTM"; exports.sentenceName = "Datum reference"; function decodeSentence(stub, fields) { return __assign(__assign({}, PacketStub_1.initStubFields(stub, exports.sentenceId, exports.sentenceName)), { datumCode: parseDatumCode(fields[1]), datumSubcode: fields[2] || undefined, offsetLatitude: helpers_1.parseLatitude(fields[3], fields[4]), offsetLongitude: helpers_1.parseLongitude(fields[5], fields[6]), offsetAltitudeMeters: helpers_1.parseFloatSafe(fields[7]), datumName: parseDatumCode(fields[8]) }); } exports.decodeSentence = decodeSentence; function parseDatumCode(field) { return field === "W84" ? "W84" : field === "W72" ? "W72" : field === "S85" ? "S85" : field === "P90" ? "P90" : field === "999" ? "999" : ""; }