From cc9baa8a7c13e138c4ba630554ded716cfe0a552 Mon Sep 17 00:00:00 2001 From: Mark Bumiller Date: Thu, 12 Mar 2026 22:05:16 -0400 Subject: [PATCH 1/2] ran `npm run lint -- --fix` --- lib/plugins/Label_80.ts | 2 +- lib/plugins/Label_H1_Paren.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/plugins/Label_80.ts b/lib/plugins/Label_80.ts index 7c7ade43..6f60e592 100644 --- a/lib/plugins/Label_80.ts +++ b/lib/plugins/Label_80.ts @@ -182,7 +182,7 @@ export class Label_80 extends DecoderPlugin { } private parseCsvFormat(text: string, results: DecodeResult) { const csvParts = text.split(','); - if(csvParts.length !== 9) { + if (csvParts.length !== 9) { return; } const header = csvParts[0].trim().split(/\s+/); diff --git a/lib/plugins/Label_H1_Paren.ts b/lib/plugins/Label_H1_Paren.ts index 4bd47ad7..ecc291ff 100644 --- a/lib/plugins/Label_H1_Paren.ts +++ b/lib/plugins/Label_H1_Paren.ts @@ -31,7 +31,6 @@ export class Label_H1_Paren extends DecoderPlugin { decodeResult.decoder.decodeLevel = 'partial'; decodeResult.formatted.description = 'Position Report'; - ResultFormatter.flightNumber(decodeResult, match.groups.flight); ResultFormatter.position(decodeResult, { latitude: parseLat(match.groups.lat), From e8dbc6114a0fb8a6114885fb039169a85c3a2a0f Mon Sep 17 00:00:00 2001 From: Mark Bumiller Date: Fri, 13 Mar 2026 14:57:03 -0400 Subject: [PATCH 2/2] renaming LabelH1 parser to Arinc702 parser --- lib/MessageDecoder.ts | 2 +- lib/plugins/{Label_H1.ts => ARINC_702.ts} | 16 ++++++++-------- lib/plugins/Label_1J_2J_FTX.test.ts | 4 ++-- lib/plugins/Label_2P_POS.test.ts | 4 ++-- lib/plugins/Label_4J_POS.test.ts | 4 ++-- lib/plugins/Label_80_INR.test.ts | 4 ++-- lib/plugins/Label_H1.test.ts | 12 ++++++------ lib/plugins/Label_H1_FPN.test.ts | 4 ++-- lib/plugins/Label_H1_FTX.test.ts | 4 ++-- lib/plugins/Label_H1_INI.test.ts | 4 ++-- lib/plugins/Label_H1_INR.test.ts | 4 ++-- lib/plugins/Label_H1_LDI.test.ts | 4 ++-- lib/plugins/Label_H1_PER.test.ts | 4 ++-- lib/plugins/Label_H1_POS.test.ts | 4 ++-- lib/plugins/Label_H1_PRG.test.ts | 4 ++-- lib/plugins/Label_H1_PWI.test.ts | 7 ++----- lib/plugins/Label_H1_REJ.test.ts | 4 ++-- lib/plugins/Label_H1_REQ.test.ts | 4 ++-- lib/plugins/Label_H1_RES.test.ts | 4 ++-- lib/plugins/Label_H1_Slash.test.ts | 4 ++-- lib/plugins/official.ts | 2 +- lib/utils/{h1_helper.ts => arinc_702_helper.ts} | 11 +++++++---- 22 files changed, 57 insertions(+), 57 deletions(-) rename lib/plugins/{Label_H1.ts => ARINC_702.ts} (90%) rename lib/utils/{h1_helper.ts => arinc_702_helper.ts} (98%) diff --git a/lib/MessageDecoder.ts b/lib/MessageDecoder.ts index 3e2e0aec..fc81f950 100644 --- a/lib/MessageDecoder.ts +++ b/lib/MessageDecoder.ts @@ -17,6 +17,7 @@ export class MessageDecoder { this.debug = false; this.registerPlugin(new Plugins.CBand(this)); // first, for now, so it can wrap other plugins + this.registerPlugin(new Plugins.Arinc702(this)); this.registerPlugin(new Plugins.Label_ColonComma(this)); this.registerPlugin(new Plugins.Label_5Z_Slash(this)); this.registerPlugin(new Plugins.Label_10_LDR(this)); @@ -64,7 +65,6 @@ export class MessageDecoder { this.registerPlugin(new Plugins.Label_H1_OHMA(this)); this.registerPlugin(new Plugins.Label_H1_Paren(this)); this.registerPlugin(new Plugins.Label_H1_WRN(this)); - this.registerPlugin(new Plugins.Label_H1(this)); this.registerPlugin(new Plugins.Label_H1_StarPOS(this)); this.registerPlugin(new Plugins.Label_HX(this)); this.registerPlugin(new Plugins.Label_58(this)); diff --git a/lib/plugins/Label_H1.ts b/lib/plugins/ARINC_702.ts similarity index 90% rename from lib/plugins/Label_H1.ts rename to lib/plugins/ARINC_702.ts index ea37f4fc..b784ffe5 100644 --- a/lib/plugins/Label_H1.ts +++ b/lib/plugins/ARINC_702.ts @@ -1,14 +1,14 @@ import { DecoderPlugin } from '../DecoderPlugin'; import { DecodeResult, Message, Options } from '../DecoderPluginInterface'; -import { H1Helper } from '../utils/h1_helper'; +import { Arinc702Helper } from '../utils/arinc_702_helper'; import { ResultFormatter } from '../utils/result_formatter'; // TODO: come up with a better name as this decodes multiple labels -export class Label_H1 extends DecoderPlugin { - name = 'label-h1'; +export class Arinc702 extends DecoderPlugin { + name = 'arinc-702'; qualifiers() { return { - labels: ['1J', '2J', '2P', '4J', '80', 'H1'], + labels: ['*'], }; } @@ -21,7 +21,7 @@ export class Label_H1 extends DecoderPlugin { // try to decode the entire message let decoded = false; - decoded = H1Helper.decodeH1Message(decodeResult, msg); + decoded = Arinc702Helper.decodeH1Message(decodeResult, msg); if (decoded) { return this.processDecodeResult(decodeResult, decoded, options, message); } @@ -29,7 +29,7 @@ export class Label_H1 extends DecoderPlugin { // try to handle messages like `/HDQDLUA.POS` if (msg.startsWith('/')) { const headerData = msg.split('.'); - decoded = H1Helper.decodeH1Message( + decoded = Arinc702Helper.decodeH1Message( decodeResult, headerData.slice(1).join('.'), ); @@ -52,7 +52,7 @@ export class Label_H1 extends DecoderPlugin { // need a better way to figure this out const offset = hashParts[0] === '- ' || isNaN(parseInt(hashParts[1][1])) ? 3 : 4; - decoded = H1Helper.decodeH1Message( + decoded = Arinc702Helper.decodeH1Message( decodeResult, msg.slice(hashParts[0].length + offset), ); @@ -81,7 +81,7 @@ export class Label_H1 extends DecoderPlugin { // try to handle messages like `M74AMC4086FTX` const slashParts = msg.split('/'); if (slashParts[0].length > 3) { - decoded = H1Helper.decodeH1Message( + decoded = Arinc702Helper.decodeH1Message( decodeResult, msg.slice(slashParts[0].length - 3), ); diff --git a/lib/plugins/Label_1J_2J_FTX.test.ts b/lib/plugins/Label_1J_2J_FTX.test.ts index af9c4c1d..2f286bdd 100644 --- a/lib/plugins/Label_1J_2J_FTX.test.ts +++ b/lib/plugins/Label_1J_2J_FTX.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label 1J/2J FTX', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label 1J/2J FTX', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes Label 1J', () => { diff --git a/lib/plugins/Label_2P_POS.test.ts b/lib/plugins/Label_2P_POS.test.ts index 2e815639..f2b84b65 100644 --- a/lib/plugins/Label_2P_POS.test.ts +++ b/lib/plugins/Label_2P_POS.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_2P Preamble POS', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_2P Preamble POS', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('variant 1', () => { diff --git a/lib/plugins/Label_4J_POS.test.ts b/lib/plugins/Label_4J_POS.test.ts index 001cead8..c79cecc4 100644 --- a/lib/plugins/Label_4J_POS.test.ts +++ b/lib/plugins/Label_4J_POS.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label 4J POS', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label 4J POS', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes inmarsat', () => { diff --git a/lib/plugins/Label_80_INR.test.ts b/lib/plugins/Label_80_INR.test.ts index 85b83f10..dfd75503 100644 --- a/lib/plugins/Label_80_INR.test.ts +++ b/lib/plugins/Label_80_INR.test.ts @@ -1,6 +1,6 @@ import { decode } from 'node:punycode'; import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label 80 Preamble INR', () => { let plugin: Label_H1; @@ -8,7 +8,7 @@ describe('Label 80 Preamble INR', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes variant 1', () => { diff --git a/lib/plugins/Label_H1.test.ts b/lib/plugins/Label_H1.test.ts index 19cb488f..18dd8ef4 100644 --- a/lib/plugins/Label_H1.test.ts +++ b/lib/plugins/Label_H1.test.ts @@ -1,20 +1,20 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; -describe('Label_H1', () => { - let plugin: Label_H1; +describe('Arinc 702 Messages', () => { + let plugin: Arinc702; beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('matches Label H1 Preamble FLR qualifiers', () => { expect(plugin.decode).toBeDefined(); - expect(plugin.name).toBe('label-h1'); + expect(plugin.name).toBe('arinc-702'); expect(plugin.qualifiers).toBeDefined(); expect(plugin.qualifiers()).toEqual({ - labels: ['1J', '2J', '2P', '4J', '80', 'H1'], + labels: ['*'], }); }); }); diff --git a/lib/plugins/Label_H1_FPN.test.ts b/lib/plugins/Label_H1_FPN.test.ts index 54c881e2..e5da2327 100644 --- a/lib/plugins/Label_H1_FPN.test.ts +++ b/lib/plugins/Label_H1_FPN.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 FPN', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 FPN', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes Label H1 Preamble FPN landing', () => { diff --git a/lib/plugins/Label_H1_FTX.test.ts b/lib/plugins/Label_H1_FTX.test.ts index bbe97c7d..5b8aceb5 100644 --- a/lib/plugins/Label_H1_FTX.test.ts +++ b/lib/plugins/Label_H1_FTX.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 FTX', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 FTX', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes inmarsat', () => { diff --git a/lib/plugins/Label_H1_INI.test.ts b/lib/plugins/Label_H1_INI.test.ts index d786ec40..4818cbbd 100644 --- a/lib/plugins/Label_H1_INI.test.ts +++ b/lib/plugins/Label_H1_INI.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 INI', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 INI', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes valid', () => { diff --git a/lib/plugins/Label_H1_INR.test.ts b/lib/plugins/Label_H1_INR.test.ts index d1a6ad34..d7276e1a 100644 --- a/lib/plugins/Label_H1_INR.test.ts +++ b/lib/plugins/Label_H1_INR.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 INR', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 INR', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes valid', () => { diff --git a/lib/plugins/Label_H1_LDI.test.ts b/lib/plugins/Label_H1_LDI.test.ts index b0b1c7ac..a858cdb5 100644 --- a/lib/plugins/Label_H1_LDI.test.ts +++ b/lib/plugins/Label_H1_LDI.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 LDI', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 LDI', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes variant 2', () => { diff --git a/lib/plugins/Label_H1_PER.test.ts b/lib/plugins/Label_H1_PER.test.ts index 2c2b2fd8..c21b306f 100644 --- a/lib/plugins/Label_H1_PER.test.ts +++ b/lib/plugins/Label_H1_PER.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 PER', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 PER', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes short variant', () => { diff --git a/lib/plugins/Label_H1_POS.test.ts b/lib/plugins/Label_H1_POS.test.ts index 71faa14f..0cb932a8 100644 --- a/lib/plugins/Label_H1_POS.test.ts +++ b/lib/plugins/Label_H1_POS.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label_H1 POS', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label_H1 POS', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('variant 1', () => { diff --git a/lib/plugins/Label_H1_PRG.test.ts b/lib/plugins/Label_H1_PRG.test.ts index 2b63b86d..e63b9f0b 100644 --- a/lib/plugins/Label_H1_PRG.test.ts +++ b/lib/plugins/Label_H1_PRG.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 Preamble PRG', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 Preamble PRG', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes Label H1 Preamble PRG message', () => { diff --git a/lib/plugins/Label_H1_PWI.test.ts b/lib/plugins/Label_H1_PWI.test.ts index 824be92c..3824c5a0 100644 --- a/lib/plugins/Label_H1_PWI.test.ts +++ b/lib/plugins/Label_H1_PWI.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 PWI', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 PWI', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes Label H1 Preamble PWI valid', () => { @@ -43,8 +43,5 @@ describe('Label H1 PWI', () => { expect(decodeResult.decoded).toBe(false); expect(decodeResult.decoder.decodeLevel).toBe('none'); - expect(decodeResult.decoder.name).toBe('label-h1'); - expect(decodeResult.formatted.description).toBe('Unknown'); - expect(decodeResult.message).toBe(message); }); }); diff --git a/lib/plugins/Label_H1_REJ.test.ts b/lib/plugins/Label_H1_REJ.test.ts index ec4555b2..10f1ea6a 100644 --- a/lib/plugins/Label_H1_REJ.test.ts +++ b/lib/plugins/Label_H1_REJ.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 Preamble REJ', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 Preamble REJ', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes PWI variant 1', () => { diff --git a/lib/plugins/Label_H1_REQ.test.ts b/lib/plugins/Label_H1_REQ.test.ts index 6bcfdf95..59b97935 100644 --- a/lib/plugins/Label_H1_REQ.test.ts +++ b/lib/plugins/Label_H1_REQ.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 preamble REQ', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 preamble REQ', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes PWI', () => { diff --git a/lib/plugins/Label_H1_RES.test.ts b/lib/plugins/Label_H1_RES.test.ts index 7df3a38f..7d18ed8c 100644 --- a/lib/plugins/Label_H1_RES.test.ts +++ b/lib/plugins/Label_H1_RES.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 Preamble RES', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 Preamble RES', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes PWI', () => { diff --git a/lib/plugins/Label_H1_Slash.test.ts b/lib/plugins/Label_H1_Slash.test.ts index 77b8abd1..4f645e7e 100644 --- a/lib/plugins/Label_H1_Slash.test.ts +++ b/lib/plugins/Label_H1_Slash.test.ts @@ -1,5 +1,5 @@ import { MessageDecoder } from '../MessageDecoder'; -import { Label_H1 } from './Label_H1'; +import { Arinc702 } from './ARINC_702'; describe('Label H1 /', () => { let plugin: Label_H1; @@ -7,7 +7,7 @@ describe('Label H1 /', () => { beforeEach(() => { const decoder = new MessageDecoder(); - plugin = new Label_H1(decoder); + plugin = new Arinc702(decoder); }); test('decodes variant 1', () => { diff --git a/lib/plugins/official.ts b/lib/plugins/official.ts index 23ff69e8..f92cf5bd 100644 --- a/lib/plugins/official.ts +++ b/lib/plugins/official.ts @@ -46,7 +46,7 @@ export * from './Label_83'; export * from './Label_8E'; export * from './Label_B6'; export * from './Label_ColonComma'; -export * from './Label_H1'; +export * from './ARINC_702'; export * from './Label_H2_02E'; export * from './Label_H1_FLR'; export * from './Label_H1_OHMA'; diff --git a/lib/utils/h1_helper.ts b/lib/utils/arinc_702_helper.ts similarity index 98% rename from lib/utils/h1_helper.ts rename to lib/utils/arinc_702_helper.ts index 52cc2352..c5ac0fc5 100644 --- a/lib/utils/h1_helper.ts +++ b/lib/utils/arinc_702_helper.ts @@ -7,7 +7,7 @@ import { FlightPlanUtils } from './flight_plan_utils'; import { ResultFormatter } from './result_formatter'; import { RouteUtils } from './route_utils'; -export class H1Helper { +export class Arinc702Helper { public static decodeH1Message(decodeResult: DecodeResult, message: string) { const checksum = parseInt(message.slice(-4), 16); const data = message.slice(0, message.length - 4); @@ -87,7 +87,7 @@ export class H1Helper { ResultFormatter.unknown(decodeResult, fields[i], '/'); break; case 'PS': // Position - H1Helper.processPS(decodeResult, data.split(',')); + Arinc702Helper.processPS(decodeResult, data.split(',')); break; case 'RF': case 'RI': @@ -113,7 +113,7 @@ export class H1Helper { processTimeOfDeparture(decodeResult, data.split(',')); break; case 'TS': - H1Helper.processTimeStamp(decodeResult, data.split(',')); + Arinc702Helper.processTimeStamp(decodeResult, data.split(',')); break; case 'VR': ResultFormatter.version(decodeResult, parseInt(data, 10) / 10); @@ -348,7 +348,10 @@ function parseMessageType( const messageParts = messagePart.split(','); const messageType = messageParts[0]; if (messageType.startsWith('POS')) { - H1Helper.processPosition(decodeResult, messagePart.substring(3).split(',')); + Arinc702Helper.processPosition( + decodeResult, + messagePart.substring(3).split(','), + ); return processMessageType(decodeResult, 'POS'); } else if (messageType.length === 6) { const part1 = processMessageType(decodeResult, messageType.substring(0, 3));