@airframes/acars-decoder 1.4.7 → 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 +7 -15
- package/tsconfig.json +3 -3
- 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
package/src/plugins/Label_8E.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { DateTimeUtils } from '../DateTimeUtils';
|
|
2
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
3
|
-
|
|
4
|
-
// ETA
|
|
5
|
-
export class Label_8E extends DecoderPlugin {
|
|
6
|
-
name = 'label-8e';
|
|
7
|
-
|
|
8
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
9
|
-
return {
|
|
10
|
-
labels: ["8E"],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
decode(message: any, options: any = {}) : any {
|
|
15
|
-
const decodeResult: any = this.defaultResult;
|
|
16
|
-
decodeResult.decoder.name = this.name;
|
|
17
|
-
decodeResult.formatted.description = 'ETA Report';
|
|
18
|
-
decodeResult.message = message;
|
|
19
|
-
|
|
20
|
-
// Style: EGSS,1618
|
|
21
|
-
// Match: arrival_icao,arrival_eta
|
|
22
|
-
const regex = /^(?<arrival_icao>\w{4}),(?<arrival_eta>\d{4})$/;
|
|
23
|
-
const results = message.text.match(regex);
|
|
24
|
-
if (results) {
|
|
25
|
-
if (options.debug) {
|
|
26
|
-
console.log(`Label 8E ETA: groups`);
|
|
27
|
-
console.log(results.groups);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
decodeResult.formatted.items.push({
|
|
31
|
-
type: 'eta',
|
|
32
|
-
code: 'ETA',
|
|
33
|
-
label: 'Estimated Time of Arrival',
|
|
34
|
-
value: DateTimeUtils.UTCToString(results.groups.arrival_eta),
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
decodeResult.raw.arrival_icao = results.groups.arrival_icao;
|
|
39
|
-
decodeResult.formatted.items.push({
|
|
40
|
-
type: 'destination',
|
|
41
|
-
code: 'DST',
|
|
42
|
-
label: 'Destination',
|
|
43
|
-
value: decodeResult.raw.arrival_icao,
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
decodeResult.decoded = true;
|
|
49
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
50
|
-
|
|
51
|
-
return decodeResult;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default {};
|
package/src/plugins/Label_B6.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
// CPDLC
|
|
4
|
-
export class Label_B6_Forwardslash extends DecoderPlugin {
|
|
5
|
-
name = 'label-b6-forwardslash';
|
|
6
|
-
|
|
7
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
8
|
-
return {
|
|
9
|
-
labels: ['B6'],
|
|
10
|
-
preambles: ['/'],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
decode(message: any, options: any = {}) : any {
|
|
15
|
-
const decodeResult: any = this.defaultResult;
|
|
16
|
-
decodeResult.decoder.name = this.name;
|
|
17
|
-
decodeResult.formatted.description = 'CPDLC Message';
|
|
18
|
-
decodeResult.message = message;
|
|
19
|
-
|
|
20
|
-
if (options.debug) {
|
|
21
|
-
console.log("CPDLC: " + message);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return decodeResult;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_ColonComma extends DecoderPlugin {
|
|
4
|
-
name = 'label-colon-comma';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: [':;'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.frequency = Number(message.text) / 1000;
|
|
17
|
-
|
|
18
|
-
decodeResult.formatted.description = 'Aircraft Transceiver Frequency Change';
|
|
19
|
-
decodeResult.formatted.items.push({
|
|
20
|
-
type: 'frequency',
|
|
21
|
-
label: 'Frequency',
|
|
22
|
-
value: `${decodeResult.raw.frequency} MHz`,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
decodeResult.decoded = true;
|
|
26
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
27
|
-
|
|
28
|
-
return decodeResult;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default {};
|
package/src/plugins/Label_H1.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_H1 extends DecoderPlugin {
|
|
4
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
5
|
-
return {
|
|
6
|
-
labels: ['H1'],
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
decode(message: any, options: any = {}) : any {
|
|
11
|
-
const decodeResult: any = this.defaultResult;
|
|
12
|
-
// console.log('DECODER: H1 detected');
|
|
13
|
-
|
|
14
|
-
return decodeResult;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_H1_M1BPOS extends DecoderPlugin { // eslint-disable-line camelcase
|
|
4
|
-
name = 'label-h1-m1bpos';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['H1'],
|
|
9
|
-
preambles: ['#M1BPOS'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
decode(message: any, options: any = {}) : any {
|
|
14
|
-
const decodeResult: any = this.defaultResult;
|
|
15
|
-
decodeResult.decoder.name = this.name;
|
|
16
|
-
|
|
17
|
-
if (options.debug) {
|
|
18
|
-
console.log('DECODER: #M1BPOS detected');
|
|
19
|
-
}
|
|
20
|
-
const parts = message.text.replace('#M1BPOS', '').split('/');
|
|
21
|
-
const firstHalf = parts[0];
|
|
22
|
-
const secondHalf = parts[1];
|
|
23
|
-
const items = firstHalf.split(',');
|
|
24
|
-
|
|
25
|
-
const coordsRegex = /(?<lac>[NS])(?<la>.+)\s*(?<lnc>[EW])(?<ln>.+)/;
|
|
26
|
-
const results = items[0].match(coordsRegex);
|
|
27
|
-
|
|
28
|
-
if (results && results.length >= 4) {
|
|
29
|
-
decodeResult.raw.position = {
|
|
30
|
-
latitudeDirection: results.groups.lac,
|
|
31
|
-
latitude: (results.groups.la / 1000) * (results.groups.lac === 'S' ? -1 : 1),
|
|
32
|
-
longitudeDirection: results.groups.lnc,
|
|
33
|
-
longitude: (results.groups.ln / 1000) * (results.groups.lnc === 'W' ? -1 : 1),
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
let route = items.slice(1).filter((part: any) => !/^\d(.+)$/.test(part));
|
|
37
|
-
route = route.map((hop: any) => hop || '?');
|
|
38
|
-
decodeResult.raw.route = route;
|
|
39
|
-
|
|
40
|
-
decodeResult.formatted.description = 'Position Report';
|
|
41
|
-
decodeResult.formatted.items = {
|
|
42
|
-
coordinates: {
|
|
43
|
-
label: 'Position',
|
|
44
|
-
value: this.coordinateString(decodeResult.raw.position),
|
|
45
|
-
},
|
|
46
|
-
route: {
|
|
47
|
-
label: 'Route',
|
|
48
|
-
value: `${route.join(' > ')}`,
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
decodeResult.decoded = true;
|
|
52
|
-
decodeResult.decodeLevel = 'partial';
|
|
53
|
-
}
|
|
54
|
-
decodeResult.remaining.text = secondHalf;
|
|
55
|
-
|
|
56
|
-
return decodeResult;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export default {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_H1_M1BPRG extends DecoderPlugin { // eslint-disable-line camelcase
|
|
4
|
-
name = 'label-h1-m1bprg';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['H1'],
|
|
9
|
-
preambles: ['#M1BPRG'],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
decode(message: any, options: any = {}) : any {
|
|
14
|
-
const decodeResult: any = this.defaultResult;
|
|
15
|
-
decodeResult.decoder.name = this.name;
|
|
16
|
-
|
|
17
|
-
// console.log('DECODER: H1 #M1BPRG detected');
|
|
18
|
-
const parts = message.text.split('/');
|
|
19
|
-
for (const part of parts) { // eslint-disable-line no-restricted-syntax
|
|
20
|
-
if (part.includes('#M')) {
|
|
21
|
-
const regex = /#M(?<fms>\w+)PRG/;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (part.includes('DT')) {
|
|
25
|
-
const regex = /DT(?<dest>\w+),(?<rway>.+),(?<fuel>.+),(?<eta>.+),(?<rem>.+)/;
|
|
26
|
-
const result = message.text.match(regex);
|
|
27
|
-
// console.log('DT result');
|
|
28
|
-
// console.log(result);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (part.includes('FN')) {
|
|
32
|
-
const regex = /FN(?<flight>\w+)/;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return decodeResult;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default {};
|
package/src/plugins/Label_QP.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_QP extends DecoderPlugin {
|
|
4
|
-
name = 'label-qp';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['QP'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
17
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
18
|
-
decodeResult.raw.gate_out = message.text.substring(8, 12);
|
|
19
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
20
|
-
|
|
21
|
-
decodeResult.formatted.description = 'OUT Report';
|
|
22
|
-
|
|
23
|
-
decodeResult.formatted.items = [
|
|
24
|
-
{
|
|
25
|
-
type: 'origin',
|
|
26
|
-
code: 'ORG',
|
|
27
|
-
label: 'Origin',
|
|
28
|
-
value: decodeResult.raw.origin,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'destination',
|
|
32
|
-
code: 'DST',
|
|
33
|
-
label: 'Destination',
|
|
34
|
-
value: decodeResult.raw.destination,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'gate_out',
|
|
38
|
-
code: 'GOUT',
|
|
39
|
-
label: 'Gate OUT',
|
|
40
|
-
value: decodeResult.raw.gate_out,
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
decodeResult.decoded = true;
|
|
45
|
-
if(decodeResult.remaining.text === "")
|
|
46
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
47
|
-
else
|
|
48
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
49
|
-
|
|
50
|
-
return decodeResult;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default {};
|
package/src/plugins/Label_QQ.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_QQ extends DecoderPlugin {
|
|
4
|
-
name = 'label-qq';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['QQ'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
17
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
18
|
-
decodeResult.raw.wheels_off = message.text.substring(8, 12);
|
|
19
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
20
|
-
|
|
21
|
-
decodeResult.formatted.description = 'OFF Report';
|
|
22
|
-
|
|
23
|
-
decodeResult.formatted.items = [
|
|
24
|
-
{
|
|
25
|
-
type: 'origin',
|
|
26
|
-
code: 'ORG',
|
|
27
|
-
label: 'Origin',
|
|
28
|
-
value: decodeResult.raw.origin,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'destination',
|
|
32
|
-
code: 'DST',
|
|
33
|
-
label: 'Destination',
|
|
34
|
-
value: decodeResult.raw.destination,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'wheels_off',
|
|
38
|
-
code: 'WOFF',
|
|
39
|
-
label: 'Wheels OFF',
|
|
40
|
-
value: decodeResult.raw.wheels_off,
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
decodeResult.decoded = true;
|
|
45
|
-
if(decodeResult.remaining.text === "")
|
|
46
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
47
|
-
else
|
|
48
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
49
|
-
|
|
50
|
-
return decodeResult;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default {};
|
package/src/plugins/Label_QR.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_QR extends DecoderPlugin {
|
|
4
|
-
name = 'label-qr';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['QR'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
17
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
18
|
-
decodeResult.raw.wheels_on = message.text.substring(8, 12);
|
|
19
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
20
|
-
|
|
21
|
-
decodeResult.formatted.description = 'ON Report';
|
|
22
|
-
|
|
23
|
-
decodeResult.formatted.items = [
|
|
24
|
-
{
|
|
25
|
-
type: 'origin',
|
|
26
|
-
code: 'ORG',
|
|
27
|
-
label: 'Origin',
|
|
28
|
-
value: decodeResult.raw.origin,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'destination',
|
|
32
|
-
code: 'DST',
|
|
33
|
-
label: 'Destination',
|
|
34
|
-
value: decodeResult.raw.destination,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'wheels_on',
|
|
38
|
-
code: 'WON',
|
|
39
|
-
label: 'Wheels ON',
|
|
40
|
-
value: decodeResult.raw.wheels_on,
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
decodeResult.decoded = true;
|
|
45
|
-
if(decodeResult.remaining.text === "")
|
|
46
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
47
|
-
else
|
|
48
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
49
|
-
|
|
50
|
-
return decodeResult;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default {};
|
package/src/plugins/Label_QS.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_QS extends DecoderPlugin {
|
|
4
|
-
name = 'label-qs';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['QS'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.origin = message.text.substring(0, 4);
|
|
17
|
-
decodeResult.raw.destination = message.text.substring(4, 8);
|
|
18
|
-
decodeResult.raw.gate_in = message.text.substring(8, 12);
|
|
19
|
-
decodeResult.remaining.text = message.text.substring(12);
|
|
20
|
-
|
|
21
|
-
decodeResult.formatted.description = 'IN Report';
|
|
22
|
-
|
|
23
|
-
decodeResult.formatted.items = [
|
|
24
|
-
{
|
|
25
|
-
type: 'origin',
|
|
26
|
-
code: 'ORG',
|
|
27
|
-
label: 'Origin',
|
|
28
|
-
value: decodeResult.raw.origin,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'destination',
|
|
32
|
-
code: 'DST',
|
|
33
|
-
label: 'Destination',
|
|
34
|
-
value: decodeResult.raw.destination,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'gate_in',
|
|
38
|
-
code: 'GIN',
|
|
39
|
-
label: 'Gate IN',
|
|
40
|
-
value: decodeResult.raw.gate_in,
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
|
|
44
|
-
decodeResult.decoded = true;
|
|
45
|
-
if(decodeResult.remaining.text === "")
|
|
46
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
47
|
-
else
|
|
48
|
-
decodeResult.decoder.decodeLevel = 'partial';
|
|
49
|
-
|
|
50
|
-
return decodeResult;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default {};
|
package/src/plugins/Label_SQ.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { DecoderPlugin } from '../DecoderPlugin';
|
|
2
|
-
|
|
3
|
-
export class Label_SQ extends DecoderPlugin {
|
|
4
|
-
name = 'label-sq';
|
|
5
|
-
|
|
6
|
-
qualifiers() { // eslint-disable-line class-methods-use-this
|
|
7
|
-
return {
|
|
8
|
-
labels: ['SQ'],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
decode(message: any, options: any = {}) : any {
|
|
13
|
-
const decodeResult: any = this.defaultResult;
|
|
14
|
-
decodeResult.decoder.name = this.name;
|
|
15
|
-
|
|
16
|
-
decodeResult.raw.preamble = message.text.substring(0, 4);
|
|
17
|
-
decodeResult.raw.version = message.text.substring(1, 2);
|
|
18
|
-
decodeResult.raw.network = message.text.substring(3, 4);
|
|
19
|
-
|
|
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
|
-
|
|
24
|
-
if (result && result.length >= 8) {
|
|
25
|
-
decodeResult.raw.groundStation = {
|
|
26
|
-
number: result.groups.station,
|
|
27
|
-
iataCode: result.groups.iata,
|
|
28
|
-
icaoCode: result.groups.icao,
|
|
29
|
-
coordinates: {
|
|
30
|
-
latitude: (Number(result.groups.lat) / 100) * (result.groups.latd === 'S' ? -1 : 1),
|
|
31
|
-
longitude: (Number(result.groups.lng) / 100) * (result.groups.lngd === 'W' ? -1 : 1)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
decodeResult.raw.vdlFrequency = result.groups.vfreq / 1000.0;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
decodeResult.formatted.description = 'Ground Station Squitter';
|
|
39
|
-
|
|
40
|
-
var formattedNetwork = 'Unknown';
|
|
41
|
-
if (decodeResult.raw.network == 'A') {
|
|
42
|
-
formattedNetwork = 'ARINC';
|
|
43
|
-
} else if (decodeResult.raw.network == 'S') {
|
|
44
|
-
formattedNetwork = 'SITA';
|
|
45
|
-
}
|
|
46
|
-
decodeResult.formatted.items = [
|
|
47
|
-
{
|
|
48
|
-
type: 'network',
|
|
49
|
-
label: 'Network',
|
|
50
|
-
value: formattedNetwork,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
type: 'version',
|
|
54
|
-
label: 'Version',
|
|
55
|
-
value: decodeResult.raw.version,
|
|
56
|
-
}
|
|
57
|
-
];
|
|
58
|
-
|
|
59
|
-
if (decodeResult.raw.groundStation) {
|
|
60
|
-
if (decodeResult.raw.groundStation.icaoCode && decodeResult.raw.groundStation.number) {
|
|
61
|
-
decodeResult.formatted.items.push({
|
|
62
|
-
type: 'ground_station',
|
|
63
|
-
label: 'Ground Station',
|
|
64
|
-
value: `${decodeResult.raw.groundStation.icaoCode}${decodeResult.raw.groundStation.number}`,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
if (decodeResult.raw.groundStation.iataCode) {
|
|
68
|
-
decodeResult.formatted.items.push({
|
|
69
|
-
type: 'iataCode',
|
|
70
|
-
label: 'IATA',
|
|
71
|
-
value: decodeResult.raw.groundStation.iataCode,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
if (decodeResult.raw.groundStation.icaoCode) {
|
|
75
|
-
decodeResult.formatted.items.push({
|
|
76
|
-
type: 'icaoCode',
|
|
77
|
-
label: 'ICAO',
|
|
78
|
-
value: decodeResult.raw.groundStation.icaoCode,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (decodeResult.raw.groundStation.coordinates.latitude) {
|
|
82
|
-
decodeResult.formatted.items.push({
|
|
83
|
-
type: 'coordinates',
|
|
84
|
-
label: 'Ground Station Location',
|
|
85
|
-
value: `${decodeResult.raw.groundStation.coordinates.latitude}, ${decodeResult.raw.groundStation.coordinates.longitude}`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
if (decodeResult.raw.groundStation.airport) {
|
|
89
|
-
decodeResult.formatted.items.push({
|
|
90
|
-
type: 'airport',
|
|
91
|
-
label: 'Airport',
|
|
92
|
-
value: `${decodeResult.raw.groundStation.airport.name} (${decodeResult.raw.groundStation.airport.icao}) in ${decodeResult.raw.groundStation.airport.location}`,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (decodeResult.raw.vdlFrequency) {
|
|
98
|
-
decodeResult.formatted.items.push({
|
|
99
|
-
type: 'vdlFrequency',
|
|
100
|
-
label: 'VDL Frequency',
|
|
101
|
-
value: `${decodeResult.raw.vdlFrequency} MHz`
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
decodeResult.decoded = true;
|
|
105
|
-
decodeResult.decoder.decodeLevel = 'full';
|
|
106
|
-
|
|
107
|
-
return decodeResult;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export default {};
|
package/src/plugins/official.ts
DELETED
|
@@ -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';
|