@jbroll/nmea-simple
Version:
NMEA 0183 sentence parser and encoder
161 lines (160 loc) • 6.06 kB
JavaScript
"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
});
});
});