summaryrefslogtreecommitdiff
path: root/scripts/osp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/osp.lua')
-rw-r--r--scripts/osp.lua1512
1 files changed, 756 insertions, 756 deletions
diff --git a/scripts/osp.lua b/scripts/osp.lua
index 63e5f9f..0b6ded3 100644
--- a/scripts/osp.lua
+++ b/scripts/osp.lua
@@ -1,757 +1,757 @@
--- SLIMax Mgr Lua Script v3.3
--- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
--- this script builds all Optimal ShiftPoints methods (OSP)
--- last change by Zappadoc - 2013-10
-
-function SetOSPFeedback(state)
- if mOSPLED1 > 6 then
- SetExtLed( (mOSPLED1 - 6), state)
- else
- SetWarnLed(mOSPLED1, state)
- end
- if mOSPLED2 > 6 then
- SetExtLed( (mOSPLED2 - 6), state)
- else
- SetWarnLed(mOSPLED2, state)
- end
-end
-
--- SLI-M, SLI-PRO OSP Methods Event
-function ospMethodEvent(idx)
- mOSPMethod = idx
- -- OSP Limit default value is set in gear.lua
- if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
-
- -- call custom script (this is a good place to overwrite gOSPLimit value)
- local result = custom_ospMethodEvent(mOSPMethod)
- -- 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 (this is a good place to overwrite gOSPLimit value)
- result = global_custom_ospMethodEvent(mOSPMethod)
- -- 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
-
- -- check if globals initialized
- if isGlobalInitialized == 0 then
- isGlobalInitialized = 1
- -- init
- InitGlobals()
- end
- -- get global prefs
- GetSLIMaxInfo()
-
- local led = ""
-
- -- get rpm
- local rpm = 0
- rpm = GetCarInfo("rpm")
- if rpm == nil then rpm = 0 end
-
- -- get red zone value
- --local redZone = GetCarInfo("redzone")
- --if redZone == nil then redZone = 18000 end
-
- -- get current osp factor
- --local ospFactor = GetContextInfo("ospfactor")
- --if ospFactor == nil then ospFactor = 80 end
-
- -- get current gear
- local gear = 0
- gear = GetCarInfo("gear")
- if gear == nil then gear = 0 end
-
- -- get max gear of current car
- -- Alternate way to calc max gear if not available in API
- -- Use a global mMaxGear and do the following
- -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
-
- maxGear = GetCarInfo("maxgear")
- if maxGear == nil then maxGear = 4 end
-
- -- skip if neutral or ==maxgear
- if gear <=0 or gear>=maxGear then
- -- do nothing
- return 1
- end
-
- -- skip if first gear not allowed
- if not mOSPWithFirstGear and gear == 1 then
- -- do nothing
- return 1
- end
-
- -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
- -- print(rpm .. " - " .. gOSPLimit)
-
- -- rpm > osplimit so activate shiftpoints leds
- if rpm > gOSPLimit then
-
- -- no blinking allowed
- if mNoBlink then
- -- set both leds
- SetOSPFeedback(1)
-
- else
-
- if GetTicks() > mOldOSPTickCount then
- mOSPBlink = mOSPBlink + 1
- end
-
- if mOSPMethod <= 3 then
- -- methods 1 to 3
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- if mOSPMethod ~= 3 then
- -- if not method 3
- SetOSPFeedback(1)
- end
- if (mOSPMethod == 1) or (mOSPMethod == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 9,12 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- SetOSPFeedback(0)
-
- if (mOSPMethod == 1) or (mOSPMethod == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 9,12 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 0
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- end
-
- if mOSPMethod == 2 then
- -- add blue leds not blinking if method 2
- for i = 9,12 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- else
- -- bypass (give control to manager)
- return 1
- end
- -- timebase
- if GetTicks() > mOldOSPTickCount then
- mOldOSPTickCount = GetTicks() + 10
- end
-
- return 1
-end
-
-
--- G27 Methods Event
-function ospG27MethodEvent(idx)
- mOSPG27Method = idx
- -- OSP Limit default value is set in gear.lua
- if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
-
- -- call custom script (this is a good place to overwrite gOSPLimit value)
- local result = custom_ospG27MethodEvent(mOSPG27Method)
- -- 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 (this is a good place to overwrite gOSPLimit value)
- result = global_custom_ospG27MethodEvent(mOSPG27Method)
- -- 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
-
- -- check if globals initialized
- if isGlobalInitialized == 0 then
- isGlobalInitialized = 1
- -- init
- InitGlobals()
- end
- -- get global prefs
- GetSLIMaxInfo()
-
- local led = ""
-
- -- get rpm
- local rpm = 0
- rpm = GetCarInfo("rpm")
- if rpm == nil then rpm = 0 end
-
- -- get current gear
- local gear = 0
- gear = GetCarInfo("gear")
- if gear == nil then gear = 0 end
-
- -- get max gear of current car
- -- Alternate way to calc max gear if not available in API
- -- Use a global mMaxGear and do the following
- -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
-
- maxGear = GetCarInfo("maxgear")
- if maxGear == nil then maxGear = 4 end
-
- -- skip if neutral or ==maxgear
- if gear <=0 or gear>=maxGear then
- -- do nothing
- return 1
- end
-
- -- print("MAXGear: " .. gear.."/"..maxGear.." OSP: " .. mOSPG27Method .. " rpm: " .. rpm .. " - " .. gOSPLimit .. "\n")
-
-
- -- skip if first gear not allowed
- if not mOSPWithFirstGear and gear == 1 then
- -- do nothing
- return 1
- end
-
-
- -- rpm > osplimit so activate shiftpoints leds
- if rpm > gOSPLimit then
-
- mG27Leds = 0
-
- -- no blinking allowed
- if mNoBlink then
- -- set all leds
- mG27Leds = 0x1F;
-
- else
- if GetTicks() > mOldOSPTickCount then
- mOSPBlink = mOSPBlink + 1
- end
-
- if mOSPG27Method <= 1 or mOSPG27Method > 3 then
- -- methods 1 all blinking
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- mG27Leds = 0x1F;
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- mG27Leds = 0;
- end
- elseif mOSPG27Method == 2 then
- -- methods side blinking
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- mG27Leds = 0x3;
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- mG27Leds = 0;
- end
-
- elseif mOSPG27Method == 3 then
- -- methods 3 center blinking
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- mG27Leds = 0x18;
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- mG27Leds = 0;
- end
- end
- end
- SetG27Led(mG27Leds)
- else
- -- bypass (give control to manager)
- return 1
- end
- -- timebase
- if GetTicks() > mOldOSPTickCount then
- mOldOSPTickCount = GetTicks() + 10
- end
-
- return 1
-end
-
--- Fanatec OSP Methods Event
-function ospFanatecMethodEvent(idx)
- mOSPFanatecMethod = idx
- -- OSP Limit default value is set in gear.lua
- if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
-
- -- call custom script (this is a good place to overwrite gOSPLimit value)
- local result = custom_ospFanatecMethodEvent(mOSPFanatecMethod)
- -- 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 (this is a good place to overwrite gOSPLimit value)
- result = global_custom_ospFanatecMethodEvent(mOSPFanatecMethod)
- -- 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
-
- -- check if globals initialized
- if isGlobalInitialized == 0 then
- isGlobalInitialized = 1
- -- init
- InitGlobals()
- end
- -- get global prefs
- GetSLIMaxInfo()
-
- local led = ""
-
- -- get rpm
- local rpm = 0
- rpm = GetCarInfo("rpm")
- if rpm == nil then rpm = 0 end
-
- -- get current gear
- local gear = 0
- gear = GetCarInfo("gear")
- if gear == nil then gear = 0 end
-
- -- get max gear of current car
- -- Alternate way to calc max gear if not available in API
- -- Use a global mMaxGear and do the following
- -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
-
- maxGear = GetCarInfo("maxgear")
- if maxGear == nil then maxGear = 4 end
-
- -- skip if neutral or ==maxgear
- if gear <=0 or gear>=maxGear then
- -- do nothing
- return 1
- end
-
- -- skip if first gear not allowed
- if not mOSPWithFirstGear and gear == 1 then
- -- do nothing
- return 1
- end
-
- -- rpm > osplimit so activate shiftpoints leds
- if rpm > gOSPLimit then
-
- -- no blinking allowed
- if mNoBlink then
- -- no led
- else
-
- if GetTicks() > mOldOSPTickCount then
- mOSPBlink = mOSPBlink + 1
- end
-
- -- methods 1 to 4
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then
- -- blue leds blinking if method 0, ON
- for i = 6,8 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
-
- elseif mOSPFanatecMethod == 1 then
- -- all leds blinking if method 1, ON
- for i = 0,8 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
-
- elseif mOSPFanatecMethod == 2 then
- initLedTable(mRPMLedTable, 0)
- -- side leds blinking if method 2, ON
- mRPMLedTable["RPM0"] = 1
- mRPMLedTable["RPM1"] = 1
- mRPMLedTable["RPM7"] = 1
- mRPMLedTable["RPM8"] = 1
-
- elseif mOSPFanatecMethod == 3 then
- initLedTable(mRPMLedTable, 0)
- -- center leds blinking if method 3, ON
- mRPMLedTable["RPM3"] = 1
- mRPMLedTable["RPM4"] = 1
- mRPMLedTable["RPM5"] = 1
-
- elseif mOSPFanatecMethod == 4 then
- initLedTable(mRPMLedTable, 0)
- -- side fixed if method 4, ON
- mRPMLedTable["RPM0"] = 1
- mRPMLedTable["RPM1"] = 1
- mRPMLedTable["RPM7"] = 1
- mRPMLedTable["RPM8"] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then
- -- blue leds blinking if method 0 , OFF
- for i = 6,8 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 0
- end
-
- elseif mOSPFanatecMethod == 1 then
- -- all leds blinking if method 1, OFF
- for i = 0,8 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 0
- end
-
- elseif mOSPFanatecMethod == 2 then
- initLedTable(mRPMLedTable, 0)
- -- side leds blinking if method 2, OFF
- mRPMLedTable["RPM0"] = 0
- mRPMLedTable["RPM1"] = 0
- mRPMLedTable["RPM7"] = 0
- mRPMLedTable["RPM8"] = 0
-
- elseif mOSPFanatecMethod == 3 then
- initLedTable(mRPMLedTable, 0)
- -- center leds blinking if method 3, OFF
- mRPMLedTable["RPM3"] = 0
- mRPMLedTable["RPM4"] = 0
- mRPMLedTable["RPM5"] = 0
-
- elseif mOSPFanatecMethod == 4 then
- initLedTable(mRPMLedTable, 0)
- -- side fixed if method 4, ON
- mRPMLedTable["RPM0"] = 1
- mRPMLedTable["RPM1"] = 1
- mRPMLedTable["RPM7"] = 1
- mRPMLedTable["RPM8"] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
-
- else
- -- bypass (give control to manager)
- return 1
- end
- -- timebase
- if GetTicks() > mOldOSPTickCount then
- mOldOSPTickCount = GetTicks() + 10
- end
-
- return 1
-end
-
--- ==================================================
--- SIM RACE Deluxe OSP Methods Event
-
-function ospSRDlxMethodEvent(idx)
- mOSPSRDlxMethod = idx
- -- OSP Limit default value is set in gear.lua
- if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
-
- -- call custom script (this is a good place to overwrite gOSPLimit value)
- local result = custom_ospSRDlxMethodEvent(mOSPSRDlxMethod)
- -- 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 (this is a good place to overwrite gOSPLimit value)
- result = global_custom_ospSRDlxMethodEvent(mOSPSRDlxMethod)
- -- 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
-
- -- check if globals initialized
- if isGlobalInitialized == 0 then
- isGlobalInitialized = 1
- -- init
- InitGlobals()
- end
- -- get global prefs
- GetSLIMaxInfo()
-
- local led = ""
-
- -- get rpm
- local rpm = 0
- rpm = GetCarInfo("rpm")
- if rpm == nil then rpm = 0 end
-
- -- get red zone value
- --local redZone = GetCarInfo("redzone")
- --if redZone == nil then redZone = 18000 end
-
- -- get current osp factor
- --local ospFactor = GetContextInfo("ospfactor")
- --if ospFactor == nil then ospFactor = 80 end
-
- -- get current gear
- local gear = 0
- gear = GetCarInfo("gear")
- if gear == nil then gear = 0 end
-
- -- get max gear of current car
- -- Alternate way to calc max gear if not available in API
- -- Use a global mMaxGear and do the following
- -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
-
- maxGear = GetCarInfo("maxgear")
- if maxGear == nil then maxGear = 4 end
-
- -- skip if neutral or ==maxgear
- if gear <=0 or gear>=maxGear then
- -- do nothing
- return 1
- end
-
- -- skip if first gear not allowed
- if not mOSPWithFirstGear and gear == 1 then
- -- do nothing
- return 1
- end
-
- -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
- -- print(rpm .. " - " .. gOSPLimit)
-
- -- rpm > osplimit so activate shiftpoints leds
- if rpm > gOSPLimit then
-
- -- no blinking allowed
- if mNoBlink then
- -- set both leds
- SetOSPFeedback(1)
-
- else
-
- if GetTicks() > mOldOSPTickCount then
- mOSPBlink = mOSPBlink + 1
- end
-
- if mOSPSRDlxMethod <= 3 then
- -- methods 1 to 3
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- if mOSPSRDlxMethod ~= 3 then
- -- if not method 3
- SetOSPFeedback(1)
- end
- if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 7,9 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- SetOSPFeedback(0)
-
- if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 7,9 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 0
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- end
-
- if mOSPSRDlxMethod == 2 then
- -- add blue leds not blinking if method 2
- for i = 7,9 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- else
- -- bypass (give control to manager)
- return 1
- end
- -- timebase
- if GetTicks() > mOldOSPTickCount then
- mOldOSPTickCount = GetTicks() + 10
- end
-
- return 1
-end
-
-
--- ==================================================
--- SIM RACE F1 OSP Methods Event
-
-function ospSRF1MethodEvent(idx)
- mOSPSRF1Method = idx
- -- OSP Limit default value is set in gear.lua
- if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
-
- -- call custom script (this is a good place to overwrite gOSPLimit value)
- local result = custom_ospSRF1MethodEvent(mOSPSRF1Method)
- -- 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 (this is a good place to overwrite gOSPLimit value)
- result = global_custom_ospSRF1MethodEvent(mOSPSRF1Method)
- -- 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
-
- -- check if globals initialized
- if isGlobalInitialized == 0 then
- isGlobalInitialized = 1
- -- init
- InitGlobals()
- end
- -- get global prefs
- GetSLIMaxInfo()
-
- local led = ""
-
- -- get rpm
- local rpm = 0
- rpm = GetCarInfo("rpm")
- if rpm == nil then rpm = 0 end
-
- -- get red zone value
- --local redZone = GetCarInfo("redzone")
- --if redZone == nil then redZone = 18000 end
-
- -- get current osp factor
- --local ospFactor = GetContextInfo("ospfactor")
- --if ospFactor == nil then ospFactor = 80 end
-
- -- get current gear
- local gear = 0
- gear = GetCarInfo("gear")
- if gear == nil then gear = 0 end
-
- -- get max gear of current car
- -- Alternate way to calc max gear if not available in API
- -- Use a global mMaxGear and do the following
- -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
-
- maxGear = GetCarInfo("maxgear")
- if maxGear == nil then maxGear = 4 end
-
- -- skip if neutral or ==maxgear
- if gear <=0 or gear>=maxGear then
- -- do nothing
- return 1
- end
-
- -- skip if first gear not allowed
- if not mOSPWithFirstGear and gear == 1 then
- -- do nothing
- return 1
- end
-
- -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
- -- print(rpm .. " - " .. gOSPLimit)
-
- -- rpm > osplimit so activate shiftpoints leds
- if rpm > gOSPLimit then
-
- -- no blinking allowed
- if mNoBlink then
- -- set both leds
- SetOSPFeedback(1)
-
- else
-
- if GetTicks() > mOldOSPTickCount then
- mOSPBlink = mOSPBlink + 1
- end
-
- if mOSPSRF1Method <= 3 then
- -- methods 1 to 3
- if mOSPBlink >= mOSPBlinkTime then
- mOSPBlink = 0
- end
-
- if mOSPBlink <= (mOSPBlinkTime / 2) then
- if mOSPSRF1Method ~= 3 then
- -- if not method 3
- SetOSPFeedback(1)
- end
- if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 10,14 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
-
- if mOSPBlink > (mOSPBlinkTime / 2) then
- SetOSPFeedback(0)
-
- if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then
- -- add blue leds blinking if method 1 or 3
- for i = 10,14 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 0
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- end
-
- if mOSPSRF1Method == 2 then
- -- add blue leds not blinking if method 2
- for i = 10,14 do
- led = led.format("RPM%d",i)
- mRPMLedTable[led] = 1
- end
- SetRPMLed("mRPMLedTable")
- end
- end
- else
- -- bypass (give control to manager)
- return 1
- end
- -- timebase
- if GetTicks() > mOldOSPTickCount then
- mOldOSPTickCount = GetTicks() + 10
- end
-
- return 1
+-- SLIMax Mgr Lua Script v3.3
+-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
+-- this script builds all Optimal ShiftPoints methods (OSP)
+-- last change by Zappadoc - 2013-10
+
+function SetOSPFeedback(state)
+ if mOSPLED1 > 6 then
+ SetExtLed( (mOSPLED1 - 6), state)
+ else
+ SetWarnLed(mOSPLED1, state)
+ end
+ if mOSPLED2 > 6 then
+ SetExtLed( (mOSPLED2 - 6), state)
+ else
+ SetWarnLed(mOSPLED2, state)
+ end
+end
+
+-- SLI-M, SLI-PRO OSP Methods Event
+function ospMethodEvent(idx)
+ mOSPMethod = idx
+ -- OSP Limit default value is set in gear.lua
+ if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
+
+ -- call custom script (this is a good place to overwrite gOSPLimit value)
+ local result = custom_ospMethodEvent(mOSPMethod)
+ -- 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 (this is a good place to overwrite gOSPLimit value)
+ result = global_custom_ospMethodEvent(mOSPMethod)
+ -- 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
+
+ -- check if globals initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ local led = ""
+
+ -- get rpm
+ local rpm = 0
+ rpm = GetCarInfo("rpm")
+ if rpm == nil then rpm = 0 end
+
+ -- get red zone value
+ --local redZone = GetCarInfo("redzone")
+ --if redZone == nil then redZone = 18000 end
+
+ -- get current osp factor
+ --local ospFactor = GetContextInfo("ospfactor")
+ --if ospFactor == nil then ospFactor = 80 end
+
+ -- get current gear
+ local gear = 0
+ gear = GetCarInfo("gear")
+ if gear == nil then gear = 0 end
+
+ -- get max gear of current car
+ -- Alternate way to calc max gear if not available in API
+ -- Use a global mMaxGear and do the following
+ -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
+
+ maxGear = GetCarInfo("maxgear")
+ if maxGear == nil then maxGear = 4 end
+
+ -- skip if neutral or ==maxgear
+ if gear <=0 or gear>=maxGear then
+ -- do nothing
+ return 1
+ end
+
+ -- skip if first gear not allowed
+ if not mOSPWithFirstGear and gear == 1 then
+ -- do nothing
+ return 1
+ end
+
+ -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
+ -- print(rpm .. " - " .. gOSPLimit)
+
+ -- rpm > osplimit so activate shiftpoints leds
+ if rpm > gOSPLimit then
+
+ -- no blinking allowed
+ if mNoBlink then
+ -- set both leds
+ SetOSPFeedback(1)
+
+ else
+
+ if GetTicks() > mOldOSPTickCount then
+ mOSPBlink = mOSPBlink + 1
+ end
+
+ if mOSPMethod <= 3 then
+ -- methods 1 to 3
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ if mOSPMethod ~= 3 then
+ -- if not method 3
+ SetOSPFeedback(1)
+ end
+ if (mOSPMethod == 1) or (mOSPMethod == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 9,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ SetOSPFeedback(0)
+
+ if (mOSPMethod == 1) or (mOSPMethod == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 9,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ end
+
+ if mOSPMethod == 2 then
+ -- add blue leds not blinking if method 2
+ for i = 9,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ else
+ -- bypass (give control to manager)
+ return 1
+ end
+ -- timebase
+ if GetTicks() > mOldOSPTickCount then
+ mOldOSPTickCount = GetTicks() + 10
+ end
+
+ return 1
+end
+
+
+-- G27 Methods Event
+function ospG27MethodEvent(idx)
+ mOSPG27Method = idx
+ -- OSP Limit default value is set in gear.lua
+ if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
+
+ -- call custom script (this is a good place to overwrite gOSPLimit value)
+ local result = custom_ospG27MethodEvent(mOSPG27Method)
+ -- 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 (this is a good place to overwrite gOSPLimit value)
+ result = global_custom_ospG27MethodEvent(mOSPG27Method)
+ -- 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
+
+ -- check if globals initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ local led = ""
+
+ -- get rpm
+ local rpm = 0
+ rpm = GetCarInfo("rpm")
+ if rpm == nil then rpm = 0 end
+
+ -- get current gear
+ local gear = 0
+ gear = GetCarInfo("gear")
+ if gear == nil then gear = 0 end
+
+ -- get max gear of current car
+ -- Alternate way to calc max gear if not available in API
+ -- Use a global mMaxGear and do the following
+ -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
+
+ maxGear = GetCarInfo("maxgear")
+ if maxGear == nil then maxGear = 4 end
+
+ -- skip if neutral or ==maxgear
+ if gear <=0 or gear>=maxGear then
+ -- do nothing
+ return 1
+ end
+
+ -- print("MAXGear: " .. gear.."/"..maxGear.." OSP: " .. mOSPG27Method .. " rpm: " .. rpm .. " - " .. gOSPLimit .. "\n")
+
+
+ -- skip if first gear not allowed
+ if not mOSPWithFirstGear and gear == 1 then
+ -- do nothing
+ return 1
+ end
+
+
+ -- rpm > osplimit so activate shiftpoints leds
+ if rpm > gOSPLimit then
+
+ mG27Leds = 0
+
+ -- no blinking allowed
+ if mNoBlink then
+ -- set all leds
+ mG27Leds = 0x1F;
+
+ else
+ if GetTicks() > mOldOSPTickCount then
+ mOSPBlink = mOSPBlink + 1
+ end
+
+ if mOSPG27Method <= 1 or mOSPG27Method > 3 then
+ -- methods 1 all blinking
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ mG27Leds = 0x1F;
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ mG27Leds = 0;
+ end
+ elseif mOSPG27Method == 2 then
+ -- methods side blinking
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ mG27Leds = 0x3;
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ mG27Leds = 0;
+ end
+
+ elseif mOSPG27Method == 3 then
+ -- methods 3 center blinking
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ mG27Leds = 0x18;
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ mG27Leds = 0;
+ end
+ end
+ end
+ SetG27Led(mG27Leds)
+ else
+ -- bypass (give control to manager)
+ return 1
+ end
+ -- timebase
+ if GetTicks() > mOldOSPTickCount then
+ mOldOSPTickCount = GetTicks() + 10
+ end
+
+ return 1
+end
+
+-- Fanatec OSP Methods Event
+function ospFanatecMethodEvent(idx)
+ mOSPFanatecMethod = idx
+ -- OSP Limit default value is set in gear.lua
+ if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
+
+ -- call custom script (this is a good place to overwrite gOSPLimit value)
+ local result = custom_ospFanatecMethodEvent(mOSPFanatecMethod)
+ -- 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 (this is a good place to overwrite gOSPLimit value)
+ result = global_custom_ospFanatecMethodEvent(mOSPFanatecMethod)
+ -- 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
+
+ -- check if globals initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ local led = ""
+
+ -- get rpm
+ local rpm = 0
+ rpm = GetCarInfo("rpm")
+ if rpm == nil then rpm = 0 end
+
+ -- get current gear
+ local gear = 0
+ gear = GetCarInfo("gear")
+ if gear == nil then gear = 0 end
+
+ -- get max gear of current car
+ -- Alternate way to calc max gear if not available in API
+ -- Use a global mMaxGear and do the following
+ -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
+
+ maxGear = GetCarInfo("maxgear")
+ if maxGear == nil then maxGear = 4 end
+
+ -- skip if neutral or ==maxgear
+ if gear <=0 or gear>=maxGear then
+ -- do nothing
+ return 1
+ end
+
+ -- skip if first gear not allowed
+ if not mOSPWithFirstGear and gear == 1 then
+ -- do nothing
+ return 1
+ end
+
+ -- rpm > osplimit so activate shiftpoints leds
+ if rpm > gOSPLimit then
+
+ -- no blinking allowed
+ if mNoBlink then
+ -- no led
+ else
+
+ if GetTicks() > mOldOSPTickCount then
+ mOSPBlink = mOSPBlink + 1
+ end
+
+ -- methods 1 to 4
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then
+ -- blue leds blinking if method 0, ON
+ for i = 6,8 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+
+ elseif mOSPFanatecMethod == 1 then
+ -- all leds blinking if method 1, ON
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+
+ elseif mOSPFanatecMethod == 2 then
+ initLedTable(mRPMLedTable, 0)
+ -- side leds blinking if method 2, ON
+ mRPMLedTable["RPM0"] = 1
+ mRPMLedTable["RPM1"] = 1
+ mRPMLedTable["RPM7"] = 1
+ mRPMLedTable["RPM8"] = 1
+
+ elseif mOSPFanatecMethod == 3 then
+ initLedTable(mRPMLedTable, 0)
+ -- center leds blinking if method 3, ON
+ mRPMLedTable["RPM3"] = 1
+ mRPMLedTable["RPM4"] = 1
+ mRPMLedTable["RPM5"] = 1
+
+ elseif mOSPFanatecMethod == 4 then
+ initLedTable(mRPMLedTable, 0)
+ -- side fixed if method 4, ON
+ mRPMLedTable["RPM0"] = 1
+ mRPMLedTable["RPM1"] = 1
+ mRPMLedTable["RPM7"] = 1
+ mRPMLedTable["RPM8"] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then
+ -- blue leds blinking if method 0 , OFF
+ for i = 6,8 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+
+ elseif mOSPFanatecMethod == 1 then
+ -- all leds blinking if method 1, OFF
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+
+ elseif mOSPFanatecMethod == 2 then
+ initLedTable(mRPMLedTable, 0)
+ -- side leds blinking if method 2, OFF
+ mRPMLedTable["RPM0"] = 0
+ mRPMLedTable["RPM1"] = 0
+ mRPMLedTable["RPM7"] = 0
+ mRPMLedTable["RPM8"] = 0
+
+ elseif mOSPFanatecMethod == 3 then
+ initLedTable(mRPMLedTable, 0)
+ -- center leds blinking if method 3, OFF
+ mRPMLedTable["RPM3"] = 0
+ mRPMLedTable["RPM4"] = 0
+ mRPMLedTable["RPM5"] = 0
+
+ elseif mOSPFanatecMethod == 4 then
+ initLedTable(mRPMLedTable, 0)
+ -- side fixed if method 4, ON
+ mRPMLedTable["RPM0"] = 1
+ mRPMLedTable["RPM1"] = 1
+ mRPMLedTable["RPM7"] = 1
+ mRPMLedTable["RPM8"] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+
+ else
+ -- bypass (give control to manager)
+ return 1
+ end
+ -- timebase
+ if GetTicks() > mOldOSPTickCount then
+ mOldOSPTickCount = GetTicks() + 10
+ end
+
+ return 1
+end
+
+-- ==================================================
+-- SIM RACE Deluxe OSP Methods Event
+
+function ospSRDlxMethodEvent(idx)
+ mOSPSRDlxMethod = idx
+ -- OSP Limit default value is set in gear.lua
+ if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
+
+ -- call custom script (this is a good place to overwrite gOSPLimit value)
+ local result = custom_ospSRDlxMethodEvent(mOSPSRDlxMethod)
+ -- 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 (this is a good place to overwrite gOSPLimit value)
+ result = global_custom_ospSRDlxMethodEvent(mOSPSRDlxMethod)
+ -- 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
+
+ -- check if globals initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ local led = ""
+
+ -- get rpm
+ local rpm = 0
+ rpm = GetCarInfo("rpm")
+ if rpm == nil then rpm = 0 end
+
+ -- get red zone value
+ --local redZone = GetCarInfo("redzone")
+ --if redZone == nil then redZone = 18000 end
+
+ -- get current osp factor
+ --local ospFactor = GetContextInfo("ospfactor")
+ --if ospFactor == nil then ospFactor = 80 end
+
+ -- get current gear
+ local gear = 0
+ gear = GetCarInfo("gear")
+ if gear == nil then gear = 0 end
+
+ -- get max gear of current car
+ -- Alternate way to calc max gear if not available in API
+ -- Use a global mMaxGear and do the following
+ -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
+
+ maxGear = GetCarInfo("maxgear")
+ if maxGear == nil then maxGear = 4 end
+
+ -- skip if neutral or ==maxgear
+ if gear <=0 or gear>=maxGear then
+ -- do nothing
+ return 1
+ end
+
+ -- skip if first gear not allowed
+ if not mOSPWithFirstGear and gear == 1 then
+ -- do nothing
+ return 1
+ end
+
+ -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
+ -- print(rpm .. " - " .. gOSPLimit)
+
+ -- rpm > osplimit so activate shiftpoints leds
+ if rpm > gOSPLimit then
+
+ -- no blinking allowed
+ if mNoBlink then
+ -- set both leds
+ SetOSPFeedback(1)
+
+ else
+
+ if GetTicks() > mOldOSPTickCount then
+ mOSPBlink = mOSPBlink + 1
+ end
+
+ if mOSPSRDlxMethod <= 3 then
+ -- methods 1 to 3
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ if mOSPSRDlxMethod ~= 3 then
+ -- if not method 3
+ SetOSPFeedback(1)
+ end
+ if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 7,9 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ SetOSPFeedback(0)
+
+ if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 7,9 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ end
+
+ if mOSPSRDlxMethod == 2 then
+ -- add blue leds not blinking if method 2
+ for i = 7,9 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ else
+ -- bypass (give control to manager)
+ return 1
+ end
+ -- timebase
+ if GetTicks() > mOldOSPTickCount then
+ mOldOSPTickCount = GetTicks() + 10
+ end
+
+ return 1
+end
+
+
+-- ==================================================
+-- SIM RACE F1 OSP Methods Event
+
+function ospSRF1MethodEvent(idx)
+ mOSPSRF1Method = idx
+ -- OSP Limit default value is set in gear.lua
+ if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end
+
+ -- call custom script (this is a good place to overwrite gOSPLimit value)
+ local result = custom_ospSRF1MethodEvent(mOSPSRF1Method)
+ -- 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 (this is a good place to overwrite gOSPLimit value)
+ result = global_custom_ospSRF1MethodEvent(mOSPSRF1Method)
+ -- 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
+
+ -- check if globals initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ local led = ""
+
+ -- get rpm
+ local rpm = 0
+ rpm = GetCarInfo("rpm")
+ if rpm == nil then rpm = 0 end
+
+ -- get red zone value
+ --local redZone = GetCarInfo("redzone")
+ --if redZone == nil then redZone = 18000 end
+
+ -- get current osp factor
+ --local ospFactor = GetContextInfo("ospfactor")
+ --if ospFactor == nil then ospFactor = 80 end
+
+ -- get current gear
+ local gear = 0
+ gear = GetCarInfo("gear")
+ if gear == nil then gear = 0 end
+
+ -- get max gear of current car
+ -- Alternate way to calc max gear if not available in API
+ -- Use a global mMaxGear and do the following
+ -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4
+
+ maxGear = GetCarInfo("maxgear")
+ if maxGear == nil then maxGear = 4 end
+
+ -- skip if neutral or ==maxgear
+ if gear <=0 or gear>=maxGear then
+ -- do nothing
+ return 1
+ end
+
+ -- skip if first gear not allowed
+ if not mOSPWithFirstGear and gear == 1 then
+ -- do nothing
+ return 1
+ end
+
+ -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n")
+ -- print(rpm .. " - " .. gOSPLimit)
+
+ -- rpm > osplimit so activate shiftpoints leds
+ if rpm > gOSPLimit then
+
+ -- no blinking allowed
+ if mNoBlink then
+ -- set both leds
+ SetOSPFeedback(1)
+
+ else
+
+ if GetTicks() > mOldOSPTickCount then
+ mOSPBlink = mOSPBlink + 1
+ end
+
+ if mOSPSRF1Method <= 3 then
+ -- methods 1 to 3
+ if mOSPBlink >= mOSPBlinkTime then
+ mOSPBlink = 0
+ end
+
+ if mOSPBlink <= (mOSPBlinkTime / 2) then
+ if mOSPSRF1Method ~= 3 then
+ -- if not method 3
+ SetOSPFeedback(1)
+ end
+ if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 10,14 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+
+ if mOSPBlink > (mOSPBlinkTime / 2) then
+ SetOSPFeedback(0)
+
+ if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then
+ -- add blue leds blinking if method 1 or 3
+ for i = 10,14 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ end
+
+ if mOSPSRF1Method == 2 then
+ -- add blue leds not blinking if method 2
+ for i = 10,14 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ SetRPMLed("mRPMLedTable")
+ end
+ end
+ else
+ -- bypass (give control to manager)
+ return 1
+ end
+ -- timebase
+ if GetTicks() > mOldOSPTickCount then
+ mOldOSPTickCount = GetTicks() + 10
+ end
+
+ return 1
end \ No newline at end of file