UNPKG

@z0mt3c/f1-telemetry-client

Version:

[![Node.js CI](https://github.com/z0mt3c/f1-telemetry-client/actions/workflows/node.js.yml/badge.svg)](https://github.com/z0mt3c/f1-telemetry-client/actions/workflows/node.js.yml) [![NPM Release](https://img.shields.io/npm/v/@z0mt3c/f1-telemetry-client.sv

46 lines (45 loc) 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PacketLapDataParser = void 0; const F1Parser_1 = require("../F1Parser"); const LapDataParser_1 = require("./LapDataParser"); const PacketHeaderParser_1 = require("./PacketHeaderParser"); class PacketLapDataParser extends F1Parser_1.F1Parser { constructor(buffer, packetFormat, bigintEnabled) { super(); this.endianess('little') .nest('m_header', { type: new PacketHeaderParser_1.PacketHeaderParser(packetFormat, bigintEnabled), }) .array('m_lapData', { length: packetFormat >= 2020 ? 22 : 20, type: new LapDataParser_1.LapDataParser(packetFormat), }); if (packetFormat >= 2022) { this.uint8('m_timeTrialPBCarIdx').uint8('m_timeTrialRivalCarIdx'); } this.data = this.postProcess(this.fromBuffer(buffer)); } postProcess(packetLapData) { packetLapData.m_lapData.forEach((lap) => { if (lap.m_sector1TimeMinutes != null && lap.m_sector1TimeInMS != null && lap.m_sector1TimeMinutes > 0) { lap.m_sector1TimeInMS += lap.m_sector1TimeMinutes * 60 * 1000; lap.m_sector1TimeMinutes = undefined; } if (lap.m_sector2TimeMinutes != null && lap.m_sector2TimeInMS != null && lap.m_sector2TimeMinutes > 0) { lap.m_sector2TimeInMS += lap.m_sector2TimeMinutes * 60 * 1000; lap.m_sector2TimeMinutes = undefined; } if (lap.m_deltaToRaceLeaderMinutes != null && lap.m_deltaToRaceLeaderInMS != null && lap.m_deltaToRaceLeaderMinutes > 0) { lap.m_deltaToRaceLeaderInMS += lap.m_deltaToRaceLeaderMinutes * 60 * 1000; lap.m_deltaToRaceLeaderMinutes = undefined; } if (lap.m_deltaToCarInFrontMinutes != null && lap.m_deltaToCarInFrontInMS != null && lap.m_deltaToCarInFrontMinutes > 0) { lap.m_deltaToCarInFrontInMS += lap.m_deltaToCarInFrontMinutes * 60 * 1000; lap.m_deltaToCarInFrontMinutes = undefined; } }); return packetLapData; } } exports.PacketLapDataParser = PacketLapDataParser;