From 9d1de325216b89a6682a639fe235d781b6963d69 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Fri, 15 Nov 2013 12:24:10 +0100 Subject: CLEANUP. --- scripts/osp.lua | 1512 +++++++++++++++++++++++++++---------------------------- 1 file changed, 756 insertions(+), 756 deletions(-) (limited to 'scripts/osp.lua') 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 -- cgit v1.2.3