UNPKG

node-gps

Version:
499 lines (489 loc) 13 kB
function _(x) { return x < 10 ? "0" + x : x; } var today = new Date(); today = today.getUTCFullYear() + '-' + _(today.getUTCMonth() + 1) + '-' + _(today.getUTCDate()); var expect = require('chai').expect; var GPS = require('../gps.js'); var gps = new GPS; var tests = { 'foo': 'invalid', '$GPGSA,A,3,29,26,31,21,,,,,,,,,2.0,1.7,1.0*39': { 'fix': '3D', 'hdop': 1.7, 'mode': 'automatic', 'pdop': 2, 'raw': '$GPGSA,A,3,29,26,31,21,,,,,,,,,2.0,1.7,1.0*39', 'satellites': [ 29, 26, 31, 21 ], 'type': 'GSA', 'valid': true, 'vdop': 1 }, '$GPRMC,234919.000,A,4832.3914,N,00903.5500,E,2.28,2.93,260116,,*0D': { 'lat': 48.539856666666665, 'lon': 9.059166666666666, 'speed': 4.22256, 'status': 'active', 'time': new Date('2016-01-26T23:49:19.000Z'), 'track': 2.93, 'raw': '$GPRMC,234919.000,A,4832.3914,N,00903.5500,E,2.28,2.93,260116,,*0D', 'type': 'RMC', 'faa': null, 'valid': true, 'variation': null }, '$GPVTG,2.93,T,,M,2.28,N,4.2,K*66': { 'speed': 4.22256, 'track': 2.93, 'raw': '$GPVTG,2.93,T,,M,2.28,N,4.2,K*66', 'type': 'VTG', 'faa': null, 'valid': true }, '$GPGGA,234920.000,4832.3918,N,00903.5488,E,1,05,1.7,437.9,M,48.0,M,,0000*51': { 'age': null, 'alt': 437.9, 'geoidal': 48, 'hdop': 1.7, 'lat': 48.53986333333334, 'lon': 9.059146666666667, 'quality': 'fix', 'raw': '$GPGGA,234920.000,4832.3918,N,00903.5488,E,1,05,1.7,437.9,M,48.0,M,,0000*51', 'satelites': 5, 'stationID': 0, 'time': new Date(today + 'T23:49:20.000Z'), 'type': 'GGA', 'valid': true }, '$GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42': { 'age': NaN, 'alt': 545.4, 'geoidal': 46.9, 'hdop': 0.9, 'lat': 48.1173, 'raw': '$GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M, , *42', 'lon': 11.522066666666667, 'quality': 'fix', 'satelites': 8, 'stationID': NaN, 'time': new Date(today + 'T12:35:19.000Z'), 'type': 'GGA', 'valid': true }, '$GPGGA,123519,4807.038,N,01131.324,E,1,08,0.9,545.4,M,46.9,M,,': 'invalid', '$GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62': { 'lat': -37.86083333333333, 'lon': 145.12266666666667, 'speed': 0, 'status': 'active', 'raw': '$GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62', 'time': new Date('2098-09-13T08:18:36.000Z'), 'track': 360, 'type': 'RMC', 'faa': null, 'valid': true, 'variation': 11.3 }, '$GPGSV,3,2,12,16,17,148,46,20,61,307,51,23,36,283,47,25,06,034,00*78': { 'msgNumber': 2, 'raw': '$GPGSV,3,2,12,16,17,148,46,20,61,307,51,23,36,283,47,25,06,034,00*78', 'msgsTotal': 3, 'satellites': [ { 'azimuth': 148, 'elevation': 17, 'prn': 16, 'snr': 46, 'status': 'tracking' }, { 'azimuth': 307, 'elevation': 61, 'prn': 20, 'snr': 51, 'status': 'tracking' }, { 'azimuth': 283, 'elevation': 36, 'prn': 23, 'snr': 47, 'status': 'tracking' }, { 'azimuth': 34, 'elevation': 6, 'prn': 25, 'snr': 0, 'status': 'tracking' } ], 'type': 'GSV', 'valid': true }, '$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76': { 'age': null, 'alt': 61.7, 'geoidal': 55.2, 'hdop': 1.03, 'lat': 53.361336666666666, 'lon': -6.50562, 'quality': 'fix', 'raw': '$GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76', 'satelites': 8, 'stationID': null, 'time': new Date(today + 'T09:27:50.000Z'), 'type': 'GGA', 'valid': true }, '$GPZDA,201530.00,04,07,2002,00,00*60': { 'raw': '$GPZDA,201530.00,04,07,2002,00,00*60', 'time': new Date('2002-07-04T20:15:30.000Z'), 'type': 'ZDA', 'valid': true }, '$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A': { 'fix': '3D', 'hdop': 1.03, 'mode': 'automatic', 'pdop': 1.72, 'raw': '$GPGSA,A,3,10,07,05,02,29,04,08,13,,,,,1.72,1.03,1.38*0A', 'satellites': [ 10, 7, 5, 2, 29, 4, 8, 13 ], 'type': 'GSA', 'valid': true, 'vdop': 1.38 }, '$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70': { 'msgNumber': 1, 'msgsTotal': 3, 'raw': '$GPGSV,3,1,11,10,63,137,17,07,61,098,15,05,59,290,20,08,54,157,30*70', 'satellites': [ { 'azimuth': 137, 'elevation': 63, 'prn': 10, 'snr': 17, 'status': 'tracking' }, { 'azimuth': 98, 'elevation': 61, 'prn': 7, 'snr': 15, 'status': 'tracking' }, { 'azimuth': 290, 'elevation': 59, 'prn': 5, 'snr': 20, 'status': 'tracking' }, { 'azimuth': 157, 'elevation': 54, 'prn': 8, 'snr': 30, 'status': 'tracking' } ], 'type': 'GSV', 'valid': true }, '$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A': { 'faa': null, 'lat': 48.1173, 'lon': 11.516666666666667, 'raw': '$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A', 'speed': 41.4848, 'status': 'active', 'time': new Date('2094-03-23T12:35:19.000Z'), 'track': 84.4, 'type': 'RMC', 'valid': true, 'variation': -3.1 }, //'$GPVTG,210.43,T,210.43,M,5.65,N,,,A*67': {}, '$GPGGA,123519,4807.04,N,1131.00,E,1,8,0.9,545.9,M,46.9,M,,*45': { 'age': null, 'alt': 545.9, 'geoidal': 46.9, 'hdop': 0.9, 'lat': 48.117333333333335, 'lon': 113.01666666666667, 'quality': 'fix', 'raw': '$GPGGA,123519,4807.04,N,1131.00,E,1,8,0.9,545.9,M,46.9,M,,*45', 'satelites': 8, 'stationID': null, 'time': new Date(today + 'T12:35:19.000Z'), 'type': 'GGA', 'valid': true }, '$GPGSA,A,3,12,05,25,29,,,,,,,,,9.4,7.6,5.6*37': { 'fix': '3D', 'hdop': 7.6, 'mode': 'automatic', 'pdop': 9.4, 'raw': '$GPGSA,A,3,12,05,25,29,,,,,,,,,9.4,7.6,5.6*37', 'satellites': [ 12, 5, 25, 29 ], 'type': 'GSA', 'valid': true, 'vdop': 5.6 }, '$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74': { 'msgNumber': 1, 'msgsTotal': 3, 'raw': '$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74', 'satellites': [ { 'azimuth': 111, 'elevation': 3, 'prn': 3, 'snr': 0, 'status': 'tracking' }, { 'azimuth': 270, 'elevation': 15, 'prn': 4, 'snr': 0, 'status': 'tracking' }, { 'azimuth': 10, 'elevation': 1, 'prn': 6, 'snr': 0, 'status': 'tracking' }, { 'azimuth': 292, 'elevation': 6, 'prn': 13, 'snr': 0, 'status': 'tracking' } ], 'type': 'GSV', 'valid': true }, '$GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*2D': { 'msgNumber': 2, 'msgsTotal': 3, 'raw': '$GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*2D', 'satellites': [ { 'azimuth': 170, 'elevation': 25, 'prn': 14, 'snr': 0, 'status': 'tracking' }, { 'azimuth': 208, 'elevation': 57, 'prn': 16, 'snr': 39, 'status': 'tracking' }, { 'azimuth': 296, 'elevation': 67, 'prn': 18, 'snr': 40, 'status': 'tracking' }, { 'azimuth': 246, 'elevation': 40, 'prn': 19, 'snr': 0, 'status': 'tracking' } ], 'type': 'GSV', 'valid': false }, '$GPGSV,3,2,11,02,39,223,16,13,28,070,17,26,23,252,,04,14,186,15*77': { 'msgNumber': 2, 'msgsTotal': 3, 'raw': '$GPGSV,3,2,11,02,39,223,16,13,28,070,17,26,23,252,,04,14,186,15*77', 'satellites': [ { 'azimuth': 223, 'elevation': 39, 'prn': 2, 'snr': 16, 'status': 'tracking' }, { 'azimuth': 70, 'elevation': 28, 'prn': 13, 'snr': 17, 'status': 'tracking' }, { 'azimuth': 252, 'elevation': 23, 'prn': 26, 'snr': null, 'status': 'in view' }, { 'azimuth': 186, 'elevation': 14, 'prn': 4, 'snr': 15, 'status': 'tracking' } ], 'type': 'GSV', 'valid': true }, '$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76': { 'msgNumber': 3, 'msgsTotal': 3, 'raw': '$GPGSV,3,3,11,29,09,301,24,16,09,020,,36,,,*76', 'satellites': [ { 'azimuth': 301, 'elevation': 9, 'prn': 29, 'snr': 24, 'status': 'tracking' }, { 'azimuth': 20, 'elevation': 9, 'prn': 16, 'snr': null, 'status': 'in view' }, { 'azimuth': null, 'elevation': null, 'prn': 36, 'snr': null, 'status': 'in view' } ], 'type': 'GSV', 'valid': true }, '$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43': { 'faa': 'autonomous', 'lat': 53.361336666666666, 'lon': -6.50562, 'raw': '$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43', 'speed': 0.037040000000000003, 'status': 'active', 'time': new Date('2011-05-28T09:27:50.000Z'), 'track': 31.66, 'type': 'RMC', 'valid': true, 'variation': null }, '$GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75': { 'age': null, 'alt': 61.7, 'geoidal': 55.3, 'hdop': 1.03, 'lat': 53.361336666666666, 'lon': -6.5056183333333335, 'quality': 'fix', 'raw': '$GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75', 'satelites': 8, 'stationID': null, 'time': new Date(today + 'T09:27:51.000Z'), 'type': 'GGA', 'valid': true }, '$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45': { 'faa': 'autonomous', 'lat': 53.361336666666666, 'lon': -6.5056183333333335, 'raw': '$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45', 'speed': 0.11112, 'status': 'active', 'time': new Date('2011-05-28T09:27:51.000Z'), 'track': 31.66, 'type': 'RMC', 'valid': true, 'variation': null }, '$GPGLL,6005.068,N,02332.341,E,095601,A,D*42': { 'lat': 60.084466666666664, 'lon': 23.539016666666665, 'raw': '$GPGLL,6005.068,N,02332.341,E,095601,A,D*42', 'status': 'active', 'time': new Date(today + 'T09:56:01.000Z'), 'type': 'GLL', 'valid': true }, '$GPGLL,4916.45,N,12311.12,W,225444,A,*1D': { 'lat': 49.274166666666666, 'lon': -123.18533333333333, 'raw': '$GPGLL,4916.45,N,12311.12,W,225444,A,*1D', 'status': 'active', 'time': new Date(today + 'T22:54:44.000Z'), 'type': 'GLL', 'valid': true }, '$GPGGA,174815.40,4141.46474,N,00849.77225,W,1,08,1.24,11.8,M,50.5,M,,*76': { 'age': null, 'alt': 11.8, 'geoidal': 50.5, 'hdop': 1.24, 'quality': 'fix', 'satelites': 8, 'stationID': null, 'lat': 41.691079, 'lon': -8.8295375, 'time': new Date(today+'T17:48:15.400Z'), 'raw': '$GPGGA,174815.40,4141.46474,N,00849.77225,W,1,08,1.24,11.8,M,50.5,M,,*76', 'type': 'GGA', 'valid': true, } }; var collect = {}; gps.on('data', function(data) { collect[data.raw] = data; }); for (var i in tests) { if (!gps.update(i)) { collect[i] = 'invalid'; } } describe('NMEA syntax', function() { for (var i in collect) { (function(i) { it('Should pass ' + i, function() { expect(collect[i]).to.deep.equal(tests[i]); }); })(i); } }); /* $IIDBT,036.41,f,011.10,M,005.99,F*25 $IIMWV,017,R,02.91,N,A*2F $XXMWV,017.00,R,2.91,N,A*31 $IIVTG,210.43,T,210.43,M,5.65,N,,,A*67 $XXVTG,210.43,T,209.43,M,2.91,N,,,A*63 $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 '$GPGSA,A,1,,,,,,,,,,,,,,,*1E', '$GPGSV,3,1,12,29,75,266,39,05,48,047,,26,43,108,,15,35,157,*78', '$GPGSV,3,2,12,21,30,292,,18,21,234,,02,18,093,,25,13,215,*7F', '$GPGSV,3,3,12,30,11,308,,16,,333,,12,,191,,07,-4,033,*62', '$GPRMC,085542.023,V,,,,,,,041211,,,N*45', '$GPGGA,085543.023,,,,,0,00,,,M,0.0,M,,0000*58', '$IIBWC,160947,6008.160,N,02454.290,E,162.4,T,154.3,M,001.050,N,DEST*1C', '$IIAPB,A,A,0.001,L,N,V,V,154.3,M,DEST,154.3,M,154.2,M*19' $GPGGA,100313.99,3344.459045,N,09639.616711,W,1,05,0.0,220.9,M,0.0,M,0.0,0000*66 $GPGGA,092750.000,5321.6802,N,00630.3372,W,1,8,1.03,61.7,M,55.2,M,,*76 $GPGGA,181650.692,7204.589,N,01915.106,W,0,00,,,M,,M,,*59 $GPGGA,092751.000,5321.6802,N,00630.3371,W,1,8,1.03,61.7,M,55.3,M,,*75 $GPGGA,181514.692,4951.923,S,03050.357,W,0,00,,,M,,M,,*4F */