@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.js
CHANGED
|
@@ -75,10 +75,13 @@ var DateTimeUtils = class {
|
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
*
|
|
78
|
-
* @param time HHMMSS
|
|
78
|
+
* @param time HHMMSS or HHMM
|
|
79
79
|
* @returns seconds since midnight
|
|
80
80
|
*/
|
|
81
81
|
static convertHHMMSSToTod(time) {
|
|
82
|
+
if (time.length === 4) {
|
|
83
|
+
time += "00";
|
|
84
|
+
}
|
|
82
85
|
const h = Number(time.substring(0, 2));
|
|
83
86
|
const m = Number(time.substring(2, 4));
|
|
84
87
|
const s = Number(time.substring(4, 6));
|
|
@@ -603,27 +606,36 @@ var ResultFormatter = class {
|
|
|
603
606
|
});
|
|
604
607
|
}
|
|
605
608
|
static day(decodeResult, day) {
|
|
606
|
-
decodeResult.raw.
|
|
609
|
+
decodeResult.raw.day = day;
|
|
607
610
|
decodeResult.formatted.items.push({
|
|
608
|
-
type: "
|
|
611
|
+
type: "day",
|
|
609
612
|
code: "MSG_DAY",
|
|
610
613
|
label: "Day of Month",
|
|
611
614
|
value: `${day}`
|
|
612
615
|
});
|
|
613
616
|
}
|
|
617
|
+
static month(decodeResult, month) {
|
|
618
|
+
decodeResult.raw.month = month;
|
|
619
|
+
decodeResult.formatted.items.push({
|
|
620
|
+
type: "month",
|
|
621
|
+
code: "MSG_MON",
|
|
622
|
+
label: "Month of Year",
|
|
623
|
+
value: `${month}`
|
|
624
|
+
});
|
|
625
|
+
}
|
|
614
626
|
static departureDay(decodeResult, day) {
|
|
615
|
-
decodeResult.raw.
|
|
627
|
+
decodeResult.raw.departure_day = day;
|
|
616
628
|
decodeResult.formatted.items.push({
|
|
617
|
-
type: "
|
|
629
|
+
type: "day",
|
|
618
630
|
code: "DEP_DAY",
|
|
619
631
|
label: "Departure Day",
|
|
620
632
|
value: `${day}`
|
|
621
633
|
});
|
|
622
634
|
}
|
|
623
635
|
static arrivalDay(decodeResult, day) {
|
|
624
|
-
decodeResult.raw.
|
|
636
|
+
decodeResult.raw.arrival_day = day;
|
|
625
637
|
decodeResult.formatted.items.push({
|
|
626
|
-
type: "
|
|
638
|
+
type: "day",
|
|
627
639
|
code: "ARR_DAY",
|
|
628
640
|
label: "Arrival Day",
|
|
629
641
|
value: `${day}`
|
|
@@ -718,14 +730,14 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
718
730
|
const info = data[2].split(" ");
|
|
719
731
|
ResultFormatter.departureAirport(decodeResult, info[1]);
|
|
720
732
|
ResultFormatter.arrivalAirport(decodeResult, info[2]);
|
|
721
|
-
decodeResult.raw.
|
|
733
|
+
decodeResult.raw.day = Number(info[3]);
|
|
722
734
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(info[4]));
|
|
723
735
|
ResultFormatter.arrivalRunway(decodeResult, info[5].slice(1));
|
|
724
736
|
ResultFormatter.unknownArr(decodeResult, data.slice(3), "/");
|
|
725
737
|
} else if (type === "B3") {
|
|
726
738
|
ResultFormatter.departureAirport(decodeResult, header[1].substring(0, 3), "IATA");
|
|
727
739
|
ResultFormatter.arrivalAirport(decodeResult, header[1].substring(3), "IATA");
|
|
728
|
-
decodeResult.raw.
|
|
740
|
+
decodeResult.raw.day = Number(header[2]);
|
|
729
741
|
ResultFormatter.arrivalRunway(decodeResult, header[3].slice(1));
|
|
730
742
|
if (header.length > 4) {
|
|
731
743
|
ResultFormatter.unknownArr(decodeResult, header.slice(4), "/");
|
|
@@ -734,7 +746,7 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
734
746
|
const info = data[2].split(" ");
|
|
735
747
|
ResultFormatter.departureAirport(decodeResult, info[1]);
|
|
736
748
|
ResultFormatter.arrivalAirport(decodeResult, info[2]);
|
|
737
|
-
decodeResult.raw.
|
|
749
|
+
decodeResult.raw.day = Number(info[3]);
|
|
738
750
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(info[4]));
|
|
739
751
|
ResultFormatter.unknownArr(decodeResult, info.slice(5), " ");
|
|
740
752
|
} else if (type === "C3") {
|
|
@@ -744,10 +756,10 @@ var Label_5Z_Slash = class extends DecoderPlugin {
|
|
|
744
756
|
const airports = data[2].split(" ");
|
|
745
757
|
ResultFormatter.departureAirport(decodeResult, airports[1]);
|
|
746
758
|
ResultFormatter.arrivalAirport(decodeResult, airports[2]);
|
|
747
|
-
decodeResult.raw.
|
|
759
|
+
decodeResult.raw.day = Number(airports[3]);
|
|
748
760
|
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(airports[4]));
|
|
749
761
|
const estimates = data[3].split(" ");
|
|
750
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(estimates[1]
|
|
762
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(estimates[1]));
|
|
751
763
|
ResultFormatter.unknown(decodeResult, estimates[2]);
|
|
752
764
|
} else {
|
|
753
765
|
if (options.debug) {
|
|
@@ -891,16 +903,16 @@ var Label_10_Slash = class extends DecoderPlugin {
|
|
|
891
903
|
ResultFormatter.heading(decodeResult, Number(parts[5]));
|
|
892
904
|
ResultFormatter.altitude(decodeResult, 100 * Number(parts[6]));
|
|
893
905
|
ResultFormatter.arrivalAirport(decodeResult, parts[7]);
|
|
894
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[8]
|
|
906
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[8]));
|
|
895
907
|
const waypoints = [{
|
|
896
908
|
name: parts[11]
|
|
897
909
|
}, {
|
|
898
910
|
name: parts[12],
|
|
899
|
-
time: DateTimeUtils.convertHHMMSSToTod(parts[13]
|
|
911
|
+
time: DateTimeUtils.convertHHMMSSToTod(parts[13]),
|
|
900
912
|
timeFormat: "tod"
|
|
901
913
|
}, {
|
|
902
914
|
name: parts[14],
|
|
903
|
-
time: DateTimeUtils.convertHHMMSSToTod(parts[15]
|
|
915
|
+
time: DateTimeUtils.convertHHMMSSToTod(parts[15]),
|
|
904
916
|
timeFormat: "tod"
|
|
905
917
|
}];
|
|
906
918
|
ResultFormatter.route(decodeResult, { waypoints });
|
|
@@ -920,7 +932,7 @@ var Label_12_N_Space = class extends DecoderPlugin {
|
|
|
920
932
|
qualifiers() {
|
|
921
933
|
return {
|
|
922
934
|
labels: ["12"],
|
|
923
|
-
preambles: ["N "]
|
|
935
|
+
preambles: ["N ", "S "]
|
|
924
936
|
};
|
|
925
937
|
}
|
|
926
938
|
decode(message, options = {}) {
|
|
@@ -986,7 +998,7 @@ var Label_13Through18_Slash = class extends DecoderPlugin {
|
|
|
986
998
|
const data = parts[2].split(" ");
|
|
987
999
|
ResultFormatter.departureAirport(decodeResult, data[1]);
|
|
988
1000
|
ResultFormatter.arrivalAirport(decodeResult, data[2]);
|
|
989
|
-
decodeResult.raw.
|
|
1001
|
+
decodeResult.raw.day = Number(data[3]);
|
|
990
1002
|
const time = DateTimeUtils.convertHHMMSSToTod(data[4]);
|
|
991
1003
|
if (labelNumber === 13) {
|
|
992
1004
|
ResultFormatter.out(decodeResult, time);
|
|
@@ -1046,7 +1058,7 @@ function getMsgType(labelNumber) {
|
|
|
1046
1058
|
|
|
1047
1059
|
// lib/plugins/Label_15.ts
|
|
1048
1060
|
var Label_15 = class extends DecoderPlugin {
|
|
1049
|
-
name = "label-
|
|
1061
|
+
name = "label-15";
|
|
1050
1062
|
qualifiers() {
|
|
1051
1063
|
return {
|
|
1052
1064
|
labels: ["15"],
|
|
@@ -1057,10 +1069,28 @@ var Label_15 = class extends DecoderPlugin {
|
|
|
1057
1069
|
const decodeResult = this.defaultResult();
|
|
1058
1070
|
decodeResult.decoder.name = this.name;
|
|
1059
1071
|
decodeResult.formatted.description = "Position Report";
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1072
|
+
decodeResult.message = message;
|
|
1073
|
+
if (message.text.startsWith("(2") && message.text.endsWith("(Z")) {
|
|
1074
|
+
const between = message.text.substring(2, message.text.length - 2);
|
|
1075
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(between.substring(0, 13)));
|
|
1076
|
+
if (between.length === 25) {
|
|
1077
|
+
ResultFormatter.unknown(decodeResult, between.substring(13, 19));
|
|
1078
|
+
const alt = between.substring(19, 22);
|
|
1079
|
+
if (alt != "---") {
|
|
1080
|
+
ResultFormatter.altitude(decodeResult, 100 * Number(alt));
|
|
1081
|
+
}
|
|
1082
|
+
ResultFormatter.temperature(decodeResult, between.substring(22).replace(" ", "0"));
|
|
1083
|
+
} else {
|
|
1084
|
+
ResultFormatter.unknown(decodeResult, between.substring(13));
|
|
1085
|
+
}
|
|
1086
|
+
} else {
|
|
1087
|
+
if (options.debug) {
|
|
1088
|
+
console.log(`Decoder: Unknown 15 message: ${message.text}`);
|
|
1089
|
+
}
|
|
1090
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1091
|
+
decodeResult.decoded = false;
|
|
1092
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1093
|
+
return decodeResult;
|
|
1064
1094
|
}
|
|
1065
1095
|
decodeResult.decoded = true;
|
|
1066
1096
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1113,7 +1143,7 @@ var Label_16_N_Space = class extends DecoderPlugin {
|
|
|
1113
1143
|
qualifiers() {
|
|
1114
1144
|
return {
|
|
1115
1145
|
labels: ["16"],
|
|
1116
|
-
preambles: ["N "]
|
|
1146
|
+
preambles: ["N ", "S "]
|
|
1117
1147
|
};
|
|
1118
1148
|
}
|
|
1119
1149
|
decode(message, options = {}) {
|
|
@@ -1243,7 +1273,7 @@ var Label_1L_3Line = class extends DecoderPlugin {
|
|
|
1243
1273
|
}
|
|
1244
1274
|
const eta = data.get("ETA");
|
|
1245
1275
|
if (eta) {
|
|
1246
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta
|
|
1276
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta));
|
|
1247
1277
|
data.delete("ETA");
|
|
1248
1278
|
}
|
|
1249
1279
|
const alt = data.get("ALT");
|
|
@@ -1324,8 +1354,8 @@ var Label_1L_070 = class extends DecoderPlugin {
|
|
|
1324
1354
|
}
|
|
1325
1355
|
ResultFormatter.departureAirport(decodeResult, parts[0]);
|
|
1326
1356
|
ResultFormatter.arrivalAirport(decodeResult, parts[1]);
|
|
1327
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[2]
|
|
1328
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[3]
|
|
1357
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[2]));
|
|
1358
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(parts[3]));
|
|
1329
1359
|
ResultFormatter.position(decodeResult, {
|
|
1330
1360
|
latitude: CoordinateUtils.getDirection(parts[4][0]) * Number(parts[4].substring(1)),
|
|
1331
1361
|
longitude: CoordinateUtils.getDirection(parts[5][0]) * Number(parts[5].substring(1))
|
|
@@ -1445,7 +1475,7 @@ var Label_1L_Slash = class extends DecoderPlugin {
|
|
|
1445
1475
|
}
|
|
1446
1476
|
const eta = data.get("ETA");
|
|
1447
1477
|
if (eta) {
|
|
1448
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta
|
|
1478
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(eta));
|
|
1449
1479
|
data.delete("ETA");
|
|
1450
1480
|
}
|
|
1451
1481
|
let remaining = "";
|
|
@@ -1579,7 +1609,7 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1579
1609
|
ResultFormatter.flightNumber(decodeResult, fields[0]);
|
|
1580
1610
|
ResultFormatter.departureDay(decodeResult, Number(fields[1].substring(0, 2)));
|
|
1581
1611
|
ResultFormatter.arrivalDay(decodeResult, Number(fields[1].substring(2, 4)));
|
|
1582
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(4, 8)
|
|
1612
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(4, 8)));
|
|
1583
1613
|
ResultFormatter.departureAirport(decodeResult, fields[1].substring(8, 12));
|
|
1584
1614
|
ResultFormatter.arrivalAirport(decodeResult, fields[1].substring(12, 16));
|
|
1585
1615
|
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 22)));
|
|
@@ -1595,7 +1625,7 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1595
1625
|
}
|
|
1596
1626
|
ResultFormatter.departureAirport(decodeResult, fields[0]);
|
|
1597
1627
|
ResultFormatter.arrivalAirport(decodeResult, fields[1]);
|
|
1598
|
-
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[2]
|
|
1628
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[2]));
|
|
1599
1629
|
ResultFormatter.unknown(decodeResult, fields[3]);
|
|
1600
1630
|
decodeResult.decoded = true;
|
|
1601
1631
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1612,12 +1642,12 @@ var Label_22_OFF = class extends DecoderPlugin {
|
|
|
1612
1642
|
ResultFormatter.position(decodeResult, position);
|
|
1613
1643
|
}
|
|
1614
1644
|
ResultFormatter.day(decodeResult, Number(fields[1].substring(14, 16)));
|
|
1615
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 20)
|
|
1645
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(16, 20)));
|
|
1616
1646
|
ResultFormatter.departureAirport(decodeResult, fields[1].substring(20, 24));
|
|
1617
1647
|
ResultFormatter.arrivalAirport(decodeResult, fields[1].substring(24, 28));
|
|
1618
|
-
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(28, 32)
|
|
1648
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(28, 32)));
|
|
1619
1649
|
ResultFormatter.unknown(decodeResult, fields[1].substring(32, 36));
|
|
1620
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(36, 40)
|
|
1650
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[1].substring(36, 40)));
|
|
1621
1651
|
decodeResult.decoded = true;
|
|
1622
1652
|
decodeResult.decoder.decodeLevel = "partial";
|
|
1623
1653
|
} else {
|
|
@@ -1699,7 +1729,7 @@ var Label_24_Slash = class extends DecoderPlugin {
|
|
|
1699
1729
|
longitude: (lon[0] === "E" ? 1 : -1) * Number(lon.substring(1))
|
|
1700
1730
|
};
|
|
1701
1731
|
ResultFormatter.position(decodeResult, position);
|
|
1702
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[8]
|
|
1732
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[8]));
|
|
1703
1733
|
ResultFormatter.unknown(decodeResult, fields[7]);
|
|
1704
1734
|
decodeResult.decoded = true;
|
|
1705
1735
|
decodeResult.decoder.decodeLevel = "partial";
|
|
@@ -1735,7 +1765,7 @@ var Label_30_Slash_EA = class extends DecoderPlugin {
|
|
|
1735
1765
|
console.log(results);
|
|
1736
1766
|
}
|
|
1737
1767
|
}
|
|
1738
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results[0].substr(2, 4)
|
|
1768
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results[0].substr(2, 4)));
|
|
1739
1769
|
if (results[1].substring(0, 2) === "DS") {
|
|
1740
1770
|
ResultFormatter.arrivalAirport(decodeResult, results[1].substring(2, 6));
|
|
1741
1771
|
ResultFormatter.unknown(decodeResult, "/".concat(results[2]));
|
|
@@ -1762,22 +1792,35 @@ var Label_44_ETA = class extends DecoderPlugin {
|
|
|
1762
1792
|
decodeResult.decoder.name = this.name;
|
|
1763
1793
|
decodeResult.formatted.description = "ETA Report";
|
|
1764
1794
|
decodeResult.message = message;
|
|
1765
|
-
const
|
|
1766
|
-
|
|
1767
|
-
if (results?.groups) {
|
|
1795
|
+
const data = message.text.split(",");
|
|
1796
|
+
if (data.length >= 9) {
|
|
1768
1797
|
if (options.debug) {
|
|
1769
1798
|
console.log(`Label 44 ETA Report: groups`);
|
|
1770
|
-
console.log(
|
|
1799
|
+
console.log(data);
|
|
1771
1800
|
}
|
|
1772
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1773
|
-
ResultFormatter.
|
|
1774
|
-
ResultFormatter.
|
|
1775
|
-
decodeResult
|
|
1776
|
-
|
|
1777
|
-
);
|
|
1778
|
-
|
|
1779
|
-
|
|
1801
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1802
|
+
ResultFormatter.altitude(decodeResult, 100 * Number(data[2]));
|
|
1803
|
+
ResultFormatter.departureAirport(decodeResult, data[3]);
|
|
1804
|
+
ResultFormatter.arrivalAirport(decodeResult, data[4]);
|
|
1805
|
+
ResultFormatter.month(decodeResult, Number(data[5].substring(0, 2)));
|
|
1806
|
+
ResultFormatter.day(decodeResult, Number(data[5].substring(2, 4)));
|
|
1807
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[6]));
|
|
1808
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[7]));
|
|
1809
|
+
const fuel = Number(data[8]);
|
|
1810
|
+
if (!isNaN(fuel)) {
|
|
1811
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1780
1812
|
}
|
|
1813
|
+
if (data.length > 9) {
|
|
1814
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(9));
|
|
1815
|
+
}
|
|
1816
|
+
} else {
|
|
1817
|
+
if (options.debug) {
|
|
1818
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1819
|
+
}
|
|
1820
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1821
|
+
decodeResult.decoded = false;
|
|
1822
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1823
|
+
return decodeResult;
|
|
1781
1824
|
}
|
|
1782
1825
|
decodeResult.decoded = true;
|
|
1783
1826
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1799,22 +1842,33 @@ var Label_44_IN = class extends DecoderPlugin {
|
|
|
1799
1842
|
decodeResult.decoder.name = this.name;
|
|
1800
1843
|
decodeResult.formatted.description = "In Air Report";
|
|
1801
1844
|
decodeResult.message = message;
|
|
1802
|
-
const
|
|
1803
|
-
|
|
1804
|
-
if (results?.groups) {
|
|
1845
|
+
const data = message.text.split(",");
|
|
1846
|
+
if (data.length >= 7) {
|
|
1805
1847
|
if (options.debug) {
|
|
1806
1848
|
console.log(`Label 44 In Air Report: groups`);
|
|
1807
|
-
console.log(
|
|
1849
|
+
console.log(data);
|
|
1808
1850
|
}
|
|
1809
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1810
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1811
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1812
|
-
decodeResult
|
|
1813
|
-
|
|
1814
|
-
);
|
|
1815
|
-
|
|
1816
|
-
|
|
1851
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1852
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1853
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1854
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1855
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1856
|
+
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1857
|
+
const fuel = Number(data[6]);
|
|
1858
|
+
if (!isNaN(fuel)) {
|
|
1859
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1860
|
+
}
|
|
1861
|
+
if (data.length > 7) {
|
|
1862
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(7));
|
|
1817
1863
|
}
|
|
1864
|
+
} else {
|
|
1865
|
+
if (options.debug) {
|
|
1866
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1867
|
+
}
|
|
1868
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1869
|
+
decodeResult.decoded = false;
|
|
1870
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1871
|
+
return decodeResult;
|
|
1818
1872
|
}
|
|
1819
1873
|
decodeResult.decoded = true;
|
|
1820
1874
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1836,25 +1890,34 @@ var Label_44_OFF = class extends DecoderPlugin {
|
|
|
1836
1890
|
decodeResult.decoder.name = this.name;
|
|
1837
1891
|
decodeResult.formatted.description = "Off Runway Report";
|
|
1838
1892
|
decodeResult.message = message;
|
|
1839
|
-
const
|
|
1840
|
-
|
|
1841
|
-
if (results?.groups) {
|
|
1893
|
+
const data = message.text.split(",");
|
|
1894
|
+
if (data.length >= 8) {
|
|
1842
1895
|
if (options.debug) {
|
|
1843
1896
|
console.log(`Label 44 Off Runway Report: groups`);
|
|
1844
|
-
console.log(
|
|
1897
|
+
console.log(data);
|
|
1845
1898
|
}
|
|
1846
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1847
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1848
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1849
|
-
decodeResult
|
|
1850
|
-
|
|
1851
|
-
);
|
|
1852
|
-
decodeResult
|
|
1853
|
-
|
|
1854
|
-
)
|
|
1855
|
-
|
|
1856
|
-
|
|
1899
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1900
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1901
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1902
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1903
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1904
|
+
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1905
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[6]));
|
|
1906
|
+
const fuel = Number(data[7]);
|
|
1907
|
+
if (!isNaN(fuel)) {
|
|
1908
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1909
|
+
}
|
|
1910
|
+
if (data.length > 8) {
|
|
1911
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(8));
|
|
1857
1912
|
}
|
|
1913
|
+
} else {
|
|
1914
|
+
if (options.debug) {
|
|
1915
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1916
|
+
}
|
|
1917
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1918
|
+
decodeResult.decoded = false;
|
|
1919
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1920
|
+
return decodeResult;
|
|
1858
1921
|
}
|
|
1859
1922
|
decodeResult.decoded = true;
|
|
1860
1923
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -1876,22 +1939,33 @@ var Label_44_ON = class extends DecoderPlugin {
|
|
|
1876
1939
|
decodeResult.decoder.name = this.name;
|
|
1877
1940
|
decodeResult.formatted.description = "On Runway Report";
|
|
1878
1941
|
decodeResult.message = message;
|
|
1879
|
-
const
|
|
1880
|
-
|
|
1881
|
-
if (results?.groups) {
|
|
1942
|
+
const data = message.text.split(",");
|
|
1943
|
+
if (data.length >= 7) {
|
|
1882
1944
|
if (options.debug) {
|
|
1883
1945
|
console.log(`Label 44 On Runway Report: groups`);
|
|
1884
|
-
console.log(
|
|
1946
|
+
console.log(data);
|
|
1885
1947
|
}
|
|
1886
|
-
ResultFormatter.position(decodeResult, CoordinateUtils.
|
|
1887
|
-
ResultFormatter.departureAirport(decodeResult,
|
|
1888
|
-
ResultFormatter.arrivalAirport(decodeResult,
|
|
1889
|
-
decodeResult
|
|
1890
|
-
|
|
1891
|
-
);
|
|
1892
|
-
|
|
1893
|
-
|
|
1948
|
+
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[1]));
|
|
1949
|
+
ResultFormatter.departureAirport(decodeResult, data[2]);
|
|
1950
|
+
ResultFormatter.arrivalAirport(decodeResult, data[3]);
|
|
1951
|
+
ResultFormatter.month(decodeResult, Number(data[4].substring(0, 2)));
|
|
1952
|
+
ResultFormatter.day(decodeResult, Number(data[4].substring(2, 4)));
|
|
1953
|
+
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[5]));
|
|
1954
|
+
const fuel = Number(data[6]);
|
|
1955
|
+
if (!isNaN(fuel)) {
|
|
1956
|
+
ResultFormatter.remainingFuel(decodeResult, Number(fuel));
|
|
1894
1957
|
}
|
|
1958
|
+
if (data.length > 7) {
|
|
1959
|
+
ResultFormatter.unknownArr(decodeResult, data.slice(7));
|
|
1960
|
+
}
|
|
1961
|
+
} else {
|
|
1962
|
+
if (options.debug) {
|
|
1963
|
+
console.log(`Decoder: Unknown 44 message: ${message.text}`);
|
|
1964
|
+
}
|
|
1965
|
+
ResultFormatter.unknown(decodeResult, message.text);
|
|
1966
|
+
decodeResult.decoded = false;
|
|
1967
|
+
decodeResult.decoder.decodeLevel = "none";
|
|
1968
|
+
return decodeResult;
|
|
1895
1969
|
}
|
|
1896
1970
|
decodeResult.decoded = true;
|
|
1897
1971
|
decodeResult.decoder.decodeLevel = "full";
|
|
@@ -2350,9 +2424,11 @@ var H1Helper = class {
|
|
|
2350
2424
|
ResultFormatter.freetext(decodeResult, fields[i].substring(2));
|
|
2351
2425
|
} else if (fields[i].startsWith("ET")) {
|
|
2352
2426
|
if (fields[i].length === 7) {
|
|
2353
|
-
ResultFormatter.
|
|
2427
|
+
ResultFormatter.day(decodeResult, Number(fields[i].substring(2, 3)));
|
|
2428
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[i].substring(3)));
|
|
2354
2429
|
} else if (fields[i].length === 8) {
|
|
2355
|
-
ResultFormatter.
|
|
2430
|
+
ResultFormatter.day(decodeResult, Number(fields[i].substring(2, 4)));
|
|
2431
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[i].substring(4)));
|
|
2356
2432
|
} else {
|
|
2357
2433
|
ResultFormatter.unknown(decodeResult, fields[i], "/");
|
|
2358
2434
|
}
|
|
@@ -2612,7 +2688,7 @@ var Label_4N = class extends DecoderPlugin {
|
|
|
2612
2688
|
decodeResult.decoded = true;
|
|
2613
2689
|
const fields = text.split(",");
|
|
2614
2690
|
if (text.length === 51) {
|
|
2615
|
-
decodeResult.raw.
|
|
2691
|
+
decodeResult.raw.day = text.substring(0, 2);
|
|
2616
2692
|
ResultFormatter.departureAirport(decodeResult, text.substring(8, 11));
|
|
2617
2693
|
ResultFormatter.arrivalAirport(decodeResult, text.substring(13, 16));
|
|
2618
2694
|
ResultFormatter.position(decodeResult, CoordinateUtils.decodeStringCoordinatesDecimalMinutes(text.substring(30, 45).replace(/^(.)0/, "$1")));
|
|
@@ -2826,7 +2902,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2826
2902
|
if (text.substring(0, 10) === "4DH3 ETAT2") {
|
|
2827
2903
|
const fields = text.split(/\s+/);
|
|
2828
2904
|
if (fields[2].length > 5) {
|
|
2829
|
-
decodeResult.raw.
|
|
2905
|
+
decodeResult.raw.day = fields[2].substring(5);
|
|
2830
2906
|
}
|
|
2831
2907
|
ResultFormatter.unknown(decodeResult, fields[2].substring(0, 4));
|
|
2832
2908
|
const subfields = fields[3].split("/");
|
|
@@ -2835,7 +2911,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2835
2911
|
ResultFormatter.tail(decodeResult, fields[4].replace(/\./g, ""));
|
|
2836
2912
|
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(fields[6] + "00"));
|
|
2837
2913
|
} else if (text.substring(0, 5) === "001PR") {
|
|
2838
|
-
decodeResult.raw.
|
|
2914
|
+
decodeResult.raw.day = text.substring(5, 7);
|
|
2839
2915
|
const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(text.substring(13, 28).replace(/\./g, ""));
|
|
2840
2916
|
if (position) {
|
|
2841
2917
|
ResultFormatter.position(decodeResult, position);
|
|
@@ -2847,7 +2923,7 @@ var Label_83 = class extends DecoderPlugin {
|
|
|
2847
2923
|
if (fields.length === 9) {
|
|
2848
2924
|
ResultFormatter.departureAirport(decodeResult, fields[0]);
|
|
2849
2925
|
ResultFormatter.arrivalAirport(decodeResult, fields[1]);
|
|
2850
|
-
decodeResult.raw.
|
|
2926
|
+
decodeResult.raw.day = fields[2].substring(0, 2);
|
|
2851
2927
|
decodeResult.raw.time = fields[2].substring(2);
|
|
2852
2928
|
ResultFormatter.position(
|
|
2853
2929
|
decodeResult,
|
|
@@ -2897,7 +2973,7 @@ var Label_8E = class extends DecoderPlugin {
|
|
|
2897
2973
|
console.log(`Label 8E ETA: groups`);
|
|
2898
2974
|
console.log(results.groups);
|
|
2899
2975
|
}
|
|
2900
|
-
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results.groups.arrival_eta
|
|
2976
|
+
ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(results.groups.arrival_eta));
|
|
2901
2977
|
ResultFormatter.arrivalAirport(decodeResult, results.groups.arrival_icao);
|
|
2902
2978
|
}
|
|
2903
2979
|
decodeResult.decoded = true;
|
|
@@ -3109,9 +3185,9 @@ var Label_H1_StarPOS = class extends DecoderPlugin {
|
|
|
3109
3185
|
decodeResult.decoder.decodeLevel = "none";
|
|
3110
3186
|
return decodeResult;
|
|
3111
3187
|
}
|
|
3112
|
-
|
|
3113
|
-
decodeResult
|
|
3114
|
-
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(msg.substring(8, 12)
|
|
3188
|
+
ResultFormatter.month(decodeResult, Number(msg.substring(4, 6)));
|
|
3189
|
+
ResultFormatter.day(decodeResult, Number(msg.substring(6, 8)));
|
|
3190
|
+
ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(msg.substring(8, 12)));
|
|
3115
3191
|
ResultFormatter.position(decodeResult, {
|
|
3116
3192
|
// Deg Min, no sec
|
|
3117
3193
|
latitude: CoordinateUtils.getDirection(msg.substring(12, 13)) * (Number(msg.substring(13, 15)) + Number(msg.substring(15, 17)) / 60),
|
|
@@ -3338,7 +3414,7 @@ var Label_QR = class extends DecoderPlugin {
|
|
|
3338
3414
|
decodeResult.formatted.description = "ON Report";
|
|
3339
3415
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3340
3416
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3341
|
-
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3417
|
+
ResultFormatter.on(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3342
3418
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3343
3419
|
decodeResult.decoded = true;
|
|
3344
3420
|
if (!decodeResult.remaining.text)
|
|
@@ -3363,7 +3439,7 @@ var Label_QP = class extends DecoderPlugin {
|
|
|
3363
3439
|
decodeResult.formatted.description = "OUT Report";
|
|
3364
3440
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3365
3441
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3366
|
-
ResultFormatter.out(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3442
|
+
ResultFormatter.out(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3367
3443
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3368
3444
|
decodeResult.decoded = true;
|
|
3369
3445
|
if (!decodeResult.remaining.text)
|
|
@@ -3388,7 +3464,7 @@ var Label_QS = class extends DecoderPlugin {
|
|
|
3388
3464
|
decodeResult.formatted.description = "IN Report";
|
|
3389
3465
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3390
3466
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3391
|
-
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)
|
|
3467
|
+
ResultFormatter.in(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(8, 12)));
|
|
3392
3468
|
ResultFormatter.unknown(decodeResult, message.text.substring(12));
|
|
3393
3469
|
decodeResult.decoded = true;
|
|
3394
3470
|
if (!decodeResult.remaining.text)
|
|
@@ -3415,7 +3491,7 @@ var Label_QQ = class extends DecoderPlugin {
|
|
|
3415
3491
|
ResultFormatter.departureAirport(decodeResult, message.text.substring(0, 4));
|
|
3416
3492
|
ResultFormatter.arrivalAirport(decodeResult, message.text.substring(4, 8));
|
|
3417
3493
|
if (message.text.substring(12, 19) === "\r\n001FE") {
|
|
3418
|
-
decodeResult.raw.
|
|
3494
|
+
decodeResult.raw.day = message.text.substring(19, 21);
|
|
3419
3495
|
ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(message.text.substring(21, 27)));
|
|
3420
3496
|
let latdir = message.text.substring(27, 28);
|
|
3421
3497
|
let latdeg = Number(message.text.substring(28, 30));
|