Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
setTickRate(30)
-- Set ShiftX3 configuration parameters with default parameters
-- orientation: 0=normal, 1=inverted (display above LED bar)
-- brightness: 0-100%, 0 = auto brightness
-- can bus: 0=CAN1, 1=CAN2
sxSetConfig(0,0,1)
--config shift light
sxCfgLinearGraph(0,0,0,10000) --left to right graph, smooth style, 0 - 7000 RPM range
sxSetLinearThresh(0,0,0,0,255,0,0) --green
sxSetLinearThresh(1,0,5000,255,255,0,0) --yellow
sxSetLinearThresh(2,0,6000,255,0,0,0) --red
sxSetLinearThresh(3,0,8000,255,255,255,10) --whiteflash
--configure first alert (right LED)
sxSetAlertThresh(1,0,205,255,255,0,0) --yellow warning at 205
sxSetAlertThresh(1,1,225,255,0,0,10) -- red flash at 225
--configure second alert (left LED)
sxSetAlertThresh(0,0,170,255,0,255,10) --purple at 170
sxSetAlertThresh(0,1,280,255,255,0,5) -- yellow at 280
--Create simulated channels and state
--Channel ID, currentValue, increment, min, max
rpmState = {addChannel('SimRPM', 10, 0, 0, 10000), 0, 200, 0, 10000}
etState = {addChannel('SimEngTmp', 10, 0, 0, 300), 0, 2, 0, 300}
oilState = {addChannel('SimOilTmp', 10, 0, 0, 300), 0, 1, 0, 300}
display = 1
function updateSimChannel(state, incDisplay)
local id = state[1]
local currentVal = state[2]
local increment = state[3]
local min = state[4]
local max = state[5]
currentVal = currentVal + increment
-- check min/max and change direction if needed
if currentVal >= max or currentVal <= min then
increment = -increment
if incDisplay == true and currentVal >= max then
display = display + 1
if display > 6 then display = 1 end
sxSetDisplay(0,display)
end
end
--update the virtual channel
setChannel(id, currentVal)
--store updated values in state
state[2] = currentVal
state[3] = increment
end
function onTick()
updateSimChannel(rpmState, true)
updateSimChannel(etState)
updateSimChannel(oilState)
--update RPM
sxUpdateLinearGraph(getChannel("SimRPM"))
--update engine temp alert
sxUpdateAlert(1, getChannel("SimEngTmp"))
--update oil pressure alert
sxUpdateAlert(0, getChannel("SimOilTmp"))
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment