UNPKG

ads-b

Version:

Library for decoding ADS-B messages emitted from Aircraft

48 lines (47 loc) 1.91 kB
"use strict"; /** * 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;