@airframes/acars-decoder 1.4.7 → 1.6.1

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