@airframes/acars-decoder 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DecoderPlugin.d.ts +16 -0
- package/dist/DecoderPlugin.js +66 -0
- package/dist/DecoderPluginInterface.d.ts +7 -0
- package/dist/DecoderPluginInterface.js +3 -0
- package/dist/IcaoDecoder.d.ts +8 -0
- package/dist/IcaoDecoder.js +106 -0
- package/dist/MessageDecoder.d.ts +12 -0
- package/dist/MessageDecoder.js +97 -0
- package/dist/bin/acars-decoder-test.d.ts +2 -0
- package/dist/bin/acars-decoder-test.js +38 -0
- package/dist/bin/acars-decoder.d.ts +2 -0
- package/dist/bin/acars-decoder.js +20 -0
- package/dist/plugins/Label_15.d.ts +11 -0
- package/dist/plugins/Label_15.js +42 -0
- package/dist/plugins/Label_20_CFB.01.d.ts +11 -0
- package/dist/plugins/Label_20_CFB.01.js +71 -0
- package/dist/plugins/Label_20_POS.d.ts +11 -0
- package/dist/plugins/Label_20_POS.js +64 -0
- package/dist/plugins/Label_44_ETA.d.ts +11 -0
- package/dist/plugins/Label_44_ETA.js +71 -0
- package/dist/plugins/Label_44_IN.d.ts +11 -0
- package/dist/plugins/Label_44_IN.js +71 -0
- package/dist/plugins/Label_44_OFF.d.ts +11 -0
- package/dist/plugins/Label_44_OFF.js +76 -0
- package/dist/plugins/Label_44_ON.d.ts +11 -0
- package/dist/plugins/Label_44_ON.js +71 -0
- package/dist/plugins/Label_44_POS.d.ts +11 -0
- package/dist/plugins/Label_44_POS.js +83 -0
- package/dist/plugins/Label_5Z.d.ts +11 -0
- package/dist/plugins/Label_5Z.js +122 -0
- package/dist/plugins/Label_80.d.ts +12 -0
- package/dist/plugins/Label_80.js +205 -0
- package/dist/plugins/Label_8E.d.ts +10 -0
- package/dist/plugins/Label_8E.js +57 -0
- package/dist/plugins/Label_B6.d.ts +11 -0
- package/dist/plugins/Label_B6.js +28 -0
- package/dist/plugins/Label_ColonComma.d.ts +10 -0
- package/dist/plugins/Label_ColonComma.js +30 -0
- package/dist/plugins/Label_H1.d.ts +9 -0
- package/dist/plugins/Label_H1.js +17 -0
- package/dist/plugins/Label_H1_M1BPOS.d.ts +11 -0
- package/dist/plugins/Label_H1_M1BPOS.js +56 -0
- package/dist/plugins/Label_H1_M1BPRG.d.ts +11 -0
- package/dist/plugins/Label_H1_M1BPRG.js +38 -0
- package/dist/plugins/Label_QP.d.ts +10 -0
- package/dist/plugins/Label_QP.js +51 -0
- package/dist/plugins/Label_QQ.d.ts +10 -0
- package/dist/plugins/Label_QQ.js +51 -0
- package/dist/plugins/Label_QR.d.ts +10 -0
- package/dist/plugins/Label_QR.js +51 -0
- package/dist/plugins/Label_QS.d.ts +10 -0
- package/dist/plugins/Label_QS.js +51 -0
- package/dist/plugins/Label_SQ.d.ts +10 -0
- package/dist/plugins/Label_SQ.js +106 -0
- package/dist/plugins/official.d.ts +19 -0
- package/dist/plugins/official.js +24 -0
- package/package.json +3 -3
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
4
|
+
class Label_QR extends DecoderPlugin_1.DecoderPlugin {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = 'label-qr';
|
|
8
|
+
}
|
|
9
|
+
qualifiers() {
|
|
10
|
+
return {
|
|
11
|
+
labels: ['QR'],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
decode(message, options = {}) {
|
|
15
|
+
const decodeResult = this.defaultResult;
|
|
16
|
+
decodeResult.decoder.name = this.name;
|
|
17
|
+
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
18
|
+
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
19
|
+
decodeResult.raw.wheels_on = message.text.substring(8, 12);
|
|
20
|
+
decodeResult.remaining.text = message.text.substring(12);
|
|
21
|
+
decodeResult.formatted.description = 'ON Report';
|
|
22
|
+
decodeResult.formatted.items = [
|
|
23
|
+
{
|
|
24
|
+
type: 'origin',
|
|
25
|
+
code: 'ORG',
|
|
26
|
+
label: 'Origin',
|
|
27
|
+
value: decodeResult.raw.origin,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'destination',
|
|
31
|
+
code: 'DST',
|
|
32
|
+
label: 'Destination',
|
|
33
|
+
value: decodeResult.raw.destination,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: 'wheels_on',
|
|
37
|
+
code: 'WON',
|
|
38
|
+
label: 'Wheels ON',
|
|
39
|
+
value: decodeResult.raw.wheels_on,
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
decodeResult.decoded = true;
|
|
43
|
+
if (decodeResult.remaining.text === "")
|
|
44
|
+
decodeResult.decoder.decodeLevel = 'full';
|
|
45
|
+
else
|
|
46
|
+
decodeResult.decoder.decodeLevel = 'partial';
|
|
47
|
+
return decodeResult;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.Label_QR = Label_QR;
|
|
51
|
+
exports.default = {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
+
export declare class Label_QS extends DecoderPlugin {
|
|
3
|
+
name: string;
|
|
4
|
+
qualifiers(): {
|
|
5
|
+
labels: string[];
|
|
6
|
+
};
|
|
7
|
+
decode(message: any, options?: any): any;
|
|
8
|
+
}
|
|
9
|
+
declare const _default: {};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
4
|
+
class Label_QS extends DecoderPlugin_1.DecoderPlugin {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = 'label-qs';
|
|
8
|
+
}
|
|
9
|
+
qualifiers() {
|
|
10
|
+
return {
|
|
11
|
+
labels: ['QS'],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
decode(message, options = {}) {
|
|
15
|
+
const decodeResult = this.defaultResult;
|
|
16
|
+
decodeResult.decoder.name = this.name;
|
|
17
|
+
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
18
|
+
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
19
|
+
decodeResult.raw.gate_in = message.text.substring(8, 12);
|
|
20
|
+
decodeResult.remaining.text = message.text.substring(12);
|
|
21
|
+
decodeResult.formatted.description = 'IN Report';
|
|
22
|
+
decodeResult.formatted.items = [
|
|
23
|
+
{
|
|
24
|
+
type: 'origin',
|
|
25
|
+
code: 'ORG',
|
|
26
|
+
label: 'Origin',
|
|
27
|
+
value: decodeResult.raw.origin,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'destination',
|
|
31
|
+
code: 'DST',
|
|
32
|
+
label: 'Destination',
|
|
33
|
+
value: decodeResult.raw.destination,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: 'gate_in',
|
|
37
|
+
code: 'GIN',
|
|
38
|
+
label: 'Gate IN',
|
|
39
|
+
value: decodeResult.raw.gate_in,
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
decodeResult.decoded = true;
|
|
43
|
+
if (decodeResult.remaining.text === "")
|
|
44
|
+
decodeResult.decoder.decodeLevel = 'full';
|
|
45
|
+
else
|
|
46
|
+
decodeResult.decoder.decodeLevel = 'partial';
|
|
47
|
+
return decodeResult;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.Label_QS = Label_QS;
|
|
51
|
+
exports.default = {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
+
export declare class Label_SQ extends DecoderPlugin {
|
|
3
|
+
name: string;
|
|
4
|
+
qualifiers(): {
|
|
5
|
+
labels: string[];
|
|
6
|
+
};
|
|
7
|
+
decode(message: any, options?: any): any;
|
|
8
|
+
}
|
|
9
|
+
declare const _default: {};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
4
|
+
class Label_SQ extends DecoderPlugin_1.DecoderPlugin {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = 'label-sq';
|
|
8
|
+
}
|
|
9
|
+
qualifiers() {
|
|
10
|
+
return {
|
|
11
|
+
labels: ['SQ'],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
decode(message, options = {}) {
|
|
15
|
+
const decodeResult = this.defaultResult;
|
|
16
|
+
decodeResult.decoder.name = this.name;
|
|
17
|
+
decodeResult.raw.preamble = message.text.substring(0, 4);
|
|
18
|
+
decodeResult.raw.version = message.text.substring(1, 2);
|
|
19
|
+
decodeResult.raw.network = message.text.substring(3, 4);
|
|
20
|
+
if (decodeResult.raw.version === '2') {
|
|
21
|
+
const regex = /0(\d)X(?<org>\w)(?<iata>\w\w\w)(?<icao>\w\w\w\w)(?<station>\d)(?<lat>\d+)(?<latd>[NS])(?<lng>\d+)(?<lngd>[EW])V(?<vfreq>\d+)\/.*/;
|
|
22
|
+
const result = message.text.match(regex);
|
|
23
|
+
if (result && result.length >= 8) {
|
|
24
|
+
decodeResult.raw.groundStation = {
|
|
25
|
+
number: result.groups.station,
|
|
26
|
+
iataCode: result.groups.iata,
|
|
27
|
+
icaoCode: result.groups.icao,
|
|
28
|
+
coordinates: {
|
|
29
|
+
latitude: (Number(result.groups.lat) / 100) * (result.groups.latd === 'S' ? -1 : 1),
|
|
30
|
+
longitude: (Number(result.groups.lng) / 100) * (result.groups.lngd === 'W' ? -1 : 1)
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
decodeResult.raw.vdlFrequency = result.groups.vfreq / 1000.0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
decodeResult.formatted.description = 'Ground Station Squitter';
|
|
37
|
+
var formattedNetwork = 'Unknown';
|
|
38
|
+
if (decodeResult.raw.network == 'A') {
|
|
39
|
+
formattedNetwork = 'ARINC';
|
|
40
|
+
}
|
|
41
|
+
else if (decodeResult.raw.network == 'S') {
|
|
42
|
+
formattedNetwork = 'SITA';
|
|
43
|
+
}
|
|
44
|
+
decodeResult.formatted.items = [
|
|
45
|
+
{
|
|
46
|
+
type: 'network',
|
|
47
|
+
label: 'Network',
|
|
48
|
+
value: formattedNetwork,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: 'version',
|
|
52
|
+
label: 'Version',
|
|
53
|
+
value: decodeResult.raw.version,
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
if (decodeResult.raw.groundStation) {
|
|
57
|
+
if (decodeResult.raw.groundStation.icaoCode && decodeResult.raw.groundStation.number) {
|
|
58
|
+
decodeResult.formatted.items.push({
|
|
59
|
+
type: 'ground_station',
|
|
60
|
+
label: 'Ground Station',
|
|
61
|
+
value: `${decodeResult.raw.groundStation.icaoCode}${decodeResult.raw.groundStation.number}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (decodeResult.raw.groundStation.iataCode) {
|
|
65
|
+
decodeResult.formatted.items.push({
|
|
66
|
+
type: 'iataCode',
|
|
67
|
+
label: 'IATA',
|
|
68
|
+
value: decodeResult.raw.groundStation.iataCode,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (decodeResult.raw.groundStation.icaoCode) {
|
|
72
|
+
decodeResult.formatted.items.push({
|
|
73
|
+
type: 'icaoCode',
|
|
74
|
+
label: 'ICAO',
|
|
75
|
+
value: decodeResult.raw.groundStation.icaoCode,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (decodeResult.raw.groundStation.coordinates.latitude) {
|
|
79
|
+
decodeResult.formatted.items.push({
|
|
80
|
+
type: 'coordinates',
|
|
81
|
+
label: 'Ground Station Location',
|
|
82
|
+
value: `${decodeResult.raw.groundStation.coordinates.latitude}, ${decodeResult.raw.groundStation.coordinates.longitude}`,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (decodeResult.raw.groundStation.airport) {
|
|
86
|
+
decodeResult.formatted.items.push({
|
|
87
|
+
type: 'airport',
|
|
88
|
+
label: 'Airport',
|
|
89
|
+
value: `${decodeResult.raw.groundStation.airport.name} (${decodeResult.raw.groundStation.airport.icao}) in ${decodeResult.raw.groundStation.airport.location}`,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (decodeResult.raw.vdlFrequency) {
|
|
94
|
+
decodeResult.formatted.items.push({
|
|
95
|
+
type: 'vdlFrequency',
|
|
96
|
+
label: 'VDL Frequency',
|
|
97
|
+
value: `${decodeResult.raw.vdlFrequency} MHz`
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
decodeResult.decoded = true;
|
|
101
|
+
decodeResult.decoder.decodeLevel = 'full';
|
|
102
|
+
return decodeResult;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.Label_SQ = Label_SQ;
|
|
106
|
+
exports.default = {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './Label_5Z';
|
|
2
|
+
export * from './Label_15';
|
|
3
|
+
export * from './Label_20_POS';
|
|
4
|
+
export * from './Label_44_ETA';
|
|
5
|
+
export * from './Label_44_IN';
|
|
6
|
+
export * from './Label_44_OFF';
|
|
7
|
+
export * from './Label_44_ON';
|
|
8
|
+
export * from './Label_44_POS';
|
|
9
|
+
export * from './Label_80';
|
|
10
|
+
export * from './Label_8E';
|
|
11
|
+
export * from './Label_B6';
|
|
12
|
+
export * from './Label_ColonComma';
|
|
13
|
+
export * from './Label_H1_M1BPOS';
|
|
14
|
+
export * from './Label_H1_M1BPRG';
|
|
15
|
+
export * from './Label_SQ';
|
|
16
|
+
export * from './Label_QR';
|
|
17
|
+
export * from './Label_QP';
|
|
18
|
+
export * from './Label_QS';
|
|
19
|
+
export * from './Label_QQ';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function __export(m) {
|
|
3
|
+
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
|
4
|
+
}
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
__export(require("./Label_5Z"));
|
|
7
|
+
__export(require("./Label_15"));
|
|
8
|
+
__export(require("./Label_20_POS"));
|
|
9
|
+
__export(require("./Label_44_ETA"));
|
|
10
|
+
__export(require("./Label_44_IN"));
|
|
11
|
+
__export(require("./Label_44_OFF"));
|
|
12
|
+
__export(require("./Label_44_ON"));
|
|
13
|
+
__export(require("./Label_44_POS"));
|
|
14
|
+
__export(require("./Label_80"));
|
|
15
|
+
__export(require("./Label_8E"));
|
|
16
|
+
__export(require("./Label_B6"));
|
|
17
|
+
__export(require("./Label_ColonComma"));
|
|
18
|
+
__export(require("./Label_H1_M1BPOS"));
|
|
19
|
+
__export(require("./Label_H1_M1BPRG"));
|
|
20
|
+
__export(require("./Label_SQ"));
|
|
21
|
+
__export(require("./Label_QR"));
|
|
22
|
+
__export(require("./Label_QP"));
|
|
23
|
+
__export(require("./Label_QS"));
|
|
24
|
+
__export(require("./Label_QQ"));
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@airframes/acars-decoder",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "ACARS Message Decoder for TypeScript/JavaScript",
|
|
5
|
-
"main": "
|
|
6
|
-
"types": "
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
8
|
"acars-decoder": "./dist/bin/acars-decoder.js",
|
|
9
9
|
"acars-decoder-test": "./dist/bin/acars-decoder-test.js"
|