UNPKG

@jbroll/nmea-simple

Version:

NMEA 0183 sentence parser and encoder

161 lines (160 loc) 6.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("should"); var helpers_1 = require("../helpers"); var index_1 = require("../index"); describe("GSV", function () { it("parses GPS satellites correctly", function () { var packet = index_1.parseNmeaSentence("$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74"); packet.should.have.property("sentenceId", "GSV"); packet.should.have.property("talkerId", "GP"); packet.should.have.property("numberOfMessages", 3); packet.should.have.property("messageNumber", 1); packet.should.have.property("satellitesInView", 11); packet.satellites.should.be.instanceof(Array).and.have.lengthOf(4); packet.satellites[0].should.deepEqual({ prnNumber: 3, elevationDegrees: 3, azimuthTrue: 111, SNRdB: 0 }); packet.satellites[1].should.deepEqual({ prnNumber: 4, elevationDegrees: 15, azimuthTrue: 270, SNRdB: 0 }); packet.satellites[2].should.deepEqual({ prnNumber: 6, elevationDegrees: 1, azimuthTrue: 10, SNRdB: 0 }); packet.satellites[3].should.deepEqual({ prnNumber: 13, elevationDegrees: 6, azimuthTrue: 292, SNRdB: 0 }); }); it("parses Galileo satellites correctly", function () { var sentence = helpers_1.appendChecksumFooter("$GAGSV,3,1,09,02,15,208,35,03,71,344,32,08,41,147,33,11,25,233,34"); var packet = index_1.parseNmeaSentence(sentence); packet.should.have.property("sentenceId", "GSV"); packet.should.have.property("talkerId", "GA"); packet.should.have.property("numberOfMessages", 3); packet.should.have.property("messageNumber", 1); packet.should.have.property("satellitesInView", 9); packet.satellites.should.be.instanceof(Array).and.have.lengthOf(4); packet.satellites[0].should.deepEqual({ prnNumber: 102, elevationDegrees: 15, azimuthTrue: 208, SNRdB: 35 }); packet.satellites[1].should.deepEqual({ prnNumber: 103, elevationDegrees: 71, azimuthTrue: 344, SNRdB: 32 }); packet.satellites[2].should.deepEqual({ prnNumber: 108, elevationDegrees: 41, azimuthTrue: 147, SNRdB: 33 }); packet.satellites[3].should.deepEqual({ prnNumber: 111, elevationDegrees: 25, azimuthTrue: 233, SNRdB: 34 }); }); it("parses GLONASS satellites correctly", function () { var sentence = helpers_1.appendChecksumFooter("$GLGSV,2,1,08,73,42,069,43,74,35,124,42,84,81,197,39,85,27,309,41"); var packet = index_1.parseNmeaSentence(sentence); packet.should.have.property("sentenceId", "GSV"); packet.should.have.property("talkerId", "GL"); packet.should.have.property("numberOfMessages", 2); packet.should.have.property("messageNumber", 1); packet.should.have.property("satellitesInView", 8); packet.satellites.should.be.instanceof(Array).and.have.lengthOf(4); packet.satellites[0].should.deepEqual({ prnNumber: 73, elevationDegrees: 42, azimuthTrue: 69, SNRdB: 43 }); packet.satellites[1].should.deepEqual({ prnNumber: 74, elevationDegrees: 35, azimuthTrue: 124, SNRdB: 42 }); packet.satellites[2].should.deepEqual({ prnNumber: 84, elevationDegrees: 81, azimuthTrue: 197, SNRdB: 39 }); packet.satellites[3].should.deepEqual({ prnNumber: 85, elevationDegrees: 27, azimuthTrue: 309, SNRdB: 41 }); }); it("parses BeiDou satellites correctly", function () { var sentence = helpers_1.appendChecksumFooter("$GBGSV,2,1,05,03,42,069,43,04,35,124,42,07,81,197,39,09,27,309,41"); var packet = index_1.parseNmeaSentence(sentence); packet.should.have.property("sentenceId", "GSV"); packet.should.have.property("talkerId", "GB"); packet.should.have.property("numberOfMessages", 2); packet.should.have.property("messageNumber", 1); packet.should.have.property("satellitesInView", 5); packet.satellites.should.be.instanceof(Array).and.have.lengthOf(4); packet.satellites[0].should.deepEqual({ prnNumber: 203, elevationDegrees: 42, azimuthTrue: 69, SNRdB: 43 }); packet.satellites[1].should.deepEqual({ prnNumber: 204, elevationDegrees: 35, azimuthTrue: 124, SNRdB: 42 }); packet.satellites[2].should.deepEqual({ prnNumber: 207, elevationDegrees: 81, azimuthTrue: 197, SNRdB: 39 }); packet.satellites[3].should.deepEqual({ prnNumber: 209, elevationDegrees: 27, azimuthTrue: 309, SNRdB: 41 }); }); // Added test for secondary GLONASS it("handles secondary GLONASS correctly", function () { var sentence = helpers_1.appendChecksumFooter("$GLGSV,1,1,04,88,45,123,41,89,67,321,42,,,,,,,,,6"); var packet = index_1.parseNmeaSentence(sentence); packet.satellites.should.be.instanceof(Array).and.have.lengthOf(2); packet.satellites[0].should.deepEqual({ prnNumber: 88, elevationDegrees: 45, azimuthTrue: 123, SNRdB: 41 }); packet.satellites[1].should.deepEqual({ prnNumber: 89, elevationDegrees: 67, azimuthTrue: 321, SNRdB: 42 }); }); });