RaceTelemetry 4.4.6.post1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- RaceTelemetry/__init__.py +4 -0
- RaceTelemetry/data_structures/ACC_struct.py +383 -0
- RaceTelemetry/data_structures/ACE_struct.py +539 -0
- RaceTelemetry/data_structures/AC_SM_struct.py +233 -0
- RaceTelemetry/data_structures/AC_UDP_struct.py +168 -0
- RaceTelemetry/data_structures/BNG_struct.py +133 -0
- RaceTelemetry/data_structures/Dirt_4_struct.py +260 -0
- RaceTelemetry/data_structures/Dirt_Rally_struct.py +104 -0
- RaceTelemetry/data_structures/ETS2_struct.py +412 -0
- RaceTelemetry/data_structures/F1_2016_struct.py +171 -0
- RaceTelemetry/data_structures/F1_2017_struct.py +288 -0
- RaceTelemetry/data_structures/F1_2018_struct.py +586 -0
- RaceTelemetry/data_structures/F1_2019_struct.py +700 -0
- RaceTelemetry/data_structures/F1_2020_struct.py +897 -0
- RaceTelemetry/data_structures/F1_2021_struct.py +1068 -0
- RaceTelemetry/data_structures/F1_2022_struct.py +1182 -0
- RaceTelemetry/data_structures/F1_2023_struct.py +1281 -0
- RaceTelemetry/data_structures/F1_2024_struct.py +1432 -0
- RaceTelemetry/data_structures/F1_2025_struct.py +1519 -0
- RaceTelemetry/data_structures/F1_2026_struct.py +1612 -0
- RaceTelemetry/data_structures/FH4_struct.py +161 -0
- RaceTelemetry/data_structures/FH5_struct.py +162 -0
- RaceTelemetry/data_structures/FH6_struct.py +160 -0
- RaceTelemetry/data_structures/FM7_struct.py +246 -0
- RaceTelemetry/data_structures/FM8_struct.py +247 -0
- RaceTelemetry/data_structures/GT7_struct.py +414 -0
- RaceTelemetry/data_structures/IRacing_struct.py +134 -0
- RaceTelemetry/data_structures/PC2_struct.py +557 -0
- RaceTelemetry/data_structures/PC_SM_struct.py +339 -0
- RaceTelemetry/data_structures/PC_UDP_struct.py +402 -0
- RaceTelemetry/data_structures/__init__.py +0 -0
- RaceTelemetry/digestion.py +120 -0
- RaceTelemetry/main.py +529 -0
- racetelemetry-4.4.6.post1.dist-info/METADATA +410 -0
- racetelemetry-4.4.6.post1.dist-info/RECORD +38 -0
- racetelemetry-4.4.6.post1.dist-info/WHEEL +5 -0
- racetelemetry-4.4.6.post1.dist-info/licenses/LICENSE +504 -0
- racetelemetry-4.4.6.post1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import ctypes
|
|
2
|
+
from enum import Enum, IntEnum
|
|
3
|
+
|
|
4
|
+
# source
|
|
5
|
+
# https://www.assettocorsa.net/forum/index.php?threads/acc-shared-memory-documentation.59965/
|
|
6
|
+
|
|
7
|
+
class DataTypes:
|
|
8
|
+
STRUCTURE = ctypes.LittleEndianStructure
|
|
9
|
+
|
|
10
|
+
SIGNED_INT = ctypes.c_int
|
|
11
|
+
FLOAT = ctypes.c_float
|
|
12
|
+
|
|
13
|
+
BOOL = ctypes.c_bool
|
|
14
|
+
DOUBLE = ctypes.c_double
|
|
15
|
+
CHAR = ctypes.c_wchar
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### * Enums
|
|
19
|
+
|
|
20
|
+
class ACC_FLAG_TYPE(IntEnum):
|
|
21
|
+
ACC_NO_FLAG = 0
|
|
22
|
+
ACC_BLUE_FLAG = 1
|
|
23
|
+
ACC_YELLOW_FLAG = 2
|
|
24
|
+
ACC_BLACK_FLAG = 3
|
|
25
|
+
ACC_WHITE_FLAG = 4
|
|
26
|
+
ACC_CHECKERED_FLAG = 5
|
|
27
|
+
ACC_PENALTY_FLAG = 6
|
|
28
|
+
ACC_GREEN_FLAG = 7
|
|
29
|
+
ACC_ORANGE_FLAG = 8
|
|
30
|
+
|
|
31
|
+
class ACC_PENALTY_TYPE(IntEnum):
|
|
32
|
+
ACC_None = 0
|
|
33
|
+
ACC_DriveThrough_Cutting = 1
|
|
34
|
+
ACC_StopAndGo_10_Cutting = 2
|
|
35
|
+
ACC_StopAndGo_20_Cutting = 3
|
|
36
|
+
ACC_StopAndGo_30_Cutting = 4
|
|
37
|
+
ACC_Disqualified_Cutting = 5
|
|
38
|
+
ACC_RemoveBestLaptime_Cutting = 6
|
|
39
|
+
ACC_DriveThrough_PitSpeeding = 7
|
|
40
|
+
ACC_StopAndGo_10_PitSpeeding = 8
|
|
41
|
+
ACC_StopAndGo_20_PitSpeeding = 9
|
|
42
|
+
ACC_StopAndGo_30_PitSpeeding = 10
|
|
43
|
+
ACC_Disqualified_PitSpeeding = 11
|
|
44
|
+
ACC_RemoveBestLaptime_PitSpeeding = 12
|
|
45
|
+
ACC_Disqualified_IgnoredMandatoryPit = 13
|
|
46
|
+
ACC_PostRaceTime = 14
|
|
47
|
+
ACC_Disqualified_Trolling = 15
|
|
48
|
+
ACC_Disqualified_PitEntry = 16
|
|
49
|
+
ACC_Disqualified_PitExit = 17
|
|
50
|
+
ACC_Disqualified_Wrongway = 18
|
|
51
|
+
ACC_DriveThrough_IgnoredDriverStint = 19
|
|
52
|
+
ACC_Disqualified_IgnoredDriverStint = 20
|
|
53
|
+
ACC_Disqualified_ExceededDriverStintLimit = 21
|
|
54
|
+
|
|
55
|
+
class ACC_SESSION_TYPE(IntEnum):
|
|
56
|
+
ACC_UNKNOWN = -1
|
|
57
|
+
ACC_PRACTICE = 0
|
|
58
|
+
ACC_QUALIFY = 1
|
|
59
|
+
ACC_RACE = 2
|
|
60
|
+
ACC_HOTLAP = 3
|
|
61
|
+
ACC_TIMEATTACK = 4
|
|
62
|
+
ACC_DRIFT = 5
|
|
63
|
+
ACC_DRAG = 6
|
|
64
|
+
ACC_HOTSTINT = 7
|
|
65
|
+
ACC_HOTSTINTSUPERPOLE = 8
|
|
66
|
+
|
|
67
|
+
class ACC_STATUS(IntEnum):
|
|
68
|
+
ACC_OFF = 0
|
|
69
|
+
ACC_REPLAY = 1
|
|
70
|
+
ACC_LIVE = 2
|
|
71
|
+
ACC_PAUSE = 3
|
|
72
|
+
|
|
73
|
+
class ACC_WHEELS_TYPE(IntEnum):
|
|
74
|
+
ACC_FrontLeft = 0
|
|
75
|
+
ACC_FrontRight = 1
|
|
76
|
+
ACC_RearLeft = 2
|
|
77
|
+
ACC_RearRight = 3
|
|
78
|
+
|
|
79
|
+
class ACC_TRACK_GRIP_STATUS(IntEnum):
|
|
80
|
+
ACC_GREEN = 0
|
|
81
|
+
ACC_FAST = 1
|
|
82
|
+
ACC_OPTIMUM = 2
|
|
83
|
+
ACC_GREASY = 3
|
|
84
|
+
ACC_DAMP = 4
|
|
85
|
+
ACC_WET = 5
|
|
86
|
+
ACC_FLOODED = 6
|
|
87
|
+
|
|
88
|
+
class ACC_RAIN_INTENSITY(IntEnum):
|
|
89
|
+
ACC_NO_RAIN = 0
|
|
90
|
+
ACC_DRIZZLE = 1
|
|
91
|
+
ACC_LIGHT_RAIN = 2
|
|
92
|
+
ACC_MEDIUM_RAIN = 3
|
|
93
|
+
ACC_HEAVY_RAIN = 4
|
|
94
|
+
ACC_THUNDERSTORM = 5
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
### * Data Structure
|
|
98
|
+
|
|
99
|
+
# The following members change at each graphic step. They all refer to the player’s car.
|
|
100
|
+
class SPageFilePhysicsData(DataTypes.STRUCTURE):
|
|
101
|
+
# _pack_ = 1
|
|
102
|
+
_fields_ = [
|
|
103
|
+
("packetId", DataTypes.SIGNED_INT), # Current step index
|
|
104
|
+
("gas", DataTypes.FLOAT), # Gas pedal input value (from -0 to 1.0)
|
|
105
|
+
("brake", DataTypes.FLOAT), # Brake pedal input value (from -0 to 1.0)
|
|
106
|
+
("fuel", DataTypes.FLOAT), # Amount of fuel remaining in kg
|
|
107
|
+
("gear", DataTypes.SIGNED_INT), # Current gear
|
|
108
|
+
("rpm", DataTypes.SIGNED_INT), # Engine revolutions per minute
|
|
109
|
+
("steerAngle", DataTypes.FLOAT), # Steering input value (from -1.0 to 1.0)
|
|
110
|
+
("speedKmh", DataTypes.FLOAT), # Car speed in km/h
|
|
111
|
+
("velocity", DataTypes.FLOAT * 3), # Car velocity vector in global coordinates
|
|
112
|
+
("accG", DataTypes.FLOAT * 3), # Car acceleration vector in global coordinates
|
|
113
|
+
("wheelSlip", DataTypes.FLOAT * 4), # Tyre slip for each tyre [FL, FR, RL, RR]
|
|
114
|
+
# ("wheelLoad", DataTypes.FLOAT * 4), # Wheel load for each tyre [FL, FR, RL, RR]
|
|
115
|
+
("wheelPressure", DataTypes.FLOAT * 4), # Tyre pressure [FL, FR, RL, RR]
|
|
116
|
+
("wheelAngularSpeed", DataTypes.FLOAT * 4), # Wheel angular speed in rad/s [FL, FR, RL, RR]
|
|
117
|
+
# ("tyreWear", DataTypes.FLOAT * 4), # Tyre wear [FL, FR, RL, RR]
|
|
118
|
+
# ("tyreDirtyLevel", DataTypes.FLOAT * 4), # Dirt accumulated on tyre surface [FL, FR, RL, RR]
|
|
119
|
+
("TyreCoreTemp", DataTypes.DOUBLE * 4), # Tyre rubber core temperature [FL, FR, RL, RR]
|
|
120
|
+
# ("camberRAD", DataTypes.FLOAT * 4), # Wheels camber in radians [FL, FR, RL, RR]
|
|
121
|
+
("suspensionTravel", DataTypes.FLOAT * 4), # Suspension travel [FL, FR, RL, RR]
|
|
122
|
+
# ("drs", DataTypes.FLOAT), # DRS on
|
|
123
|
+
("tc", DataTypes.FLOAT), # TC in action
|
|
124
|
+
("heading", DataTypes.FLOAT), # Car yaw orientation
|
|
125
|
+
("pitch", DataTypes.FLOAT), # Car pitch orientation
|
|
126
|
+
|
|
127
|
+
("roll", DataTypes.FLOAT), # Car roll orientation
|
|
128
|
+
# ("cgHeight", DataTypes.FLOAT), # Centre of gravity height
|
|
129
|
+
("carDamage", DataTypes.FLOAT * 5), # Car damage: front 0, rear 1, left 2, right 3, centre 4
|
|
130
|
+
# ("numberOfTyresOut", DataTypes.SIGNED_INT), # Number of tyres out of track
|
|
131
|
+
("pitLimiterOn", DataTypes.SIGNED_INT), # Pit limiter is on
|
|
132
|
+
("abs", DataTypes.FLOAT), # ABS in action
|
|
133
|
+
# ("kersCharge", DataTypes.FLOAT), # Not used in ACC
|
|
134
|
+
# ("kersInput", DataTypes.FLOAT), # Not used in ACC
|
|
135
|
+
("autoshifterOn", DataTypes.SIGNED_INT), # Automatic transmission on
|
|
136
|
+
# ("rideHeight", DataTypes.FLOAT * 2), # Ride height: 0 front, 1 rear
|
|
137
|
+
("turboBoost", DataTypes.FLOAT), # Car turbo level
|
|
138
|
+
# ("ballast", DataTypes.FLOAT), # Car ballast in kg / Not implemented
|
|
139
|
+
# ("airDensity ", DataTypes.FLOAT), # Air density
|
|
140
|
+
("airTemp", DataTypes.FLOAT), # Air temperature
|
|
141
|
+
("roadTemp", DataTypes.FLOAT), # Road temperature
|
|
142
|
+
("localAngularVel", DataTypes.FLOAT * 3), # Car angular velocity vector in local coordinates
|
|
143
|
+
("finalFF", DataTypes.FLOAT), # Force feedback signal
|
|
144
|
+
# ("performanceMeter", DataTypes.FLOAT), # Not used in ACC
|
|
145
|
+
# ("engineBrake", DataTypes.SIGNED_INT), # Not used in ACC
|
|
146
|
+
# ("ersRecoveryLevel", DataTypes.SIGNED_INT), # Not used in ACC
|
|
147
|
+
# ("ersPowerLevel", DataTypes.SIGNED_INT), # Not used in ACC
|
|
148
|
+
# ("ersHeatCharging", DataTypes.SIGNED_INT), # Not used in ACC
|
|
149
|
+
# ("ersIsCharging", DataTypes.SIGNED_INT), # Not used in ACC
|
|
150
|
+
# ("kersCurrentKJ", DataTypes.FLOAT), # Not used in ACC
|
|
151
|
+
# ("drsAvailable", DataTypes.SIGNED_INT), # Not used in ACC
|
|
152
|
+
# ("drsEnabled", DataTypes.SIGNED_INT), # Not used in ACC
|
|
153
|
+
("brakeTemp", DataTypes.FLOAT * 4), # Brake discs temperatures
|
|
154
|
+
("clutch", DataTypes.FLOAT), # Clutch pedal input value (from -0 to 1.0)
|
|
155
|
+
# ("tyreTempI", DataTypes.FLOAT * 4), # Not used in ACC
|
|
156
|
+
# ("tyreTempM", DataTypes.FLOAT * 4), # Not used in ACC
|
|
157
|
+
# ("tyreTempO", DataTypes.FLOAT * 4), # Not used in ACC
|
|
158
|
+
("isAIControlled", DataTypes.SIGNED_INT), # Car is controlled by the AI
|
|
159
|
+
("tyreContactPoint", DataTypes.FLOAT * 4 * 3), # Tyre contact point global coordinates [FL, FR, RL, RR] [x,y,z]
|
|
160
|
+
("tyreContactNormal", DataTypes.FLOAT * 4 * 3), # Tyre contact normal [FL, FR, RL, RR] [x,y,z]
|
|
161
|
+
("tyreContactHeading", DataTypes.FLOAT * 4 * 3), # Tyre contact heading [FL, FR, RL, RR] [x,y,z]
|
|
162
|
+
("brakeBias", DataTypes.FLOAT), # Front brake bias, see Appendix 4
|
|
163
|
+
("localVelocity", DataTypes.FLOAT * 3), # Car velocity vector in local coordinates
|
|
164
|
+
# ("P2PActivation", DataTypes.SIGNED_INT), # Not used in ACC
|
|
165
|
+
# ("P2PStatus", DataTypes.SIGNED_INT), # Not used in ACC
|
|
166
|
+
# ("currentMaxRpm", DataTypes.FLOAT), # Maximum engine rpm
|
|
167
|
+
# ("mz", DataTypes.FLOAT * 4), # Not shown in ACC
|
|
168
|
+
|
|
169
|
+
# ("fx", DataTypes.FLOAT * 4), # Not shown in ACC
|
|
170
|
+
# ("fy", DataTypes.FLOAT * 4), # Not shown in ACC
|
|
171
|
+
("slipRatio", DataTypes.FLOAT * 4), # Tyre slip ratio [FL, FR, RL, RR] in radians
|
|
172
|
+
("slipAngle", DataTypes.FLOAT * 4), # Tyre slip angle [FL, FR, RL, RR]
|
|
173
|
+
# ("tcinAction", DataTypes.SIGNED_INT), # TC in action
|
|
174
|
+
# ("absInAction", DataTypes.SIGNED_INT), # ABS in action
|
|
175
|
+
# ("suspensionDamage", DataTypes.FLOAT * 4), # Suspensions damage levels [FL, FR, RL, RR]
|
|
176
|
+
# ("tyreTemp", DataTypes.FLOAT * 4), # Tyres core temperatures [FL, FR, RL, RR]
|
|
177
|
+
("waterTemp", DataTypes.FLOAT), # Water Temperature
|
|
178
|
+
("brakePressure", DataTypes.FLOAT * 4), # Brake pressure [FL, FR, RL, RR] see Appendix 2
|
|
179
|
+
("frontBrakeCompound", DataTypes.SIGNED_INT), # Brake pad compund front
|
|
180
|
+
("rearBrakeCompound", DataTypes.SIGNED_INT), # Brake pad compund rear
|
|
181
|
+
("padLife", DataTypes.FLOAT * 4), # Brake pad wear [FL, FR, RL, RR]
|
|
182
|
+
("discLife", DataTypes.FLOAT * 4), # Brake disk wear [FL, FR, RL, RR]
|
|
183
|
+
("ignitionOn", DataTypes.SIGNED_INT), # Ignition switch set to on?
|
|
184
|
+
("starterEngineOn", DataTypes.SIGNED_INT), # Starter Switch set to on?
|
|
185
|
+
("isEngineRunning", DataTypes.SIGNED_INT), # Engine running?
|
|
186
|
+
("kerbVibration", DataTypes.FLOAT), # vibrations sent to the FFB, could be used for motion rigs
|
|
187
|
+
("slipVibrations", DataTypes.FLOAT), # vibrations sent to the FFB, could be used for motion rigs
|
|
188
|
+
("gVibrations", DataTypes.FLOAT), # vibrations sent to the FFB, could be used for motion rigs
|
|
189
|
+
("absVibrations", DataTypes.FLOAT), # vibrations sent to the FFB, could be used for motion rigs
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
# The following members are updated at each graphical step. They mostly refer to player’s car
|
|
193
|
+
# except for carCoordinates and carID, which refer to the cars currently on track.
|
|
194
|
+
class SPageFileGraphicData(DataTypes.STRUCTURE):
|
|
195
|
+
# _pack_ = 1
|
|
196
|
+
_enums_: dict[type, tuple[str, ...]] = {
|
|
197
|
+
ACC_STATUS: ("status",),
|
|
198
|
+
ACC_SESSION_TYPE: ("session",),
|
|
199
|
+
ACC_FLAG_TYPE: ("flag",),
|
|
200
|
+
ACC_PENALTY_TYPE: ("penalty",),
|
|
201
|
+
ACC_TRACK_GRIP_STATUS: ("trackGripStatus",),
|
|
202
|
+
ACC_RAIN_INTENSITY: ("rainIntensity",),
|
|
203
|
+
ACC_RAIN_INTENSITY: ("rainIntensityIn10min",),
|
|
204
|
+
ACC_RAIN_INTENSITY: ("rainIntensityIn30min",),
|
|
205
|
+
}
|
|
206
|
+
_fields_ = [
|
|
207
|
+
("packetId", DataTypes.SIGNED_INT), # Current step index
|
|
208
|
+
("status", DataTypes.SIGNED_INT), # See enums ACC_STATUS
|
|
209
|
+
("session", DataTypes.SIGNED_INT), # See enums ACC_SESSION_TYPE
|
|
210
|
+
("currentTime", DataTypes.CHAR * 15), # Current lap time in wide character
|
|
211
|
+
("lastTime", DataTypes.CHAR * 15), # Last lap time in wide character
|
|
212
|
+
("bestTime", DataTypes.CHAR * 15), # Best lap time in wide character
|
|
213
|
+
("split", DataTypes.CHAR * 15), # Last split time in wide character
|
|
214
|
+
("completedLaps", DataTypes.SIGNED_INT), # No of completed laps
|
|
215
|
+
("position", DataTypes.SIGNED_INT), # Current player position
|
|
216
|
+
("iCurrentTime", DataTypes.SIGNED_INT), # Current lap time in milliseconds
|
|
217
|
+
("iLastTime", DataTypes.SIGNED_INT), # Last lap time in milliseconds
|
|
218
|
+
("iBestTime", DataTypes.SIGNED_INT), # Best lap time in milliseconds
|
|
219
|
+
("sessionTimeLeft", DataTypes.FLOAT), # Session time left
|
|
220
|
+
("distanceTraveled", DataTypes.FLOAT), # Distance travelled in the current stint
|
|
221
|
+
("isInPit", DataTypes.SIGNED_INT), # Car is pitting
|
|
222
|
+
("currentSectorIndex", DataTypes.SIGNED_INT), # Current track sector
|
|
223
|
+
("lastSectorTime", DataTypes.SIGNED_INT), # Last sector time in milliseconds
|
|
224
|
+
("numberOfLaps", DataTypes.SIGNED_INT), # Number of completed laps
|
|
225
|
+
("tyreCompound", DataTypes.CHAR * 33), # Tyre compound used
|
|
226
|
+
# ("replayTimeMultiplier", DataTypes.FLOAT), # Not used in ACC
|
|
227
|
+
("normalizedCarPosition", DataTypes.FLOAT), # Car position on track spline (0.0 start to 1.0 finish)
|
|
228
|
+
("activeCars", DataTypes.SIGNED_INT), # Number of cars on track
|
|
229
|
+
("carCoordinates", DataTypes.FLOAT * 60 * 3), # Coordinates of cars on track
|
|
230
|
+
("carID", DataTypes.SIGNED_INT), # Car IDs of cars on track
|
|
231
|
+
("playerCarID", DataTypes.SIGNED_INT), # Player Car ID
|
|
232
|
+
("penaltyTime", DataTypes.FLOAT), # Penalty time to wait
|
|
233
|
+
("flag", DataTypes.SIGNED_INT), # See enums ACC_FLAG_TYPE
|
|
234
|
+
("penalty", DataTypes.SIGNED_INT), # See enums ACC_PENALTY_TYPE
|
|
235
|
+
("idealLineOn", DataTypes.SIGNED_INT), # Ideal line on
|
|
236
|
+
("isInPitLane", DataTypes.SIGNED_INT), # Car is in pit lane
|
|
237
|
+
("surfaceGrip", DataTypes.FLOAT), # Ideal line friction coefficient
|
|
238
|
+
("mandatoryPitDone", DataTypes.SIGNED_INT), # Mandatory pit is completed
|
|
239
|
+
("windSpeed", DataTypes.FLOAT), # Wind speed in m/s
|
|
240
|
+
("windDirection", DataTypes.FLOAT), # wind direction in radians
|
|
241
|
+
("isSetupMenuVisible", DataTypes.SIGNED_INT), # Car is working on setup
|
|
242
|
+
|
|
243
|
+
("mainDisplayIndex", DataTypes.SIGNED_INT), # current car main display index, see Appendix 1
|
|
244
|
+
("secondaryDisplyIndex", DataTypes.SIGNED_INT), # current car secondary display index
|
|
245
|
+
("TC", DataTypes.SIGNED_INT), # Traction control level
|
|
246
|
+
("TCCUT", DataTypes.SIGNED_INT), # Traction control cut level
|
|
247
|
+
("EngineMap", DataTypes.SIGNED_INT), # Current engine map
|
|
248
|
+
("ABS", DataTypes.SIGNED_INT), # ABS level
|
|
249
|
+
("fuelXLap", DataTypes.FLOAT), # Average fuel consumed per lap in liters
|
|
250
|
+
("rainLights", DataTypes.SIGNED_INT), # Rain lights on
|
|
251
|
+
("flashingLights", DataTypes.SIGNED_INT), # Flashing lights on
|
|
252
|
+
("lightsStage", DataTypes.SIGNED_INT), # Current lights stage
|
|
253
|
+
("exhaustTemperature", DataTypes.FLOAT), # Exhaust temperature
|
|
254
|
+
("wiperLV", DataTypes.SIGNED_INT), # Current wiper stage
|
|
255
|
+
("driverStintTotalTimeLeft", DataTypes.SIGNED_INT), # Time the driver is allowed to drive/race (ms)
|
|
256
|
+
("driverStintTimeLeft", DataTypes.SIGNED_INT), # Time the driver is allowed to drive/stint (ms)
|
|
257
|
+
("rainTyres", DataTypes.SIGNED_INT), # Are rain tyres equipped
|
|
258
|
+
("sessionIndex", DataTypes.SIGNED_INT),
|
|
259
|
+
("usedFuel", DataTypes.FLOAT), # Used fuel since last time refueling
|
|
260
|
+
("deltaLapTime", DataTypes.CHAR * 15), # Delta time in wide character
|
|
261
|
+
("iDeltaLapTime", DataTypes.SIGNED_INT), # Delta time time in milliseconds
|
|
262
|
+
("estimatedLapTime", DataTypes.CHAR * 15), # Estimated lap time in milliseconds
|
|
263
|
+
("iEstimatedLapTime", DataTypes.SIGNED_INT), # Estimated lap time in wide character
|
|
264
|
+
("isDeltaPositive", DataTypes.SIGNED_INT), # Delta positive (1) or negative (0)
|
|
265
|
+
("iSplit", DataTypes.SIGNED_INT), # Last split time in milliseconds
|
|
266
|
+
("isValidLap", DataTypes.SIGNED_INT), # Check if Lap is valid for timing
|
|
267
|
+
("fuelEstimatedLaps", DataTypes.FLOAT), # Laps possible with current fuel level
|
|
268
|
+
("trackStatus", DataTypes.CHAR * 33), # Status of track
|
|
269
|
+
("missingMandatoryPits", DataTypes.SIGNED_INT), # Mandatory pitstops the player still has to do
|
|
270
|
+
("Clock", DataTypes.FLOAT), # Time of day in seconds
|
|
271
|
+
("directionLightsLeft", DataTypes.SIGNED_INT), # Is Blinker left on
|
|
272
|
+
("directionLightsRight", DataTypes.SIGNED_INT), # Is Blinker right on
|
|
273
|
+
("GlobalYellow", DataTypes.SIGNED_INT), # Yellow Flag is out?
|
|
274
|
+
("GlobalYellow1", DataTypes.SIGNED_INT), # Yellow Flag in Sector 1 is out?
|
|
275
|
+
("GlobalYellow2", DataTypes.SIGNED_INT), # Yellow Flag in Sector 2 is out?
|
|
276
|
+
("GlobalYellow3", DataTypes.SIGNED_INT), # Yellow Flag in Sector 3 is out?
|
|
277
|
+
("GlobalWhite", DataTypes.SIGNED_INT), # White Flag is out?
|
|
278
|
+
("GlobalGreen", DataTypes.SIGNED_INT), # Green Flag is out?
|
|
279
|
+
("GlobalChequered", DataTypes.SIGNED_INT), # Checkered Flag is out?
|
|
280
|
+
("GlobalRed", DataTypes.SIGNED_INT), # Red Flag is out?
|
|
281
|
+
("mfdTyreSet", DataTypes.SIGNED_INT), # num of tyre set on the MFD
|
|
282
|
+
("mfdFuelToAdd", DataTypes.FLOAT), # How much fuel to add on the MFD
|
|
283
|
+
("mfdTyrePressureLF", DataTypes.FLOAT), # Tyre pressure left front on the MFD
|
|
284
|
+
|
|
285
|
+
("mfdTyrePressureRF", DataTypes.FLOAT), # Tyre pressure right front on the MFD
|
|
286
|
+
("mfdTyrePressureLR", DataTypes.FLOAT), # Tyre pressure left rear on the MFD
|
|
287
|
+
("mfdTyrePressureRR", DataTypes.FLOAT), # Tyre pressure right rear on the MFD
|
|
288
|
+
("trackGripStatus", DataTypes.SIGNED_INT), # See enums ACC_TRACK_GRIP_STATUS
|
|
289
|
+
("rainIntensity", DataTypes.SIGNED_INT), # See enums ACC_RAIN_INTENSITY
|
|
290
|
+
("rainIntensityIn10min", DataTypes.SIGNED_INT), # See enums ACC_RAIN_INTENSITY
|
|
291
|
+
("rainIntensityIn30min", DataTypes.SIGNED_INT), # See enums ACC_RAIN_INTENSITY
|
|
292
|
+
("currentTyreSet", DataTypes.SIGNED_INT), # Tyre Set currently in use
|
|
293
|
+
("strategyTyreSet", DataTypes.SIGNED_INT), # Next Tyre set per strategy
|
|
294
|
+
("gapAhead", DataTypes.SIGNED_INT), # Distance in ms to car in front
|
|
295
|
+
("gapBehind", DataTypes.SIGNED_INT), # Distance in ms to car behind
|
|
296
|
+
]
|
|
297
|
+
|
|
298
|
+
# The following members are initialized when the instance starts and never changes until the
|
|
299
|
+
# instance is closed.
|
|
300
|
+
class SPageFileStaticData(DataTypes.STRUCTURE):
|
|
301
|
+
# _pack_ = 1
|
|
302
|
+
_fields_ = [
|
|
303
|
+
("smVersion", DataTypes.CHAR * 15), # Shared memory version
|
|
304
|
+
("acVersion", DataTypes.CHAR * 15), # Assetto Corsa version
|
|
305
|
+
("numberOfSessions", DataTypes.SIGNED_INT), # Number of sessions
|
|
306
|
+
("numCars", DataTypes.SIGNED_INT), # Number of cars
|
|
307
|
+
("carModel", DataTypes.CHAR * 33), # Player car model see Appendix 2
|
|
308
|
+
("track", DataTypes.CHAR * 33), # Track name
|
|
309
|
+
("playerName", DataTypes.CHAR * 33), # Player name
|
|
310
|
+
("playerSurname", DataTypes.CHAR * 33), # Player surname
|
|
311
|
+
("playerNick", DataTypes.CHAR * 33), # Player nickname
|
|
312
|
+
("sectorCount", DataTypes.SIGNED_INT), # Number of sectors
|
|
313
|
+
# ("maxTorque", DataTypes.FLOAT), # Not shown in ACC
|
|
314
|
+
# ("maxPower", DataTypes.FLOAT), # Not shown in ACC
|
|
315
|
+
("maxRpm", DataTypes.SIGNED_INT), # Maximum rpm
|
|
316
|
+
("maxFuel", DataTypes.FLOAT), # Maximum fuel tank capacity
|
|
317
|
+
# ("suspensionMaxTravel", DataTypes.FLOAT * 4), # Not shown in ACC
|
|
318
|
+
# ("tyreRadius", DataTypes.FLOAT * 4), # Not shown in ACC
|
|
319
|
+
# ("maxTurboBoost", DataTypes.FLOAT), # Maximum turbo boost
|
|
320
|
+
# ("deprecated_1", DataTypes.SIGNED_INT),
|
|
321
|
+
# ("deprecated_2", DataTypes.FLOAT),
|
|
322
|
+
("penaltiesEnabled", DataTypes.SIGNED_INT), # Penalties enabled
|
|
323
|
+
("aidFuelRate", DataTypes.FLOAT), # Fuel consumption rate
|
|
324
|
+
("aidTireRate", DataTypes.FLOAT), # Tyre wear rate
|
|
325
|
+
("aidMechanicalDamage", DataTypes.FLOAT), # Mechanical damage rate
|
|
326
|
+
("AllowTyreBlankets", DataTypes.FLOAT), # Not allowed in Blancpain endurance series
|
|
327
|
+
("aidStability", DataTypes.FLOAT), # Stability control used
|
|
328
|
+
("aidAutoclutch", DataTypes.SIGNED_INT), # Auto clutch used
|
|
329
|
+
("aidAutoBlip", DataTypes.SIGNED_INT), # Always true in ACC
|
|
330
|
+
# ("hasDRS", DataTypes.SIGNED_INT), # Not used in ACC
|
|
331
|
+
# ("hasERS", DataTypes.SIGNED_INT), # Not used in ACC
|
|
332
|
+
# ("hasKERS", DataTypes.SIGNED_INT), # Not used in ACC
|
|
333
|
+
# ("kersMaxJ", DataTypes.FLOAT), # Not used in ACC
|
|
334
|
+
# ("engineBrakeSettingsCount", DataTypes.SIGNED_INT), # Not used in ACC
|
|
335
|
+
# ("ersPowerControllerCount", DataTypes.SIGNED_INT), # Not used in ACC
|
|
336
|
+
# ("trackSplineLength", DataTypes.FLOAT), # Not used in ACC
|
|
337
|
+
# ("trackConfiguration", DataTypes.CHAR), # Not used in ACC
|
|
338
|
+
# ("ersMaxJ", DataTypes.FLOAT), # Not used in ACC
|
|
339
|
+
|
|
340
|
+
("isTimedRace", DataTypes.SIGNED_INT), # Not used in ACC
|
|
341
|
+
("hasExtraLap", DataTypes.SIGNED_INT), # Not used in ACC
|
|
342
|
+
("carSkin", DataTypes.CHAR * 33), # Not used in ACC
|
|
343
|
+
("reversedGridPositions", DataTypes.SIGNED_INT), # Not used in ACC
|
|
344
|
+
("PitWindowStart", DataTypes.SIGNED_INT), # Pit window opening time
|
|
345
|
+
("PitWindowEnd", DataTypes.SIGNED_INT), # Pit windows closing time
|
|
346
|
+
("isOnline", DataTypes.SIGNED_INT), # If is a multiplayer session
|
|
347
|
+
("dryTyresName", DataTypes.CHAR * 33), # Name of the dry tyres
|
|
348
|
+
("wetTyresName", DataTypes.CHAR * 33), # Name of the wet tyres
|
|
349
|
+
]
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
### * MetaData
|
|
353
|
+
|
|
354
|
+
class MetaData:
|
|
355
|
+
# standard network info
|
|
356
|
+
port: int | None = None
|
|
357
|
+
|
|
358
|
+
# use if a heartbeat is needed
|
|
359
|
+
heartBeatPort: int | None = None
|
|
360
|
+
heartBeatFunc = None
|
|
361
|
+
|
|
362
|
+
# use for itinial hand shake
|
|
363
|
+
handShakePort: int | None = None
|
|
364
|
+
handShakeFunc: tuple | None = None
|
|
365
|
+
|
|
366
|
+
# use if the data needs decrypting
|
|
367
|
+
decrytionFunc = None
|
|
368
|
+
|
|
369
|
+
# use if there is a header packet
|
|
370
|
+
headerInfo: type | None = None
|
|
371
|
+
packetIDAttribute: str | None = None
|
|
372
|
+
|
|
373
|
+
# use for shared memory
|
|
374
|
+
allSharedMemoryNames: str | None | dict[str, str] = {
|
|
375
|
+
"SPageFilePhysicsData": "Local\\acpmf_physics",
|
|
376
|
+
"SPageFileGraphicData": "Local\\acpmf_graphics",
|
|
377
|
+
"SPageFileStaticData": "Local\\acpmf_static",
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
# standard packet info
|
|
381
|
+
packetInfo: dict[int, tuple[type, ...]] = {
|
|
382
|
+
0: (SPageFilePhysicsData, SPageFileGraphicData, SPageFileStaticData, ),
|
|
383
|
+
}
|