-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathoutgauge_blank.py
66 lines (57 loc) · 1.88 KB
/
outgauge_blank.py
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
import socket, struct
localIP = "127.0.0.1"
localPort = 2222
bufferSize = 256
UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
UDPServerSocket.bind((localIP, localPort))
print("UDP server up and listening")
#Car variables
carData = {}
maxRpm = 4000
def decodeFlag(flag):
flagBin = str(bin(flag))
flags = {"showTurbo":newBool(flagBin[2]),"showKM":not newBool(flagBin[1]),"showBAR":not newBool(flagBin[0])}
return flags
def newBool(string):
if(string == "0"):
return False
if(string == "1"):
return True
def decodeLights(lightsAvailable,lightsActive):
lightsAvBin = str(bin(lightsAvailable))[2:][::-1]
lightsActBin = str(bin(lightsActive))[2:][::-1]
lights = {}
totalLights = ["shift_light","full_beam","handbrake","pit_limiter","tc","left_turn","right_turn","both_turns","oil_warn","battery_warn","abs","spare_light"]
for i in range(0,12):
try:
lights[totalLights[i]] = newBool(lightsActBin[i])
except Exception:
lights[totalLights[i]] = False
return lights
def readData():
global carData
data = UDPServerSocket.recvfrom(bufferSize)
unpackedData = struct.unpack("I4sHBBfffffffIIfff16s16sxxxx",data[0])
carData = {"time":unpackedData[0],
"carName":unpackedData[1].decode("utf-8"),
"flags": decodeFlag(unpackedData[2]),
"gear": unpackedData[3],
"PLID": unpackedData[4],
"speed": unpackedData[5],
"rpm": unpackedData[6],
"turboPressure":unpackedData[7],
"engTemp":unpackedData[8],
"fuel":unpackedData[9],
"oilPressure":unpackedData[10],
"oilTemp":unpackedData[11],
"lights":decodeLights(unpackedData[12],unpackedData[13]),
"throttle": unpackedData[14],
"brake": unpackedData[15],
"clutch": unpackedData[16],
"misc1": unpackedData[17],
"misc2": unpackedData[18]
}
while(True):
readData()
if(maxRpm < carData["rpm"]):
maxRpm = carData["rpm"]