@airframes/acars-decoder 1.6.15 → 1.6.16

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 CHANGED
@@ -569,14 +569,24 @@ var ResultFormatter = class {
569
569
  value: DateTimeUtils.timestampToString(time, "tod")
570
570
  });
571
571
  }
572
- static off(decodeResult, time) {
573
- decodeResult.raw.off_time = time;
574
- decodeResult.formatted.items.push({
575
- type: "time_of_day",
576
- code: "OFF",
577
- label: "Takeoff Time",
578
- value: DateTimeUtils.timestampToString(time, "tod")
579
- });
572
+ static off(decodeResult, time, type = "tod") {
573
+ if (type === "tod") {
574
+ decodeResult.raw.off_time = time;
575
+ decodeResult.formatted.items.push({
576
+ type: "time_of_day",
577
+ code: "OFF",
578
+ label: "Takeoff Time",
579
+ value: DateTimeUtils.timestampToString(time, "tod")
580
+ });
581
+ } else {
582
+ decodeResult.raw.off_date = time;
583
+ decodeResult.formatted.items.push({
584
+ type: "epoch",
585
+ code: "OFF",
586
+ label: "Takeoff Time",
587
+ value: DateTimeUtils.timestampToString(time, "epoch")
588
+ });
589
+ }
580
590
  }
581
591
  static on(decodeResult, time) {
582
592
  decodeResult.raw.on_time = time;
@@ -968,6 +978,51 @@ var Label_12_N_Space = class extends DecoderPlugin {
968
978
  }
969
979
  };
970
980
 
981
+ // lib/plugins/Label_12_POS.ts
982
+ var Label_12_POS = class extends DecoderPlugin {
983
+ name = "label-12-pos";
984
+ qualifiers() {
985
+ return {
986
+ labels: ["12"],
987
+ preambles: ["POS"]
988
+ };
989
+ }
990
+ decode(message, options = {}) {
991
+ const decodeResult = this.defaultResult();
992
+ decodeResult.decoder.name = this.name;
993
+ decodeResult.formatted.description = "Position Report";
994
+ decodeResult.message = message;
995
+ const data = message.text.substring(3).split(",");
996
+ if (!message.text.startsWith("POS") || data.length !== 12) {
997
+ if (options.debug) {
998
+ console.log(`Decoder: Unknown 12 message: ${message.text}`);
999
+ }
1000
+ ResultFormatter.unknown(decodeResult, message.text);
1001
+ decodeResult.decoded = false;
1002
+ decodeResult.decoder.decodeLevel = "none";
1003
+ return decodeResult;
1004
+ }
1005
+ const lat = data[0].substring(0, 8);
1006
+ const lon = data[0].substring(8);
1007
+ ResultFormatter.position(decodeResult, {
1008
+ latitude: CoordinateUtils.getDirection(lat[0]) * CoordinateUtils.dmsToDecimalDegrees(Number(lat.substring(1, 4)), Number(lat.substring(4, 6)), Number(lat.substring(6, 8))),
1009
+ longitude: CoordinateUtils.getDirection(lon[0]) * CoordinateUtils.dmsToDecimalDegrees(Number(lon.substring(1, 4)), Number(lon.substring(4, 6)), Number(lon.substring(6, 8)))
1010
+ });
1011
+ ResultFormatter.unknown(decodeResult, data[1]);
1012
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[2]));
1013
+ ResultFormatter.altitude(decodeResult, 10 * Number(data[3]));
1014
+ ResultFormatter.unknownArr(decodeResult, data.slice(4, 7));
1015
+ ResultFormatter.currentFuel(decodeResult, Number(data[7].substring(3).trim()));
1016
+ ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[8].substring(3).trim()));
1017
+ ResultFormatter.departureAirport(decodeResult, data[9]);
1018
+ ResultFormatter.arrivalAirport(decodeResult, data[10]);
1019
+ ResultFormatter.unknown(decodeResult, data[11]);
1020
+ decodeResult.decoded = true;
1021
+ decodeResult.decoder.decodeLevel = "partial";
1022
+ return decodeResult;
1023
+ }
1024
+ };
1025
+
971
1026
  // lib/plugins/Label_13Through18_Slash.ts
972
1027
  var Label_13Through18_Slash = class extends DecoderPlugin {
973
1028
  // eslint-disable-line camelcase
@@ -1079,9 +1134,19 @@ var Label_15 = class extends DecoderPlugin {
1079
1134
  if (alt != "---") {
1080
1135
  ResultFormatter.altitude(decodeResult, 100 * Number(alt));
1081
1136
  }
1082
- ResultFormatter.temperature(decodeResult, between.substring(22).replace(" ", "0"));
1137
+ ResultFormatter.temperature(decodeResult, between.substring(22).replaceAll(" ", "0"));
1138
+ } else if (between.substring(13, 16) === "OFF") {
1139
+ const ddmmyy = between.substring(16, 22);
1140
+ const hhmm = between.substring(22, 26);
1141
+ if (ddmmyy != "------") {
1142
+ const mmddyy = ddmmyy.substring(2, 4) + ddmmyy.substring(0, 2) + ddmmyy.substring(4);
1143
+ ResultFormatter.off(decodeResult, DateTimeUtils.convertDateTimeToEpoch(hhmm + "00", mmddyy), "epoch");
1144
+ } else {
1145
+ ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(hhmm), "tod");
1146
+ }
1147
+ ResultFormatter.unknown(decodeResult, between.substring(26));
1083
1148
  } else {
1084
- ResultFormatter.unknown(decodeResult, between.substring(13));
1149
+ ResultFormatter.unknown(decodeResult, between.substring(26));
1085
1150
  }
1086
1151
  } else {
1087
1152
  if (options.debug) {
@@ -1450,7 +1515,6 @@ var Label_1L_Slash = class extends DecoderPlugin {
1450
1515
  const part = parts[i].split(" ");
1451
1516
  data.set(part[0], part.slice(1).join(" "));
1452
1517
  }
1453
- console.log(data);
1454
1518
  const position = {
1455
1519
  latitude: Number(data.get("LAT")),
1456
1520
  longitude: Number(data.get("LON"))
@@ -2380,12 +2444,17 @@ function addCompanyRoute(decodeResult, value) {
2380
2444
  }
2381
2445
 
2382
2446
  // lib/utils/h1_helper.ts
2383
- var H1Helper = class {
2447
+ var H1Helper = class _H1Helper {
2384
2448
  static decodeH1Message(decodeResult, message) {
2385
2449
  const checksum = message.slice(-4);
2386
2450
  const data = message.slice(0, message.length - 4);
2387
2451
  const fields = data.split("/");
2388
- parseMessageType(decodeResult, fields[0]);
2452
+ const canDecode = parseMessageType(decodeResult, fields[0]);
2453
+ if (!canDecode) {
2454
+ decodeResult.decoded = false;
2455
+ decodeResult.decoder.decodeLevel = "none";
2456
+ return;
2457
+ }
2389
2458
  for (let i = 1; i < fields.length; ++i) {
2390
2459
  if (fields[i].startsWith("FN")) {
2391
2460
  decodeResult.raw.flight_number = fields[i].substring(2);
@@ -2394,16 +2463,9 @@ var H1Helper = class {
2394
2463
  } else if (fields[i].startsWith("DC")) {
2395
2464
  processDC(decodeResult, fields[i].substring(2).split(","));
2396
2465
  } else if (fields[i].startsWith("TS")) {
2397
- const ts = fields[i].substring(2).split(",");
2398
- let time = DateTimeUtils.convertDateTimeToEpoch(ts[0], ts[1]);
2399
- if (Number.isNaN(time)) {
2400
- const date = ts[1].substring(2, 4) + ts[1].substring(0, 2) + ts[1].substring(4, 6);
2401
- time = DateTimeUtils.convertDateTimeToEpoch(ts[0], date);
2402
- }
2403
- decodeResult.raw.message_date = ts[1];
2404
- decodeResult.raw.message_timestamp = time;
2466
+ _H1Helper.processTS(decodeResult, fields[i].substring(2).split(","));
2405
2467
  } else if (fields[i].startsWith("PS")) {
2406
- const pos = processPS(decodeResult, fields[i].substring(2).split(","));
2468
+ _H1Helper.processPS(decodeResult, fields[i].substring(2).split(","));
2407
2469
  } else if (fields[i].startsWith("DT")) {
2408
2470
  const data2 = fields[i].substring(2).split(",");
2409
2471
  processDT(decodeResult, data2);
@@ -2441,6 +2503,56 @@ var H1Helper = class {
2441
2503
  }
2442
2504
  return true;
2443
2505
  }
2506
+ static processPS(decodeResult, data) {
2507
+ const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2508
+ if (position) {
2509
+ decodeResult.raw.position = position;
2510
+ decodeResult.formatted.items.push({
2511
+ type: "aircraft_position",
2512
+ code: "POS",
2513
+ label: "Aircraft Position",
2514
+ value: CoordinateUtils.coordinateString(position)
2515
+ });
2516
+ }
2517
+ if (data.length === 9) {
2518
+ processRoute(decodeResult, data[3], data[1], data[5], data[4], void 0);
2519
+ ResultFormatter.altitude(decodeResult, Number(data[2]) * 100);
2520
+ ResultFormatter.temperature(decodeResult, data[6]);
2521
+ ResultFormatter.unknown(decodeResult, data[7]);
2522
+ ResultFormatter.unknown(decodeResult, data[8]);
2523
+ }
2524
+ if (data.length === 14) {
2525
+ ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2526
+ processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2527
+ ResultFormatter.temperature(decodeResult, data[7]);
2528
+ ResultFormatter.unknownArr(decodeResult, data.slice(8));
2529
+ }
2530
+ }
2531
+ static processPosition(decodeResult, data) {
2532
+ const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2533
+ if (position) {
2534
+ ResultFormatter.position(decodeResult, position);
2535
+ }
2536
+ if (data.length >= 10) {
2537
+ ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2538
+ processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2539
+ ResultFormatter.temperature(decodeResult, data[7]);
2540
+ ResultFormatter.unknown(decodeResult, data[8]);
2541
+ ResultFormatter.unknown(decodeResult, data[9]);
2542
+ }
2543
+ if (data.length >= 14) {
2544
+ ResultFormatter.unknownArr(decodeResult, data.slice(10));
2545
+ }
2546
+ }
2547
+ static processTS(decodeResult, data) {
2548
+ let time = DateTimeUtils.convertDateTimeToEpoch(data[0], data[1]);
2549
+ if (Number.isNaN(time)) {
2550
+ const date = data[1].substring(2, 4) + data[1].substring(0, 2) + data[1].substring(4, 6);
2551
+ time = DateTimeUtils.convertDateTimeToEpoch(data[0], date);
2552
+ }
2553
+ decodeResult.raw.message_date = data[1];
2554
+ decodeResult.raw.message_timestamp = time;
2555
+ }
2444
2556
  };
2445
2557
  function processAirField(decodeResult, data) {
2446
2558
  if (data.length === 2) {
@@ -2518,7 +2630,7 @@ function parseMessageType(decodeResult, messageType) {
2518
2630
  if (parts.length == 1) {
2519
2631
  const type = parts[0].substring(0, 3);
2520
2632
  if (type === "POS" && parts[0].length !== 3) {
2521
- processPosition2(decodeResult, parts[0].substring(3).split(","));
2633
+ H1Helper.processPosition(decodeResult, parts[0].substring(3).split(","));
2522
2634
  }
2523
2635
  return processMessageType(decodeResult, type);
2524
2636
  } else if (parts.length == 2) {
@@ -2529,11 +2641,12 @@ function parseMessageType(decodeResult, messageType) {
2529
2641
  }
2530
2642
  const type = parts[1].length == 5 ? parts[1].substring(2, 5) : parts[1].substring(3, 6);
2531
2643
  if (parts[1].substring(3, 6) === "POS" && parts[1].length > 6) {
2532
- processPosition2(decodeResult, parts[1].substring(6).split(","));
2644
+ H1Helper.processPosition(decodeResult, parts[1].substring(6).split(","));
2533
2645
  }
2534
- processMessageType(decodeResult, type);
2646
+ return processMessageType(decodeResult, type);
2535
2647
  } else {
2536
2648
  ResultFormatter.unknown(decodeResult, messageType);
2649
+ return false;
2537
2650
  }
2538
2651
  }
2539
2652
  function processMessageType(decodeResult, type) {
@@ -2549,7 +2662,9 @@ function processMessageType(decodeResult, type) {
2549
2662
  decodeResult.formatted.description = "Progress Report";
2550
2663
  } else {
2551
2664
  decodeResult.formatted.description = "Unknown H1 Message";
2665
+ return false;
2552
2666
  }
2667
+ return true;
2553
2668
  }
2554
2669
  function processDC(decodeResult, data) {
2555
2670
  decodeResult.raw.message_date = data[0];
@@ -2560,60 +2675,6 @@ function processDC(decodeResult, data) {
2560
2675
  decodeResult.raw.message_timestamp = time;
2561
2676
  }
2562
2677
  }
2563
- function processPS(decodeResult, data) {
2564
- const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2565
- if (position) {
2566
- decodeResult.raw.position = position;
2567
- decodeResult.formatted.items.push({
2568
- type: "aircraft_position",
2569
- code: "POS",
2570
- label: "Aircraft Position",
2571
- value: CoordinateUtils.coordinateString(position)
2572
- });
2573
- }
2574
- if (data.length === 9) {
2575
- processRoute(decodeResult, data[3], data[1], data[5], data[4], void 0);
2576
- ResultFormatter.altitude(decodeResult, Number(data[2]) * 100);
2577
- ResultFormatter.temperature(decodeResult, data[6]);
2578
- ResultFormatter.unknown(decodeResult, data[7]);
2579
- ResultFormatter.unknown(decodeResult, data[8]);
2580
- }
2581
- if (data.length === 14) {
2582
- ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2583
- processRoute(decodeResult, data[4], data[2], data[6], data[5], void 0);
2584
- ResultFormatter.temperature(decodeResult, data[7]);
2585
- ResultFormatter.groundspeed(decodeResult, Number(data[10]));
2586
- ResultFormatter.unknown(decodeResult, data[1]);
2587
- ResultFormatter.unknown(decodeResult, data[8]);
2588
- ResultFormatter.unknown(decodeResult, data[9]);
2589
- ResultFormatter.unknown(decodeResult, data.slice(11).join(","));
2590
- }
2591
- }
2592
- function processPosition2(decodeResult, data) {
2593
- const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2594
- if (position) {
2595
- decodeResult.raw.position = position;
2596
- decodeResult.formatted.items.push({
2597
- type: "aircraft_position",
2598
- code: "POS",
2599
- label: "Aircraft Position",
2600
- value: CoordinateUtils.coordinateString(position)
2601
- });
2602
- }
2603
- if (data.length >= 10) {
2604
- ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2605
- processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2606
- ResultFormatter.temperature(decodeResult, data[7]);
2607
- ResultFormatter.unknown(decodeResult, data[8]);
2608
- ResultFormatter.unknown(decodeResult, data[9]);
2609
- }
2610
- if (data.length >= 14) {
2611
- ResultFormatter.groundspeed(decodeResult, Number(data[10]));
2612
- ResultFormatter.unknown(decodeResult, data[11]);
2613
- ResultFormatter.unknown(decodeResult, data[12]);
2614
- ResultFormatter.unknown(decodeResult, data[13]);
2615
- }
2616
- }
2617
2678
  function processRoute(decodeResult, last, time, next, eta, then, date) {
2618
2679
  const lastTime = date ? DateTimeUtils.convertDateTimeToEpoch(time, date) : DateTimeUtils.convertHHMMSSToTod(time);
2619
2680
  const nextTime = date ? DateTimeUtils.convertDateTimeToEpoch(eta, date) : DateTimeUtils.convertHHMMSSToTod(eta);
@@ -2725,6 +2786,129 @@ var Label_4N = class extends DecoderPlugin {
2725
2786
  }
2726
2787
  };
2727
2788
 
2789
+ // lib/plugins/Label_4T_AGFSR.ts
2790
+ var Label_4T_AGFSR = class extends DecoderPlugin {
2791
+ name = "label-4t-agfsr";
2792
+ qualifiers() {
2793
+ return {
2794
+ labels: ["4T"],
2795
+ preambles: ["AGFSR"]
2796
+ };
2797
+ }
2798
+ decode(message, options = {}) {
2799
+ const decodeResult = this.defaultResult();
2800
+ decodeResult.decoder.name = this.name;
2801
+ decodeResult.formatted.description = "Position Report";
2802
+ decodeResult.message = message;
2803
+ const data = message.text.substring(5).split("/");
2804
+ if (!message.text.startsWith("AGFSR") || data.length !== 20) {
2805
+ if (options.debug) {
2806
+ console.log(`Decoder: Unknown 4T message: ${message.text}`);
2807
+ }
2808
+ ResultFormatter.unknown(decodeResult, message.text);
2809
+ decodeResult.decoded = false;
2810
+ decodeResult.decoder.decodeLevel = "none";
2811
+ return decodeResult;
2812
+ }
2813
+ ResultFormatter.flightNumber(decodeResult, data[0].trim());
2814
+ ResultFormatter.departureDay(decodeResult, Number(data[1]));
2815
+ ResultFormatter.arrivalDay(decodeResult, Number(data[2]));
2816
+ ResultFormatter.departureAirport(decodeResult, data[3].substring(0, 3), "IATA");
2817
+ ResultFormatter.arrivalAirport(decodeResult, data[3].substring(3), "IATA");
2818
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[4].substring(0, 4)));
2819
+ ResultFormatter.unknown(decodeResult, data[5], "/");
2820
+ const lat = data[6].substring(0, 7);
2821
+ const lon = data[6].substring(7, 15);
2822
+ ResultFormatter.position(decodeResult, {
2823
+ latitude: CoordinateUtils.getDirection(lat[6]) * Number(lat.substring(0, 2)) + Number(lat.substring(2, 6)) / 60,
2824
+ longitude: CoordinateUtils.getDirection(lon[7]) * Number(lon.substring(0, 3)) + Number(lon.substring(3, 7)) / 60
2825
+ });
2826
+ ResultFormatter.altitude(decodeResult, 100 * Number(data[7]));
2827
+ ResultFormatter.unknownArr(decodeResult, data.slice(8), "/");
2828
+ decodeResult.decoded = true;
2829
+ decodeResult.decoder.decodeLevel = "partial";
2830
+ return decodeResult;
2831
+ }
2832
+ };
2833
+
2834
+ // lib/plugins/Label_58.ts
2835
+ var Label_58 = class extends DecoderPlugin {
2836
+ name = "label-58";
2837
+ qualifiers() {
2838
+ return {
2839
+ labels: ["58"]
2840
+ };
2841
+ }
2842
+ decode(message, options = {}) {
2843
+ const decodeResult = this.defaultResult();
2844
+ decodeResult.decoder.name = this.name;
2845
+ decodeResult.formatted.description = "Position Report";
2846
+ decodeResult.message = message;
2847
+ const data = message.text.split("/");
2848
+ if (data.length === 8) {
2849
+ ResultFormatter.flightNumber(decodeResult, data[0]);
2850
+ ResultFormatter.day(decodeResult, Number(data[1]));
2851
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[2]));
2852
+ const lat = data[3];
2853
+ const lon = data[4];
2854
+ ResultFormatter.position(decodeResult, {
2855
+ latitude: CoordinateUtils.getDirection(lat[0]) * Number(lat.substring(1)),
2856
+ longitude: CoordinateUtils.getDirection(lon[0]) * Number(lon.substring(1))
2857
+ });
2858
+ ResultFormatter.altitude(decodeResult, Number(data[5]));
2859
+ ResultFormatter.unknown(decodeResult, data[6], "/");
2860
+ ResultFormatter.unknown(decodeResult, data[7], "/");
2861
+ } else {
2862
+ if (options.debug) {
2863
+ console.log(`Decoder: Unknown 58 message: ${message.text}`);
2864
+ }
2865
+ ResultFormatter.unknown(decodeResult, message.text);
2866
+ decodeResult.decoded = false;
2867
+ decodeResult.decoder.decodeLevel = "none";
2868
+ return decodeResult;
2869
+ }
2870
+ decodeResult.decoded = true;
2871
+ decodeResult.decoder.decodeLevel = "partial";
2872
+ return decodeResult;
2873
+ }
2874
+ };
2875
+
2876
+ // lib/plugins/Label_4T_ETA.ts
2877
+ var Label_4T_ETA = class extends DecoderPlugin {
2878
+ name = "label-4t-eta";
2879
+ qualifiers() {
2880
+ return {
2881
+ labels: ["4T"],
2882
+ preambles: ["ETA"]
2883
+ };
2884
+ }
2885
+ decode(message, options = {}) {
2886
+ const decodeResult = this.defaultResult();
2887
+ decodeResult.decoder.name = this.name;
2888
+ decodeResult.formatted.description = "ETA Report";
2889
+ decodeResult.message = message;
2890
+ const data = message.text.substring(3).split("/");
2891
+ if (!message.text.startsWith("ETA") || data.length !== 3) {
2892
+ if (options.debug) {
2893
+ console.log(`Decoder: Unknown 4T message: ${message.text}`);
2894
+ }
2895
+ ResultFormatter.unknown(decodeResult, message.text);
2896
+ decodeResult.decoded = false;
2897
+ decodeResult.decoder.decodeLevel = "none";
2898
+ return decodeResult;
2899
+ }
2900
+ ResultFormatter.flightNumber(decodeResult, data[0].trim());
2901
+ ResultFormatter.departureDay(decodeResult, Number(data[1]));
2902
+ const etaData = data[2].split(" ");
2903
+ ResultFormatter.arrivalDay(decodeResult, Number(etaData[0]));
2904
+ ResultFormatter.arrivalAirport(decodeResult, etaData[1], "IATA");
2905
+ ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(etaData[2].substring(0, 4)));
2906
+ decodeResult.decoded = true;
2907
+ decodeResult.decoder.decodeLevel = "full";
2908
+ return decodeResult;
2909
+ }
2910
+ };
2911
+
2728
2912
  // lib/plugins/Label_80.ts
2729
2913
  var Label_80 = class extends DecoderPlugin {
2730
2914
  name = "label-80";
@@ -3161,6 +3345,65 @@ var Label_H1_OHMA = class extends DecoderPlugin {
3161
3345
  }
3162
3346
  };
3163
3347
 
3348
+ // lib/plugins/Label_H1_Slash.ts
3349
+ var Label_H1_Slash = class extends DecoderPlugin {
3350
+ name = "label-h1-slash";
3351
+ qualifiers() {
3352
+ return {
3353
+ labels: ["H1"],
3354
+ preambles: ["/"]
3355
+ };
3356
+ }
3357
+ decode(message, options = {}) {
3358
+ let decodeResult = this.defaultResult();
3359
+ decodeResult.decoder.name = this.name;
3360
+ decodeResult.formatted.description = "Position Report";
3361
+ decodeResult.message = message;
3362
+ const checksum = message.text.slice(-4);
3363
+ const data = message.text.slice(0, message.text.length - 4);
3364
+ const fields = data.split("/");
3365
+ if (fields[0] !== "") {
3366
+ ResultFormatter.unknown(decodeResult, message.text);
3367
+ decodeResult.decoded = false;
3368
+ decodeResult.decoder.decodeLevel = "none";
3369
+ return decodeResult;
3370
+ }
3371
+ const headerData = fields[1].split(".");
3372
+ ResultFormatter.unknown(decodeResult, headerData[0]);
3373
+ if (headerData[1] === "POS" && fields[2].startsWith("TS") && fields[2].length > 15) {
3374
+ H1Helper.processPosition(decodeResult, fields[2].substring(15).split(","));
3375
+ } else if (headerData[1] === "POS") {
3376
+ } else if (headerData[1].startsWith("POS")) {
3377
+ H1Helper.processPosition(decodeResult, headerData[1].substring(3).split(","));
3378
+ } else {
3379
+ ResultFormatter.unknown(decodeResult, headerData[1], ".");
3380
+ }
3381
+ for (let i = 2; i < fields.length; i++) {
3382
+ const field = fields[i];
3383
+ if (field.startsWith("TS")) {
3384
+ H1Helper.processTS(decodeResult, field.substring(2, 15).split(","));
3385
+ } else if (field.startsWith("PS")) {
3386
+ H1Helper.processPS(decodeResult, field.substring(2).split(","));
3387
+ } else {
3388
+ ResultFormatter.unknown(decodeResult, field, "/");
3389
+ }
3390
+ }
3391
+ if (decodeResult.formatted.items.length === 0) {
3392
+ if (options.debug) {
3393
+ console.log(`Decoder: Unknown H1 message: ${message.text}`);
3394
+ }
3395
+ ResultFormatter.unknown(decodeResult, message.text);
3396
+ decodeResult.decoded = false;
3397
+ decodeResult.decoder.decodeLevel = "none";
3398
+ return decodeResult;
3399
+ }
3400
+ ResultFormatter.checksum(decodeResult, checksum);
3401
+ decodeResult.decoded = true;
3402
+ decodeResult.decoder.decodeLevel = !decodeResult.remaining.text ? "full" : "partial";
3403
+ return decodeResult;
3404
+ }
3405
+ };
3406
+
3164
3407
  // lib/plugins/Label_H1_StarPOS.ts
3165
3408
  var Label_H1_StarPOS = class extends DecoderPlugin {
3166
3409
  name = "label-h1-star-pos";
@@ -4341,6 +4584,7 @@ var MessageDecoder = class {
4341
4584
  this.registerPlugin(new Label_10_POS(this));
4342
4585
  this.registerPlugin(new Label_10_Slash(this));
4343
4586
  this.registerPlugin(new Label_12_N_Space(this));
4587
+ this.registerPlugin(new Label_12_POS(this));
4344
4588
  this.registerPlugin(new Label_13Through18_Slash(this));
4345
4589
  this.registerPlugin(new Label_15(this));
4346
4590
  this.registerPlugin(new Label_15_FST(this));
@@ -4367,13 +4611,17 @@ var MessageDecoder = class {
4367
4611
  this.registerPlugin(new Label_4A_Slash_01(this));
4368
4612
  this.registerPlugin(new Label_4J_POS(this));
4369
4613
  this.registerPlugin(new Label_4N(this));
4614
+ this.registerPlugin(new Label_4T_AGFSR(this));
4615
+ this.registerPlugin(new Label_4T_ETA(this));
4370
4616
  this.registerPlugin(new Label_B6_Forwardslash(this));
4371
4617
  this.registerPlugin(new Label_H1_FLR(this));
4372
4618
  this.registerPlugin(new Label_H1_OHMA(this));
4373
4619
  this.registerPlugin(new Label_H1_WRN(this));
4374
4620
  this.registerPlugin(new Label_H1(this));
4621
+ this.registerPlugin(new Label_H1_Slash(this));
4375
4622
  this.registerPlugin(new Label_H1_StarPOS(this));
4376
4623
  this.registerPlugin(new Label_HX(this));
4624
+ this.registerPlugin(new Label_58(this));
4377
4625
  this.registerPlugin(new Label_80(this));
4378
4626
  this.registerPlugin(new Label_83(this));
4379
4627
  this.registerPlugin(new Label_8E(this));