@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.
Files changed (131) hide show
  1. package/.github/FUNDING.yml +1 -1
  2. package/.github/workflows/yarn-test.yml +11 -4
  3. package/README.md +32 -0
  4. package/index.d.ts +17 -0
  5. package/index.ts +2 -0
  6. package/package.json +7 -15
  7. package/tsconfig.json +3 -3
  8. package/yarn-error.log +3354 -0
  9. package/coverage/clover.xml +0 -1799
  10. package/coverage/coverage-final.json +0 -24
  11. package/coverage/lcov-report/base.css +0 -224
  12. package/coverage/lcov-report/block-navigation.js +0 -87
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +0 -131
  15. package/coverage/lcov-report/prettify.css +0 -1
  16. package/coverage/lcov-report/prettify.js +0 -2
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +0 -196
  19. package/coverage/lcov.info +0 -2278
  20. package/dist/DateTimeUtils.d.ts +0 -8
  21. package/dist/DateTimeUtils.js +0 -27
  22. package/dist/DecoderPlugin.d.ts +0 -18
  23. package/dist/DecoderPlugin.js +0 -71
  24. package/dist/DecoderPluginInterface.d.ts +0 -7
  25. package/dist/DecoderPluginInterface.js +0 -3
  26. package/dist/IcaoDecoder.d.ts +0 -10
  27. package/dist/IcaoDecoder.js +0 -111
  28. package/dist/MessageDecoder.d.ts +0 -14
  29. package/dist/MessageDecoder.js +0 -129
  30. package/dist/bin/acars-decoder-test.d.ts +0 -2
  31. package/dist/bin/acars-decoder-test.js +0 -53
  32. package/dist/bin/acars-decoder.d.ts +0 -2
  33. package/dist/bin/acars-decoder.js +0 -20
  34. package/dist/index.d.ts +0 -4
  35. package/dist/index.js +0 -20
  36. package/dist/plugins/Label_15.d.ts +0 -11
  37. package/dist/plugins/Label_15.js +0 -40
  38. package/dist/plugins/Label_16_N_Space.d.ts +0 -11
  39. package/dist/plugins/Label_16_N_Space.js +0 -80
  40. package/dist/plugins/Label_16_N_Space.test.d.ts +0 -1
  41. package/dist/plugins/Label_16_N_Space.test.js +0 -84
  42. package/dist/plugins/Label_1M_Slash.d.ts +0 -11
  43. package/dist/plugins/Label_1M_Slash.js +0 -61
  44. package/dist/plugins/Label_1M_Slash.test.d.ts +0 -1
  45. package/dist/plugins/Label_1M_Slash.test.js +0 -43
  46. package/dist/plugins/Label_20_CFB.01.d.ts +0 -11
  47. package/dist/plugins/Label_20_CFB.01.js +0 -69
  48. package/dist/plugins/Label_20_POS.d.ts +0 -11
  49. package/dist/plugins/Label_20_POS.js +0 -62
  50. package/dist/plugins/Label_30_Slash_EA.d.ts +0 -11
  51. package/dist/plugins/Label_30_Slash_EA.js +0 -54
  52. package/dist/plugins/Label_30_Slash_EA.test.d.ts +0 -1
  53. package/dist/plugins/Label_30_Slash_EA.test.js +0 -35
  54. package/dist/plugins/Label_44_ETA.d.ts +0 -11
  55. package/dist/plugins/Label_44_ETA.js +0 -69
  56. package/dist/plugins/Label_44_IN.d.ts +0 -11
  57. package/dist/plugins/Label_44_IN.js +0 -69
  58. package/dist/plugins/Label_44_OFF.d.ts +0 -11
  59. package/dist/plugins/Label_44_OFF.js +0 -74
  60. package/dist/plugins/Label_44_ON.d.ts +0 -11
  61. package/dist/plugins/Label_44_ON.js +0 -69
  62. package/dist/plugins/Label_44_POS.d.ts +0 -11
  63. package/dist/plugins/Label_44_POS.js +0 -81
  64. package/dist/plugins/Label_5Z.d.ts +0 -11
  65. package/dist/plugins/Label_5Z.js +0 -120
  66. package/dist/plugins/Label_80.d.ts +0 -12
  67. package/dist/plugins/Label_80.js +0 -203
  68. package/dist/plugins/Label_8E.d.ts +0 -10
  69. package/dist/plugins/Label_8E.js +0 -48
  70. package/dist/plugins/Label_8E.test.d.ts +0 -1
  71. package/dist/plugins/Label_8E.test.js +0 -32
  72. package/dist/plugins/Label_B6.d.ts +0 -11
  73. package/dist/plugins/Label_B6.js +0 -26
  74. package/dist/plugins/Label_ColonComma.d.ts +0 -10
  75. package/dist/plugins/Label_ColonComma.js +0 -28
  76. package/dist/plugins/Label_H1.d.ts +0 -9
  77. package/dist/plugins/Label_H1.js +0 -18
  78. package/dist/plugins/Label_H1_M1BPOS.d.ts +0 -11
  79. package/dist/plugins/Label_H1_M1BPOS.js +0 -54
  80. package/dist/plugins/Label_H1_M1BPRG.d.ts +0 -11
  81. package/dist/plugins/Label_H1_M1BPRG.js +0 -36
  82. package/dist/plugins/Label_QP.d.ts +0 -10
  83. package/dist/plugins/Label_QP.js +0 -49
  84. package/dist/plugins/Label_QQ.d.ts +0 -10
  85. package/dist/plugins/Label_QQ.js +0 -49
  86. package/dist/plugins/Label_QR.d.ts +0 -10
  87. package/dist/plugins/Label_QR.js +0 -49
  88. package/dist/plugins/Label_QS.d.ts +0 -10
  89. package/dist/plugins/Label_QS.js +0 -49
  90. package/dist/plugins/Label_SQ.d.ts +0 -10
  91. package/dist/plugins/Label_SQ.js +0 -104
  92. package/dist/plugins/official.d.ts +0 -22
  93. package/dist/plugins/official.js +0 -38
  94. package/src/DateTimeUtils.ts +0 -26
  95. package/src/DecoderPlugin.ts +0 -83
  96. package/src/DecoderPluginInterface.ts +0 -9
  97. package/src/IcaoDecoder.ts +0 -137
  98. package/src/MessageDecoder.ts +0 -117
  99. package/src/bin/acars-decoder-test.ts +0 -67
  100. package/src/bin/acars-decoder.ts +0 -23
  101. package/src/index.d.ts +0 -15
  102. package/src/index.ts +0 -4
  103. package/src/plugins/Label_15.ts +0 -45
  104. package/src/plugins/Label_16_N_Space.test.ts +0 -94
  105. package/src/plugins/Label_16_N_Space.ts +0 -91
  106. package/src/plugins/Label_1M_Slash.test.ts +0 -45
  107. package/src/plugins/Label_1M_Slash.ts +0 -69
  108. package/src/plugins/Label_20_CFB.01.ts +0 -81
  109. package/src/plugins/Label_20_POS.ts +0 -68
  110. package/src/plugins/Label_30_Slash_EA.test.ts +0 -37
  111. package/src/plugins/Label_30_Slash_EA.ts +0 -60
  112. package/src/plugins/Label_44_ETA.ts +0 -81
  113. package/src/plugins/Label_44_IN.ts +0 -81
  114. package/src/plugins/Label_44_OFF.ts +0 -88
  115. package/src/plugins/Label_44_ON.ts +0 -81
  116. package/src/plugins/Label_44_POS.ts +0 -96
  117. package/src/plugins/Label_5Z.ts +0 -125
  118. package/src/plugins/Label_80.ts +0 -215
  119. package/src/plugins/Label_8E.test.ts +0 -34
  120. package/src/plugins/Label_8E.ts +0 -55
  121. package/src/plugins/Label_B6.ts +0 -28
  122. package/src/plugins/Label_ColonComma.ts +0 -32
  123. package/src/plugins/Label_H1.ts +0 -18
  124. package/src/plugins/Label_H1_M1BPOS.ts +0 -60
  125. package/src/plugins/Label_H1_M1BPRG.ts +0 -40
  126. package/src/plugins/Label_QP.ts +0 -54
  127. package/src/plugins/Label_QQ.ts +0 -54
  128. package/src/plugins/Label_QR.ts +0 -54
  129. package/src/plugins/Label_QS.ts +0 -54
  130. package/src/plugins/Label_SQ.ts +0 -111
  131. 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;
@@ -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 = {};
@@ -1,9 +0,0 @@
1
- import { DecoderPlugin } from '../DecoderPlugin';
2
- export declare class Label_H1 extends DecoderPlugin {
3
- qualifiers(): {
4
- labels: string[];
5
- };
6
- decode(message: any, options?: any): any;
7
- }
8
- declare const _default: {};
9
- export default _default;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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';