ads-b
Version:
Library for decoding ADS-B messages emitted from Aircraft
48 lines (47 loc) • 1.91 kB
JavaScript
;
/**
* MIT License
* Copyright (c) 2019 Matt Laver
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/mattlaver/ads-b/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
var crc24_1 = require("./lib/crc24");
var MessageBuilder_1 = require("./messageDecoders/MessageBuilder");
var IMessage_1 = require("./messages/IMessage");
var ADSBVersion2Decoder = /** @class */ (function () {
function ADSBVersion2Decoder() {
this._messageBuilder = new MessageBuilder_1.MessageBuilder();
this.dataLinkFormat = function (byte) { return (byte >> 3) & 0x1f; };
this.capability = function (byte) { return byte & 0x7; };
}
ADSBVersion2Decoder.prototype.isValid = function (message) {
// check it looks like a ADS-B V2 message
return message.length === 28;
};
ADSBVersion2Decoder.prototype.decode = function (message) {
var firstByte = parseInt(message.substr(0, 2), 16);
var data = message.substr(8, 14);
var typeCode = (parseInt(data.substr(0, 2), 16) >> 3) & 0x1f;
if (crc24_1.crc(message.substr(0, 22)) !== message.substr(22, 6)) {
return {
messageType: IMessage_1.MessageType.ChecksumFailed,
raw: message,
};
}
var messageDecoded = this._messageBuilder.messageFromTypeCode(typeCode, data);
return {
ca: this.capability(firstByte),
data: messageDecoded.data,
df: this.dataLinkFormat(firstByte),
icao: message.substr(2, 6),
messageType: messageDecoded.messageType,
pi: message.substr(22, 6),
raw: message,
tc: typeCode,
};
};
return ADSBVersion2Decoder;
}());
exports.ADSBVersion2Decoder = ADSBVersion2Decoder;