local appName="IG_Xicoy" local SensorName="Turbine" local sensorsAvailable = {} local IdEGT local IdRPM local IdStatus local IdPUMP local IdBATT local IdFUEL local IdTHRO local function ShowSensorValues(width, height) local sEGT = "---" local sRPM = "---" local sStatus = "" local iStatus = 0 local sPUMP = "---" local sBATT = "---" local sFUEL = "---" local sTHRO = "---" local sensorId local paramId local sensorData --EGT if(IdEGT >= 0) then sensorId = sensorsAvailable[IdEGT].id paramId = sensorsAvailable[IdEGT].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then sEGT = string.format("%d%s", sensorData.value, sensorData.unit) end end --RPM if(IdRPM >= 0) then sensorId = sensorsAvailable[IdRPM].id paramId = sensorsAvailable[IdRPM].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then sRPM = string.format("%d%s", sensorData.value, sensorData.unit) end end --Status if(IdStatus >= 0) then sensorId = sensorsAvailable[IdStatus].id paramId = sensorsAvailable[IdStatus].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then iStatus = sensorData.value sStatus = GetStatusString(iStatus) end end --PUMP if(IdPUMP >= 0) then sensorId = sensorsAvailable[IdPUMP].id paramId = sensorsAvailable[IdPUMP].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then sPUMP = string.format("%.1f%s", sensorData.value, sensorData.unit) end end --BATT if(IdBATT >= 0) then sensorId = sensorsAvailable[IdBATT].id paramId = sensorsAvailable[IdBATT].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then sBATT = string.format("%.1f%s", sensorData.value, sensorData.unit) end end --FUEL if(IdFUEL >= 0) then sensorId = sensorsAvailable[IdFUEL].id paramId = sensorsAvailable[IdFUEL].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then sFUEL = string.format("%d%s", sensorData.value, sensorData.unit) end end --THRO if(IdTHRO >= 0) then sensorId = sensorsAvailable[IdTHRO].id paramId = sensorsAvailable[IdTHRO].param if(sensorId and paramId) then sensorData = system.getSensorByID(sensorId, paramId) end if(sensorData and sensorData.valid) then if(iStatus == 0) then sTHRO = "OFF" else sTHRO = string.format("%d%s", sensorData.value, sensorData.unit) end end end --lcd.drawText(50, 8, width.." x " .. height.. "px") sEGT = "EGT:" .. sEGT --sRPM = "RPM: " .. sRPM --sStatus = "Turbine: " .. sStatus sTHRO = "Thro:" .. sTHRO sBATT = "Batt:" .. sBATT sPUMP = "Pump:" .. sPUMP sFUEL = "Fuel:" .. sFUEL lcd.drawText(0, 0, sEGT) lcd.drawText(width - lcd.getTextWidth(FONT_NORMAL, sRPM) - 1, 0, sRPM) lcd.drawText(0, 15, sStatus) lcd.drawText(width - lcd.getTextWidth(FONT_NORMAL, sTHRO) - 1, 15, sTHRO) lcd.drawText(0, 30, sBATT) lcd.drawText(width - lcd.getTextWidth(FONT_NORMAL, sPUMP) - 1, 30, sPUMP) lcd.drawText(((width - lcd.getTextWidth(FONT_BIG, sFUEL)) / 2) - 1, 45, sFUEL, FONT_BIG) end function GetStatusString(iValue) if iValue == 0 then return "No Status" elseif iValue == 1 then return "TempHigh" elseif iValue == 2 then return "Trim Low" elseif iValue == 3 then return "SetIdle!" elseif iValue == 4 then return "Ready" elseif iValue == 5 then return "Ignition" elseif iValue == 6 then return "FuelRamp" elseif iValue == 7 then return "Glow Test" elseif iValue == 8 then return "Running" elseif iValue == 9 then return "Stop" elseif iValue == 10 then return "FlameOut" elseif iValue == 11 then return "SpeedLow" elseif iValue == 12 then return "Cooling" elseif iValue == 13 then return "Ignitor Bad" elseif iValue == 14 then return "Starter Bad" elseif iValue == 15 then return "Weak Gas" elseif iValue == 16 then return "Start On" elseif iValue == 17 then return "User Off" elseif iValue == 18 then return "Failsafe" elseif iValue == 19 then return "Low RPM" elseif iValue == 20 then return "Reset" elseif iValue == 21 then return "Rx PwFail" elseif iValue == 22 then return "Pre Heat" elseif iValue == 23 then return "Battery!" elseif iValue == 24 then return "Time Out" elseif iValue == 25 then return "Overload" elseif iValue == 26 then return "Ign.Fail" elseif iValue == 27 then return "BurnerOn" elseif iValue == 28 then return "Starting" elseif iValue == 29 then return "SwitchOv" elseif iValue == 30 then return "Cal.Pump" elseif iValue == 31 then return "Pump Limit" elseif iValue == 32 then return "NoEngine" elseif iValue == 33 then return "PwrBoost" elseif iValue == 34 then return "Run-Idle" elseif iValue == 35 then return "Run-Max" elseif iValue == 36 then return "Restart" else return string.format("Value:%d", iValue) end end local function GetSensorIDs() local available = system.getSensors(); local descr = "" sensorsAvailable = {} IdEGT = -1 IdRPM = -1 IdStatus = -1 IdPUMP = -1 IdBATT = -1 IdFUEL = -1 IdTHRO = -1 for index,sensor in ipairs(available) do if(sensor.param == 0) then descr = sensor.label else sensorsAvailable[#sensorsAvailable + 1] = sensor if(descr == SensorName) then if(sensor.label == "EGT") then IdEGT = #sensorsAvailable end if(sensor.label == "Speed") then IdRPM = #sensorsAvailable end if(sensor.label == "Geschwind.") then IdRPM = #sensorsAvailable end if(sensor.label == "Status") then IdStatus = #sensorsAvailable end if(sensor.label == "Pump") then IdPUMP = #sensorsAvailable end if(sensor.label == "Bat.") then IdBATT = #sensorsAvailable end if(sensor.label == "Fuel") then IdFUEL = #sensorsAvailable end if(sensor.label == "Throttle") then IdTHRO = #sensorsAvailable end end end end end local function init() GetSensorIDs() system.registerTelemetry(1, "IG_Xicoy", 2, ShowSensorValues) --registers a double-position-only window --local Test = GetStatusString(30) --print(Test) --system.registerTelemetry(1, "IG user size", 0, printDimensions) --registers a user size window --system.registerTelemetry(1, "IG small window", 1, printDimensions) --registers a single-position-only window --system.registerTelemetry(1, "IG double window", 2, printDimensions) --registers a double-position-only window --system.registerTelemetry(2, "IG Full-1", 3, printDimensions) --registers a full window with model window --system.registerTelemetry(2, "IG Full-2", 4, printDimensions) --registers a full window without model window end -------------------------------------------------------------------------------- return {init=init, author="IG-Modellbau", version="1.2", name=appName}