|
|
|
@ -1,29 +1,83 @@ |
|
|
|
local M = {} |
|
|
|
local cbor = require("cbor"); |
|
|
|
|
|
|
|
-- Connection settings |
|
|
|
local ip = "127.0.0.1" |
|
|
|
local port = 4444 |
|
|
|
|
|
|
|
local udpSocket = nil |
|
|
|
|
|
|
|
local cbor = require("cbor"); |
|
|
|
-- Car settings |
|
|
|
local minOilTemp = 50 |
|
|
|
local maxOilTemp = 90 |
|
|
|
local coldOilRPMCoef = 0.5 |
|
|
|
|
|
|
|
local function sendPackage(ip, port, id) |
|
|
|
if not electrics.value.watertemp then |
|
|
|
if not electrics.values.watertemp then |
|
|
|
-- vehicle not completly initialized, skip sending package |
|
|
|
return |
|
|
|
end |
|
|
|
|
|
|
|
local data = { |
|
|
|
app = "beamNG" |
|
|
|
app = "beamNG", |
|
|
|
car = { |
|
|
|
brand = "none", --FIXME: value |
|
|
|
model = "none" --FIXME: value |
|
|
|
}, |
|
|
|
gear = electrics.values.gearIndex, |
|
|
|
speed = electrics.values.wheelspeed or electrics.values.airspeed, |
|
|
|
axis = { |
|
|
|
t = electrics.values.throttle, |
|
|
|
b = electrics.values.brake, |
|
|
|
c = electrics.values.clutch |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
log("I", "ExtDash", "data: " .. tostring(data) ) |
|
|
|
if electrics.values.rpm then |
|
|
|
data.rpm = { |
|
|
|
cur = electrics.values.rpm |
|
|
|
} |
|
|
|
|
|
|
|
if electrics.values.maxrpm then |
|
|
|
data.rpm.max = electrics.values.maxrpm |
|
|
|
|
|
|
|
local currentTempRedlineCoef = linearScale(electrics.values.oiltemp or 0, minOilTemp, maxOilTemp, coldOilRPMCoef, 1) |
|
|
|
data.rpm.rl = electrics.values.maxrpm * currentTempRedlineCoef |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
if electrics.values.oiltemp then |
|
|
|
data.oil = { |
|
|
|
p = 0, --FIXME: value |
|
|
|
t = electrics.values.oiltemp |
|
|
|
} |
|
|
|
end |
|
|
|
|
|
|
|
if electrics.values.fuel then |
|
|
|
data.fuel = electrics.values.fuel |
|
|
|
end |
|
|
|
|
|
|
|
--TODO: lights |
|
|
|
-- lights = { |
|
|
|
-- dash = 0, --FIXME: value |
|
|
|
-- on = 0 --FIXME: value |
|
|
|
-- }, |
|
|
|
|
|
|
|
--log("I", "ExtDash", "data: " .. tostring(data) ) |
|
|
|
local packet = cbor.encode( data ) |
|
|
|
udpSocket:sendto(packet, ip, port) |
|
|
|
end |
|
|
|
|
|
|
|
local function updateGFX(dt) |
|
|
|
if not playerInfo.firstPlayerSeated then |
|
|
|
return |
|
|
|
end |
|
|
|
sendPackage(ip, port, 0) |
|
|
|
end |
|
|
|
|
|
|
|
local function init(jbeamData) |
|
|
|
minOilTemp = jbeamData.minOilTemp or minOilTemp |
|
|
|
maxOilTemp = jbeamData.maxOilTemp or maxOilTemp |
|
|
|
coldOilRPMCoef = jbeamData.coldOilRPMCoef or coldOilRPMCoef |
|
|
|
end |
|
|
|
|
|
|
|
local function onExtensionLoaded() |
|
|
|
@ -48,6 +102,7 @@ end |
|
|
|
-- public interface |
|
|
|
M.onExtensionLoaded = onExtensionLoaded |
|
|
|
M.onExtensionUnloaded = onExtensionUnloaded |
|
|
|
M.init = init |
|
|
|
M.updateGFX = updateGFX |
|
|
|
|
|
|
|
-- other functions |
|
|
|
|