UNPKG

@rflafla/f1-udp-parser

Version:

The F1 series of games support the outputting of key game data via a UDP data stream. This data can be interpreted by external apps or connected peripherals for a range of different uses, including providing additional telemetry information, customised HU

518 lines (517 loc) 15 kB
export interface PacketHeader { m_packetFormat: number; m_gameYear: number; m_gameMajorVersion: number; m_gameMinorVersion: number; m_packetVersion: number; m_packetId: number; m_sessionUID: bigint; m_sessionTime: number; m_frameIdentifier: number; m_overallFrameIdentifier: number; m_playerCarIndex: number; m_secondaryPlayerCarIndex: number; } export interface CarMotionData { m_worldPositionX: number; m_worldPositionY: number; m_worldPositionZ: number; m_worldVelocityX: number; m_worldVelocityY: number; m_worldVelocityZ: number; m_worldForwardDirX: number; m_worldForwardDirY: number; m_worldForwardDirZ: number; m_worldRightDirX: number; m_worldRightDirY: number; m_worldRightDirZ: number; m_gForceLateral: number; m_gForceLongitudinal: number; m_gForceVertical: number; m_yaw: number; m_pitch: number; m_roll: number; } export interface PacketMotionData { m_header: PacketHeader; m_carMotionData: CarMotionData[]; m_suspensionPosition: number[]; m_suspensionVelocity: number[]; m_suspensionAcceleration: number[]; m_wheelSpeed: number[]; m_wheelSlip: number[]; m_wheelSlipRatio: number[]; m_wheelSlipAngle: number[]; m_wheelLatForce: number[]; m_wheelLongForce: number[]; m_heightOfCOGAboveGround: number; m_localVelocityX: number; m_localVelocityY: number; m_localVelocityZ: number; m_angularVelocityX: number; m_angularVelocityY: number; m_angularVelocityZ: number; m_angularAccelerationX: number; m_angularAccelerationY: number; m_angularAccelerationZ: number; m_frontWheelsAngle: number; } export interface MarshalZone { m_zoneStart: number; m_zoneFlag: number; } export interface WeatherForecastSample { m_sessionType: number; m_timeOffset: number; m_weather: number; m_trackTemperature: number; m_trackTemperatureChange: number; m_airTemperature: number; m_airTemperatureChange: number; m_rainPercentage: number; } export interface PacketSessionData { m_header: PacketHeader; m_weather: number; m_trackTemperature: number; m_airTemperature: number; m_totalLaps: number; m_trackLength: number; m_sessionType: number; m_trackId: number; m_formula: number; m_sessionTimeLeft: number; m_sessionDuration: number; m_pitSpeedLimit: number; m_gamePaused: number; m_isSpectating: number; m_spectatorCarIndex: number; m_sliProNativeSupport: number; m_numMarshalZones: number; m_marshalZones: MarshalZone[]; m_safetyCarStatus: number; m_networkGame: number; m_numWeatherForecastSamples: number; m_weatherForecastSamples: WeatherForecastSample[]; m_forecastAccuracy: number; m_aiDifficulty: number; m_seasonLinkIdentifier: number; m_weekendLinkIdentifier: number; m_sessionLinkIdentifier: number; m_pitStopWindowIdealLap: number; m_pitStopWindowLatestLap: number; m_pitStopRejoinPosition: number; m_steeringAssist: number; m_brakingAssist: number; m_gearboxAssist: number; m_pitAssist: number; m_pitReleaseAssist: number; m_ERSAssist: number; m_DRSAssist: number; m_dynamicRacingLine: number; m_dynamicRacingLineType: number; m_gameMode: number; m_ruleSet: number; m_timeOfDay: number; m_sessionLength: number; m_speedUnitsLeadPlayer: number; m_temperatureUnitsLeadPlayer: number; m_speedUnitsSecondaryPlayer: number; m_temperatureUnitsSecondaryPlayer: number; m_numSafetyCarPeriods: number; m_numVirtualSafetyCarPeriods: number; m_numRedFlagPeriods: number; m_equalCarPerformance: number; m_recoveryMode: number; m_flashbackLimit: number; m_surfaceType: number; m_lowFuelMode: number; m_raceStarts: number; m_tyreTemperature: number; m_pitLaneTyreSim: number; m_carDamage: number; m_carDamageRate: number; m_collisions: number; m_collisionsOffForFirstLapOnly: number; m_mpUnsafePitRelease: number; m_mpOffForGriefing: number; m_cornerCuttingStringency: number; m_parcFermeRules: number; m_pitStopExperience: number; m_safetyCar: number; m_safetyCarExperience: number; m_formationLap: number; m_formationLapExperience: number; m_redFlags: number; m_affectsLicenceLevelSolo: number; m_affectsLicenceLevelMP: number; m_numSessionsInWeekend: number; m_weekendStructure: number[]; m_sector2LapDistanceStart: number; m_sector3LapDistanceStart: number; } export interface LapData { m_lastLapTimeInMs: number; m_currentLapTimeInMs: number; m_sector1TimeInMS: number; m_sector1TimeMinutes: number; m_sector2TimeInMS: number; m_sector2TimeMinutes: number; m_sector1TimeMSPart: number; m_sector2TimeMSPart: number; m_sector1TimeMinutesPart: number; m_sector2TimeMinutesPart: number; m_deltaToCarInFrontInMS: number; m_deltaToRaceLeaderInMS: number; m_deltaToCarInFrontMSPart: number; m_deltaToCarInFrontMinutesPart: number; m_deltaToRaceLeaderMSPart: number; m_deltaToRaceLeaderMinutesPart: number; m_lapDistance: number; m_totalDistance: number; m_safetyCarDelta: number; m_carPosition: number; m_currentLapNum: number; m_pitStatus: number; m_numPitStops: number; m_sector: number; m_currentLapInvalid: number; m_penalties: number; m_warnings: number; m_totalWarnings: number; m_cornerCuttingWarnings: number; m_numUnservedDriveThroughPens: number; m_numUnservedStopGoPens: number; m_gridPosition: number; m_driverStatus: number; m_resultStatus: number; m_pitLaneTimerActive: number; m_pitLaneTimeInLaneInMS: number; m_pitStopTimerInMS: number; m_pitStopShouldServePen: number; m_speedTrapFastestSpeed: number; m_speedTrapFastestLap: number; } export interface PacketLapData { m_header: PacketHeader; m_lapData: LapData[]; m_timeTrialPBCarIdx: number; m_timeTrialRivalCarIdx: number; } export interface EventDataDetails { vehicleIdx: number; lapTime: number; penaltyType: number; infringementType: number; otherVehicleIdx: number; time: number; lapNum: number; placesGained: number; speed: number; isOverallFastestInSession: number; isDriverFastestInSession: number; fastestVehicleIdxInSession: number; fastestSpeedInSession: number; numLights: number; flashbackFrameIdentifier: number; flashbackSessionTime: number; buttonStatus: number; overtakingVehicleIdx: number; beingOvertakenVehicleIdx: number; safetyCarType: number; eventType: number; vehicle1Idx: number; vehicle2Idx: number; stopTime: number; reason: number; } export interface PacketEventData { m_header: PacketHeader; m_eventStringCode: string; m_eventDetails: EventDataDetails; } export interface ParticipantData { m_aiControlled: number; m_driverId: number; m_networkId: number; m_teamId: number; m_myTeam: number; m_raceNumber: number; m_nationality: number; m_name: string; m_yourTelemetry: number; m_showOnlineNames: number; m_techLevel: number; m_platform: number; m_numColours: number; m_liveryColours: LiveryColour[]; } export interface PacketParticipantsData { m_header: PacketHeader; m_numActiveCars: number; m_participants: ParticipantData[]; } export interface CarSetupData { m_frontWing: number; m_rearWing: number; m_onThrottle: number; m_offThrottle: number; m_frontCamber: number; m_rearCamber: number; m_frontToe: number; m_rearToe: number; m_frontSuspension: number; m_rearSuspension: number; m_frontAntiRollBar: number; m_rearAntiRollBar: number; m_frontSuspensionHeight: number; m_rearSuspensionHeight: number; m_brakePressure: number; m_brakeBias: number; m_engineBraking: number; m_rearLeftTyrePressure: number; m_rearRightTyrePressure: number; m_frontLeftTyrePressure: number; m_frontRightTyrePressure: number; m_ballast: number; m_fuelLoad: number; } export interface PacketCarSetupData { m_header: PacketHeader; m_carSetups: CarSetupData[]; m_nextFrontWingValue: number; } export interface CarTelemetryData { m_speed: number; m_throttle: number; m_steer: number; m_brake: number; m_clutch: number; m_gear: number; m_engineRPM: number; m_drs: number; m_revLightsPercent: number; m_revLightsBitValue: number; m_brakesTemperature: number[]; m_tyresSurfaceTemperature: number[]; m_tyresInnerTemperature: number[]; m_engineTemperature: number; m_tyresPressure: number[]; m_surfaceType: number[]; } export interface PacketCarTelemetryData { m_header: PacketHeader; m_carTelemetryData: CarTelemetryData[]; m_mfdPanelIndex: number; m_mfdPanelIndexSecondaryPlayer: number; m_suggestedGear: number; } export interface CarStatusData { m_tractionControl: number; m_antiLockBrakes: number; m_fuelMix: number; m_frontBrakeBias: number; m_pitLimiterStatus: number; m_fuelInTank: number; m_fuelCapacity: number; m_maxRPM: number; m_idleRPM: number; m_maxGears: number; m_drsAllowed: number; m_drsActivationDistance: number; m_actualTyreCompound: number; m_visualTyreCompound: number; m_tyresAgeLaps: number; m_vehicleFiaFlags: number; m_enginePowerICE: number; m_enginePowerMGUK: number; m_ersStoreEnergy: number; m_ersDeployMode: number; m_ersHarvestedThisLapMGUK: number; m_ersHarvestedThisLapMGUH: number; m_ersDeployedThisLap: number; m_networkPaused: number; } export interface PacketCarStatusData { m_header: PacketHeader; m_carStatusData: CarStatusData[]; } export interface FinalClassificationData { m_position: number; m_numLaps: number; m_gridPosition: number; m_points: number; m_numPitStops: number; m_resultStatus: number; m_resultReason: number; m_bestLapTimeInMs: number; m_totalRaceTime: number; m_penaltiesTime: number; m_numPenalties: number; m_numTyreStints: number; m_tyreStintsActual: number[]; m_tyreStintsVisual: number[]; m_tyreStintsEndLaps: number[]; } export interface PacketFinalClassificationData { m_header: PacketHeader; m_numCars: number; m_classificationData: FinalClassificationData[]; } export interface LobbyInfoData { m_aiController: number; m_teamId: number; m_nationality: number; m_platform: number; m_name: string; m_carNumber: number; m_yourTelemetry: number; m_showOnlineNames: number; m_techLevel: number; m_readyStatus: number; } export interface PacketLobbyInfoData { m_header: PacketHeader; m_numPlayers: number; m_lobbyPlayers: LobbyInfoData[]; } export interface CarDamageData { m_tyresWear: number[]; m_tyresDamage: number[]; m_brakesDamage: number[]; m_tyreBlisters: number[]; m_frontLeftWingDamage: number; m_frontRightWingDamage: number; m_rearWingDamage: number; m_floorDamage: number; m_diffuserDamage: number; m_sidepodDamage: number; m_drsFault: number; m_ersFault: number; m_gearBoxDamage: number; m_engineDamage: number; m_engineMGUHWear: number; m_engineESWear: number; m_engineCEWear: number; m_engineICEWear: number; m_engineMGUKWear: number; m_engineTCWear: number; m_engineBlown: number; m_engineSeized: number; } export interface PacketCarDamageData { m_header: PacketHeader; m_carDamageData: CarDamageData[]; } export interface LapHistoryData { m_lapTimeInMS: number; m_sector1TimeInMS: number; m_sector1TimeMinutes: number; m_sector2TimeInMS: number; m_sector2TimeMinutes: number; m_sector3TimeInMS: number; m_sector3TimeMinutes: number; m_sector1TimeMSPart: number; m_sector1TimeMinutesPart: number; m_sector2TimeMSPart: number; m_sector2TimeMinutesPart: number; m_sector3TimeMSPart: number; m_sector3TimeMinutesPart: number; m_lapValidBitFlags: number; } export interface TyreStintsHistoryData { m_endLap: number; m_tyreActualCompound: number; m_tyreVisualCompound: number; } export interface PacketSessionHistoryData { m_header: PacketHeader; m_carIdx: number; m_numLaps: number; m_numTyreStints: number; m_bestLapTimeLapNum: number; m_bestSector1LapNum: number; m_bestSector2LapNum: number; m_bestSector3LapNum: number; m_lapHistoryData: LapHistoryData[]; m_tyreStintsHistoryData: TyreStintsHistoryData[]; } export interface TyreSetData { m_actualTyreCompound: number; m_visualTyreCompound: number; m_wear: number; m_available: number; m_recommendedSession: number; m_lifeSpan: number; m_usableLife: number; m_lapDeltaTime: number; m_fitted: number; } export interface PacketTyreSetsData { m_header: PacketHeader; m_carIdx: number; m_tyreSetData: TyreSetData[]; m_fittedIdx: number; } export interface PacketMotionExData { m_header: PacketHeader; m_suspensionPosition: number[]; m_suspensionVelocity: number[]; m_suspensionAcceleration: number[]; m_wheelSpeed: number[]; m_wheelSlipRatio: number[]; m_wheelSlipAngle: number[]; m_wheelLatForce: number[]; m_wheelLongForce: number[]; m_heightOfCOGAboveGround: number; m_localVelocityX: number; m_localVelocityY: number; m_localVelocityZ: number; m_angularVelocityX: number; m_angularVelocityY: number; m_angularVelocityZ: number; m_angularAccelerationX: number; m_angularAccelerationY: number; m_angularAccelerationZ: number; m_frontWheelsAngle: number; m_wheelVertForce: number[]; m_frontAeroHeight: number; m_rearAeroHeight: number; m_frontRollAngle: number; m_rearRollAngle: number; m_chassisYaw: number; m_chassisPitch: number; m_wheelCamber: number[]; m_wheelCamberGain: number[]; } export interface TimeTrialDataSet { m_carIdx: number; m_teamId: number; m_lapTimeInMS: number; m_sector1TimeInMS: number; m_sector2TimeInMS: number; m_sector3TimeInMS: number; m_tractionControl: number; m_gearboxAssist: number; m_antiLockBrakes: number; m_equalCarPerformance: number; m_customSetup: number; m_valid: number; } export interface PacketTimeTrialData { m_header: PacketHeader; m_playerSessionBestDataSet: TimeTrialDataSet; m_personalBestDataSet: TimeTrialDataSet; m_rivalDataSet: TimeTrialDataSet; } export interface LiveryColour { red: number; blue: number; green: number; } export interface PacketLapPositionsData { m_header: PacketHeader; m_numLaps: number; m_lapStart: number; m_positionForVehicleIdx: number[][]; }