@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.
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 +5 -13
  7. package/tsconfig.json +2 -2
  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,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 {};
@@ -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 {};
@@ -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 {};
@@ -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 {};
@@ -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 {};
@@ -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 {};
@@ -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 {};
@@ -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 {};
@@ -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';