@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.mjs CHANGED
@@ -532,14 +532,24 @@ var ResultFormatter = class {
532
532
  value: DateTimeUtils.timestampToString(time, "tod")
533
533
  });
534
534
  }
535
- static off(decodeResult, time) {
536
- decodeResult.raw.off_time = time;
537
- decodeResult.formatted.items.push({
538
- type: "time_of_day",
539
- code: "OFF",
540
- label: "Takeoff Time",
541
- value: DateTimeUtils.timestampToString(time, "tod")
542
- });
535
+ static off(decodeResult, time, type = "tod") {
536
+ if (type === "tod") {
537
+ decodeResult.raw.off_time = time;
538
+ decodeResult.formatted.items.push({
539
+ type: "time_of_day",
540
+ code: "OFF",
541
+ label: "Takeoff Time",
542
+ value: DateTimeUtils.timestampToString(time, "tod")
543
+ });
544
+ } else {
545
+ decodeResult.raw.off_date = time;
546
+ decodeResult.formatted.items.push({
547
+ type: "epoch",
548
+ code: "OFF",
549
+ label: "Takeoff Time",
550
+ value: DateTimeUtils.timestampToString(time, "epoch")
551
+ });
552
+ }
543
553
  }
544
554
  static on(decodeResult, time) {
545
555
  decodeResult.raw.on_time = time;
@@ -931,6 +941,51 @@ var Label_12_N_Space = class extends DecoderPlugin {
931
941
  }
932
942
  };
933
943
 
944
+ // lib/plugins/Label_12_POS.ts
945
+ var Label_12_POS = class extends DecoderPlugin {
946
+ name = "label-12-pos";
947
+ qualifiers() {
948
+ return {
949
+ labels: ["12"],
950
+ preambles: ["POS"]
951
+ };
952
+ }
953
+ decode(message, options = {}) {
954
+ const decodeResult = this.defaultResult();
955
+ decodeResult.decoder.name = this.name;
956
+ decodeResult.formatted.description = "Position Report";
957
+ decodeResult.message = message;
958
+ const data = message.text.substring(3).split(",");
959
+ if (!message.text.startsWith("POS") || data.length !== 12) {
960
+ if (options.debug) {
961
+ console.log(`Decoder: Unknown 12 message: ${message.text}`);
962
+ }
963
+ ResultFormatter.unknown(decodeResult, message.text);
964
+ decodeResult.decoded = false;
965
+ decodeResult.decoder.decodeLevel = "none";
966
+ return decodeResult;
967
+ }
968
+ const lat = data[0].substring(0, 8);
969
+ const lon = data[0].substring(8);
970
+ ResultFormatter.position(decodeResult, {
971
+ latitude: CoordinateUtils.getDirection(lat[0]) * CoordinateUtils.dmsToDecimalDegrees(Number(lat.substring(1, 4)), Number(lat.substring(4, 6)), Number(lat.substring(6, 8))),
972
+ longitude: CoordinateUtils.getDirection(lon[0]) * CoordinateUtils.dmsToDecimalDegrees(Number(lon.substring(1, 4)), Number(lon.substring(4, 6)), Number(lon.substring(6, 8)))
973
+ });
974
+ ResultFormatter.unknown(decodeResult, data[1]);
975
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[2]));
976
+ ResultFormatter.altitude(decodeResult, 10 * Number(data[3]));
977
+ ResultFormatter.unknownArr(decodeResult, data.slice(4, 7));
978
+ ResultFormatter.currentFuel(decodeResult, Number(data[7].substring(3).trim()));
979
+ ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[8].substring(3).trim()));
980
+ ResultFormatter.departureAirport(decodeResult, data[9]);
981
+ ResultFormatter.arrivalAirport(decodeResult, data[10]);
982
+ ResultFormatter.unknown(decodeResult, data[11]);
983
+ decodeResult.decoded = true;
984
+ decodeResult.decoder.decodeLevel = "partial";
985
+ return decodeResult;
986
+ }
987
+ };
988
+
934
989
  // lib/plugins/Label_13Through18_Slash.ts
935
990
  var Label_13Through18_Slash = class extends DecoderPlugin {
936
991
  // eslint-disable-line camelcase
@@ -1042,9 +1097,19 @@ var Label_15 = class extends DecoderPlugin {
1042
1097
  if (alt != "---") {
1043
1098
  ResultFormatter.altitude(decodeResult, 100 * Number(alt));
1044
1099
  }
1045
- ResultFormatter.temperature(decodeResult, between.substring(22).replace(" ", "0"));
1100
+ ResultFormatter.temperature(decodeResult, between.substring(22).replaceAll(" ", "0"));
1101
+ } else if (between.substring(13, 16) === "OFF") {
1102
+ const ddmmyy = between.substring(16, 22);
1103
+ const hhmm = between.substring(22, 26);
1104
+ if (ddmmyy != "------") {
1105
+ const mmddyy = ddmmyy.substring(2, 4) + ddmmyy.substring(0, 2) + ddmmyy.substring(4);
1106
+ ResultFormatter.off(decodeResult, DateTimeUtils.convertDateTimeToEpoch(hhmm + "00", mmddyy), "epoch");
1107
+ } else {
1108
+ ResultFormatter.off(decodeResult, DateTimeUtils.convertHHMMSSToTod(hhmm), "tod");
1109
+ }
1110
+ ResultFormatter.unknown(decodeResult, between.substring(26));
1046
1111
  } else {
1047
- ResultFormatter.unknown(decodeResult, between.substring(13));
1112
+ ResultFormatter.unknown(decodeResult, between.substring(26));
1048
1113
  }
1049
1114
  } else {
1050
1115
  if (options.debug) {
@@ -1413,7 +1478,6 @@ var Label_1L_Slash = class extends DecoderPlugin {
1413
1478
  const part = parts[i].split(" ");
1414
1479
  data.set(part[0], part.slice(1).join(" "));
1415
1480
  }
1416
- console.log(data);
1417
1481
  const position = {
1418
1482
  latitude: Number(data.get("LAT")),
1419
1483
  longitude: Number(data.get("LON"))
@@ -2343,12 +2407,17 @@ function addCompanyRoute(decodeResult, value) {
2343
2407
  }
2344
2408
 
2345
2409
  // lib/utils/h1_helper.ts
2346
- var H1Helper = class {
2410
+ var H1Helper = class _H1Helper {
2347
2411
  static decodeH1Message(decodeResult, message) {
2348
2412
  const checksum = message.slice(-4);
2349
2413
  const data = message.slice(0, message.length - 4);
2350
2414
  const fields = data.split("/");
2351
- parseMessageType(decodeResult, fields[0]);
2415
+ const canDecode = parseMessageType(decodeResult, fields[0]);
2416
+ if (!canDecode) {
2417
+ decodeResult.decoded = false;
2418
+ decodeResult.decoder.decodeLevel = "none";
2419
+ return;
2420
+ }
2352
2421
  for (let i = 1; i < fields.length; ++i) {
2353
2422
  if (fields[i].startsWith("FN")) {
2354
2423
  decodeResult.raw.flight_number = fields[i].substring(2);
@@ -2357,16 +2426,9 @@ var H1Helper = class {
2357
2426
  } else if (fields[i].startsWith("DC")) {
2358
2427
  processDC(decodeResult, fields[i].substring(2).split(","));
2359
2428
  } else if (fields[i].startsWith("TS")) {
2360
- const ts = fields[i].substring(2).split(",");
2361
- let time = DateTimeUtils.convertDateTimeToEpoch(ts[0], ts[1]);
2362
- if (Number.isNaN(time)) {
2363
- const date = ts[1].substring(2, 4) + ts[1].substring(0, 2) + ts[1].substring(4, 6);
2364
- time = DateTimeUtils.convertDateTimeToEpoch(ts[0], date);
2365
- }
2366
- decodeResult.raw.message_date = ts[1];
2367
- decodeResult.raw.message_timestamp = time;
2429
+ _H1Helper.processTS(decodeResult, fields[i].substring(2).split(","));
2368
2430
  } else if (fields[i].startsWith("PS")) {
2369
- const pos = processPS(decodeResult, fields[i].substring(2).split(","));
2431
+ _H1Helper.processPS(decodeResult, fields[i].substring(2).split(","));
2370
2432
  } else if (fields[i].startsWith("DT")) {
2371
2433
  const data2 = fields[i].substring(2).split(",");
2372
2434
  processDT(decodeResult, data2);
@@ -2404,6 +2466,56 @@ var H1Helper = class {
2404
2466
  }
2405
2467
  return true;
2406
2468
  }
2469
+ static processPS(decodeResult, data) {
2470
+ const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2471
+ if (position) {
2472
+ decodeResult.raw.position = position;
2473
+ decodeResult.formatted.items.push({
2474
+ type: "aircraft_position",
2475
+ code: "POS",
2476
+ label: "Aircraft Position",
2477
+ value: CoordinateUtils.coordinateString(position)
2478
+ });
2479
+ }
2480
+ if (data.length === 9) {
2481
+ processRoute(decodeResult, data[3], data[1], data[5], data[4], void 0);
2482
+ ResultFormatter.altitude(decodeResult, Number(data[2]) * 100);
2483
+ ResultFormatter.temperature(decodeResult, data[6]);
2484
+ ResultFormatter.unknown(decodeResult, data[7]);
2485
+ ResultFormatter.unknown(decodeResult, data[8]);
2486
+ }
2487
+ if (data.length === 14) {
2488
+ ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2489
+ processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2490
+ ResultFormatter.temperature(decodeResult, data[7]);
2491
+ ResultFormatter.unknownArr(decodeResult, data.slice(8));
2492
+ }
2493
+ }
2494
+ static processPosition(decodeResult, data) {
2495
+ const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2496
+ if (position) {
2497
+ ResultFormatter.position(decodeResult, position);
2498
+ }
2499
+ if (data.length >= 10) {
2500
+ ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2501
+ processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2502
+ ResultFormatter.temperature(decodeResult, data[7]);
2503
+ ResultFormatter.unknown(decodeResult, data[8]);
2504
+ ResultFormatter.unknown(decodeResult, data[9]);
2505
+ }
2506
+ if (data.length >= 14) {
2507
+ ResultFormatter.unknownArr(decodeResult, data.slice(10));
2508
+ }
2509
+ }
2510
+ static processTS(decodeResult, data) {
2511
+ let time = DateTimeUtils.convertDateTimeToEpoch(data[0], data[1]);
2512
+ if (Number.isNaN(time)) {
2513
+ const date = data[1].substring(2, 4) + data[1].substring(0, 2) + data[1].substring(4, 6);
2514
+ time = DateTimeUtils.convertDateTimeToEpoch(data[0], date);
2515
+ }
2516
+ decodeResult.raw.message_date = data[1];
2517
+ decodeResult.raw.message_timestamp = time;
2518
+ }
2407
2519
  };
2408
2520
  function processAirField(decodeResult, data) {
2409
2521
  if (data.length === 2) {
@@ -2481,7 +2593,7 @@ function parseMessageType(decodeResult, messageType) {
2481
2593
  if (parts.length == 1) {
2482
2594
  const type = parts[0].substring(0, 3);
2483
2595
  if (type === "POS" && parts[0].length !== 3) {
2484
- processPosition2(decodeResult, parts[0].substring(3).split(","));
2596
+ H1Helper.processPosition(decodeResult, parts[0].substring(3).split(","));
2485
2597
  }
2486
2598
  return processMessageType(decodeResult, type);
2487
2599
  } else if (parts.length == 2) {
@@ -2492,11 +2604,12 @@ function parseMessageType(decodeResult, messageType) {
2492
2604
  }
2493
2605
  const type = parts[1].length == 5 ? parts[1].substring(2, 5) : parts[1].substring(3, 6);
2494
2606
  if (parts[1].substring(3, 6) === "POS" && parts[1].length > 6) {
2495
- processPosition2(decodeResult, parts[1].substring(6).split(","));
2607
+ H1Helper.processPosition(decodeResult, parts[1].substring(6).split(","));
2496
2608
  }
2497
- processMessageType(decodeResult, type);
2609
+ return processMessageType(decodeResult, type);
2498
2610
  } else {
2499
2611
  ResultFormatter.unknown(decodeResult, messageType);
2612
+ return false;
2500
2613
  }
2501
2614
  }
2502
2615
  function processMessageType(decodeResult, type) {
@@ -2512,7 +2625,9 @@ function processMessageType(decodeResult, type) {
2512
2625
  decodeResult.formatted.description = "Progress Report";
2513
2626
  } else {
2514
2627
  decodeResult.formatted.description = "Unknown H1 Message";
2628
+ return false;
2515
2629
  }
2630
+ return true;
2516
2631
  }
2517
2632
  function processDC(decodeResult, data) {
2518
2633
  decodeResult.raw.message_date = data[0];
@@ -2523,60 +2638,6 @@ function processDC(decodeResult, data) {
2523
2638
  decodeResult.raw.message_timestamp = time;
2524
2639
  }
2525
2640
  }
2526
- function processPS(decodeResult, data) {
2527
- const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2528
- if (position) {
2529
- decodeResult.raw.position = position;
2530
- decodeResult.formatted.items.push({
2531
- type: "aircraft_position",
2532
- code: "POS",
2533
- label: "Aircraft Position",
2534
- value: CoordinateUtils.coordinateString(position)
2535
- });
2536
- }
2537
- if (data.length === 9) {
2538
- processRoute(decodeResult, data[3], data[1], data[5], data[4], void 0);
2539
- ResultFormatter.altitude(decodeResult, Number(data[2]) * 100);
2540
- ResultFormatter.temperature(decodeResult, data[6]);
2541
- ResultFormatter.unknown(decodeResult, data[7]);
2542
- ResultFormatter.unknown(decodeResult, data[8]);
2543
- }
2544
- if (data.length === 14) {
2545
- ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2546
- processRoute(decodeResult, data[4], data[2], data[6], data[5], void 0);
2547
- ResultFormatter.temperature(decodeResult, data[7]);
2548
- ResultFormatter.groundspeed(decodeResult, Number(data[10]));
2549
- ResultFormatter.unknown(decodeResult, data[1]);
2550
- ResultFormatter.unknown(decodeResult, data[8]);
2551
- ResultFormatter.unknown(decodeResult, data[9]);
2552
- ResultFormatter.unknown(decodeResult, data.slice(11).join(","));
2553
- }
2554
- }
2555
- function processPosition2(decodeResult, data) {
2556
- const position = CoordinateUtils.decodeStringCoordinatesDecimalMinutes(data[0]);
2557
- if (position) {
2558
- decodeResult.raw.position = position;
2559
- decodeResult.formatted.items.push({
2560
- type: "aircraft_position",
2561
- code: "POS",
2562
- label: "Aircraft Position",
2563
- value: CoordinateUtils.coordinateString(position)
2564
- });
2565
- }
2566
- if (data.length >= 10) {
2567
- ResultFormatter.altitude(decodeResult, Number(data[3]) * 100);
2568
- processRoute(decodeResult, data[1], data[2], data[4], data[5], data[6]);
2569
- ResultFormatter.temperature(decodeResult, data[7]);
2570
- ResultFormatter.unknown(decodeResult, data[8]);
2571
- ResultFormatter.unknown(decodeResult, data[9]);
2572
- }
2573
- if (data.length >= 14) {
2574
- ResultFormatter.groundspeed(decodeResult, Number(data[10]));
2575
- ResultFormatter.unknown(decodeResult, data[11]);
2576
- ResultFormatter.unknown(decodeResult, data[12]);
2577
- ResultFormatter.unknown(decodeResult, data[13]);
2578
- }
2579
- }
2580
2641
  function processRoute(decodeResult, last, time, next, eta, then, date) {
2581
2642
  const lastTime = date ? DateTimeUtils.convertDateTimeToEpoch(time, date) : DateTimeUtils.convertHHMMSSToTod(time);
2582
2643
  const nextTime = date ? DateTimeUtils.convertDateTimeToEpoch(eta, date) : DateTimeUtils.convertHHMMSSToTod(eta);
@@ -2688,6 +2749,129 @@ var Label_4N = class extends DecoderPlugin {
2688
2749
  }
2689
2750
  };
2690
2751
 
2752
+ // lib/plugins/Label_4T_AGFSR.ts
2753
+ var Label_4T_AGFSR = class extends DecoderPlugin {
2754
+ name = "label-4t-agfsr";
2755
+ qualifiers() {
2756
+ return {
2757
+ labels: ["4T"],
2758
+ preambles: ["AGFSR"]
2759
+ };
2760
+ }
2761
+ decode(message, options = {}) {
2762
+ const decodeResult = this.defaultResult();
2763
+ decodeResult.decoder.name = this.name;
2764
+ decodeResult.formatted.description = "Position Report";
2765
+ decodeResult.message = message;
2766
+ const data = message.text.substring(5).split("/");
2767
+ if (!message.text.startsWith("AGFSR") || data.length !== 20) {
2768
+ if (options.debug) {
2769
+ console.log(`Decoder: Unknown 4T message: ${message.text}`);
2770
+ }
2771
+ ResultFormatter.unknown(decodeResult, message.text);
2772
+ decodeResult.decoded = false;
2773
+ decodeResult.decoder.decodeLevel = "none";
2774
+ return decodeResult;
2775
+ }
2776
+ ResultFormatter.flightNumber(decodeResult, data[0].trim());
2777
+ ResultFormatter.departureDay(decodeResult, Number(data[1]));
2778
+ ResultFormatter.arrivalDay(decodeResult, Number(data[2]));
2779
+ ResultFormatter.departureAirport(decodeResult, data[3].substring(0, 3), "IATA");
2780
+ ResultFormatter.arrivalAirport(decodeResult, data[3].substring(3), "IATA");
2781
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[4].substring(0, 4)));
2782
+ ResultFormatter.unknown(decodeResult, data[5], "/");
2783
+ const lat = data[6].substring(0, 7);
2784
+ const lon = data[6].substring(7, 15);
2785
+ ResultFormatter.position(decodeResult, {
2786
+ latitude: CoordinateUtils.getDirection(lat[6]) * Number(lat.substring(0, 2)) + Number(lat.substring(2, 6)) / 60,
2787
+ longitude: CoordinateUtils.getDirection(lon[7]) * Number(lon.substring(0, 3)) + Number(lon.substring(3, 7)) / 60
2788
+ });
2789
+ ResultFormatter.altitude(decodeResult, 100 * Number(data[7]));
2790
+ ResultFormatter.unknownArr(decodeResult, data.slice(8), "/");
2791
+ decodeResult.decoded = true;
2792
+ decodeResult.decoder.decodeLevel = "partial";
2793
+ return decodeResult;
2794
+ }
2795
+ };
2796
+
2797
+ // lib/plugins/Label_58.ts
2798
+ var Label_58 = class extends DecoderPlugin {
2799
+ name = "label-58";
2800
+ qualifiers() {
2801
+ return {
2802
+ labels: ["58"]
2803
+ };
2804
+ }
2805
+ decode(message, options = {}) {
2806
+ const decodeResult = this.defaultResult();
2807
+ decodeResult.decoder.name = this.name;
2808
+ decodeResult.formatted.description = "Position Report";
2809
+ decodeResult.message = message;
2810
+ const data = message.text.split("/");
2811
+ if (data.length === 8) {
2812
+ ResultFormatter.flightNumber(decodeResult, data[0]);
2813
+ ResultFormatter.day(decodeResult, Number(data[1]));
2814
+ ResultFormatter.time_of_day(decodeResult, DateTimeUtils.convertHHMMSSToTod(data[2]));
2815
+ const lat = data[3];
2816
+ const lon = data[4];
2817
+ ResultFormatter.position(decodeResult, {
2818
+ latitude: CoordinateUtils.getDirection(lat[0]) * Number(lat.substring(1)),
2819
+ longitude: CoordinateUtils.getDirection(lon[0]) * Number(lon.substring(1))
2820
+ });
2821
+ ResultFormatter.altitude(decodeResult, Number(data[5]));
2822
+ ResultFormatter.unknown(decodeResult, data[6], "/");
2823
+ ResultFormatter.unknown(decodeResult, data[7], "/");
2824
+ } else {
2825
+ if (options.debug) {
2826
+ console.log(`Decoder: Unknown 58 message: ${message.text}`);
2827
+ }
2828
+ ResultFormatter.unknown(decodeResult, message.text);
2829
+ decodeResult.decoded = false;
2830
+ decodeResult.decoder.decodeLevel = "none";
2831
+ return decodeResult;
2832
+ }
2833
+ decodeResult.decoded = true;
2834
+ decodeResult.decoder.decodeLevel = "partial";
2835
+ return decodeResult;
2836
+ }
2837
+ };
2838
+
2839
+ // lib/plugins/Label_4T_ETA.ts
2840
+ var Label_4T_ETA = class extends DecoderPlugin {
2841
+ name = "label-4t-eta";
2842
+ qualifiers() {
2843
+ return {
2844
+ labels: ["4T"],
2845
+ preambles: ["ETA"]
2846
+ };
2847
+ }
2848
+ decode(message, options = {}) {
2849
+ const decodeResult = this.defaultResult();
2850
+ decodeResult.decoder.name = this.name;
2851
+ decodeResult.formatted.description = "ETA Report";
2852
+ decodeResult.message = message;
2853
+ const data = message.text.substring(3).split("/");
2854
+ if (!message.text.startsWith("ETA") || data.length !== 3) {
2855
+ if (options.debug) {
2856
+ console.log(`Decoder: Unknown 4T message: ${message.text}`);
2857
+ }
2858
+ ResultFormatter.unknown(decodeResult, message.text);
2859
+ decodeResult.decoded = false;
2860
+ decodeResult.decoder.decodeLevel = "none";
2861
+ return decodeResult;
2862
+ }
2863
+ ResultFormatter.flightNumber(decodeResult, data[0].trim());
2864
+ ResultFormatter.departureDay(decodeResult, Number(data[1]));
2865
+ const etaData = data[2].split(" ");
2866
+ ResultFormatter.arrivalDay(decodeResult, Number(etaData[0]));
2867
+ ResultFormatter.arrivalAirport(decodeResult, etaData[1], "IATA");
2868
+ ResultFormatter.eta(decodeResult, DateTimeUtils.convertHHMMSSToTod(etaData[2].substring(0, 4)));
2869
+ decodeResult.decoded = true;
2870
+ decodeResult.decoder.decodeLevel = "full";
2871
+ return decodeResult;
2872
+ }
2873
+ };
2874
+
2691
2875
  // lib/plugins/Label_80.ts
2692
2876
  var Label_80 = class extends DecoderPlugin {
2693
2877
  name = "label-80";
@@ -3124,6 +3308,65 @@ var Label_H1_OHMA = class extends DecoderPlugin {
3124
3308
  }
3125
3309
  };
3126
3310
 
3311
+ // lib/plugins/Label_H1_Slash.ts
3312
+ var Label_H1_Slash = class extends DecoderPlugin {
3313
+ name = "label-h1-slash";
3314
+ qualifiers() {
3315
+ return {
3316
+ labels: ["H1"],
3317
+ preambles: ["/"]
3318
+ };
3319
+ }
3320
+ decode(message, options = {}) {
3321
+ let decodeResult = this.defaultResult();
3322
+ decodeResult.decoder.name = this.name;
3323
+ decodeResult.formatted.description = "Position Report";
3324
+ decodeResult.message = message;
3325
+ const checksum = message.text.slice(-4);
3326
+ const data = message.text.slice(0, message.text.length - 4);
3327
+ const fields = data.split("/");
3328
+ if (fields[0] !== "") {
3329
+ ResultFormatter.unknown(decodeResult, message.text);
3330
+ decodeResult.decoded = false;
3331
+ decodeResult.decoder.decodeLevel = "none";
3332
+ return decodeResult;
3333
+ }
3334
+ const headerData = fields[1].split(".");
3335
+ ResultFormatter.unknown(decodeResult, headerData[0]);
3336
+ if (headerData[1] === "POS" && fields[2].startsWith("TS") && fields[2].length > 15) {
3337
+ H1Helper.processPosition(decodeResult, fields[2].substring(15).split(","));
3338
+ } else if (headerData[1] === "POS") {
3339
+ } else if (headerData[1].startsWith("POS")) {
3340
+ H1Helper.processPosition(decodeResult, headerData[1].substring(3).split(","));
3341
+ } else {
3342
+ ResultFormatter.unknown(decodeResult, headerData[1], ".");
3343
+ }
3344
+ for (let i = 2; i < fields.length; i++) {
3345
+ const field = fields[i];
3346
+ if (field.startsWith("TS")) {
3347
+ H1Helper.processTS(decodeResult, field.substring(2, 15).split(","));
3348
+ } else if (field.startsWith("PS")) {
3349
+ H1Helper.processPS(decodeResult, field.substring(2).split(","));
3350
+ } else {
3351
+ ResultFormatter.unknown(decodeResult, field, "/");
3352
+ }
3353
+ }
3354
+ if (decodeResult.formatted.items.length === 0) {
3355
+ if (options.debug) {
3356
+ console.log(`Decoder: Unknown H1 message: ${message.text}`);
3357
+ }
3358
+ ResultFormatter.unknown(decodeResult, message.text);
3359
+ decodeResult.decoded = false;
3360
+ decodeResult.decoder.decodeLevel = "none";
3361
+ return decodeResult;
3362
+ }
3363
+ ResultFormatter.checksum(decodeResult, checksum);
3364
+ decodeResult.decoded = true;
3365
+ decodeResult.decoder.decodeLevel = !decodeResult.remaining.text ? "full" : "partial";
3366
+ return decodeResult;
3367
+ }
3368
+ };
3369
+
3127
3370
  // lib/plugins/Label_H1_StarPOS.ts
3128
3371
  var Label_H1_StarPOS = class extends DecoderPlugin {
3129
3372
  name = "label-h1-star-pos";
@@ -4304,6 +4547,7 @@ var MessageDecoder = class {
4304
4547
  this.registerPlugin(new Label_10_POS(this));
4305
4548
  this.registerPlugin(new Label_10_Slash(this));
4306
4549
  this.registerPlugin(new Label_12_N_Space(this));
4550
+ this.registerPlugin(new Label_12_POS(this));
4307
4551
  this.registerPlugin(new Label_13Through18_Slash(this));
4308
4552
  this.registerPlugin(new Label_15(this));
4309
4553
  this.registerPlugin(new Label_15_FST(this));
@@ -4330,13 +4574,17 @@ var MessageDecoder = class {
4330
4574
  this.registerPlugin(new Label_4A_Slash_01(this));
4331
4575
  this.registerPlugin(new Label_4J_POS(this));
4332
4576
  this.registerPlugin(new Label_4N(this));
4577
+ this.registerPlugin(new Label_4T_AGFSR(this));
4578
+ this.registerPlugin(new Label_4T_ETA(this));
4333
4579
  this.registerPlugin(new Label_B6_Forwardslash(this));
4334
4580
  this.registerPlugin(new Label_H1_FLR(this));
4335
4581
  this.registerPlugin(new Label_H1_OHMA(this));
4336
4582
  this.registerPlugin(new Label_H1_WRN(this));
4337
4583
  this.registerPlugin(new Label_H1(this));
4584
+ this.registerPlugin(new Label_H1_Slash(this));
4338
4585
  this.registerPlugin(new Label_H1_StarPOS(this));
4339
4586
  this.registerPlugin(new Label_HX(this));
4587
+ this.registerPlugin(new Label_58(this));
4340
4588
  this.registerPlugin(new Label_80(this));
4341
4589
  this.registerPlugin(new Label_83(this));
4342
4590
  this.registerPlugin(new Label_8E(this));