@airframes/acars-decoder 1.6.14 → 1.6.15
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/dist/index.js +175 -99
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +175 -99
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -38,10 +38,13 @@ var DateTimeUtils = class {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
*
|
|
41
|
-
* @param time HHMMSS
|
|
41
|
+
* @param time HHMMSS or HHMM
|
|
42
42
|
* @returns seconds since midnight
|
|
43
43
|
*/
|
|
44
44
|
static convertHHMMSSToTod(time) {
|
|
45
|
+
if (time.length === 4) {
|
|
46
|
+
time += "00";
|
|
47
|
+
}
|
|
45
48
|
const h = Number(time.substring(0, 2));
|
|
46
49
|
const m = Number(time.substring(2, 4));
|
|
47
50
|
const s = Number(time.substring(4, 6));
|
|
@@ -566,27 +569,36 @@ var ResultFormatter = class {
|
|
|
566
569
|
});
|
|
567
570
|
}
|
|
568
571
|
static day(decodeResult, day) {
|
|
569
|
-
decodeResult.raw.
|
|
572
|
+
decodeResult.raw.day = day;
|
|
570
573
|
decodeResult.formatted.items.push({
|
|
571
|
-
type: "
|
|
574
|
+
type: "day",
|
|
572
575
|
code: "MSG_DAY",
|
|
573
576
|
label: "Day of Month",
|
|
574
577
|
value: `${day}`
|
|
575
578
|
});
|
|
576
579
|
}
|
|
580
|
+
static month(decodeResult, month) {
|
|
581
|
+
decodeResult.raw.month = month;
|
|
582
|
+
decodeResult.formatted.items.push({
|
|
583
|
+
type: "month",
|
|
584
|
+
code: "MSG_MON",
|
|
585
|
+
label: "Month of Year",
|
|
586
|
+
value: `${month}`
|
|
587
|
+
});
|
|
588
|
+
}
|
|
577
589
|
static departureDay(decodeResult, day) {
|
|
578
|
-
decodeResult.raw.
|
|
590
|
+
decodeResult.raw.departure_day = day;
|
|
579
591
|
decodeResult.formatted.items.push({
|
|
580
|
-
type: "
|
|
592
|
+
type: "day",
|
|
581
593
|
code: "DEP_DAY",
|
|
582
594
|
label: "Departure Day",
|
|
583
595
|
value: `${day}`
|
|
584
596
|
});
|
|
585
597
|
}
|
|
586
598
|
static arrivalDay(decodeResult, day) {
|
|
587
|
-
decodeResult.raw.
|
|
599
|
+
decodeResult.raw.arrival_day = day;
|
|
588
600
|
decodeResult.formatted.items.push({
|
|
589
|
-
type: "
|
|
601
|
+
type: "day",
|
|
590
602
|
code: "ARR_DAY",
|
|
591
603
|
label: "Arrival Day",
|
|
592
604
|
value: `${day}`
|
|
@@ -681,14 +693,14 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
681
693
|
const info = data[2].split(" ");
|
|
682
694
|
ResultFormatter.departureAirport(decodeResult, info[1]);
|
|
683
695
|
ResultFormatter.arrivalAirport(decodeResult, info[2]);
|
|
684
|
-
decodeResult.raw.
|
|
696
|
+
decodeResult.raw.day = Number(info[3]);
|
|
685
697
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(info[4]));
|
|
686
698
|
ResultFormatter.arrivalRunway(decodeResult, info[5].slice(1));
|
|
687
699
|
ResultFormatter.unknownArr(decodeResult, data.slice(3), "/");
|
|
688
700
|
} else if (type === "B3") {
|
|
689
701
|
ResultFormatter.departureAirport(decodeResult, header[1].substring(0, 3), "IATA");
|
|
690
702
|
ResultFormatter.arrivalAirport(decodeResult, header[1].substring(3), "IATA");
|
|
691
|
-
decodeResult.raw.
|
|
703
|
+
decodeResult.raw.day = Number(header[2]);
|
|
692
704
|
ResultFormatter.arrivalRunway(decodeResult, header[3].slice(1));
|
|
693
705
|
if (header.length > 4) {
|
|
694
706
|
ResultFormatter.unknownArr(decodeResult, header.slice(4), "/");
|
|
@@ -697,7 +709,7 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
697
709
|
const info = data[2].split(" ");
|
|
698
710
|
ResultFormatter.departureAirport(decodeResult, info[1]);
|
|
699
711
|
ResultFormatter.arrivalAirport(decodeResult, info[2]);
|
|
700
|
-
decodeResult.raw.
|
|
712
|
+
decodeResult.raw.day = Number(info[3]);
|
|
701
713
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(info[4]));
|
|
702
714
|
ResultFormatter.unknownArr(decodeResult, info.slice(5), " ");
|
|
703
715
|
} else if (type === "C3") {
|
|
@@ -707,10 +719,10 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
707
719
|
const airports = data[2].split(" ");
|
|
708
720
|
ResultFormatter.departureAirport(decodeResult, airports[1]);
|
|
709
721
|
ResultFormatter.arrivalAirport(decodeResult, airports[2]);
|
|
710
|
-
decodeResult.raw.
|
|
722
|
+
decodeResult.raw.day = Number(airports[3]);
|
|
711
723
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(airports[4]));
|
|
712
724
|
const estimates = data[3].split(" ");
|
|
713
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(estimates[1]
|
|
725
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(estimates[1]));
|
|
714
726
|
ResultFormatter.unknown(decodeResult, estimates[2]);
|
|
715
727
|
} else {
|
|
716
728
|
if (options.debug) {
|
|
@@ -854,16 +866,16 @@ var Label_10_Slash = class extends DecoderPlugin {
|
|
|
854
866
|
ResultFormatter.heading(decodeResult, Number(parts[5]));
|
|
855
867
|
ResultFormatter.altitude(decodeResult, 100 * Number(parts[6]));
|
|
856
868
|
ResultFormatter.arrivalAirport(decodeResult, parts[7]);
|
|
857
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[8]
|
|
869
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[8]));
|
|
858
870
|
const waypoints = [{
|
|
859
871
|
name: parts[11]
|
|
860
872
|
}, {
|
|
861
873
|
name: parts[12],
|
|
862
|
-
time: DateTimeUtils.convertHHMMSSToTod(parts[13]
|
|
874
|
+
time: DateTimeUtils.convertHHMMSSToTod(parts[13]),
|
|
863
875
|
timeFormat: "tod"
|
|
864
876
|
}, {
|
|
865
877
|
name: parts[14],
|
|
866
|
-
time: DateTimeUtils.convertHHMMSSToTod(parts[15]
|
|
878
|
+
time: DateTimeUtils.convertHHMMSSToTod(parts[15]),
|
|
867
879
|
timeFormat: "tod"
|
|
868
880
|
}];
|
|
869
881
|
ResultFormatter.route(decodeResult, { waypoints });
|
|
@@ -883,7 +895,7 @@ var Label_12_N_Space = class extends DecoderPlugin {
|
|
|
883
895
|
qualifiers() {
|
|
884
896
|
return {
|
|
885
897
|
labels: ["12"],
|
|
886
|
-
preambles: ["N "]
|
|
898
|
+
preambles: ["N ", "S "]
|
|
887
899
|
};
|
|
888
900
|
}
|
|
889
901
|
decode(message, options = {}) {
|
|
@@ -949,7 +961,7 @@ var Label_13Through18_Slash = class extends DecoderPlugin {
|
|
|
949
961
|
const data = parts[2].split(" ");
|
|
950
962
|
ResultFormatter.departureAirport(decodeResult, data[1]);
|
|
951
963
|
ResultFormatter.arrivalAirport(decodeResult, data[2]);
|
|
952
|
-
decodeResult.raw.
|
|
964
|
+
decodeResult.raw.day = Number(data[3]);
|
|
953
965
|
const time = DateTimeUtils.convertHHMMSSToTod(data[4]);
|
|
954
966
|
if (labelNumber === 13) {
|
|
955
967
|
ResultFormatter.out(decodeResult, time);
|
|
@@ -1009,7 +1021,7 @@ function getMsgType(labelNumber) {
|
|
|
1009
1021
|
|
|
1010
1022
|
// lib/plugins/Label_15.ts
|
|
1011
1023
|
var Label_15 = class extends DecoderPlugin {
|
|
1012
|
-
name = "label-
|
|
1024
|
+
name = "label-15";
|
|
1013
1025
|
qualifiers() {
|
|
1014
1026
|
return {
|
|
1015
1027
|
labels: ["15"],
|
|
@@ -1020,10 +1032,28 @@ var Label_15 = class extends DecoderPlugin {
|
|
|
1020
1032
|
const decodeResult = this.defaultResult();
|
|
1021
1033
|
decodeResult.decoder.name = this.name;
|
|
1022
1034
|
decodeResult.formatted.description = "Position Report";
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1035
|
+
decodeResult.message = message;
|
|
1036
|
+
if (message.text.startsWith("(2") && message.text.endsWith("(Z")) {
|
|
1037
|
+
const between = message.text.substring(2, message.text.length - 2);
|
|
1038
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(between.substring(0, 13)));
|
|
1039
|
+
if (between.length === 25) {
|
|
1040
|
+
ResultFormatter.unknown(decodeResult, between.substring(13, 19));
|
|
1041
|
+
const alt = between.substring(19, 22);
|
|
1042
|
+
if (alt != "---") {
|
|
1043
|
+
ResultFormatter.altitude(decodeResult, 100 * Number(alt));
|
|
1044
|
+
}
|
|
1045
|
+
ResultFormatter.temperature(decodeResult, between.substring(22).replace(" ", "0"));
|
|
1046
|
+
} else {
|
|
1047
|
+
ResultFormatter.unknown(decodeResult, between.substring(13));
|
|
1048
|
+
}
|
|
1049
|
+
} else {
|
|
1050
|
+
if (options.debug) {
|
|
1051
|
+
console.log(`Decoder: Unknown 15 message: ${message.text}`);
|
|
1052
|
+
}
|
|
1053
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1054
|
+
decodeResult.decoded = false;
|
|
1055
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1056
|
+
return decodeResult;
|
|
1027
1057
|
}
|
|
1028
1058
|
decodeResult.decoded = true;
|
|
1029
1059
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1076,7 +1106,7 @@ var Label_16_N_Space = class extends DecoderPlugin {
|
|
|
1076
1106
|
qualifiers() {
|
|
1077
1107
|
return {
|
|
1078
1108
|
labels: ["16"],
|
|
1079
|
-
preambles: ["N "]
|
|
1109
|
+
preambles: ["N ", "S "]
|
|
1080
1110
|
};
|
|
1081
1111
|
}
|
|
1082
1112
|
decode(message, options = {}) {
|
|
@@ -1206,7 +1236,7 @@ var Label_1L_3Line = class extends DecoderPlugin {
|
|
|
1206
1236
|
}
|
|
1207
1237
|
const eta = data.get("ETA");
|
|
1208
1238
|
if (eta) {
|
|
1209
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta
|
|
1239
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta));
|
|
1210
1240
|
data.delete("ETA");
|
|
1211
1241
|
}
|
|
1212
1242
|
const alt = data.get("ALT");
|
|
@@ -1287,8 +1317,8 @@ var Label_1L_070 = class extends DecoderPlugin {
|
|
|
1287
1317
|
}
|
|
1288
1318
|
ResultFormatter.departureAirport(decodeResult, parts[0]);
|
|
1289
1319
|
ResultFormatter.arrivalAirport(decodeResult, parts[1]);
|
|
1290
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[2]
|
|
1291
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[3]
|
|
1320
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[2]));
|
|
1321
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[3]));
|
|
1292
1322
|
ResultFormatter.position(decodeResult, {
|
|
1293
1323
|
latitude: CoordinateUtils.getDirection(parts[4][0]) * Number(parts[4].substring(1)),
|
|
1294
1324
|
longitude: CoordinateUtils.getDirection(parts[5][0]) * Number(parts[5].substring(1))
|
|
@@ -1408,7 +1438,7 @@ var Label_1L_Slash = class extends DecoderPlugin {
|
|
|
1408
1438
|
}
|
|
1409
1439
|
const eta = data.get("ETA");
|
|
1410
1440
|
if (eta) {
|
|
1411
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta
|
|
1441
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta));
|
|
1412
1442
|
data.delete("ETA");
|
|
1413
1443
|
}
|
|
1414
1444
|
let remaining = "";
|
|
@@ -1542,7 +1572,7 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1542
1572
|
ResultFormatter.flightNumber(decodeResult, fields[0]);
|
|
1543
1573
|
ResultFormatter.departureDay(decodeResult, Number(fields[1].substring(0, 2)));
|
|
1544
1574
|
ResultFormatter.arrivalDay(decodeResult, Number(fields[1].substring(2, 4)));
|
|
1545
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(4, 8)
|
|
1575
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(4, 8)));
|
|
1546
1576
|
ResultFormatter.departureAirport(decodeResult, fields[1].substring(8, 12));
|
|
1547
1577
|
ResultFormatter.arrivalAirport(decodeResult, fields[1].substring(12, 16));
|
|
1548
1578
|
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 22)));
|
|
@@ -1558,7 +1588,7 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1558
1588
|
}
|
|
1559
1589
|
ResultFormatter.departureAirport(decodeResult, fields[0]);
|
|
1560
1590
|
ResultFormatter.arrivalAirport(decodeResult, fields[1]);
|
|
1561
|
-
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[2]
|
|
1591
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[2]));
|
|
1562
1592
|
ResultFormatter.unknown(decodeResult, fields[3]);
|
|
1563
1593
|
decodeResult.decoded = true;
|
|
1564
1594
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1575,12 +1605,12 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1575
1605
|
ResultFormatter.position(decodeResult, position);
|
|
1576
1606
|
}
|
|
1577
1607
|
ResultFormatter.day(decodeResult, Number(fields[1].substring(14, 16)));
|
|
1578
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 20)
|
|
1608
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 20)));
|
|
1579
1609
|
ResultFormatter.departureAirport(decodeResult, fields[1].substring(20, 24));
|
|
1580
1610
|
ResultFormatter.arrivalAirport(decodeResult, fields[1].substring(24, 28));
|
|
1581
|
-
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(28, 32)
|
|
1611
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(28, 32)));
|
|
1582
1612
|
ResultFormatter.unknown(decodeResult, fields[1].substring(32, 36));
|
|
1583
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(36, 40)
|
|
1613
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(36, 40)));
|
|
1584
1614
|
decodeResult.decoded = true;
|
|
1585
1615
|
decodeResult.decoder.decodeLevel = "partial";
|
|
1586
1616
|
} else {
|
|
@@ -1662,7 +1692,7 @@ var Label_24_Slash = class extends DecoderPlugin {
|
|
|
1662
1692
|
longitude: (lon[0] === "E" ? 1 : -1) * Number(lon.substring(1))
|
|
1663
1693
|
};
|
|
1664
1694
|
ResultFormatter.position(decodeResult, position);
|
|
1665
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[8]
|
|
1695
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[8]));
|
|
1666
1696
|
ResultFormatter.unknown(decodeResult, fields[7]);
|
|
1667
1697
|
decodeResult.decoded = true;
|
|
1668
1698
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1698,7 +1728,7 @@ var Label_30_Slash_EA = class extends DecoderPlugin {
|
|
|
1698
1728
|
console.log(results);
|
|
1699
1729
|
}
|
|
1700
1730
|
}
|
|
1701
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results[0].substr(2, 4)
|
|
1731
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results[0].substr(2, 4)));
|
|
1702
1732
|
if (results[1].substring(0, 2) === "DS") {
|
|
1703
1733
|
ResultFormatter.arrivalAirport(decodeResult, results[1].substring(2, 6));
|
|
1704
1734
|
ResultFormatter.unknown(decodeResult, "/".concat(results[2]));
|
|
@@ -1725,22 +1755,35 @@ var Label_44_ETA = class extends DecoderPlugin {
|
|
|
1725
1755
|
decodeResult.decoder.name = this.name;
|
|
1726
1756
|
decodeResult.formatted.description = "ETA Report";
|
|
1727
1757
|
decodeResult.message = message;
|
|
1728
|
-
const
|
|
1729
|
-
|
|
1730
|
-
if (results?.groups) {
|
|
1758
|
+
const data = message.text.split(",");
|
|
1759
|
+
if (data.length >= 9) {
|
|
1731
1760
|
if (options.debug) {
|
|
1732
1761
|
console.log(`Label 44 ETA Report: groups`);
|
|
1733
|
-
console.log(
|
|
1762
|
+
console.log(data);
|
|
1734
1763
|
}
|
|
1735
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1736
|
-
ResultFormatter.
|
|
1737
|
-
ResultFormatter.
|
|
1738
|
-
decodeResult
|
|
1739
|
-
|
|
1740
|
-
);
|
|
1741
|
-
|
|
1742
|
-
|
|
1764
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1765
|
+
ResultFormatter.altitude(decodeResult, 100 * Number(data[2]));
|
|
1766
|
+
ResultFormatter.departureAirport(decodeResult, data[3]);
|
|
1767
|
+
ResultFormatter.arrivalAirport(decodeResult, data[4]);
|
|
1768
|
+
ResultFormatter.month(decodeResult, Number(data[5].substring(0, 2)));
|
|
1769
|
+
ResultFormatter.day(decodeResult, Number(data[5].substring(2, 4)));
|
|
1770
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[6]));
|
|
1771
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[7]));
|
|
1772
|
+
const fuel = Number(data[8]);
|
|
1773
|
+
if (!isNaN(fuel)) {
|
|
1774
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1743
1775
|
}
|
|
1776
|
+
if (data.length > 9) {
|
|
1777
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(9));
|
|
1778
|
+
}
|
|
1779
|
+
} else {
|
|
1780
|
+
if (options.debug) {
|
|
1781
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1782
|
+
}
|
|
1783
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1784
|
+
decodeResult.decoded = false;
|
|
1785
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1786
|
+
return decodeResult;
|
|
1744
1787
|
}
|
|
1745
1788
|
decodeResult.decoded = true;
|
|
1746
1789
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1762,22 +1805,33 @@ var Label_44_IN = class extends DecoderPlugin {
|
|
|
1762
1805
|
decodeResult.decoder.name = this.name;
|
|
1763
1806
|
decodeResult.formatted.description = "In Air Report";
|
|
1764
1807
|
decodeResult.message = message;
|
|
1765
|
-
const
|
|
1766
|
-
|
|
1767
|
-
if (results?.groups) {
|
|
1808
|
+
const data = message.text.split(",");
|
|
1809
|
+
if (data.length >= 7) {
|
|
1768
1810
|
if (options.debug) {
|
|
1769
1811
|
console.log(`Label 44 In Air Report: groups`);
|
|
1770
|
-
console.log(
|
|
1812
|
+
console.log(data);
|
|
1771
1813
|
}
|
|
1772
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1773
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1774
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1775
|
-
decodeResult
|
|
1776
|
-
|
|
1777
|
-
);
|
|
1778
|
-
|
|
1779
|
-
|
|
1814
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1815
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1816
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1817
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1818
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1819
|
+
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1820
|
+
const fuel = Number(data[6]);
|
|
1821
|
+
if (!isNaN(fuel)) {
|
|
1822
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1823
|
+
}
|
|
1824
|
+
if (data.length > 7) {
|
|
1825
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(7));
|
|
1780
1826
|
}
|
|
1827
|
+
} else {
|
|
1828
|
+
if (options.debug) {
|
|
1829
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1830
|
+
}
|
|
1831
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1832
|
+
decodeResult.decoded = false;
|
|
1833
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1834
|
+
return decodeResult;
|
|
1781
1835
|
}
|
|
1782
1836
|
decodeResult.decoded = true;
|
|
1783
1837
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1799,25 +1853,34 @@ var Label_44_OFF = class extends DecoderPlugin {
|
|
|
1799
1853
|
decodeResult.decoder.name = this.name;
|
|
1800
1854
|
decodeResult.formatted.description = "Off Runway Report";
|
|
1801
1855
|
decodeResult.message = message;
|
|
1802
|
-
const
|
|
1803
|
-
|
|
1804
|
-
if (results?.groups) {
|
|
1856
|
+
const data = message.text.split(",");
|
|
1857
|
+
if (data.length >= 8) {
|
|
1805
1858
|
if (options.debug) {
|
|
1806
1859
|
console.log(`Label 44 Off Runway Report: groups`);
|
|
1807
|
-
console.log(
|
|
1860
|
+
console.log(data);
|
|
1808
1861
|
}
|
|
1809
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1810
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1811
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1812
|
-
decodeResult
|
|
1813
|
-
|
|
1814
|
-
);
|
|
1815
|
-
decodeResult
|
|
1816
|
-
|
|
1817
|
-
)
|
|
1818
|
-
|
|
1819
|
-
|
|
1862
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1863
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1864
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1865
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1866
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1867
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1868
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[6]));
|
|
1869
|
+
const fuel = Number(data[7]);
|
|
1870
|
+
if (!isNaN(fuel)) {
|
|
1871
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1872
|
+
}
|
|
1873
|
+
if (data.length > 8) {
|
|
1874
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(8));
|
|
1820
1875
|
}
|
|
1876
|
+
} else {
|
|
1877
|
+
if (options.debug) {
|
|
1878
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1879
|
+
}
|
|
1880
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1881
|
+
decodeResult.decoded = false;
|
|
1882
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1883
|
+
return decodeResult;
|
|
1821
1884
|
}
|
|
1822
1885
|
decodeResult.decoded = true;
|
|
1823
1886
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1839,22 +1902,33 @@ var Label_44_ON = class extends DecoderPlugin {
|
|
|
1839
1902
|
decodeResult.decoder.name = this.name;
|
|
1840
1903
|
decodeResult.formatted.description = "On Runway Report";
|
|
1841
1904
|
decodeResult.message = message;
|
|
1842
|
-
const
|
|
1843
|
-
|
|
1844
|
-
if (results?.groups) {
|
|
1905
|
+
const data = message.text.split(",");
|
|
1906
|
+
if (data.length >= 7) {
|
|
1845
1907
|
if (options.debug) {
|
|
1846
1908
|
console.log(`Label 44 On Runway Report: groups`);
|
|
1847
|
-
console.log(
|
|
1909
|
+
console.log(data);
|
|
1848
1910
|
}
|
|
1849
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1850
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1851
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1852
|
-
decodeResult
|
|
1853
|
-
|
|
1854
|
-
);
|
|
1855
|
-
|
|
1856
|
-
|
|
1911
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1912
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1913
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1914
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1915
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1916
|
+
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1917
|
+
const fuel = Number(data[6]);
|
|
1918
|
+
if (!isNaN(fuel)) {
|
|
1919
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1857
1920
|
}
|
|
1921
|
+
if (data.length > 7) {
|
|
1922
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(7));
|
|
1923
|
+
}
|
|
1924
|
+
} else {
|
|
1925
|
+
if (options.debug) {
|
|
1926
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1927
|
+
}
|
|
1928
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1929
|
+
decodeResult.decoded = false;
|
|
1930
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1931
|
+
return decodeResult;
|
|
1858
1932
|
}
|
|
1859
1933
|
decodeResult.decoded = true;
|
|
1860
1934
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -2313,9 +2387,11 @@ var H1Helper = class {
|
|
|
2313
2387
|
ResultFormatter.freetext(decodeResult, fields[i].substring(2));
|
|
2314
2388
|
} else if (fields[i].startsWith("ET")) {
|
|
2315
2389
|
if (fields[i].length === 7) {
|
|
2316
|
-
ResultFormatter.
|
|
2390
|
+
ResultFormatter.day(decodeResult, Number(fields[i].substring(2, 3)));
|
|
2391
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[i].substring(3)));
|
|
2317
2392
|
} else if (fields[i].length === 8) {
|
|
2318
|
-
ResultFormatter.
|
|
2393
|
+
ResultFormatter.day(decodeResult, Number(fields[i].substring(2, 4)));
|
|
2394
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[i].substring(4)));
|
|
2319
2395
|
} else {
|
|
2320
2396
|
ResultFormatter.unknown(decodeResult, fields[i], "/");
|
|
2321
2397
|
}
|
|
@@ -2575,7 +2651,7 @@ var Label_4N = class extends DecoderPlugin {
|
|
|
2575
2651
|
decodeResult.decoded = true;
|
|
2576
2652
|
const fields = text.split(",");
|
|
2577
2653
|
if (text.length === 51) {
|
|
2578
|
-
decodeResult.raw.
|
|
2654
|
+
decodeResult.raw.day = text.substring(0, 2);
|
|
2579
2655
|
ResultFormatter.departureAirport(decodeResult, text.substring(8, 11));
|
|
2580
2656
|
ResultFormatter.arrivalAirport(decodeResult, text.substring(13, 16));
|
|
2581
2657
|
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(text.substring(30, 45).replace(/^(.)0/, "$1")));
|
|
@@ -2789,7 +2865,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2789
2865
|
if (text.substring(0, 10) === "4DH3 ETAT2") {
|
|
2790
2866
|
const fields = text.split(/\s+/);
|
|
2791
2867
|
if (fields[2].length > 5) {
|
|
2792
|
-
decodeResult.raw.
|
|
2868
|
+
decodeResult.raw.day = fields[2].substring(5);
|
|
2793
2869
|
}
|
|
2794
2870
|
ResultFormatter.unknown(decodeResult, fields[2].substring(0, 4));
|
|
2795
2871
|
const subfields = fields[3].split("/");
|
|
@@ -2798,7 +2874,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2798
2874
|
ResultFormatter.tail(decodeResult, fields[4].replace(/\./g, ""));
|
|
2799
2875
|
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[6] + "00"));
|
|
2800
2876
|
} else if (text.substring(0, 5) === "001PR") {
|
|
2801
|
-
decodeResult.raw.
|
|
2877
|
+
decodeResult.raw.day = text.substring(5, 7);
|
|
2802
2878
|
const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(text.substring(13, 28).replace(/\./g, ""));
|
|
2803
2879
|
if (position) {
|
|
2804
2880
|
ResultFormatter.position(decodeResult, position);
|
|
@@ -2810,7 +2886,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2810
2886
|
if (fields.length === 9) {
|
|
2811
2887
|
ResultFormatter.departureAirport(decodeResult, fields[0]);
|
|
2812
2888
|
ResultFormatter.arrivalAirport(decodeResult, fields[1]);
|
|
2813
|
-
decodeResult.raw.
|
|
2889
|
+
decodeResult.raw.day = fields[2].substring(0, 2);
|
|
2814
2890
|
decodeResult.raw.time = fields[2].substring(2);
|
|
2815
2891
|
ResultFormatter.position(
|
|
2816
2892
|
decodeResult,
|
|
@@ -2860,7 +2936,7 @@ var Label_8E = class extends DecoderPlugin {
|
|
|
2860
2936
|
console.log(`Label 8E ETA: groups`);
|
|
2861
2937
|
console.log(results.groups);
|
|
2862
2938
|
}
|
|
2863
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results.groups.arrival_eta
|
|
2939
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results.groups.arrival_eta));
|
|
2864
2940
|
ResultFormatter.arrivalAirport(decodeResult, results.groups.arrival_icao);
|
|
2865
2941
|
}
|
|
2866
2942
|
decodeResult.decoded = true;
|
|
@@ -3072,9 +3148,9 @@ var Label_H1_StarPOS = class extends DecoderPlugin {
|
|
|
3072
3148
|
decodeResult.decoder.decodeLevel = "none";
|
|
3073
3149
|
return decodeResult;
|
|
3074
3150
|
}
|
|
3075
|
-
|
|
3076
|
-
decodeResult
|
|
3077
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(msg.substring(8, 12)
|
|
3151
|
+
ResultFormatter.month(decodeResult, Number(msg.substring(4, 6)));
|
|
3152
|
+
ResultFormatter.day(decodeResult, Number(msg.substring(6, 8)));
|
|
3153
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(msg.substring(8, 12)));
|
|
3078
3154
|
ResultFormatter.position(decodeResult, {
|
|
3079
3155
|
// Deg Min, no sec
|
|
3080
3156
|
latitude: CoordinateUtils.getDirection(msg.substring(12, 13)) * (Number(msg.substring(13, 15)) + Number(msg.substring(15, 17)) / 60),
|
|
@@ -3301,7 +3377,7 @@ var Label_QR = class extends DecoderPlugin {
|
|
|
3301
3377
|
decodeResult.formatted.description = "ON Report";
|
|
3302
3378
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3303
3379
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3304
|
-
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3380
|
+
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3305
3381
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3306
3382
|
decodeResult.decoded = true;
|
|
3307
3383
|
if (!decodeResult.remaining.text)
|
|
@@ -3326,7 +3402,7 @@ var Label_QP = class extends DecoderPlugin {
|
|
|
3326
3402
|
decodeResult.formatted.description = "OUT Report";
|
|
3327
3403
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3328
3404
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3329
|
-
ResultFormatter.out(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3405
|
+
ResultFormatter.out(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3330
3406
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3331
3407
|
decodeResult.decoded = true;
|
|
3332
3408
|
if (!decodeResult.remaining.text)
|
|
@@ -3351,7 +3427,7 @@ var Label_QS = class extends DecoderPlugin {
|
|
|
3351
3427
|
decodeResult.formatted.description = "IN Report";
|
|
3352
3428
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3353
3429
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3354
|
-
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3430
|
+
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3355
3431
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3356
3432
|
decodeResult.decoded = true;
|
|
3357
3433
|
if (!decodeResult.remaining.text)
|
|
@@ -3378,7 +3454,7 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
3378
3454
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3379
3455
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3380
3456
|
if (message.text.substring(12, 19) === "\r\n001FE") {
|
|
3381
|
-
decodeResult.raw.
|
|
3457
|
+
decodeResult.raw.day = message.text.substring(19, 21);
|
|
3382
3458
|
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(21, 27)));
|
|
3383
3459
|
let latdir = message.text.substring(27, 28);
|
|
3384
3460
|
let latdeg = Number(message.text.substring(28, 30));
|