summaryrefslogtreecommitdiff
path: root/scripts/speedlimiter.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/speedlimiter.lua')
-rwxr-xr-xscripts/speedlimiter.lua324
1 files changed, 314 insertions, 10 deletions
diff --git a/scripts/speedlimiter.lua b/scripts/speedlimiter.lua
index 3d9a54c..90cd229 100755
--- a/scripts/speedlimiter.lua
+++ b/scripts/speedlimiter.lua
@@ -1,7 +1,7 @@
--- SLIMax Mgr Lua Script v2.1
--- Copyright (c)2011-2013 by EK and Zappadoc - All Rights Reserved.
--- Use this script to build all speed-limiter feedback methods
--- last change by Zappadoc - 2012-10-06
+-- SLIMax Mgr Lua Script v3
+-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
+-- this script builds all speed/pit-limiter feedback methods
+-- last change by Zappadoc - 2013-02
-- SLI-M, SLI-PRO speed limiter Methods
function spdLmtMethodEvent(idx)
@@ -34,11 +34,8 @@ function spdLmtMethodEvent(idx)
GetSLIMaxInfo()
-- init table
- if mSpdLimitMethod > 2 then
- -- reinit RPM leds only if method > 2
- initLedTable(mRPMLedTable, 0)
- SetRPMLed("mRPMLedTable")
- end
+ initLedTable(mRPMLedTable, 0)
+ SetRPMLed("mRPMLedTable")
if mNoBlink or (mSpdLimitMethod == 0) then
-- speedlimiter led NOT blinking
@@ -229,9 +226,98 @@ function spdLmtMethodEvent(idx)
SetRPMLed("mRPMLedTable")
else
- return 0
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end
+
+
+-- G27 speed limiter Methods
+function spdLmtG27MethodEvent(idx)
+ mSpdLimitMethod = idx
+ -- call custom script
+ local result = custom_spdLmtG27MethodEvent(mSpdLimitMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtG27MethodEvent(mSpdLimitMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ mG27Leds = 0
+
+ if mNoBlink or mSpdLimitMethod == 0 then
+ -- speedlimiter led NOT blinking
+ mG27Leds = 0x1F
+
+ elseif mSpdLimitMethod == 1 then
+ -- speedlimiter led blinking, method 1
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ mG27Leds = 0x1F
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ mG27Leds = 0
+ end
+
+ elseif mSpdLimitMethod >= 2 then
+ -- speedlimiter alternate led blinking, method 2 to n
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ mG27Leds = 0x0A
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ mG27Leds = 0x15
+ end
+
+ else
+ return 1
end
+ SetG27Led(mG27Leds)
+
-- timebase
if GetTicks() > mOldTickCount then
mOldTickCount = GetTicks() + 20
@@ -239,3 +325,221 @@ function spdLmtMethodEvent(idx)
return 1
end
+
+ -- Fanatec speed/pit limiter Methods
+function spdLmtFanatecMethodEvent(idx)
+ mSpdLimitMethod = idx
+ mFanatecSpdLmtText = " "
+ -- call custom script
+ local result = custom_spdLmtFanatecMethodEvent(mSpdLimitMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtFanatecMethodEvent(mSpdLimitMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ initLedTable(mRPMLedTable, 0)
+ SetFanatecLed("mRPMLedTable")
+
+ if mNoBlink or mSpdLimitMethod == 0 then
+ -- speedlimiter first rpm led NOT blinking
+ SetFanatecDigitsAllowed(true)
+ mRPMLedTable["RPM0"]= 1
+ SetFanatecLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 1 then
+ -- speedlimiter first rpm led blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ -- one led
+ mRPMLedTable["RPM0"]= 1
+
+ SetFanatecDigitsAllowed(true)
+
+ -- if not mSpdLmtRPMLedOnly then
+ -- SetFanatecDigitsAllowed(false)
+ -- if mLimiterChar then
+ -- SetFanatecGear("L", false)
+ -- else
+ -- SetFanatecDigits( "---" )
+ -- end
+ -- end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ mRPMLedTable["RPM0"]= 0
+ -- if not mSpdLmtRPMLedOnly then
+ -- SetFanatecDigitsAllowed(true)
+ -- SetFanatecDigits( " " )
+ -- end
+ end
+ SetFanatecLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 2 then
+ -- speedlimiter all rpm led blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ initLedTable(mRPMLedTable, 1)
+
+ SetFanatecDigitsAllowed(true)
+ -- if not mSpdLmtRPMLedOnly then
+ -- SetFanatecDigitsAllowed(false)
+ -- if mLimiterChar then
+ -- SetFanatecGear("L", false)
+ -- else
+ -- SetFanatecDigits( "---" )
+ -- end
+ -- end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 0)
+ -- if not mSpdLmtRPMLedOnly then
+ -- SetFanatecDigitsAllowed(true)
+ -- SetFanatecDigits( " " )
+ -- end
+ end
+ SetFanatecLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 3 or mSpdLimitMethod > 6 then
+ -- speedlimiter alternate RPM blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 1
+ else
+ mRPMLedTable[led] = 0
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetFanatecDigitsAllowed(false)
+ if mLimiterChar then
+ SetFanatecGear("L", false)
+ else
+ SetFanatecDigits( "---" )
+ end
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 0
+ else
+ mRPMLedTable[led] = 1
+ end
+ end
+
+ if not mSpdLmtRPMLedOnly then
+ SetFanatecDigitsAllowed(true)
+ --SetFanatecDigits( " " )
+ end
+ end
+ SetFanatecLed("mRPMLedTable")
+
+
+ elseif mSpdLimitMethod == 4 or mSpdLimitMethod == 5 then
+ -- speedlimiter no led digits only
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 0)
+ if mSpdLimitMethod == 4 then
+ SetFanatecDigitsAllowed(true)
+ else
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " " )
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( "---" )
+
+ initLedTable(mRPMLedTable, 0)
+ end
+ SetFanatecLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 6 then
+ -- speedlimiter freezed rpm + digits blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 1)
+ --if not mSpdLmtRPMLedOnly then
+ SetFanatecDigitsAllowed(true)
+ --SetFanatecDigits( " " )
+ --end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " " )
+
+ initLedTable(mRPMLedTable, 1)
+ end
+ SetFanatecLed("mRPMLedTable")
+
+ else
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end