diff --git a/lib/plugins/Label_1J_2J_FTX.test.ts b/lib/plugins/Label_1J_2J_FTX.test.ts index f13a1d1..8b3183b 100644 --- a/lib/plugins/Label_1J_2J_FTX.test.ts +++ b/lib/plugins/Label_1J_2J_FTX.test.ts @@ -43,11 +43,12 @@ describe('Label 1J/2J FTX', () => { expect(decodeResult.raw.flight_number).toBe('RCH4086'); expect(decodeResult.raw.mission_number).toBe('ABB02R70E037'); expect(decodeResult.raw.message_timestamp).toBe(1759367848); - expect(decodeResult.raw.fuel_burned).toBe(1791); + expect(decodeResult.raw.fuel_on_board).toBe(1791); expect(decodeResult.raw.freetext).toBe('GOOD EVENING PLEASE PASS US THE SUPER BOWL SCORE WHEN ABLE. THANK YOU'); + expect(decodeResult.raw.version).toBe(3.2); expect(decodeResult.raw.checksum).toBe(0x8D70); - expect(decodeResult.formatted.items.length).toBe(5); - expect(decodeResult.remaining.text).toBe('M74/MR049,/VR032'); + expect(decodeResult.formatted.items.length).toBe(6); + expect(decodeResult.remaining.text).toBe('M74/MR049,'); }); test('decodes ', () => { diff --git a/lib/plugins/Label_2P_POS.test.ts b/lib/plugins/Label_2P_POS.test.ts index 0fe5b14..3a1e3ed 100644 --- a/lib/plugins/Label_2P_POS.test.ts +++ b/lib/plugins/Label_2P_POS.test.ts @@ -30,10 +30,11 @@ describe('Label_2P Preamble POS', () => { expect(decodeResult.raw.route.waypoints[0].time).toBe(19084); expect(decodeResult.raw.route.waypoints[2].name).toBe('?'); expect(decodeResult.raw.altitude).toBe(35000); - expect(decodeResult.raw.fuel_burned).toBe(857); + expect(decodeResult.raw.fuel_on_board).toBe(857); + expect(decodeResult.raw.version).toBe(3.2); expect(decodeResult.raw.checksum).toBe(0x2b89); - expect(decodeResult.formatted.items.length).toBe(11); - expect(decodeResult.remaining.text).toBe('M80/MR103,,084081,,/VR032'); + expect(decodeResult.formatted.items.length).toBe(10); + expect(decodeResult.remaining.text).toBe('M80/MR103,,084081,'); }); test('', () => { diff --git a/lib/plugins/Label_H1_POS.test.ts b/lib/plugins/Label_H1_POS.test.ts index e222586..b3bf7b0 100644 --- a/lib/plugins/Label_H1_POS.test.ts +++ b/lib/plugins/Label_H1_POS.test.ts @@ -295,12 +295,14 @@ describe('Label_H1 POS', () => { expect(decodeResult.raw.route.waypoints[1].name).toBe('WEDAK'); expect(decodeResult.raw.route.waypoints[1].time).toBe(11879); expect(decodeResult.raw.route.waypoints[2].name).toBe('?'); - expect(decodeResult.raw.mac).toBe(26.4); - expect(decodeResult.raw.trim).toBe(1.1); - expect(decodeResult.raw.fuel_burned).toBe(742); + expect(decodeResult.raw.center_of_gravity).toBe(26.4); + expect(decodeResult.raw.cg_lower_limit).toBe(11.0); + expect(decodeResult.raw.cg_upper_limit).toBe(36.0); + expect(decodeResult.raw.fuel_on_board).toBe(742); + expect(decodeResult.raw.version).toBe(3.2); expect(decodeResult.raw.checksum).toBe(0x4e17); - expect(decodeResult.formatted.items.length).toBe(12); - expect(decodeResult.remaining.text).toBe('F37A#M1B/MR1,,267070,T468,360/VR32'); + expect(decodeResult.formatted.items.length).toBe(14); + expect(decodeResult.remaining.text).toBe('F37A#M1B/MR1,,267070,T468'); }); test('variant 8', () => { diff --git a/lib/utils/h1_helper.ts b/lib/utils/h1_helper.ts index 6049653..43a1239 100644 --- a/lib/utils/h1_helper.ts +++ b/lib/utils/h1_helper.ts @@ -46,7 +46,7 @@ export class H1Helper { processETA(data, decodeResult, fields, i); break; case 'FB': - ResultFormatter.burnedFuel(decodeResult, parseInt(data, 10)); + ResultFormatter.currentFuel(decodeResult, parseInt(data, 10)); break; case 'FN': decodeResult.raw.flight_number = data; @@ -78,13 +78,16 @@ export class H1Helper { decodeResult.raw.serial_number = data; break; case 'TD': - processTimeOfDeparture(decodeResult, data.split(',')); // Strip off TD + processTimeOfDeparture(decodeResult, data.split(',')); break; case 'TS': H1Helper.processTimeStamp(decodeResult, data.split(',')); break; + case 'VR': + ResultFormatter.version(decodeResult, parseInt(data, 10)/10); + break; case 'WD': - processWindData(decodeResult, data); // Strip off WD + processWindData(decodeResult, data); break; default: ResultFormatter.unknown(decodeResult, fields[i], '/'); @@ -242,11 +245,19 @@ function processLandingReport(decodeResult: DecodeResult, data: string[]) { function processCenterOfGravity(decodeResult: DecodeResult, data: string[]) { if(data.length === 1) { - ResultFormatter.mac(decodeResult, parseInt(data[0], 10) / 10); + if(data[0] !== undefined && data[0] !== '') { + ResultFormatter.cg(decodeResult, parseInt(data[0], 10) / 10); + } } else if (data.length === 3) { - ResultFormatter.mac(decodeResult, parseInt(data[0], 10) / 10); - ResultFormatter.trim(decodeResult, parseInt(data[1], 10) / 100); - ResultFormatter.unknown(decodeResult, data[2],','); + if(data[0] !== undefined && data[0] !== '') { + ResultFormatter.cg(decodeResult, parseInt(data[0], 10) / 10, 'center'); + } + if(data[1] !== undefined && data[1] !== '') { + ResultFormatter.cg(decodeResult, parseInt(data[1], 10) / 10, 'lower'); + } + if(data[2] !== undefined && data[2] !== '') { + ResultFormatter.cg(decodeResult, parseInt(data[2], 10) / 10, 'upper'); + } } else { ResultFormatter.unknown(decodeResult, data.join(',')); diff --git a/lib/utils/result_formatter.ts b/lib/utils/result_formatter.ts index 0d27b4e..c6245c8 100644 --- a/lib/utils/result_formatter.ts +++ b/lib/utils/result_formatter.ts @@ -459,6 +459,48 @@ export class ResultFormatter { } } + static cg(decodeResult: DecodeResult, value: number, type: "center" | "lower" | "upper" = "center") { + switch(type) { + case "center": + decodeResult.raw.center_of_gravity = value; + decodeResult.formatted.items.push({ + type: "center_of_gravity", + code: "CG", + label: "Center of Gravity", + value: `${decodeResult.raw.center_of_gravity} %`, + }); + break; + case "lower": + decodeResult.raw.cg_lower_limit = value; + decodeResult.formatted.items.push({ + type: "cg_lower_limit", + code: "CG_LOWER", + label: "Center of Gravity Lower Limit", + value: `${decodeResult.raw.cg_lower_limit} %`, + }); + break; + case "upper": + decodeResult.raw.cg_upper_limit = value; + decodeResult.formatted.items.push({ + type: "cg_upper_limit", + code: "CG_UPPER", + label: "Center of Gravity Upper Limit", + value: `${decodeResult.raw.cg_upper_limit} %`, + }); + break; + } + } + + static version(decodeResult: DecodeResult, value: number) { + decodeResult.raw.version = value; + decodeResult.formatted.items.push({ + type: "version", + code: "VERSION", + label: "Message Version", + value: `v${decodeResult.raw.version.toFixed(1)}`, + }); + } + static unknown(decodeResult: DecodeResult, value: string, sep: string = ',') { if (!decodeResult.remaining.text) decodeResult.remaining.text = value;