summaryrefslogtreecommitdiff
path: root/scripts/global.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/global.lua')
-rw-r--r--scripts/global.lua1038
1 files changed, 519 insertions, 519 deletions
diff --git a/scripts/global.lua b/scripts/global.lua
index 13c3c1d..fad73df 100644
--- a/scripts/global.lua
+++ b/scripts/global.lua
@@ -1,519 +1,519 @@
--- SLIMax Mgr Lua Script v3.8.1
--- PART OF SLIMAX Manager pkg
--- 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 = ""
-
--- new in: 2.2
--- 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, 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 = 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 = true
-mRightDigitsFeedbackAllowed = true
-
--- display KPH or KMH
-mUnitFeedbackAllowed = true
-
--- show the current OSP Factor
-mOSPFeedbackAllowed = true
-
--- cool global brightness feedback
-mBrightnessFeedbackAllowed = true
-
--- show the current value of maxgear option
-mMaxGearFeedbackAllowed = true
-
--- activate or deactivate lap dump telemetry
--- using button 9 by default
-mDumpLapAllowed = false
-mDumpLapButton = 9
-
--- delta time delay
-mDeltaTimeBackup = 0
-mDeltaTimeOldTicks = 0
-mDeltaTimeDelay = 100
-mRefreshLapTimeRate = 50
-
--- dump telemetry
-TelemetryTools("dumplastlap", false);
--- ============================================================
-
--- init globals flag
-isGlobalInitialized = 0
-
--- 15 RPM leds
-mRPMLedTable = {
- RPM0=0,
- RPM1=0,
- RPM2=0,
- RPM3=0,
- RPM4=0,
- RPM5=0,
- RPM6=0,
- RPM7=0,
- RPM8=0,
- RPM9=0,
- RPM10=0,
- RPM11=0,
- RPM12=0,
- RPM13=0,
- RPM14=0
-}
-
-
--- SLI device type
--- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API
-
-
--- --------------------------------------------
--- KERS functions
--- --------------------------------------------
-
-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
- mBlinkTime = 32
- mOSPBlinkTime = 8
-
- -- ticks stuff
- mOSPBlink = 0
- mSpdLmtBlink = 0
- mOldTickCount = 0
- mOldOSPTickCount = 0
-
- 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>15 then
- return
- end
- if value <0 or value >100 then
- return
- end
-
- RPM_PERCENT_VALUES[index] = value
-end
-
--- set RPM threshold value ( SLIMax Manager 2.1 )
-function SetRPMAbsoluteValue(index, value)
- if index <1 or index>15 then
- return
- end
- if value <0 or value >20000 then
- return
- end
-
- RPM_ABSOLUTE_VALUES[index] = value
-end
-
--- get all global preferences set in general_default.sli
-function GetSLIMaxInfo()
- -- get RPM Only flag
- mSpdLmtRPMLedOnly = GetContextInfo("spdlmtrpmledonlyflag")
- if mSpdLmtRPMLedOnly == nil then mSpdLmtRPMLedOnly = false end
-
- -- get blink delay value*
- mBlinkTime = GetContextInfo("blinktime")
- if mBlinkTime == nil then mBlinkTime = 32 end
- if mBlinkTime < 1 or mBlinkTime > 48 then mBlinkTime = 32 end
-
- -- get osp blink delay value
- mOSPBlinkTime = GetContextInfo("ospblinktime")
- if mOSPBlinkTime == nil then mOSPBlinkTime = 32 end
- if mOSPBlinkTime < 1 or mOSPBlinkTime > 48 then mOSPBlinkTime = 32 end
-
- -- get current speed Limiter LED index
- mSpeedLimiterLED = GetContextInfo("ledspeedlimiterindex")
- if mSpeedLimiterLED == nil then mSpeedLimiterLED = 5 end
- if mSpeedLimiterLED < 1 or mSpeedLimiterLED > 6 then mSpeedLimiterLED = 5 end
-
- -- get current osp LEDs index
- mOSPLED1 = GetContextInfo("ospled1")
- if mOSPLED1 == nil then mOSPLED1 = 1 end
- if mOSPLED1 < 1 or mOSPLED1 > 11 then mOSPLED1 = 1 end
-
- mOSPLED2 = GetContextInfo("ospled2")
- if mOSPLED2 == nil then mOSPLED2 = 1 end
- if mOSPLED2 < 1 or mOSPLED2 > 11 then mOSPLED2 = 1 end
-
- -- blinking allowed?
- mNoBlink = GetContextInfo("noblinkflag")
- if mNoBlink == nil then mNoBlink = false end
-
- -- get limiter char flag
- mLimiterChar = GetContextInfo("limitercharflag")
- if mLimiterChar == nil then mLimiterChar = false end
-
- -- is OSP with first gear allowed?
- mOSPWithFirstGear = GetContextInfo("ospwithfirstgear")
- if mOSPWithFirstGear == nil then mOSPWithFirstGear = false end
-
-end
-
--- get cpu ticks
- function GetTicks()
- local tcks = GetContextInfo("ticks")
- if tcks == nil then tcks = 0 end
- return tcks
-end
-
--- reset table function
-function initLedTable(ibl, value)
- if ibl ~= nil then
- for k, v in pairs(ibl) do
- ibl[k] = value
- end
- end
-end
-
--- toggle all led state
-function toggleAllLed(val)
- initLedTable(mRPMLedTable, val)
- for i = 1, 6 do SetWarnLed(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
-
--- The following function rounds a number
--- lua doesn't return the same rounded value as C/C++
-function round(num)
- if num == nil then num = 0 end
- local i = 0
- if num >= 0 then
- i = math.floor(num+.5)
- else
- i = math.ceil(num-.5)
- end
- return i
-end
-
--- The following function calculate hr, mn, sec, hd, ms
--- param: time in meter/sec
-function timeDispatcher( tt)
- if tms == nil then tms = 0 end
- local tms = math.abs(tt)
- local t_hr = 0
- local t_mn = 0
- local t_sc = 0
- local t_ms = 0
- local t_hd = 0
-
- if tms > 0 then
- t_hr, n = math.modf(tms/3600)
- t_mn, c = math.modf(n*60)
- t_sc, s = math.modf(c*60)
- t_hd, h = math.modf(s*100)
- t_ms, m = math.modf(s*1000)
- end
--- print( tt, t_hr, t_mn, t_sc, t_hd, t_ms)
- return t_hr, t_mn, t_sc, t_hd, t_ms
-end
-
--- return speed in KPH or MPH
-function speed(spd, selector)
- if spd == nil then spd = 0 end
- if selector then
- -- MPH
- return ( spd * 2.237)
- else
- return (spd * 3.6)
- end
-end
-
--- Fahrenheit to Celsius
-function FtoC(f)
- return ((f - 32) * (5/9))
-end
-
--- Celsius to Fahrenheit
-function CtoF(c)
- return (c * (9/5) + 32)
-end
-
--- Kelvin to Celsius
-function KtoC(k)
- return ( k - 273.313)
-end
-
--- liters to gallons
-function LtoG(liters)
- return (liters * 0.264172052 )
-end
-
--- gallons to liters
-function GtoL(gallons)
- return (gallons * 3.78541178 )
-end
-
--- return fuel in liters or gallons
-function GetFuel(fl, selector)
- if fl == nil then fl = 0 end
- if selector then
- -- gallons
- return LtoG( fl)
- else
- return fl
- end
-end
-
--- return celcius or fahrenheit
-function GetTemp(tmp, selector)
- if tmp == nil then tmp = 0 end
- if selector then
- -- gallons
- return CtoF( tmp)
- else
- return tmp
- 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 = 200 end
- mDeltatimeDelay = delay
-end
-
--- get current gear
-function GetCurrentGear()
- local g = GetCarInfo("gear")
- -- get 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
- -- 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
- end
-
- 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"
+-- SLIMax Mgr Lua Script v3.8.1
+-- PART OF SLIMAX Manager pkg
+-- 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 = ""
+
+-- new in: 2.2
+-- 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, 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 = 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 = true
+mRightDigitsFeedbackAllowed = true
+
+-- display KPH or KMH
+mUnitFeedbackAllowed = true
+
+-- show the current OSP Factor
+mOSPFeedbackAllowed = true
+
+-- cool global brightness feedback
+mBrightnessFeedbackAllowed = true
+
+-- show the current value of maxgear option
+mMaxGearFeedbackAllowed = true
+
+-- activate or deactivate lap dump telemetry
+-- using button 9 by default
+mDumpLapAllowed = false
+mDumpLapButton = 9
+
+-- delta time delay
+mDeltaTimeBackup = 0
+mDeltaTimeOldTicks = 0
+mDeltaTimeDelay = 100
+mRefreshLapTimeRate = 50
+
+-- dump telemetry
+TelemetryTools("dumplastlap", false);
+-- ============================================================
+
+-- init globals flag
+isGlobalInitialized = 0
+
+-- 15 RPM leds
+mRPMLedTable = {
+ RPM0=0,
+ RPM1=0,
+ RPM2=0,
+ RPM3=0,
+ RPM4=0,
+ RPM5=0,
+ RPM6=0,
+ RPM7=0,
+ RPM8=0,
+ RPM9=0,
+ RPM10=0,
+ RPM11=0,
+ RPM12=0,
+ RPM13=0,
+ RPM14=0
+}
+
+
+-- SLI device type
+-- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API
+
+
+-- --------------------------------------------
+-- KERS functions
+-- --------------------------------------------
+
+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
+ mBlinkTime = 32
+ mOSPBlinkTime = 8
+
+ -- ticks stuff
+ mOSPBlink = 0
+ mSpdLmtBlink = 0
+ mOldTickCount = 0
+ mOldOSPTickCount = 0
+
+ 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>15 then
+ return
+ end
+ if value <0 or value >100 then
+ return
+ end
+
+ RPM_PERCENT_VALUES[index] = value
+end
+
+-- set RPM threshold value ( SLIMax Manager 2.1 )
+function SetRPMAbsoluteValue(index, value)
+ if index <1 or index>15 then
+ return
+ end
+ if value <0 or value >20000 then
+ return
+ end
+
+ RPM_ABSOLUTE_VALUES[index] = value
+end
+
+-- get all global preferences set in general_default.sli
+function GetSLIMaxInfo()
+ -- get RPM Only flag
+ mSpdLmtRPMLedOnly = GetContextInfo("spdlmtrpmledonlyflag")
+ if mSpdLmtRPMLedOnly == nil then mSpdLmtRPMLedOnly = false end
+
+ -- get blink delay value*
+ mBlinkTime = GetContextInfo("blinktime")
+ if mBlinkTime == nil then mBlinkTime = 32 end
+ if mBlinkTime < 1 or mBlinkTime > 48 then mBlinkTime = 32 end
+
+ -- get osp blink delay value
+ mOSPBlinkTime = GetContextInfo("ospblinktime")
+ if mOSPBlinkTime == nil then mOSPBlinkTime = 32 end
+ if mOSPBlinkTime < 1 or mOSPBlinkTime > 48 then mOSPBlinkTime = 32 end
+
+ -- get current speed Limiter LED index
+ mSpeedLimiterLED = GetContextInfo("ledspeedlimiterindex")
+ if mSpeedLimiterLED == nil then mSpeedLimiterLED = 5 end
+ if mSpeedLimiterLED < 1 or mSpeedLimiterLED > 6 then mSpeedLimiterLED = 5 end
+
+ -- get current osp LEDs index
+ mOSPLED1 = GetContextInfo("ospled1")
+ if mOSPLED1 == nil then mOSPLED1 = 1 end
+ if mOSPLED1 < 1 or mOSPLED1 > 11 then mOSPLED1 = 1 end
+
+ mOSPLED2 = GetContextInfo("ospled2")
+ if mOSPLED2 == nil then mOSPLED2 = 1 end
+ if mOSPLED2 < 1 or mOSPLED2 > 11 then mOSPLED2 = 1 end
+
+ -- blinking allowed?
+ mNoBlink = GetContextInfo("noblinkflag")
+ if mNoBlink == nil then mNoBlink = false end
+
+ -- get limiter char flag
+ mLimiterChar = GetContextInfo("limitercharflag")
+ if mLimiterChar == nil then mLimiterChar = false end
+
+ -- is OSP with first gear allowed?
+ mOSPWithFirstGear = GetContextInfo("ospwithfirstgear")
+ if mOSPWithFirstGear == nil then mOSPWithFirstGear = false end
+
+end
+
+-- get cpu ticks
+ function GetTicks()
+ local tcks = GetContextInfo("ticks")
+ if tcks == nil then tcks = 0 end
+ return tcks
+end
+
+-- reset table function
+function initLedTable(ibl, value)
+ if ibl ~= nil then
+ for k, v in pairs(ibl) do
+ ibl[k] = value
+ end
+ end
+end
+
+-- toggle all led state
+function toggleAllLed(val)
+ initLedTable(mRPMLedTable, val)
+ for i = 1, 6 do SetWarnLed(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
+
+-- The following function rounds a number
+-- lua doesn't return the same rounded value as C/C++
+function round(num)
+ if num == nil then num = 0 end
+ local i = 0
+ if num >= 0 then
+ i = math.floor(num+.5)
+ else
+ i = math.ceil(num-.5)
+ end
+ return i
+end
+
+-- The following function calculate hr, mn, sec, hd, ms
+-- param: time in meter/sec
+function timeDispatcher( tt)
+ if tms == nil then tms = 0 end
+ local tms = math.abs(tt)
+ local t_hr = 0
+ local t_mn = 0
+ local t_sc = 0
+ local t_ms = 0
+ local t_hd = 0
+
+ if tms > 0 then
+ t_hr, n = math.modf(tms/3600)
+ t_mn, c = math.modf(n*60)
+ t_sc, s = math.modf(c*60)
+ t_hd, h = math.modf(s*100)
+ t_ms, m = math.modf(s*1000)
+ end
+-- print( tt, t_hr, t_mn, t_sc, t_hd, t_ms)
+ return t_hr, t_mn, t_sc, t_hd, t_ms
+end
+
+-- return speed in KPH or MPH
+function speed(spd, selector)
+ if spd == nil then spd = 0 end
+ if selector then
+ -- MPH
+ return ( spd * 2.237)
+ else
+ return (spd * 3.6)
+ end
+end
+
+-- Fahrenheit to Celsius
+function FtoC(f)
+ return ((f - 32) * (5/9))
+end
+
+-- Celsius to Fahrenheit
+function CtoF(c)
+ return (c * (9/5) + 32)
+end
+
+-- Kelvin to Celsius
+function KtoC(k)
+ return ( k - 273.313)
+end
+
+-- liters to gallons
+function LtoG(liters)
+ return (liters * 0.264172052 )
+end
+
+-- gallons to liters
+function GtoL(gallons)
+ return (gallons * 3.78541178 )
+end
+
+-- return fuel in liters or gallons
+function GetFuel(fl, selector)
+ if fl == nil then fl = 0 end
+ if selector then
+ -- gallons
+ return LtoG( fl)
+ else
+ return fl
+ end
+end
+
+-- return celcius or fahrenheit
+function GetTemp(tmp, selector)
+ if tmp == nil then tmp = 0 end
+ if selector then
+ -- gallons
+ return CtoF( tmp)
+ else
+ return tmp
+ 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 = 200 end
+ mDeltatimeDelay = delay
+end
+
+-- get current gear
+function GetCurrentGear()
+ local g = GetCarInfo("gear")
+ -- get 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
+ -- 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
+ end
+
+ 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"