@z0mt3c/f1-telemetry-client
Version:
[](https://github.com/z0mt3c/f1-telemetry-client/actions/workflows/node.js.yml) [ • 2.24 kB
JavaScript
;
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;