summaryrefslogtreecommitdiff
path: root/scripts/global.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/global.lua')
-rw-r--r--[-rwxr-xr-x]scripts/global.lua348
1 files changed, 214 insertions, 134 deletions
diff --git a/scripts/global.lua b/scripts/global.lua
index 39bde4a..13c3c1d 100755..100644
--- a/scripts/global.lua
+++ b/scripts/global.lua
@@ -1,13 +1,48 @@
--- SLIMax Mgr Lua Script v2.4
+-- SLIMax Mgr Lua Script v3.8.1
-- PART OF SLIMAX Manager pkg
--- Copyright (c)2011-2013 by EK and Zappadoc - All Rights Reserved.
--- changed by Zappadoc - 2012-11-08
+-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
+-- last change by Zappadoc - 2013-10
+
+mSMX_VERSION = 3.8
-- see slimax_script_readme.txt for implementation
+-- load left and right functions tools
+require "scripts/functions_tools"
+
-- ============================================================
-- GLOBAL VAR
-- ============================================================
+-- SMXMessageBox Styles
+MB_OK = 0x00000000
+MB_OKCANCEL = 0x00000001
+MB_ABORTRETRYIGNORE = 0x00000002
+MB_YESNOCANCEL = 0x00000003
+MB_YESNO = 0x00000004
+MB_RETRYCANCEL = 0x00000005
+MB_CANCELTRYCONTINUE = 0x00000006
+
+MB_ICONHAND = 0x00000010
+MB_ICONQUESTION = 0x00000020
+MB_ICONEXCLAMATION = 0x00000030
+MB_ICONASTERISK = 0x00000040
+
+MB_USERICON = 0x00000080
+MB_ICONWARNING = MB_ICONEXCLAMATION
+MB_ICONERROR = MB_ICONHAND
+
+MB_ICONINFORMATION = MB_ICONASTERISK
+MB_ICONSTOP = MB_ICONHAND
+
+-- MB result
+mIDOK = 1
+mIDCANCEL = 2
+mIDABORT = 3
+mIDRETRY = 4
+mIDIGNORE = 5
+mIDYES = 6
+mIDNO = 7
+
-- scripts settings
mCustomScriptsFileName = ""
@@ -15,28 +50,50 @@ mCustomScriptsFileName = ""
-- init left and right digits panel text
mLeftSpdLmtText = " "
mRightSpdLmtText = " "
+-- 4 digits F1 panel
+mF1LeftSpdLmtText = " "
+mF1RightSpdLmtText = " "
-- new: 2.1
-- RPM threshold values in percentage used with Shiftlights method 2
-- and configured with SLIMax Manager II Advanced Options Panel
-- default values:
-RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 99 }
-RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18675 }
-
+RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 98, 99, 99 }
+RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18670, 18675, 18677 }
+
+-- Fanatec text using for slowdown update
+mFanatecText = ""
+-- SIMRACE DLX text using for slowdown update
+mSRDlxLeftText = ""
+mSRDlxRightText = ""
+-- SIMRACE DLX text using for slowdown update
+mSRF1LeftText = ""
+mSRF1RightText = ""
+
+-- get feedback on display when you turn encoder or press button assigned to internal functions, see control.lua
-- true if you want to display switch pos and value
-mSwitchFeedbackAllowed = false
+mSwitchFeedbackAllowed = true
-- mapping to keystroke demo script
-- see the support forum for more info on key mapping
mDemoMapToKeyAllowed = false
mDemoMapToKeySwitch = 5
+-- Fanatec Digits Status
+mFanatecDigitsFeedbackAllowed = true
+-- Fanatec speedlimiter method seleted
+mFanatecSpeedLimiterFeedbackAllowed = true
+-- Fanatec osp method seleted
+mFanatecOSPFeedbackAllowed = true
+-- Fanatec shiftlights method seleted
+mFanatecShiftlightsFeedbackAllowed = true
+
-- Low Fuel status
mLowFuelFeedbackAllowed = true
-- Left and Right Digits status
-mLeftDigitsFeedbackAllowed = false
-mRightDigitsFeedbackAllowed = false
+mLeftDigitsFeedbackAllowed = true
+mRightDigitsFeedbackAllowed = true
-- display KPH or KMH
mUnitFeedbackAllowed = true
@@ -58,14 +115,17 @@ mDumpLapButton = 9
-- delta time delay
mDeltaTimeBackup = 0
mDeltaTimeOldTicks = 0
-mDeltaTimeDelay = 700
+mDeltaTimeDelay = 100
+mRefreshLapTimeRate = 50
+-- dump telemetry
+TelemetryTools("dumplastlap", false);
-- ============================================================
-- init globals flag
isGlobalInitialized = 0
--- 13 RPM leds
+-- 15 RPM leds
mRPMLedTable = {
RPM0=0,
RPM1=0,
@@ -79,131 +139,31 @@ mRPMLedTable = {
RPM9=0,
RPM10=0,
RPM11=0,
- RPM12=0
+ RPM12=0,
+ RPM13=0,
+ RPM14=0
}
-- SLI device type
-mDeviceType = {
- "BU0386Otus",
- "BU0386",
- "BU0386a",
- "BU0386lc",
- "BU0386x",
- "SLI-M",
- "SLI-PRO",
- "SPARE1",
- "BU0710",
- "SLIEMU",
- "SLIF1"
-}
-
--- ========================
--- Utilities functions
--- ========================
-
--- add a function name to left and right functions list
--- typical usage AddFuncName(path, func):
--- on left list:
--- local err = AddFuncName("cfg/sli_left_functions.ecfg", "100.DSII KERS")
--- or right list:
--- local err = AddFuncName("cfg/sli_right_functions.ecfg", "100.DSII KERS")
-function AddFuncName(path, func)
- file,err = io.open(path,"r")
- if err then return 0 end
-
- isOK = false
- t = {}
- i= 1
- for line in file:lines() do
- if line == nil then break end
- -- check if the function name exist
- if string.find(line, func)then isOK = true end
- t[i]= line
- i= i + 1
- end
- file:close()
-
- if not isOK then
- -- write mode
- file, err = io.open(path,"w+")
- if err then return 0 end
- -- add the function name at the end of file
- for k, v in pairs(t) do
- -- add line
- file:write(v)
- file:write("\n")
- end
- -- add the function name
- file:write(func)
- file:write("\n")
- file:close()
- end
- return 1
-end
+-- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API
-
- -- same as above for removing the function name
-function RemoveFuncName(path, func)
- file,err = io.open(path,"r")
- if err then return 0 end
-
- t = { }
- i=1
- for line in file:lines() do
- if line == nil then break end
- -- check if the function name exist
- if not string.find(line, func)then
- t[i] = line
- i= i + 1
- end
- end
- file:close()
-
- -- write mode, delete previous data
- file, err = io.open(path,"w+")
- if err then return 0 end
-
- for k, v in pairs(t) do
- -- print(k .. " - " .. v .. "\n")
- -- add line
- file:write(v)
- file:write("\n")
- end
-
- file:close()
- return 1
-end
+-- --------------------------------------------
+-- KERS functions
+-- --------------------------------------------
--- get next function index available
--- typical usage GetNewFuncIndex(path):
--- on left list:
--- local num_available = GetNewFuncIndex("cfg/sli_left_functions.ecfg")
--- or right list:
--- local num_available = GetNewFuncIndex("cfg/sli_right_functions.ecfg")
-function GetNewFuncIndex(path)
- file,err = io.open(path,"r")
- if err then return 0 end
-
- idx = 0
- for line in file:lines() do
- if line == nil then break end
- -- get the prefix
- a = string.find(line, '.', 1, true)
- b = string.sub( line,1, a-1)
- -- print ( b .. "\n")
-
- -- string to num conversion
- c = (b + 0)
- -- store if it's greater
- if c > idx then idx = c end
- end
- file:close()
-
- return idx+1
+function GetKersPercent()
+ -- get kers value
+ local kers_level = GetCarInfo("kers")
+ local k_percent = 0
+ if kers_level ~= nil and kers_level > 0 then
+ k_percent = round((kers_level/1000) / 4 )
+ end
+ return k_percent
end
+
-- Init all globals
function InitGlobals()
-- default blink time delay
@@ -219,11 +179,14 @@ function InitGlobals()
gRedZone = 0
gOSPLimit = 0
mBU0710Leds = 0
+ mG27Leds = 0
+ mOSPMethod = 0
+ mFanatecLeds = 0
end
-- set RPM threshold value in percentage ( SLIMax Manager 2.1 )
function SetRPMPercentValue(index, value)
- if index <1 or index>13 then
+ if index <1 or index>15 then
return
end
if value <0 or value >100 then
@@ -235,7 +198,7 @@ end
-- set RPM threshold value ( SLIMax Manager 2.1 )
function SetRPMAbsoluteValue(index, value)
- if index <1 or index>13 then
+ if index <1 or index>15 then
return
end
if value <0 or value >20000 then
@@ -309,7 +272,8 @@ end
function toggleAllLed(val)
initLedTable(mRPMLedTable, val)
for i = 1, 6 do SetWarnLed(i, val) end
- for i = 1, 5 do SetExtLed(i, val) end
+ -- 7 external leds is the max value used in SIM RACE F1 and Emulator
+ for i = 1, 7 do SetExtLed(i, val) end
SetRPMLed("mRPMLedTable")
end
@@ -406,9 +370,15 @@ function GetTemp(tmp, selector)
end
end
+-- set refresh lap time rate in ms
+function SetRefreshLapTimeRate(delay)
+ if delay == nil or delay < 0 or delay > 5000 then delay = 50 end
+ mRefreshLapTimeRate = delay
+end
+
-- set delta time delay in ms
function SetDeltaTimeDelay(delay)
- if delay == nil or delay < 0 or delay > 5000 then delay = 700 end
+ if delay == nil or delay < 0 or delay > 5000 then delay = 200 end
mDeltatimeDelay = delay
end
@@ -416,16 +386,19 @@ end
function GetCurrentGear()
local g = GetCarInfo("gear")
-- get neutral
- local n = string.char(GetContextInfo("neutral"))
+ local n = GetContextInfo("neutral")
-- get reverse char and convert to string
local r = string.char(GetContextInfo("reverse"))
+ -- get state of custom Optimal Shift Point (OSP) records
+ local ospcustom_on = GetContextInfo("ospcustom")
-- set neutral, reverse or current gear
local result = g
if g == 0 then
- -- neutral
- result = n
+ -- if neutral and using custom OSP record then add a dot to gear digit
+ if ospcustom_on then n = n + 128 end
+ result = string.char(n)
elseif g < 0 then
-- reverse
result = r
@@ -434,6 +407,113 @@ function GetCurrentGear()
return result
end
+function isAppIRacing(sim)
+ if sim == "iRacingSim.exe" or sim == "iRacingSim64.exe" then
+ return true
+ end
+ return false
+end
+function isAppRFactor(sim)
+ if sim == "rFactor.exe" or sim == "rFactor2.exe" then
+ return true
+ end
+ return false
+end
+function DisplayFormatTime(lptime, delay, dec, deltaflag, numDigits)
+ local ticks = GetTicks()
+
+ if dft_old_time == nil or (ticks - dft_old_time) > delay then
+ -- global to backup ticks (ms)
+ dft_old_time = ticks
+
+ local hr = 0
+ local mn = 0
+ local sc = 0
+ local ms = 0
+ local hd = 0
+ local panel = ""
+ local prefix = " "
+
+ if lptime < 0 then
+ prefix = "-"
+ end
+ -- explod time
+ hr, mn, sc, hd, ms = timeDispatcher(lptime)
+
+ if deltaflag == 1 then
+ --display delta time
+ if lptime == -1 or (mn + sc + ms) == 0.0 then
+ if numDigits == 3 then
+ Panel = "-.--"
+ else
+ Panel = " -.-- "
+ end
+ elseif mn > 0 then
+ if numDigits == 3 then
+ if mn < 100 then
+ Panel = string.format( "%s%02d.", prefix, mn)
+ else
+ Panel = " ."
+ end
+
+ else
+ Panel = string.format( " %s%1d.%02d ", prefix, mn, sc)
+ end
+ else
+
+ if numDigits == 3 then
+ if sc < 10 then
+ if prefix == "-" then
+ Panel = string.format( "%s%1d.%01d ", prefix, sc, hd)
+ else
+ Panel = string.format( "%1d.%02d ", sc, hd)
+ end
+ else
+ Panel = " . "
+ end
+ else
+ if Ndig == 2 then
+ Panel = string.format( " %s%1d.%02d ", prefix, sc, hd)
+ else
+ Panel = string.format( " %s%1d.%03d", prefix, sc, ms)
+ end
+ end
+
+ end
+
+ elseif deltaflag == 0 then
+ --display laptime
+ if lptime == -1 or (mn + sc + ms) == 0.0 then
+ if numDigits == 3 then
+ Panel = "-.--"
+ else
+ Panel = "-:--.---"
+ end
+
+ elseif mn < 10 then
+ if numDigits == 3 then
+ Panel = string.format( "%1d.%02d", mn, sc)
+ else
+ Panel = string.format( "%1d:%02d.%03d", mn, sc, ms)
+ end
+ elseif hr > 0 then
+ if numDigits == 3 then
+ Panel = " . "
+ else
+ Panel = string.format( " %02d.%02d ", hr, mn)
+ end
+ else
+ if numDigits == 3 then
+ Panel = string.format( " %02d.", mn)
+ else
+ Panel = string.format( " %02d.%02d.%01d", mn, sc, ms)
+ end
+ end
+ end
+ end
+
+ return Panel
+end
--==============================================
require "scripts/slidevice"