@airframes/acars-decoder 1.4.6 → 1.6.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/.github/FUNDING.yml +1 -1
- package/.github/workflows/yarn-test.yml +11 -4
- package/README.md +32 -0
- package/index.d.ts +17 -0
- package/index.ts +2 -0
- package/package.json +5 -13
- package/tsconfig.json +2 -2
- package/yarn-error.log +3354 -0
- package/coverage/clover.xml +0 -1799
- package/coverage/coverage-final.json +0 -24
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -2278
- package/dist/DateTimeUtils.d.ts +0 -8
- package/dist/DateTimeUtils.js +0 -27
- package/dist/DecoderPlugin.d.ts +0 -18
- package/dist/DecoderPlugin.js +0 -71
- package/dist/DecoderPluginInterface.d.ts +0 -7
- package/dist/DecoderPluginInterface.js +0 -3
- package/dist/IcaoDecoder.d.ts +0 -10
- package/dist/IcaoDecoder.js +0 -111
- package/dist/MessageDecoder.d.ts +0 -14
- package/dist/MessageDecoder.js +0 -129
- package/dist/bin/acars-decoder-test.d.ts +0 -2
- package/dist/bin/acars-decoder-test.js +0 -53
- package/dist/bin/acars-decoder.d.ts +0 -2
- package/dist/bin/acars-decoder.js +0 -20
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -20
- package/dist/plugins/Label_15.d.ts +0 -11
- package/dist/plugins/Label_15.js +0 -40
- package/dist/plugins/Label_16_N_Space.d.ts +0 -11
- package/dist/plugins/Label_16_N_Space.js +0 -80
- package/dist/plugins/Label_16_N_Space.test.d.ts +0 -1
- package/dist/plugins/Label_16_N_Space.test.js +0 -84
- package/dist/plugins/Label_1M_Slash.d.ts +0 -11
- package/dist/plugins/Label_1M_Slash.js +0 -61
- package/dist/plugins/Label_1M_Slash.test.d.ts +0 -1
- package/dist/plugins/Label_1M_Slash.test.js +0 -43
- package/dist/plugins/Label_20_CFB.01.d.ts +0 -11
- package/dist/plugins/Label_20_CFB.01.js +0 -69
- package/dist/plugins/Label_20_POS.d.ts +0 -11
- package/dist/plugins/Label_20_POS.js +0 -62
- package/dist/plugins/Label_30_Slash_EA.d.ts +0 -11
- package/dist/plugins/Label_30_Slash_EA.js +0 -54
- package/dist/plugins/Label_30_Slash_EA.test.d.ts +0 -1
- package/dist/plugins/Label_30_Slash_EA.test.js +0 -35
- package/dist/plugins/Label_44_ETA.d.ts +0 -11
- package/dist/plugins/Label_44_ETA.js +0 -69
- package/dist/plugins/Label_44_IN.d.ts +0 -11
- package/dist/plugins/Label_44_IN.js +0 -69
- package/dist/plugins/Label_44_OFF.d.ts +0 -11
- package/dist/plugins/Label_44_OFF.js +0 -74
- package/dist/plugins/Label_44_ON.d.ts +0 -11
- package/dist/plugins/Label_44_ON.js +0 -69
- package/dist/plugins/Label_44_POS.d.ts +0 -11
- package/dist/plugins/Label_44_POS.js +0 -81
- package/dist/plugins/Label_5Z.d.ts +0 -11
- package/dist/plugins/Label_5Z.js +0 -120
- package/dist/plugins/Label_80.d.ts +0 -12
- package/dist/plugins/Label_80.js +0 -203
- package/dist/plugins/Label_8E.d.ts +0 -10
- package/dist/plugins/Label_8E.js +0 -48
- package/dist/plugins/Label_8E.test.d.ts +0 -1
- package/dist/plugins/Label_8E.test.js +0 -32
- package/dist/plugins/Label_B6.d.ts +0 -11
- package/dist/plugins/Label_B6.js +0 -26
- package/dist/plugins/Label_ColonComma.d.ts +0 -10
- package/dist/plugins/Label_ColonComma.js +0 -28
- package/dist/plugins/Label_H1.d.ts +0 -9
- package/dist/plugins/Label_H1.js +0 -18
- package/dist/plugins/Label_H1_M1BPOS.d.ts +0 -11
- package/dist/plugins/Label_H1_M1BPOS.js +0 -54
- package/dist/plugins/Label_H1_M1BPRG.d.ts +0 -11
- package/dist/plugins/Label_H1_M1BPRG.js +0 -36
- package/dist/plugins/Label_QP.d.ts +0 -10
- package/dist/plugins/Label_QP.js +0 -49
- package/dist/plugins/Label_QQ.d.ts +0 -10
- package/dist/plugins/Label_QQ.js +0 -49
- package/dist/plugins/Label_QR.d.ts +0 -10
- package/dist/plugins/Label_QR.js +0 -49
- package/dist/plugins/Label_QS.d.ts +0 -10
- package/dist/plugins/Label_QS.js +0 -49
- package/dist/plugins/Label_SQ.d.ts +0 -10
- package/dist/plugins/Label_SQ.js +0 -104
- package/dist/plugins/official.d.ts +0 -22
- package/dist/plugins/official.js +0 -38
- package/src/DateTimeUtils.ts +0 -26
- package/src/DecoderPlugin.ts +0 -83
- package/src/DecoderPluginInterface.ts +0 -9
- package/src/IcaoDecoder.ts +0 -137
- package/src/MessageDecoder.ts +0 -117
- package/src/bin/acars-decoder-test.ts +0 -67
- package/src/bin/acars-decoder.ts +0 -23
- package/src/index.d.ts +0 -15
- package/src/index.ts +0 -4
- package/src/plugins/Label_15.ts +0 -45
- package/src/plugins/Label_16_N_Space.test.ts +0 -94
- package/src/plugins/Label_16_N_Space.ts +0 -91
- package/src/plugins/Label_1M_Slash.test.ts +0 -45
- package/src/plugins/Label_1M_Slash.ts +0 -69
- package/src/plugins/Label_20_CFB.01.ts +0 -81
- package/src/plugins/Label_20_POS.ts +0 -68
- package/src/plugins/Label_30_Slash_EA.test.ts +0 -37
- package/src/plugins/Label_30_Slash_EA.ts +0 -60
- package/src/plugins/Label_44_ETA.ts +0 -81
- package/src/plugins/Label_44_IN.ts +0 -81
- package/src/plugins/Label_44_OFF.ts +0 -88
- package/src/plugins/Label_44_ON.ts +0 -81
- package/src/plugins/Label_44_POS.ts +0 -96
- package/src/plugins/Label_5Z.ts +0 -125
- package/src/plugins/Label_80.ts +0 -215
- package/src/plugins/Label_8E.test.ts +0 -34
- package/src/plugins/Label_8E.ts +0 -55
- package/src/plugins/Label_B6.ts +0 -28
- package/src/plugins/Label_ColonComma.ts +0 -32
- package/src/plugins/Label_H1.ts +0 -18
- package/src/plugins/Label_H1_M1BPOS.ts +0 -60
- package/src/plugins/Label_H1_M1BPRG.ts +0 -40
- package/src/plugins/Label_QP.ts +0 -54
- package/src/plugins/Label_QQ.ts +0 -54
- package/src/plugins/Label_QR.ts +0 -54
- package/src/plugins/Label_QS.ts +0 -54
- package/src/plugins/Label_SQ.ts +0 -111
- package/src/plugins/official.ts +0 -22
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const MessageDecoder_1 = require("../MessageDecoder");
|
|
4
|
-
const Label_8E_1 = require("./Label_8E");
|
|
5
|
-
test('decodes Label 8E sample 1', () => {
|
|
6
|
-
const decoder = new MessageDecoder_1.MessageDecoder();
|
|
7
|
-
const decoderPlugin = new Label_8E_1.Label_8E(decoder);
|
|
8
|
-
expect(decoderPlugin.decode).toBeDefined();
|
|
9
|
-
expect(decoderPlugin.name).toBe('label-8e');
|
|
10
|
-
expect(decoderPlugin.qualifiers).toBeDefined();
|
|
11
|
-
expect(decoderPlugin.qualifiers()).toEqual({
|
|
12
|
-
labels: ['8E'],
|
|
13
|
-
});
|
|
14
|
-
const decodeResult = decoderPlugin.decode({ text: 'EGSS,1618' });
|
|
15
|
-
console.log(JSON.stringify(decodeResult, null, 2));
|
|
16
|
-
expect(decodeResult.decoded).toBe(true);
|
|
17
|
-
expect(decodeResult.decoder.name).toBe('label-8e');
|
|
18
|
-
expect(decodeResult.formatted.description).toBe('ETA Report');
|
|
19
|
-
expect(decodeResult.message.text).toBe('EGSS,1618');
|
|
20
|
-
expect(decodeResult.raw.arrival_icao).toBe('EGSS');
|
|
21
|
-
expect(decodeResult.formatted.items.length).toBe(2);
|
|
22
|
-
expect(decodeResult.formatted.items[0].type).toBe('eta');
|
|
23
|
-
expect(decodeResult.formatted.items[0].code).toBe('ETA');
|
|
24
|
-
expect(decodeResult.formatted.items[0].label).toBe('Estimated Time of Arrival');
|
|
25
|
-
// Check for the minutes as typescript doesn't have a UTC time string method
|
|
26
|
-
// so the hour will depend on the test host timezone.
|
|
27
|
-
expect(decodeResult.formatted.items[0].value.includes('18')).toBe(true);
|
|
28
|
-
expect(decodeResult.formatted.items[1].type).toBe('destination');
|
|
29
|
-
expect(decodeResult.formatted.items[1].code).toBe('DST');
|
|
30
|
-
expect(decodeResult.formatted.items[1].label).toBe('Destination');
|
|
31
|
-
expect(decodeResult.formatted.items[1].value).toBe('EGSS');
|
|
32
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_B6_Forwardslash extends DecoderPlugin {
|
|
3
|
-
name: string;
|
|
4
|
-
qualifiers(): {
|
|
5
|
-
labels: string[];
|
|
6
|
-
preambles: string[];
|
|
7
|
-
};
|
|
8
|
-
decode(message: any, options?: any): any;
|
|
9
|
-
}
|
|
10
|
-
declare const _default: {};
|
|
11
|
-
export default _default;
|
package/dist/plugins/Label_B6.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_B6_Forwardslash = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
// CPDLC
|
|
6
|
-
class Label_B6_Forwardslash extends DecoderPlugin_1.DecoderPlugin {
|
|
7
|
-
name = 'label-b6-forwardslash';
|
|
8
|
-
qualifiers() {
|
|
9
|
-
return {
|
|
10
|
-
labels: ['B6'],
|
|
11
|
-
preambles: ['/'],
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
decode(message, options = {}) {
|
|
15
|
-
const decodeResult = this.defaultResult;
|
|
16
|
-
decodeResult.decoder.name = this.name;
|
|
17
|
-
decodeResult.formatted.description = 'CPDLC Message';
|
|
18
|
-
decodeResult.message = message;
|
|
19
|
-
if (options.debug) {
|
|
20
|
-
console.log("CPDLC: " + message);
|
|
21
|
-
}
|
|
22
|
-
return decodeResult;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.Label_B6_Forwardslash = Label_B6_Forwardslash;
|
|
26
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_ColonComma 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;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_ColonComma = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_ColonComma extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-colon-comma';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: [':;'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.frequency = Number(message.text) / 1000;
|
|
16
|
-
decodeResult.formatted.description = 'Aircraft Transceiver Frequency Change';
|
|
17
|
-
decodeResult.formatted.items.push({
|
|
18
|
-
type: 'frequency',
|
|
19
|
-
label: 'Frequency',
|
|
20
|
-
value: `${decodeResult.raw.frequency} MHz`,
|
|
21
|
-
});
|
|
22
|
-
decodeResult.decoded = true;
|
|
23
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
24
|
-
return decodeResult;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.Label_ColonComma = Label_ColonComma;
|
|
28
|
-
exports.default = {};
|
package/dist/plugins/Label_H1.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_H1 = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_H1 extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
qualifiers() {
|
|
7
|
-
return {
|
|
8
|
-
labels: ['H1'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
decode(message, options = {}) {
|
|
12
|
-
const decodeResult = this.defaultResult;
|
|
13
|
-
// console.log('DECODER: H1 detected');
|
|
14
|
-
return decodeResult;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.Label_H1 = Label_H1;
|
|
18
|
-
exports.default = {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_H1_M1BPOS extends DecoderPlugin {
|
|
3
|
-
name: string;
|
|
4
|
-
qualifiers(): {
|
|
5
|
-
labels: string[];
|
|
6
|
-
preambles: string[];
|
|
7
|
-
};
|
|
8
|
-
decode(message: any, options?: any): any;
|
|
9
|
-
}
|
|
10
|
-
declare const _default: {};
|
|
11
|
-
export default _default;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_H1_M1BPOS = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_H1_M1BPOS extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-h1-m1bpos';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['H1'],
|
|
10
|
-
preambles: ['#M1BPOS'],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
decode(message, options = {}) {
|
|
14
|
-
const decodeResult = this.defaultResult;
|
|
15
|
-
decodeResult.decoder.name = this.name;
|
|
16
|
-
if (options.debug) {
|
|
17
|
-
console.log('DECODER: #M1BPOS detected');
|
|
18
|
-
}
|
|
19
|
-
const parts = message.text.replace('#M1BPOS', '').split('/');
|
|
20
|
-
const firstHalf = parts[0];
|
|
21
|
-
const secondHalf = parts[1];
|
|
22
|
-
const items = firstHalf.split(',');
|
|
23
|
-
const coordsRegex = /(?<lac>[NS])(?<la>.+)\s*(?<lnc>[EW])(?<ln>.+)/;
|
|
24
|
-
const results = items[0].match(coordsRegex);
|
|
25
|
-
if (results && results.length >= 4) {
|
|
26
|
-
decodeResult.raw.position = {
|
|
27
|
-
latitudeDirection: results.groups.lac,
|
|
28
|
-
latitude: (results.groups.la / 1000) * (results.groups.lac === 'S' ? -1 : 1),
|
|
29
|
-
longitudeDirection: results.groups.lnc,
|
|
30
|
-
longitude: (results.groups.ln / 1000) * (results.groups.lnc === 'W' ? -1 : 1),
|
|
31
|
-
};
|
|
32
|
-
let route = items.slice(1).filter((part) => !/^\d(.+)$/.test(part));
|
|
33
|
-
route = route.map((hop) => hop || '?');
|
|
34
|
-
decodeResult.raw.route = route;
|
|
35
|
-
decodeResult.formatted.description = 'Position Report';
|
|
36
|
-
decodeResult.formatted.items = {
|
|
37
|
-
coordinates: {
|
|
38
|
-
label: 'Position',
|
|
39
|
-
value: this.coordinateString(decodeResult.raw.position),
|
|
40
|
-
},
|
|
41
|
-
route: {
|
|
42
|
-
label: 'Route',
|
|
43
|
-
value: `${route.join(' > ')}`,
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
decodeResult.decoded = true;
|
|
47
|
-
decodeResult.decodeLevel = 'partial';
|
|
48
|
-
}
|
|
49
|
-
decodeResult.remaining.text = secondHalf;
|
|
50
|
-
return decodeResult;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.Label_H1_M1BPOS = Label_H1_M1BPOS;
|
|
54
|
-
exports.default = {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_H1_M1BPRG extends DecoderPlugin {
|
|
3
|
-
name: string;
|
|
4
|
-
qualifiers(): {
|
|
5
|
-
labels: string[];
|
|
6
|
-
preambles: string[];
|
|
7
|
-
};
|
|
8
|
-
decode(message: any, options?: any): any;
|
|
9
|
-
}
|
|
10
|
-
declare const _default: {};
|
|
11
|
-
export default _default;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_H1_M1BPRG = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_H1_M1BPRG extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-h1-m1bprg';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['H1'],
|
|
10
|
-
preambles: ['#M1BPRG'],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
decode(message, options = {}) {
|
|
14
|
-
const decodeResult = this.defaultResult;
|
|
15
|
-
decodeResult.decoder.name = this.name;
|
|
16
|
-
// console.log('DECODER: H1 #M1BPRG detected');
|
|
17
|
-
const parts = message.text.split('/');
|
|
18
|
-
for (const part of parts) { // eslint-disable-line no-restricted-syntax
|
|
19
|
-
if (part.includes('#M')) {
|
|
20
|
-
const regex = /#M(?<fms>\w+)PRG/;
|
|
21
|
-
}
|
|
22
|
-
if (part.includes('DT')) {
|
|
23
|
-
const regex = /DT(?<dest>\w+),(?<rway>.+),(?<fuel>.+),(?<eta>.+),(?<rem>.+)/;
|
|
24
|
-
const result = message.text.match(regex);
|
|
25
|
-
// console.log('DT result');
|
|
26
|
-
// console.log(result);
|
|
27
|
-
}
|
|
28
|
-
if (part.includes('FN')) {
|
|
29
|
-
const regex = /FN(?<flight>\w+)/;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return decodeResult;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.Label_H1_M1BPRG = Label_H1_M1BPRG;
|
|
36
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_QP 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;
|
package/dist/plugins/Label_QP.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_QP = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_QP extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-qp';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['QP'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
16
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
17
|
-
decodeResult.raw.gate_out = message.text.substring(8, 12);
|
|
18
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
19
|
-
decodeResult.formatted.description = 'OUT Report';
|
|
20
|
-
decodeResult.formatted.items = [
|
|
21
|
-
{
|
|
22
|
-
type: 'origin',
|
|
23
|
-
code: 'ORG',
|
|
24
|
-
label: 'Origin',
|
|
25
|
-
value: decodeResult.raw.origin,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: 'destination',
|
|
29
|
-
code: 'DST',
|
|
30
|
-
label: 'Destination',
|
|
31
|
-
value: decodeResult.raw.destination,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'gate_out',
|
|
35
|
-
code: 'GOUT',
|
|
36
|
-
label: 'Gate OUT',
|
|
37
|
-
value: decodeResult.raw.gate_out,
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
decodeResult.decoded = true;
|
|
41
|
-
if (decodeResult.remaining.text === "")
|
|
42
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
43
|
-
else
|
|
44
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
45
|
-
return decodeResult;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.Label_QP = Label_QP;
|
|
49
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_QQ 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;
|
package/dist/plugins/Label_QQ.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_QQ = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_QQ extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-qq';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['QQ'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
16
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
17
|
-
decodeResult.raw.wheels_off = message.text.substring(8, 12);
|
|
18
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
19
|
-
decodeResult.formatted.description = 'OFF Report';
|
|
20
|
-
decodeResult.formatted.items = [
|
|
21
|
-
{
|
|
22
|
-
type: 'origin',
|
|
23
|
-
code: 'ORG',
|
|
24
|
-
label: 'Origin',
|
|
25
|
-
value: decodeResult.raw.origin,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: 'destination',
|
|
29
|
-
code: 'DST',
|
|
30
|
-
label: 'Destination',
|
|
31
|
-
value: decodeResult.raw.destination,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'wheels_off',
|
|
35
|
-
code: 'WOFF',
|
|
36
|
-
label: 'Wheels OFF',
|
|
37
|
-
value: decodeResult.raw.wheels_off,
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
decodeResult.decoded = true;
|
|
41
|
-
if (decodeResult.remaining.text === "")
|
|
42
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
43
|
-
else
|
|
44
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
45
|
-
return decodeResult;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.Label_QQ = Label_QQ;
|
|
49
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
export declare class Label_QR 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;
|
package/dist/plugins/Label_QR.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_QR = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_QR extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-qr';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['QR'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
16
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
17
|
-
decodeResult.raw.wheels_on = message.text.substring(8, 12);
|
|
18
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
19
|
-
decodeResult.formatted.description = 'ON Report';
|
|
20
|
-
decodeResult.formatted.items = [
|
|
21
|
-
{
|
|
22
|
-
type: 'origin',
|
|
23
|
-
code: 'ORG',
|
|
24
|
-
label: 'Origin',
|
|
25
|
-
value: decodeResult.raw.origin,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: 'destination',
|
|
29
|
-
code: 'DST',
|
|
30
|
-
label: 'Destination',
|
|
31
|
-
value: decodeResult.raw.destination,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'wheels_on',
|
|
35
|
-
code: 'WON',
|
|
36
|
-
label: 'Wheels ON',
|
|
37
|
-
value: decodeResult.raw.wheels_on,
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
decodeResult.decoded = true;
|
|
41
|
-
if (decodeResult.remaining.text === "")
|
|
42
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
43
|
-
else
|
|
44
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
45
|
-
return decodeResult;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.Label_QR = Label_QR;
|
|
49
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
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;
|
package/dist/plugins/Label_QS.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_QS = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_QS extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-qs';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['QS'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
16
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
17
|
-
decodeResult.raw.gate_in = message.text.substring(8, 12);
|
|
18
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
19
|
-
decodeResult.formatted.description = 'IN Report';
|
|
20
|
-
decodeResult.formatted.items = [
|
|
21
|
-
{
|
|
22
|
-
type: 'origin',
|
|
23
|
-
code: 'ORG',
|
|
24
|
-
label: 'Origin',
|
|
25
|
-
value: decodeResult.raw.origin,
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: 'destination',
|
|
29
|
-
code: 'DST',
|
|
30
|
-
label: 'Destination',
|
|
31
|
-
value: decodeResult.raw.destination,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'gate_in',
|
|
35
|
-
code: 'GIN',
|
|
36
|
-
label: 'Gate IN',
|
|
37
|
-
value: decodeResult.raw.gate_in,
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
decodeResult.decoded = true;
|
|
41
|
-
if (decodeResult.remaining.text === "")
|
|
42
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
43
|
-
else
|
|
44
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
45
|
-
return decodeResult;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.Label_QS = Label_QS;
|
|
49
|
-
exports.default = {};
|
|
@@ -1,10 +0,0 @@
|
|
|
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;
|
package/dist/plugins/Label_SQ.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Label_SQ = void 0;
|
|
4
|
-
const DecoderPlugin_1 = require("../DecoderPlugin");
|
|
5
|
-
class Label_SQ extends DecoderPlugin_1.DecoderPlugin {
|
|
6
|
-
name = 'label-sq';
|
|
7
|
-
qualifiers() {
|
|
8
|
-
return {
|
|
9
|
-
labels: ['SQ'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
decode(message, options = {}) {
|
|
13
|
-
const decodeResult = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
decodeResult.raw.preamble = message.text.substring(0, 4);
|
|
16
|
-
decodeResult.raw.version = message.text.substring(1, 2);
|
|
17
|
-
decodeResult.raw.network = message.text.substring(3, 4);
|
|
18
|
-
if (decodeResult.raw.version === '2') {
|
|
19
|
-
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+)\/.*/;
|
|
20
|
-
const result = message.text.match(regex);
|
|
21
|
-
if (result && result.length >= 8) {
|
|
22
|
-
decodeResult.raw.groundStation = {
|
|
23
|
-
number: result.groups.station,
|
|
24
|
-
iataCode: result.groups.iata,
|
|
25
|
-
icaoCode: result.groups.icao,
|
|
26
|
-
coordinates: {
|
|
27
|
-
latitude: (Number(result.groups.lat) / 100) * (result.groups.latd === 'S' ? -1 : 1),
|
|
28
|
-
longitude: (Number(result.groups.lng) / 100) * (result.groups.lngd === 'W' ? -1 : 1)
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
decodeResult.raw.vdlFrequency = result.groups.vfreq / 1000.0;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
decodeResult.formatted.description = 'Ground Station Squitter';
|
|
35
|
-
var formattedNetwork = 'Unknown';
|
|
36
|
-
if (decodeResult.raw.network == 'A') {
|
|
37
|
-
formattedNetwork = 'ARINC';
|
|
38
|
-
}
|
|
39
|
-
else if (decodeResult.raw.network == 'S') {
|
|
40
|
-
formattedNetwork = 'SITA';
|
|
41
|
-
}
|
|
42
|
-
decodeResult.formatted.items = [
|
|
43
|
-
{
|
|
44
|
-
type: 'network',
|
|
45
|
-
label: 'Network',
|
|
46
|
-
value: formattedNetwork,
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
type: 'version',
|
|
50
|
-
label: 'Version',
|
|
51
|
-
value: decodeResult.raw.version,
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
if (decodeResult.raw.groundStation) {
|
|
55
|
-
if (decodeResult.raw.groundStation.icaoCode && decodeResult.raw.groundStation.number) {
|
|
56
|
-
decodeResult.formatted.items.push({
|
|
57
|
-
type: 'ground_station',
|
|
58
|
-
label: 'Ground Station',
|
|
59
|
-
value: `${decodeResult.raw.groundStation.icaoCode}${decodeResult.raw.groundStation.number}`,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
if (decodeResult.raw.groundStation.iataCode) {
|
|
63
|
-
decodeResult.formatted.items.push({
|
|
64
|
-
type: 'iataCode',
|
|
65
|
-
label: 'IATA',
|
|
66
|
-
value: decodeResult.raw.groundStation.iataCode,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
if (decodeResult.raw.groundStation.icaoCode) {
|
|
70
|
-
decodeResult.formatted.items.push({
|
|
71
|
-
type: 'icaoCode',
|
|
72
|
-
label: 'ICAO',
|
|
73
|
-
value: decodeResult.raw.groundStation.icaoCode,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
if (decodeResult.raw.groundStation.coordinates.latitude) {
|
|
77
|
-
decodeResult.formatted.items.push({
|
|
78
|
-
type: 'coordinates',
|
|
79
|
-
label: 'Ground Station Location',
|
|
80
|
-
value: `${decodeResult.raw.groundStation.coordinates.latitude}, ${decodeResult.raw.groundStation.coordinates.longitude}`,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
if (decodeResult.raw.groundStation.airport) {
|
|
84
|
-
decodeResult.formatted.items.push({
|
|
85
|
-
type: 'airport',
|
|
86
|
-
label: 'Airport',
|
|
87
|
-
value: `${decodeResult.raw.groundStation.airport.name} (${decodeResult.raw.groundStation.airport.icao}) in ${decodeResult.raw.groundStation.airport.location}`,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (decodeResult.raw.vdlFrequency) {
|
|
92
|
-
decodeResult.formatted.items.push({
|
|
93
|
-
type: 'vdlFrequency',
|
|
94
|
-
label: 'VDL Frequency',
|
|
95
|
-
value: `${decodeResult.raw.vdlFrequency} MHz`
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
decodeResult.decoded = true;
|
|
99
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
100
|
-
return decodeResult;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
exports.Label_SQ = Label_SQ;
|
|
104
|
-
exports.default = {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export * from './Label_5Z';
|
|
2
|
-
export * from './Label_15';
|
|
3
|
-
export * from './Label_16_N_Space';
|
|
4
|
-
export * from './Label_20_POS';
|
|
5
|
-
export * from './Label_30_Slash_EA';
|
|
6
|
-
export * from './Label_44_ETA';
|
|
7
|
-
export * from './Label_44_IN';
|
|
8
|
-
export * from './Label_44_OFF';
|
|
9
|
-
export * from './Label_44_ON';
|
|
10
|
-
export * from './Label_44_POS';
|
|
11
|
-
export * from './Label_80';
|
|
12
|
-
export * from './Label_8E';
|
|
13
|
-
export * from './Label_B6';
|
|
14
|
-
export * from './Label_ColonComma';
|
|
15
|
-
export * from './Label_H1_M1BPOS';
|
|
16
|
-
export * from './Label_H1_M1BPRG';
|
|
17
|
-
export * from './Label_1M_Slash';
|
|
18
|
-
export * from './Label_SQ';
|
|
19
|
-
export * from './Label_QR';
|
|
20
|
-
export * from './Label_QP';
|
|
21
|
-
export * from './Label_QS';
|
|
22
|
-
export * from './Label_QQ';
|