node-nmea/codecs/ZDA.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-10-16 12:09:14 +08:00
var helpers = require("../helpers.js")
/*
ZDA Time & Date UTC, Day, Month, Year and Local Time Zone
1 2 3 4 5 6 7
| | | | | | |
$--ZDA,hhmmss.ss,xx,xx,xxxx,xx,xx*hh
1) Local zone minutes description, same sign as local hours
2) Local zone description, 00 to +/- 13 hours
3) Year
4) Month, 01 to 12
5) Day, 01 to 31
6) Time (UTC)
7) Checksum
*/
exports.ID = 'ZDA';
exports.TYPE = 'time-zone';
exports.decode = function(fields) {
return {
sentence: exports.ID,
type: exports.TYPE,
timestamp: fields[1],
day: fields[2],
month: fields[3],
year: fields[4],
ltzh: fields[5],
ltzn: fields[6]
};
}
exports.encode = function (talker, msg) {
var result = ['$' + talker + exports.ID];
var { date } = msg
result.push(helpers.padLeft(date.getHours().toString(), 2, '0') + helpers.padLeft(date.getMinutes().toString(), 2, '0') + helpers.padLeft(date.getSeconds().toString(), 2, '0') + '.000');
result.push(helpers.padLeft(date.getDate().toString(), 2, '0'));
result.push(helpers.padLeft((date.getMonth() + 1).toString(), 2, '0'));
result.push(date.getFullYear().toString());
result.push('00');
result.push('00');
var resultMsg = result.join(',');
return resultMsg + helpers.computeChecksum(resultMsg);
}