-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHorizonParser.py
More file actions
105 lines (100 loc) · 2.25 KB
/
HorizonParser.py
File metadata and controls
105 lines (100 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import imp
from struct import unpack
# Sled / Default format (FM7)
default_format = '<iI27f4i20f5i'
# Dash format (FM7)
dash_format = default_format + '17fH6B3b'
# Horizon format (FH4+)
horizon_format = default_format + 'i19fH6B4b'
params = ['IsRaceOn',
'TimestampMS',
'EngineMaxRpm',
'EngineIdleRpm',
'CurrentEngineRpm',
'AccelerationX',
'AccelerationY',
'AccelerationZ',
'VelocityX',
'VelocityY',
'VelocityZ',
'AngularVelocityX',
'AngularVelocityY',
'AngularVelocityZ',
'Yaw',
'Pitch',
'Roll',
'NormalizedSuspensionTravelFrontLeft',
'NormalizedSuspensionTravelFrontRight',
'NormalizedSuspensionTravelRearLeft',
'NormalizedSuspensionTravelRearRight',
'TireSlipRatioFrontLeft',
'TireSlipRatioFrontRight',
'TireSlipRatioRearLeft',
'TireSlipRatioRearRight',
'WheelRotationSpeedFrontLeft',
'WheelRotationSpeedFrontRight',
'WheelRotationSpeedRearLeft',
'WheelRotationSpeedRearRight',
'WheelOnRumbleStripFrontLeft',
'WheelOnRumbleStripFrontRight',
'WheelOnRumbleStripRearLeft',
'WheelOnRumbleStripRearRight',
'WheelInPuddleDepthFrontLeft',
'WheelInPuddleDepthFrontRight',
'WheelInPuddleDepthRearLeft',
'WheelInPuddleDepthRearRight',
'SurfaceRumbleFrontLeft',
'SurfaceRumbleFrontRight',
'SurfaceRumbleRearLeft',
'SurfaceRumbleRearRight',
'TireSlipAngleFrontLeft',
'TireSlipAngleFrontRight',
'TireSlipAngleRearLeft',
'TireSlipAngleRearRight',
'TireCombinedSlipFrontLeft',
'TireCombinedSlipFrontRight',
'TireCombinedSlipRearLeft',
'TireCombinedSlipRearRight',
'SuspensionTravelMetersFrontLeft',
'SuspensionTravelMetersFrontRight',
'SuspensionTravelMetersRearLeft',
'SuspensionTravelMetersRearRight',
'CarOrdinal',
'CarClass',
'CarPerformanceIndex',
'DrivetrainType',
'NumCylinders',
'CarType',
'ImpactX',
'ImpactY',
'PositionX',
'PositionY',
'PositionZ',
'Speed',
'Power',
'Torque',
'TireTempFrontLeft',
'TireTempFrontRight',
'TireTempRearLeft',
'TireTempRearRight',
'Boost',
'Fuel',
'DistanceTraveled',
'BestLap',
'LastLap',
'CurrentLap',
'CurrentRaceTime',
'LapNumber',
'RacePosition',
'Accel',
'Brake',
'Clutch',
'HandBrake',
'Gear',
'Steer',
'NormalizedDrivingLine',
'NormalizedAIBrakeDifference',
'Unknown']
def GetParsedPacket(packet):
vals = unpack(horizon_format, packet)
return dict(zip(params, vals))