From 788c33cc80e6ba776509772c1e6bb1146de3e2c4 Mon Sep 17 00:00:00 2001 From: Bailey Date: Sun, 3 Oct 2021 23:00:53 +0900 Subject: [PATCH] added other aircraft luas added as a 1-stop-shop --- Config.lua | 43 + ExportScript.lua | 173 + ExportsModules/A-10A.lua | 1232 + ExportsModules/A-10C.lua | 22000 ++++++++++++++++ ExportsModules/AV8BNA.lua | 1435 + ExportsModules/Bf-109K-4.lua | 334 + ExportsModules/F-14B.lua | 3500 ++- ExportsModules/F-14B_nosaMtrevoC.lua | 1448 + ExportsModules/F-15C.lua | 1408 + ExportsModules/F-5E-3.lua | 717 + ExportsModules/F-86F Sabre.lua | 405 + ExportsModules/FC_AuxiliaryFuntions.lua | 3109 +++ ExportsModules/FW-190D9.lua | 301 + ExportsModules/J-11A.lua | 727 + ExportsModules/Ka-50.lua | 1346 + ExportsModules/L-39C.lua | 852 + ExportsModules/L-39ZA.lua | 852 + ExportsModules/M-2000C.lua | 1325 + ExportsModules/Mi-24P.csv | 844 + ExportsModules/Mi-8MT.lua | 1327 + ExportsModules/MiG-15bis.lua | 375 + ExportsModules/MiG-21Bis.lua | 730 + ExportsModules/MiG-29A.lua | 314 + ExportsModules/MiG-29G.lua | 314 + ExportsModules/MiG-29S.lua | 314 + .../MosquitoFBMkVI calculations.xlsx | Bin 0 -> 100589 bytes ExportsModules/MosquitoFBMkVI.lua | 99 +- ExportsModules/P-51D-30-NA.lua | 331 + ExportsModules/P-51D.lua | 331 + ExportsModules/SA342L.lua | 726 + ExportsModules/SA342M.lua | 743 + ExportsModules/SA342Mistral.lua | 731 + ExportsModules/SpitfireLFMkIXCW.lua | 269 + ExportsModules/Su-25.lua | 488 + ExportsModules/Su-25T.lua | 443 + ExportsModules/Su-27.lua | 727 + ExportsModules/Su-33.lua | 720 + ExportsModules/TF-51D.lua | 310 + ExportsModules/UH-1H.lua | 907 + ExportsModules/_F-14B_Demo.lua | 39 + ExportsModules/_F-14B_nosaMtrevoC.lua | 1357 + ExportsModules/hind calculations.xlsx | Bin 0 -> 26856 bytes lib/Maps.lua | 43 + lib/Tools.lua | 992 + lib/genericRadio.lua | 411 + lib/utf8.lua | 161 + 46 files changed, 53909 insertions(+), 1344 deletions(-) create mode 100644 Config.lua create mode 100644 ExportScript.lua create mode 100644 ExportsModules/A-10A.lua create mode 100644 ExportsModules/A-10C.lua create mode 100644 ExportsModules/AV8BNA.lua create mode 100644 ExportsModules/Bf-109K-4.lua create mode 100644 ExportsModules/F-14B_nosaMtrevoC.lua create mode 100644 ExportsModules/F-15C.lua create mode 100644 ExportsModules/F-5E-3.lua create mode 100644 ExportsModules/F-86F Sabre.lua create mode 100644 ExportsModules/FC_AuxiliaryFuntions.lua create mode 100644 ExportsModules/FW-190D9.lua create mode 100644 ExportsModules/J-11A.lua create mode 100644 ExportsModules/Ka-50.lua create mode 100644 ExportsModules/L-39C.lua create mode 100644 ExportsModules/L-39ZA.lua create mode 100644 ExportsModules/M-2000C.lua create mode 100644 ExportsModules/Mi-24P.csv create mode 100644 ExportsModules/Mi-8MT.lua create mode 100644 ExportsModules/MiG-15bis.lua create mode 100644 ExportsModules/MiG-21Bis.lua create mode 100644 ExportsModules/MiG-29A.lua create mode 100644 ExportsModules/MiG-29G.lua create mode 100644 ExportsModules/MiG-29S.lua create mode 100644 ExportsModules/MosquitoFBMkVI calculations.xlsx create mode 100644 ExportsModules/P-51D-30-NA.lua create mode 100644 ExportsModules/P-51D.lua create mode 100644 ExportsModules/SA342L.lua create mode 100644 ExportsModules/SA342M.lua create mode 100644 ExportsModules/SA342Mistral.lua create mode 100644 ExportsModules/SpitfireLFMkIXCW.lua create mode 100644 ExportsModules/Su-25.lua create mode 100644 ExportsModules/Su-25T.lua create mode 100644 ExportsModules/Su-27.lua create mode 100644 ExportsModules/Su-33.lua create mode 100644 ExportsModules/TF-51D.lua create mode 100644 ExportsModules/UH-1H.lua create mode 100644 ExportsModules/_F-14B_Demo.lua create mode 100644 ExportsModules/_F-14B_nosaMtrevoC.lua create mode 100644 ExportsModules/hind calculations.xlsx create mode 100644 lib/Maps.lua create mode 100644 lib/Tools.lua create mode 100644 lib/genericRadio.lua create mode 100644 lib/utf8.lua diff --git a/Config.lua b/Config.lua new file mode 100644 index 0000000..6755a33 --- /dev/null +++ b/Config.lua @@ -0,0 +1,43 @@ +-- Ikarus and D.A.C. Export Script +-- +-- Config File +-- +-- Copyright by Michael aka McMicha 2014 +-- Contact dcs2arcaze.micha@farbpigmente.org + +ExportScript.Config = {} +ExportScript.Version.Config = "1.2.1" + +-- Ikarus a Glass Cockpit Software +ExportScript.Config.IkarusExport = true -- false for not use +ExportScript.Config.IkarusHost = "127.0.0.1" -- IP for Ikarus +ExportScript.Config.IkarusPort = 1725 -- Port Ikarus (1625) +ExportScript.Config.IkarusSeparator = ":" + +-- D.A.C. (DCS Arcaze Connector) +ExportScript.Config.DACExport = false -- true for use +ExportScript.Config.DAC = {} +-- first hardware +ExportScript.Config.DAC[1] = {} +ExportScript.Config.DAC[1].Host = "127.0.0.1" -- IP for hardware 1 +ExportScript.Config.DAC[1].SendPort = 26026 -- Port for hardware 1 +ExportScript.Config.DAC[1].Separator = ":" +-- secound to n hardware +--ExportScript.Config.DAC[2] = {} +--ExportScript.Config.DAC[2].Host = "127.0.0.1" -- IP for hardware 2 +--ExportScript.Config.DAC[2].SendPort = 9092 -- Port for hardware 2 +--ExportScript.Config.DAC[2].Separator = ":" + +-- Ikarus and D.A.C. can data send +ExportScript.Config.Listener = true -- false for not use +ExportScript.Config.ListenerPort = 26027 -- Listener Port for D.A.C. + +-- Other +ExportScript.Config.ExportInterval = 0.05 -- export evry 0.05 secounds +ExportScript.Config.ExportLowTickInterval = 0.1 -- export evry 0.5 secounds +ExportScript.Config.LogPath = lfs.writedir()..[[Logs\Export.log]] +ExportScript.Config.ExportModulePath = lfs.writedir()..[[Scripts\DCS-ExportScript\ExportsModules\]] +ExportScript.Config.Debug = false +ExportScript.Config.SocketDebug = false +ExportScript.Config.FirstNewDataSend = true +ExportScript.Config.FirstNewDataSendCount = 100 \ No newline at end of file diff --git a/ExportScript.lua b/ExportScript.lua new file mode 100644 index 0000000..8db0f89 --- /dev/null +++ b/ExportScript.lua @@ -0,0 +1,173 @@ +-- Ikarus and D.A.C. Export Script +-- +-- Copyright by Michael aka McMicha 2014 - 2018 +-- Contact dcs2arcaze.micha@farbpigmente.org + + +-- Main Table +ExportScript = {} +ExportScript.Version = {} +ExportScript.Version.ExportScript = "1.2.1" +-- Simulation id +ExportScript.SimID = string.format("%08x*",os.time()) + +-- State data for export +ExportScript.PacketSize = 0 +ExportScript.SendStrings = {} +ExportScript.LastData = {} + +ExportScript.PacketSizeDAC = {} +ExportScript.SendStringsDAC = {} +ExportScript.LastDataDAC = {} + +ExportScript.lastExportTimeHI = 0 +ExportScript.lastExportTimeLI = 0 + +ExportScript.NoLuaExportBeforeNextFrame = false + +local PrevExport = {} +PrevExport.LuaExportStart = LuaExportStart +PrevExport.LuaExportStop = LuaExportStop +PrevExport.LuaExportBeforeNextFrame = LuaExportBeforeNextFrame +PrevExport.LuaExportAfterNextFrame = LuaExportAfterNextFrame + +dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\Config.lua]]) +ExportScript.utf8 = dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\utf8.lua]]) +dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\Tools.lua]]) +dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\genericRadio.lua]]) +dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\Maps.lua]]) + +for i = 1, #ExportScript.Config.DAC, 1 do + ExportScript.PacketSizeDAC[i] = 0 + ExportScript.SendStringsDAC[i] = {} + ExportScript.LastDataDAC[i] = {} +end + +-- Found DCS or FC Module +ExportScript.FoundDCSModule = false +ExportScript.FoundFCModule = false +ExportScript.FoundNoModul = true + +--------------------------------------------- +-- DCS Export API Function Implementations -- +--------------------------------------------- + +function LuaExportStart() +-- Works once just before mission start. +-- (and before player selects their aircraft, if there is a choice!) + + -- 2) Setup udp sockets to talk to GlassCockpit + package.path = package.path..";.\\LuaSocket\\?.lua" + package.cpath = package.cpath..";.\\LuaSocket\\?.dll" + + --local lrename1, lrename2 = os.rename(ExportScript.Config.LogPath, ExportScript.Config.LogPath..".old") + ExportScript.logFile = io.open(ExportScript.Config.LogPath, "wa") -- "W+" + if ExportScript.logFile then + ExportScript.logFile:write('\239\187\191') -- create a UTF-8 BOM + ExportScript.logFile:write("ExportScript Version: "..ExportScript.Version.ExportScript.."\r\n") + end + --if lrenmae1 == nil then + -- ExportScript.Tools.WriteToLog("Rename Error: "..lrename2) + --end + + ExportScript.Tools.createUDPSender() + ExportScript.Tools.createUDPListner() + + ExportScript.AF = {} -- Table for Auxiliary functions + + ExportScript.NoLuaExportBeforeNextFrame = false + ExportScript.Tools.SelectModule() -- point globals to Module functions and data. + + -- Chain previously-included export as necessary + if PrevExport.LuaExportStart then + PrevExport.LuaExportStart() + end +end + +function LuaExportBeforeNextFrame() +--[[ if ExportScript.Config.Debug then + ExportScript.Tools.ProcessInput() + else + ExportScript.coProcessArguments_BeforeNextFrame = coroutine.create(ExportScript.Tools.ProcessInput) + coStatus = coroutine.resume(ExportScript.coProcessArguments_BeforeNextFrame) + end + + if ExportScript.NoLuaExportBeforeNextFrame == false then + ExportScript.Tools.ProcessOutput() + end +]] + -- Chain previously-included export as necessary + if PrevExport.LuaExportBeforeNextFrame then + PrevExport.LuaExportBeforeNextFrame() + end +end + +function LuaExportAfterNextFrame() + if ExportScript.NoLuaExportBeforeNextFrame then + ExportScript.Tools.ProcessOutput() + end + + -- Chain previously-included export as necessary + if PrevExport.LuaExportAfterNextFrame then + PrevExport.LuaExportAfterNextFrame() + end +end + +function LuaExportActivityNextEvent(t) + local tNext = t + +-- Put your event code here and increase tNext for the next event +-- so this function will be called automatically at your custom +-- model times. +-- If tNext == t then the activity will be terminated. + + if ExportScript.Config.Debug then + ExportScript.Tools.ProcessInput() + else + ExportScript.coProcessArguments_BeforeNextFrame = coroutine.create(ExportScript.Tools.ProcessInput) + coStatus = coroutine.resume(ExportScript.coProcessArguments_BeforeNextFrame) + end + + if ExportScript.NoLuaExportBeforeNextFrame == false then + ExportScript.Tools.ProcessOutput() + end + + tNext = tNext + ExportScript.Config.ExportInterval + + return tNext +end + +function LuaExportStop() +-- Works once just after mission stop. + if ExportScript.Config.DACExport then + ExportScript.Tools.SendDataDAC("DAC", "stop") + for i=1, #ExportScript.Config.DAC, 1 do + ExportScript.Tools.FlushDataDAC(i) + end + end + + if ExportScript.Config.IkarusExport then + ExportScript.Tools.SendData("Ikarus", "stop") + ExportScript.Tools.FlushData() + end + + ExportScript.UDPsender:close() + if ExportScript.Config.Listener then + ExportScript.UDPListener:close() + end + + ExportScript.ModuleName = nil + ExportScript.FoundNoModul = false + + if ExportScript.logFile then + ExportScript.Tools.WriteToLog("====== Logfile close ======") + ExportScript.logFile:flush() + ExportScript.logFile:close() + ExportScript.logFile = nil + end + + -- Chain previously-included export as necessary + if PrevExport.LuaExportStop then + PrevExport.LuaExportStop() + end +end \ No newline at end of file diff --git a/ExportsModules/A-10A.lua b/ExportsModules/A-10A.lua new file mode 100644 index 0000000..bdb06cb --- /dev/null +++ b/ExportsModules/A-10A.lua @@ -0,0 +1,1232 @@ +-- A-10A + +ExportScript.FoundFCModule = true +ExportScript.Version.A10A = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / A-10A -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lEngineFuelConsumptionLeft = LoGetEngineInfo().FuelConsumption.left + local lEngineFuelConsumptionRight = LoGetEngineInfo().FuelConsumption.right + local lEngineHydraulicPressureLeft = LoGetEngineInfo().HydraulicPressure.left + local lEngineHydraulicPressureRight = LoGetEngineInfo().HydraulicPressure.right + + --[[ + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- ADI + ExportScript.AF.FC_US_ADI() -- ID 1 to 10 + + -- HSI + ExportScript.AF.FC_US_HSI(lDistanceToWay) -- ID 11 to 23 + + -- VVI + ExportScript.AF.FC_US_VVI() -- ID 24 + + -- G-LOAD + ExportScript.AF.FC_US_GLOAD() -- ID 25 to 27 + + -- Clock + ExportScript.AF.FC_US_Clock() -- ID 28 to 30 + + -- Standby Compass + ExportScript.AF.FC_US_Compass() -- ID 31 to 33 + + -- Standby ADI + ExportScript.AF.FC_US_stbyADI() -- ID 34, 35 + + -- Barometrisic Altimeter + --local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + local lAltCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + --local lAltBarTmp = string.format("%03d", ((lAltBar * 3.28084) / 100)) -- meter to feeds +--ExportScript.Tools.WriteToLog("lAltBar 1: "..ExportScript.Tools.dump(lAltBar)) + --lAltBar = lAltBar + (9.5 * (760 - lBasicAtmospherePressure)) -- 9.5 m per 1mmHg difference , eventuell minus der Differenz + -- bei 5000 feed in Ikarus 5100 feed +--ExportScript.Tools.WriteToLog("lAltBar 2: "..ExportScript.Tools.dump(lAltBar)) + + local lAltBarTmp = ((lAltBar * 3.28084) / 100) -- meter to feeds + lAltBar = lAltBar * 3.28084 -- meter to feeds + lBasicAtmospherePressure = lBasicAtmospherePressure * 3.937023 -- mmHg to inPa (0.03937023 * 100) + lBasicAtmospherePressure = string.format("%04d", lBasicAtmospherePressure) + +--ExportScript.Tools.WriteToLog("lAltBar 3: "..ExportScript.Tools.dump(lAltBar)) + + lAltBar = lAltBar / 1000 + lAltBar = lAltBar - ExportScript.Tools.round(lAltBar, 0, "floor") + + local lAltCounter3 = 0 + local lAltBarTmp2 = string.format("%03d", lAltBarTmp) + + if lAltBarTmp > 10 then + lAltCounter3 = (lAltBarTmp - (ExportScript.Tools.round(lAltBarTmp / 10, 0, "floor") * 10)) * 0.1 + else + lAltCounter3 = lAltBarTmp * 0.1 + end + + -- AltBar {0.0,1.0} + -- AltBar_1000 {0.0,1.0} + -- AltBar_100 {0.0,1.0} + -- AltBar_10 {0.0,1.0} + -- BasicAtmospherePressure_1 {0.0,1.0} + -- BasicAtmospherePressure_10 {0.0,1.0} + -- BasicAtmospherePressure_100 {0.0,1.0} + -- BasicAtmospherePressure_1000 {0.0,1.0} + + ExportScript.Tools.SendData(36, lAltBar) + ExportScript.Tools.SendData(37, lAltCounter[tonumber(string.sub(lAltBarTmp2, 1, 1))]) + ExportScript.Tools.SendData(38, lAltCounter[tonumber(string.sub(lAltBarTmp2, 2, 2))]) + ExportScript.Tools.SendData(39, lAltCounter3) + ExportScript.Tools.SendData(40, lAltCounter[tonumber(string.sub(lBasicAtmospherePressure, 4, 4))]) + ExportScript.Tools.SendData(41, lAltCounter[tonumber(string.sub(lBasicAtmospherePressure, 3, 3))]) + ExportScript.Tools.SendData(42, lAltCounter[tonumber(string.sub(lBasicAtmospherePressure, 2, 2))]) + ExportScript.Tools.SendData(43, lAltCounter[tonumber(string.sub(lBasicAtmospherePressure, 1, 1))]) + -- Barometrisic Altimeter end + + -- Air Speed Indicator (IAS) + lAltBar = LoGetAltitudeAboveSeaLevel() * 3.28084 -- ALTITUDE SEA LEVEL (Meter to Feeds) + lIAS = lIAS * 1.9438444924574 -- INDICATED AIRSPEED (M/S TO KNOTS) + local lIAStmp = lIAS + + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 550.0 -- maximaler Eingangswert + x = 250.0 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 550.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.00181818181818181818181818181818 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.000000000000000000000000000001 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.45454545454545454545454545454645 -- Ergebnis (m * x + n) + ]] + lIAS = 0.00181818181818181818181818181818 * lIAS + 0.000000000000000000000000000001 + + if lIAStmp > 100 then + lIAStmp = lIAStmp - (ExportScript.Tools.round((lIAStmp / 100), 0, "floor") * 100) + end + + lIAStmp = lIAStmp / 100 + --[[ + local lAltBarTmp = ((lAltBar * 3.28084) / 100) -- meter to feeds + lBasicAtmospherePressure = string.format("%04d", lBasicAtmospherePressure) + + local lAltCounter3 = 0 + local lAltBarTmp2 = string.format("%03d", lAltBarTmp) + + if lAltBarTmp > 10 then + lAltCounter3 = (lAltBarTmp - (ExportScript.Tools.round(lAltBarTmp / 10, 0, "floor") * 10)) * 0.1 + else + lAltCounter3 = lAltBarTmp * 0.1 + end]] + + -- IAS {0.0,1.0} + -- IAS Decimals {0.0,1.0} + -- Barometric Altimeter in 1000 Feeds for calculate max Air Speed + -- Barometric Altimeter in 100 Feeds for calculate max Air Speed + -- Barometric Altimeter in 10 Feeds for calculate max Air Speed + + ExportScript.Tools.SendData(44, string.format("%.4f", lIAS)) + ExportScript.Tools.SendData(45, string.format("%.4f", lIAStmp)) + --ExportScript.Tools.SendData(37, lAltCounter[tonumber(string.sub(lAltBarTmp2, 1, 1))]) + --ExportScript.Tools.SendData(38, lAltCounter[tonumber(string.sub(lAltBarTmp2, 2, 2))]) + --ExportScript.Tools.SendData(39, lAltCounter3) + -- Air Speed Indicator End + + -- RPM Engine Left + ExportScript.AF.FC_TwoNeedlesGauge(lEngineRPMleft, 105, 10, 50, 51) + + -- RPM Engine Right + ExportScript.AF.FC_TwoNeedlesGauge(lEngineRPMright, 105, 10, 52, 53) + + -- Oil Pressure Left, no value but similar to Engine RPM + ExportScript.AF.FC_OneNeedleGauge(lEngineRPMleft, 110, 54) + + -- Oil Pressure Right, no value but similar to Engine RPM + ExportScript.AF.FC_OneNeedleGauge(lEngineRPMright, 110, 55) + + -- RPM FAN Left + --[[ + y_min = 0.0 0.11 0.375 0.50 -- minimaler Ausgabewert + y_max = 0.11 0.375 0.50 1.0 -- maximaler Ausgabewert + x_min = 0.0 64.2 91.3 99.7 -- minimaler Eingangswert + x_max = 64.2 91.3 99.7 100.0 -- maximaler Eingangswert + x = 40.0 75.0 85.0 99.9 -- aktueller Eingangswert + + d_y = 0.11 0.265 0.125 0.50 -- Delta Ausgabewerte (y_max - y_min) + d_x = 64.2 27.1 8.4 0.3 -- Delta Eingangswerte (x_max - x_min) + m = 0.001713 0.009779 0.014881 1.666667 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.000254 -0.517823 -0.983636 -165.66667 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.2 0.25795 0.37795 0.8725 -- Ergebnis (m * x + n) + ]] + local lFanRPMleft = 0 + if lEngineRPMleft > 99.7 then + lFanRPMleft = 1.666667 * lEngineRPMleft + -165.66667 -- > 81% + elseif lEngineRPMleft > 91.3 and lEngineRPMleft < 99.7 then + lFanRPMleft = 0.014881 * lEngineRPMleft + -0.983636 -- > 50% + elseif lEngineRPMleft > 64.2 and lEngineRPMleft < 91.3 then + lFanRPMleft = 0.009779 * lEngineRPMleft + -0.517823 -- > 23% + elseif lEngineRPMleft < 64.2 then + lFanRPMleft = 0.001713 * lEngineRPMleft + 0.000254 -- < 23% + end + + ExportScript.AF.FC_OneNeedleGauge(lFanRPMleft, 1, 56) + + -- RPM FAN Right + --[[ + y_min = 0.0 0.11 0.375 0.50 -- minimaler Ausgabewert + y_max = 0.11 0.375 0.50 1.0 -- maximaler Ausgabewert + x_min = 0.0 64.2 91.3 99.7 -- minimaler Eingangswert + x_max = 64.2 91.3 99.7 100.0 -- maximaler Eingangswert + x = 40.0 75.0 85.0 99.9 -- aktueller Eingangswert + + d_y = 0.11 0.265 0.125 0.50 -- Delta Ausgabewerte (y_max - y_min) + d_x = 64.2 27.1 8.4 0.3 -- Delta Eingangswerte (x_max - x_min) + m = 0.001713 0.009779 0.014881 1.666667 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.000254 -0.517823 -0.983636 -165.66667 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.2 0.25795 0.37795 0.8725 -- Ergebnis (m * x + n) + ]] + local lFanRPMright = 0 + if lEngineRPMright > 99.7 then + lFanRPMright = 1.666667 * lEngineRPMright + -165.66667 -- > 81% + elseif lEngineRPMright > 91.3 and lEngineRPMright < 99.7 then + lFanRPMright = 0.014881 * lEngineRPMright + -0.983636 -- > 50% + elseif lEngineRPMright > 64.2 and lEngineRPMright < 91.3 then + lFanRPMright = 0.009779 * lEngineRPMright + -0.517823 -- > 23% + elseif lEngineRPMright < 64.2 then + lFanRPMright = 0.001713 * lEngineRPMright + 0.000254 -- < 23% + end + + ExportScript.AF.FC_OneNeedleGauge(lFanRPMright, 1, 57) + + -- RPM APU, no value + -- Exaust Gas Temperature APU, no value + + -- Exaust Gas Temperature Left + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempLeft, 1200, 100, 58, 59) + --ExportScript.AF.FC_A10A_ExaustGasTemp(lEngineTempLeft, 7) + + -- Exaust Gas Temperature Right + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempRight, 1200, 100, 60, 61) + --ExportScript.AF.FC_A10A_ExaustGasTemp(lEngineTempRight, 8) + + -- Fuel Flow Left + ExportScript.AF.FC_OneNeedleGauge((lEngineFuelConsumptionLeft * 2.2046223302272) * 3600, 5000, 62) + + -- Fuel Flow Right + ExportScript.AF.FC_OneNeedleGauge((lEngineFuelConsumptionRight * 2.2046223302272) * 3600, 5000, 63) + + -- Hydraulic Pressure Left (small gauges over fuel gauge) + ExportScript.AF.FC_OneNeedleGauge(lEngineHydraulicPressureLeft, 100, 64) + + -- Hydraulic Pressure Right (small gauges over fuel gauge) + ExportScript.AF.FC_OneNeedleGauge(lEngineHydraulicPressureRight, 100, 65) + + -- AOA + --ExportScript.AF.FC_US_AOA(16) + --ExportScript.Tools.WriteToLog('lAoA 1: '..ExportScript.Tools.dump(lAoA)) + --local lAoATmp = 0.7728 * math.deg(lAoA) + 12.22 + --ExportScript.Tools.WriteToLog('lAoA 2: '..ExportScript.Tools.dump(lAoATmp)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 30.0 -- maximaler Eingangswert + x = 12.6 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 30.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.03333333333333333333333333333333 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000001 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.4200000000000000000000000000001 -- Ergebnis (m * x + n) + ]] + --lAoATmp = 0.03333333333333333333333333333333 * lAoATmp + 0.0000000000000000000000000000001 + + if lAoA > -2.7 then -- positive AOA + --[[ + y_min = 0.333 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = -2.7 -- minimaler Eingangswert + x_max = 23.0 -- maximaler Eingangswert + x = 10.6 -- aktueller Eingangswert + + d_y = 0.667 -- Delta Ausgabewerte (y_max - y_min) + d_x = 27.7 -- Delta Eingangswerte (x_max - x_min) + m = 0.02407942238267148014440433212996 -- Steigung der linearen Funktion (d_y / d_x) + n = 0,44617328519855595667870036101083 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.615808 -- Ergebnis (m * x + n) + ]] + lAoA = 0.02407942238267148014440433212996 * lAoA + 0.44617328519855595667870036101083 + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.333 -- maximaler Ausgabewert + x_min = -2.7 -- minimaler Eingangswert + x_max = -15.3 -- maximaler Eingangswert + x = -3.6 -- aktueller Eingangswert + + d_y = 0.333 -- Delta Ausgabewerte (y_max - y_min) + d_x = -12.6 -- Delta Eingangswerte (x_max - x_min) + m = -0.02642857142857142857142857142857 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.07135714285714285714285714285714 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.0238 -- Ergebnis 0.333 - (m * x + n) + ]] + lAoA = 0.333 - (-0.02642857142857142857142857142857 * lAoA + -0.07135714285714285714285714285714) + end + + ExportScript.Tools.SendData(66, string.format("%.4f", lAoA)) + ExportScript.Tools.SendData(67, 0) --??ExportID fehlt noch + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + -- UHF Gauges, no value + ExportScript.Tools.SendData(68, "001.00") + + -- Flaps Indicator + -- Gear Lamps + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + + -- Fuel Indicator + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + + lEngineFuelInternal = lEngineFuelInternal * 2.2046223302272 -- kg to lbs + local lFuelNeedle = (lEngineFuelInternal / 2) / 6000 -- 6000 = scala + lEngineFuelInternal = lEngineFuelInternal / 100 -- um unf die ersten drei stellen zukommen + local lEngineFuelInternalTmp = string.format("%03d", lEngineFuelInternal) + + local lFuelCounter3 = 0 + if lEngineFuelInternal > 10 then + lFuelCounter3 = (lEngineFuelInternal - (ExportScript.Tools.round(lEngineFuelInternal / 10, 0, "floor") * 10)) * 0.1 + else + lFuelCounter3 = lEngineFuelInternal * 0.1 + end + + ExportScript.Tools.SendData(300, string.format("%.2f", lCounter[tonumber(string.sub(lEngineFuelInternalTmp, 1, 1))])) + ExportScript.Tools.SendData(301, string.format("%.2f", lCounter[tonumber(string.sub(lEngineFuelInternalTmp, 2, 2))])) + ExportScript.Tools.SendData(302, string.format("%.2f", lFuelCounter3)) + ExportScript.Tools.SendData(303, string.format("%.4f", lFuelNeedle)) + ExportScript.Tools.SendData(304, string.format("%.4f", lFuelNeedle)) + -- Fuel Indicator end + + -- Weapon Panel + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + --[[ + ShellsCounter + Station1 + Station2 + ... + Station11 + + Station Data: + 0.0 = off + 0.1 = E (Empty, yellow E) + 0.2 = 1 (load, white one) + 0.3 = RR (active, two green R and white 1 for load) + ]] + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 6 7 8 9 10 11 + 1 3 5 7 9 11 10 8 6 4 2 -- Weapon Station ID + ]] + ExportScript.AF.TmpWeaponPanelActive = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0} + + for lIndex = 1, 11, 1 do + ExportScript.AF.TmpWeaponPanelActive[lIndex] = (ExportScript.AF.PayloadInfo.Stations[lIndex].count > 0 and 0.2 or 0.1) -- get status, empty or load + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.PayloadInfo.CurrentStation] = 0.3 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStationIkarus_A10A) -- corresponding station + end + + ExportScript.Tools.SendData(100, ExportScript.AF.PayloadInfo.Cannon.shells) + ExportScript.Tools.SendData(101, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[1])) -- Station 1 + ExportScript.Tools.SendData(102, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[3])) -- Station 2 + ExportScript.Tools.SendData(103, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[5])) -- Station 3 + ExportScript.Tools.SendData(104, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[7])) -- Station 4 + ExportScript.Tools.SendData(105, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[9])) -- Station 5 + ExportScript.Tools.SendData(106, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[11])) -- Station 6 + ExportScript.Tools.SendData(107, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[10])) -- Station 7 + ExportScript.Tools.SendData(108, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[8])) -- Station 8 + ExportScript.Tools.SendData(109, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[6])) -- Station 9 + ExportScript.Tools.SendData(110, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[4])) -- Station 10 + ExportScript.Tools.SendData(111, string.format("%0.1f", ExportScript.AF.TmpWeaponPanelActive[2])) -- Station 11 + -- Wepaon Panel end + + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState ~= nil then + ExportScript.Tools.SendData(702, lMCPState.MasterWarning == true and 1 or 0 ) + end + + -- Missle launch / Scan Warning + ExportScript.AF.RWRStatusPanel(lFunctionTyp) + + -- (x < 0 and 'negative' or 'non-negative') + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + -- local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + -- ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.RWRStatusPanel(lFunctionTyp) + ExportScript.AF.SightingSystem() + ExportScript.AF.FuelQuantityIndicator() + ExportScript.AF.StatusLamp() + ExportScript.AF.FlareChaff() + ExportScript.AF.WeaponStatusPanel() + ExportScript.AF.AOAIndicator() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.FuelQuantityIndicator() +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round((((lEngineInfo.fuel_internal + lEngineInfo.fuel_external) * 2.2) / 100), 0, "ceil") * 100) ) -- total fuel in lbs + --ExportScript.Tools.SendDataDAC("301", string.format("%d", lEngineInfo.fuel_internal * 2.2) ) -- internal fuel in lbs + --ExportScript.Tools.SendDataDAC("302", string.format("%d", lEngineInfo.fuel_external * 2.2) ) -- external fuel in lbs + + --[[ + local lPayloadInfo = LoGetPayloadInfo() + if lPayloadInfo == nil then + return + end + ExportScript.Tools.SendDataDAC("303", ((lPayloadInfo.Stations[5].count > 0 and lPayloadInfo.Stations[5].CLSID == "Fuel_Tank_FT600") and 1 or 0) ) -- weapon presend > 0 (panel 5) + ExportScript.Tools.SendDataDAC("304", ((lPayloadInfo.Stations[6].count > 0 and lPayloadInfo.Stations[6].CLSID == "Fuel_Tank_FT600") and 1 or 0) ) -- weapon presend > 0 (panel 6) + ExportScript.Tools.SendDataDAC("305", ((lPayloadInfo.Stations[7].count > 0 and lPayloadInfo.Stations[7].CLSID == "Fuel_Tank_FT600") and 1 or 0) ) -- weapon presend > 0 (panel 7) + ExportScript.Tools.SendDataDAC("307", (lEngineInfo.fuel_internal < 600.0 and 1 or 0) ) -- Bingo Fuel + ]] +end + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine 1 (0|1) + ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine 1 (0|1) + end +end + +function ExportScript.AF.FlareChaff() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "30" + --[flare] = number: "30" + + ExportScript.Tools.SendDataDAC("800", lSnares.chaff ) + ExportScript.Tools.SendDataDAC("801", lSnares.flare ) +end + +function ExportScript.AF.MechanicalDevicesIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog("lMechInfo: "..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + --[[ + [hook] = { + [status] = number: "0" + [value] = number: "0" + } + [parachute] = { + [status] = number: "0" + [value] = number: "0" + } + [controlsurfaces] = { + [eleron] = { + [left] = number: "0" + [right] = number: "-0.21084336936474" + } + [elevator] = { + [left] = number: "-0" + [right] = number: "-0" + } + [rudder] = { + [left] = number: "0" + [right] = number: "0" + } + } + [airintake] = { + [status] = number: "0" + [value] = number: "0" + } + [canopy] = { + [status] = number: "0" + [value] = number: "0" + } + [refuelingboom] = { + [status] = number: "0" + [value] = number: "0" + } + [wing] = { + [status] = number: "0" + [value] = number: "0" + } + [noseflap] = { + [status] = number: "0" + [value] = number: "0" + } + [gear] = { + [value] = number: "0" + [nose] = { + [rod] = number: "0" + } + [main] = { + [left] = { + [rod] = number: "0" + } + [right] = { + [rod] = number: "0" + } + } + [status] = number: "0" + } + [speedbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [wheelbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [flaps] = { + [status] = number: "0" + [value] = number: "0" + }]] + local lGetTrueAirSpeed = LoGetTrueAirSpeed() + if lGetTrueAirSpeed == nil then + lGetTrueAirSpeed = 0 + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0) ) -- right gear + + local lFlapsValue = lMechInfo.flaps.value + lFlapsValue = lFlapsValue / 1.6 + lFlapsValue = (lFlapsValue > 1.0 and 1.0 or lFlapsValue) -- the result is limited to 1.0 + + ExportScript.Tools.SendData(530, string.format("%.4f", lFlapsValue)) + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("501", (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC("502", (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC("503", (lMechInfo.gear.value == 1 and 1 or 0) ) -- right gear + + --ExportScript.Tools.SendDataDAC("510", lMechInfo.speedbrakes.status ) -- speedbreakes on 1 (0|1) + ExportScript.Tools.SendDataDAC("510", (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + --ExportScript.Tools.SendDataDAC("530", lMechInfo.flaps.status ) -- flap switch off 0, 1. position 1, 2. position 2 (0|1|2) + --ExportScript.Tools.SendDataDAC("531", lMechInfo.flaps.value ) -- flap 1. position > 0.25, 2. position > 0.93 (0 - 1) + ExportScript.Tools.SendDataDAC("531", (lMechInfo.flaps.value > 0.25 and 1 or 0) ) -- flap 1. position + ExportScript.Tools.SendDataDAC("532", (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap 2. position + ExportScript.Tools.SendDataDAC("533", ((lMechInfo.flaps.value > 0.93 and lGetTrueAirSpeed > 340) and 1 or 0) ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + end +end + +function ExportScript.AF.RWRStatusPanel(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- RWR Status Panel only + local lTWSInfo = LoGetTWSInfo() + if lTWSInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + --[[ + [Emitters] = { + [1] = { + [Type] = { + [level3] = number: "105" + [level1] = number: "2" + [level4] = number: "46" + [level2] = number: "16" + } + [Azimuth] = number: "1.8300691843033" + [Power] = number: "0.92326503992081" + [ID] = number: "16777472" + [Priority] = number: "230.92445373535" + [SignalType] = string: "lock" + } + [2] = { + [Type] = { + [level3] = number: "101" + [level1] = number: "2" + [level4] = number: "39" + [level2] = number: "16" + } + [Azimuth] = number: "2.6759564876556" + [Power] = number: "0.90609884262085" + [ID] = number: "16777728" + [Priority] = number: "140.90609741211" + [SignalType] = string: "scan" + } + } + [Mode] = number: "0" + ]] + + if ExportScript.AF.EventNumberRWRStatusPanel == nil then + ExportScript.AF.EventNumberRWRStatusPanel = 0 + end + + if(ExportScript.AF.EventNumberRWRStatusPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberRWRStatusPanel = ExportScript.AF.EventNumber + + local lPrimaryThreatTmp = 0 + local lPriorityTmp = 0 + ExportScript.AF.ScanTmp = 0 + ExportScript.AF.MissileTmp = 0 + + if(#lTWSInfo.Emitters > 0) then + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + if(lTWSInfo.Emitters[EmitterIndex].Priority > lPriorityTmp) then + lPrimaryThreatTmp = EmitterIndex + end + if(lTWSInfo.Emitters[EmitterIndex].SignalType == "scan") then + ExportScript.AF.ScanTmp = 1 + elseif(lTWSInfo.Emitters[EmitterIndex].SignalType == "missile_radio_guided") then + ExportScript.AF.MissileTmp = 1 + end + end + else + lPrimaryThreatTmp = 0 + lPriorityTmp = 0 + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("440", ExportScript.AF.MissileTmp) + ExportScript.Tools.SendDataDAC("444", ExportScript.AF.ScanTmp) + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(440, ExportScript.AF.MissileTmp) + ExportScript.Tools.SendData(444, ExportScript.AF.ScanTmp) + end +end + +function ExportScript.AF.AOAIndicator() +-- AOA Indicator only + local lAoA = LoGetAngleOfAttack() + if lAoA == nil then + return + end + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Gear + if lMechInfo == nil then + return + end + + if lMechInfo.gear.status == 1 then + local lAOAUnits = (lAoA * 57.3) * 0.7728 + 12.22 + --ExportScript.Tools.WriteToLog('lAoA: '..ExportScript.Tools.dump(lAoA)) + --ExportScript.Tools.WriteToLog('lAOAUnits: '..ExportScript.Tools.dump(lAOAUnits)) + ExportScript.Tools.SendDataDAC("900", (lAOAUnits > 21.0 and 1 or 0) ) + ExportScript.Tools.SendDataDAC("901", ((lAOAUnits > 18.0 and lAOAUnits < 22.0) and 1 or 0) ) + ExportScript.Tools.SendDataDAC("902", (lAOAUnits < 19.0 and 1 or 0) ) + else -- AOA Index Lamps off + ExportScript.Tools.SendDataDAC("900", 0 ) + ExportScript.Tools.SendDataDAC("901", 0 ) + ExportScript.Tools.SendDataDAC("902", 0 ) + end +end + +function ExportScript.AF.WeaponStatusPanel() +-- The weapon status panel, quantity and readiness of the currently selected weapon and the remaining gun ammunition are indicated. + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('ExportScript.AF.PayloadInfo: '..ExportScript.Tools.dump(ExportScript.AF.PayloadInfo)) + --[[ exsample + [Stations] = { + [1] = { + [CLSID] = string: "{6D21ECEA-F85B-4E8D-9D51-31DC9B8AA4EF}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "45" + [level1] = number: "4" + [level4] = number: "25" + [level2] = number: "15" + } + } + [2] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "117" + [level2] = number: "7" + } + [count] = number: "7" + [CLSID] = string: "{69926055-0DA8-4530-9F2F-C86B157EA9F6}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "33" + [level1] = number: "4" + [level4] = number: "147" + [level2] = number: "7" + } + } + [3] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "135" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "LAU_88_AGM_65H_2_L" + [adapter] = { + [level3] = number: "47" + [level1] = number: "4" + [level4] = number: "4" + [level2] = number: "15" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "8" + [level1] = number: "4" + [level4] = number: "138" + [level2] = number: "4" + } + } + [4] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "114" + [level2] = number: "5" + } + [count] = number: "3" + [CLSID] = string: "BRU-42_3*BDU-33" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "9" + [level1] = number: "4" + [level4] = number: "69" + [level2] = number: "5" + } + } + [5] = { + [CLSID] = string: "{5335D97A-35A5-4643-9D9B-026C75961E52}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "38" + [level1] = number: "4" + [level4] = number: "35" + [level2] = number: "5" + } + } + [6] = { + [CLSID] = string: "Fuel_Tank_FT600" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "43" + [level1] = number: "1" + [level4] = number: "103" + [level2] = number: "3" + } + } + [7] = { + [CLSID] = string: "{5335D97A-35A5-4643-9D9B-026C75961E52}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "38" + [level1] = number: "4" + [level4] = number: "35" + [level2] = number: "5" + } + } + [8] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "114" + [level2] = number: "5" + } + [count] = number: "3" + [CLSID] = string: "BRU-42_3*BDU-33" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "9" + [level1] = number: "4" + [level4] = number: "69" + [level2] = number: "5" + } + } + [9] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "106" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "{E6A6262A-CA08-4B3D-B030-E1A993B98453}" + [adapter] = { + [level3] = number: "47" + [level1] = number: "4" + [level4] = number: "4" + [level2] = number: "15" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "8" + [level1] = number: "4" + [level4] = number: "77" + [level2] = number: "4" + } + } + [10] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "117" + [level2] = number: "7" + } + [count] = number: "7" + [CLSID] = string: "{69926055-0DA8-4530-9F2F-C86B157EA9F6}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "33" + [level1] = number: "4" + [level4] = number: "147" + [level2] = number: "7" + } + } + [11] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "50" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "7" + [level1] = number: "4" + [level4] = number: "22" + [level2] = number: "4" + } + } + } + [CurrentStation] = number: "0" + [Cannon] = { + [shells] = number: "1150" + } + ]] + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 6 7 8 9 10 11 + 1 3 5 7 9 11 10 8 6 4 2 -- Weapon Station ID + ]] + -- Payload Info + -- weapon stations (panel) 1 (left) - 11 (right) reserved + ExportScript.Tools.SendDataDAC("100", ExportScript.AF.PayloadInfo.Cannon.shells ) -- count cannon shells + ExportScript.Tools.SendDataDAC("101", (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 1) + ExportScript.Tools.SendDataDAC("102", (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 2) + ExportScript.Tools.SendDataDAC("103", (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 3) + ExportScript.Tools.SendDataDAC("104", (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 4) + ExportScript.Tools.SendDataDAC("105", (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 5) + ExportScript.Tools.SendDataDAC("106", (ExportScript.AF.PayloadInfo.Stations[11].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 6, center station) + ExportScript.Tools.SendDataDAC("107", (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 7) + ExportScript.Tools.SendDataDAC("108", (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 8) + ExportScript.Tools.SendDataDAC("109", (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 9) + ExportScript.Tools.SendDataDAC("110", (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 10) + ExportScript.Tools.SendDataDAC("111", (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 11) + -- weapon stations (panel) 1 (left) - 11 (right) empty + ExportScript.Tools.SendDataDAC("121", (ExportScript.AF.PayloadInfo.Stations[1].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 1) + ExportScript.Tools.SendDataDAC("122", (ExportScript.AF.PayloadInfo.Stations[3].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 2) + ExportScript.Tools.SendDataDAC("123", (ExportScript.AF.PayloadInfo.Stations[5].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 3) + ExportScript.Tools.SendDataDAC("124", (ExportScript.AF.PayloadInfo.Stations[7].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 4) + ExportScript.Tools.SendDataDAC("125", (ExportScript.AF.PayloadInfo.Stations[9].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 5) + ExportScript.Tools.SendDataDAC("126", (ExportScript.AF.PayloadInfo.Stations[11].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 6, center station) + ExportScript.Tools.SendDataDAC("127", (ExportScript.AF.PayloadInfo.Stations[10].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 7) + ExportScript.Tools.SendDataDAC("128", (ExportScript.AF.PayloadInfo.Stations[8].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 8) + ExportScript.Tools.SendDataDAC("129", (ExportScript.AF.PayloadInfo.Stations[6].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 9) + ExportScript.Tools.SendDataDAC("130", (ExportScript.AF.PayloadInfo.Stations[4].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 10) + ExportScript.Tools.SendDataDAC("131", (ExportScript.AF.PayloadInfo.Stations[2].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 11) + --ExportScript.Tools.SendDataDAC("CurrentStation", ExportScript.AF.PayloadInfo.CurrentStation ) + -- air-to-air missils panel 1 and 11, air combat modus, CurrentStation = 1, panel 1 and 11 on + -- wenn die Waffenstationen gleichmässig belegt sind, hat bei Auswahl CurrentStation immer den Wert der linken Station + -- bei ungleichmäßiger Belegung, hat CurrentStation immer den Wert der jeweiligen Station + -- Waffenbezeichnung als UUID, ExportScript.AF.PayloadInfo.Stations[X].CLSID + + -- defination + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201, CurrentID2 = 221 } -- left + ExportScript.AF.TmpStationToPanel[3] = {Panel = 2, StationID = 102, CurrentID = 202, CurrentID2 = 222 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 3, StationID = 103, CurrentID = 203, CurrentID2 = 223 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 4, StationID = 104, CurrentID = 204, CurrentID2 = 224 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 5, StationID = 105, CurrentID = 205, CurrentID2 = 225 } + ExportScript.AF.TmpStationToPanel[11] = {Panel = 6, StationID = 106, CurrentID = 206, CurrentID2 = 226 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 7, StationID = 107, CurrentID = 207, CurrentID2 = 227 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 8, StationID = 108, CurrentID = 208, CurrentID2 = 228 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 9, StationID = 109, CurrentID = 209, CurrentID2 = 229 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 10, StationID = 110, CurrentID = 210, CurrentID2 = 230 } + ExportScript.AF.TmpStationToPanel[2] = {Panel = 11, StationID = 111, CurrentID = 211, CurrentID2 = 231 } -- right + + ExportScript.AF.WeaponStatusPanel_Reset(201, 211) + ExportScript.AF.WeaponStatusPanel_Reset(221, 231) + + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID, 1) -- eigentliche Auswahl + --ExportScript.Tools.WriteToLog('aktiv: '..ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].container then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].count > 1 then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID2, 1) -- eigentliche Auswahl + --ExportScript.Tools.WriteToLog('aktiv2: '..ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID2) + end + end + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation_A10A) -- zugehörige Stationen + elseif ExportScript.AF.PayloadInfo.CurrentStation == 0 and ExportScript.AF.CurrentStationTmp > 0 then + ExportScript.AF.WeaponStatusPanel_Reset(201, 211) + ExportScript.AF.WeaponStatusPanel_Reset(221, 231) + ExportScript.AF.CurrentStationTmp = -1 + end +end + +-- Helper functions + +function ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation_A10A(_index) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].CLSID == ExportScript.AF.PayloadInfo.Stations[_index].CLSID and ExportScript.AF.PayloadInfo.CurrentStation ~= _index then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[_index].CurrentID, 1) + --ExportScript.Tools.WriteToLog('aktiv3: '..ExportScript.AF.TmpStationToPanel[_index].CurrentID) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].container then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].count > 1 then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[_index].CurrentID2, 1) + --ExportScript.Tools.WriteToLog('aktiv3: '..ExportScript.AF.TmpStationToPanel[_index].CurrentID2) + end + end + end +end + +function ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStationIkarus_A10A(_index) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].CLSID == ExportScript.AF.PayloadInfo.Stations[_index].CLSID and ExportScript.AF.PayloadInfo.CurrentStation ~= _index then + ExportScript.AF.TmpWeaponPanelActive[_index] = 0.3 + end +end diff --git a/ExportsModules/A-10C.lua b/ExportsModules/A-10C.lua new file mode 100644 index 0000000..46e68e3 --- /dev/null +++ b/ExportsModules/A-10C.lua @@ -0,0 +1,22000 @@ +-- A-10C + +ExportScript.FoundDCSModule = true +ExportScript.Version.A10C = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- AOA Gauges + [4] = "%.4f", -- AOA + [55] = "%0.1f", -- AOA Power Flag + -- VVI + [12] = "%.4f", -- Variometer (VVI) {-1.0, -0.5, -0.29, 0.29, 0.5, 1.0} {-6000, -2000, -1000, 1000, 2000, 6000} + -- APU + [13] = "%.4f", -- APU RPM + [14] = "%.4f", -- APU Temperature + [15] = "%.4f", -- Accelerometer_main + -- ADI + [17] = "%.4f", -- ADI Pitch + [18] = "%.4f", -- ADI Bank + [19] = "%0.1f", -- ADI Course Warning Flag + [20] = "%.4f", -- ADI Bank Steering Bar + [21] = "%.4f", -- ADI Pitch Steering Bar + [23] = "%.4f", -- ADI Turn Needle + [24] = "%.4f", -- ADI Slip Ball + [25] = "%0.1f", -- ADI Attitude Warning Flag + [26] = "%0.1f", -- ADI Glide-Slope Warning Flag + [27] = "%.4f", -- ADI Glide-Slope Indicator + -- HSI + [28] = "%0.4f", -- HSI_range_counter_1000 + [29] = "%0.4f", -- HSI_range_counter_100 + [30] = "%0.4f", -- HSI_range_counter_10 + [31] = "%0.4f", -- HSI_range_counter_1 + [32] = "%0.1f", -- HSI Range Flag + [33] = "%.4f", -- HSI Bearing #1 + [34] = "%.4f", -- HSI Heading + [35] = "%.4f", -- HSI Bearing #2 + [36] = "%.4f", -- HSI Heading Marker + [40] = "%0.1f", -- HSI Power Flag + [41] = "%.4f", -- HSI Deviation + [46] = "%0.1f", -- HSI Bearing Flag + [47] = "%.4f", -- HSI Course Arrow + -- Airspeed + [48] = "%.4f", -- Airspeed Needle + [49] = "%.4f", -- Airspeed Dial + -- Altimeter + [51] = "%.4f", -- Altimeter_100_footPtr + [52] = "%.4f", -- Altimeter_10000_footCount + [53] = "%.4f", -- Altimeter_1000_footCount + [54] = "%.4f", -- Altimeter_100_footCount + [59] = "%.4f", -- pressure_setting_0 + [58] = "%.4f", -- pressure_setting_1 + [57] = "%.4f", -- pressure_setting_2 + [56] = "%.4f", -- pressure_setting_3 + [61] = "%.1f", -- AAU34_PNEU_flag + -- Stby Attitude Indicator + [63] = "%.4f", -- Standby Attitude Indicator pitch + [64] = "%.4f", -- Standby Attitude Indicator bank + [65] = "%0.1f", -- Standby Attitude Indicator warning flag + [715] = "%.4f", -- Standby Attitude Indicator manual pitch adjustment + [717] = "%.4f", -- Standby Attitude Indicator knob arrow + -- Engine Gauges + [70] = "%.4f", -- Left Engine Temperature + [71] = "%.4f", -- Left Engine TemperatureUnits + [73] = "%.4f", -- Right Engine Temperature + [74] = "%.4f", -- Right Engine TemperatureUnits + [76] = "%.4f", -- EngineLeftFanSpeed + [77] = "%.4f", -- EngineRightFanSpeed + [78] = "%.4f", -- EngineLeftCoreSpeedTenth + [79] = "%.4f", -- EngineLeftCoreSpeedUnits + [80] = "%.4f", -- EngineRightCoreSpeedTenth + [81] = "%.4f", -- EngineRightCoreSpeedUnits + [82] = "%.4f", -- Left Engine Oil Pressure + [83] = "%.4f", -- Right Engine Oil Pressure + [84] = "%.4f", -- EngineLeftFuelFlow + [85] = "%.4f", -- EngineRightFuelFlow + -- Fuel Gauges + [88] = "%.4f", -- Fuel Indicator, FuelQuantityLeft + [89] = "%.4f", -- Fuel Indicator, FuelQuantityRight + [90] = "%.4f", -- FuelQuantityCounterTenthOfThous + [91] = "%.4f", -- FuelQuantityCounterThousands + [92] = "%.4f", -- FuelQuantityCounterHundreds + [129] = "%1d", -- PTR-LCP-EAC (EAC On/Off) + -- Misc lamps + [178] = "%.f", -- L_AILERON_EMER_DISENGAGE + [179] = "%.f", -- R_AILERON_EMER_DISENGAGE + [181] = "%.f", -- L_ELEVATOR_EMER_DISENGAGE + [182] = "%.f", -- R_ELEVATOR_EMER_DISENGAGE + -- STABILITY AUGMENTATION SYSTEM PANEL + [185] = "%1d", -- PTR-SASP-YAW-SASENGAGE-L (Yaw SAS Engage left) + [186] = "%1d", -- PTR-SASP-YAW-SASENGAGE-R (Yaw SAS Engage right) + [187] = "%1d", -- PTR-SASP-PITCH-SASENGAGE-L (Pitch SAS Engage left) + [188] = "%1d", -- PTR-SASP-PITCH-SASENGAGE-R (Pitch SAS Engage right) + -- Misc lamps + [191] = "%.f", -- TAKE_OFF_TRIM + [215] = "%.f", -- L_ENG_FIRE + [216] = "%.f", -- APU_FIRE + [217] = "%.f", -- R_ENG_FIRE + [260] = "%.f", -- TACAN_test_light {0.0, 1.0} + -- + [269] = "%.4f", -- HARS_sync {-1.0, 1.0} + [274] = "%.4f", -- OxygenVolume {0.0, 1.0} + [281] = "%.4f", -- CabinPressAlt {0.0, 1.0} + -- Light System Control Panel + [289] = "%1d", -- PTR-LGHTCP-ANTICOLLISION (Anticollision Lights) + -- CMSC lamps + [372] = "%.f", -- CMSC_MissileLaunchIndicator {0.0, 1.0} + [373] = "%.f", -- CMSC_PriorityStatusIndicator {0.0, 1.0} + [374] = "%.f", -- CMSC_UnknownStatusIndicator {0.0, 1.0} + -- Master Warning Lamp UFCP + [404] = "%.f", -- MASTER_WARNING_STUB MASTER WARNING + -- Caution Panel LAMPS + [480] = "%.f", -- ENG_START_CYCLE + [481] = "%.f", -- L_HYD_PRESS + [482] = "%.f", -- R_HYD_PRESS + [483] = "%.f", -- GUN_UNSAFE + [484] = "%.f", -- ANTISKID + [485] = "%.f", -- L_HYD_RES + [486] = "%.f", -- R_HYD_RES + [487] = "%.f", -- OXY_LOW + [488] = "%.f", -- ELEV_DISENG + [489] = "%.f", -- VOID1 + [490] = "%.f", -- SEAT_NOT_ARMED + [491] = "%.f", -- BLEED_AIR_LEAK + [492] = "%.f", -- AIL_DISENG + [493] = "%.f", -- L_AIL_TAB + [494] = "%.f", -- R_AIL_TAB + [495] = "%.f", -- SERVICE_AIR_HOT + [496] = "%.f", -- PITCH_SAS + [497] = "%.f", -- L_ENG_HOT + [498] = "%.f", -- R_ENG_HOT + [499] = "%.f", -- WINDSHIELD_HOT + [500] = "%.f", -- YAW_SAS + [501] = "%.f", -- L_ENG_OIL_PRESS + [502] = "%.f", -- R_ENG_OIL_PRESS + [503] = "%.f", -- CICU + [504] = "%.f", -- GCAS + [505] = "%.f", -- L_MAIN_PUMP + [506] = "%.f", -- R_MAIN_PUMP + [507] = "%.f", -- VOID2 + [508] = "%.f", -- LASTE + [509] = "%.f", -- L_WING_PUMP + [510] = "%.f", -- R_WING_PUMP + [511] = "%.f", -- HARS + [512] = "%.f", -- IFF_MODE_4 + [513] = "%.f", -- L_MAIN_FUEL_LOW + [514] = "%.f", -- R_MAIN_FUEL_LOW + [515] = "%.f", -- L_R_TKS_UNEQUAL + [516] = "%.f", -- EAC + [517] = "%.f", -- L_FUEL_PRESS + [518] = "%.f", -- R_FUEL_PRESS + [519] = "%.f", -- NAV + [520] = "%.f", -- STALL_SYS + [521] = "%.f", -- L_CONV + [522] = "%.f", -- R_CONV + [523] = "%.f", -- CADC + [524] = "%.f", -- APU_GEN + [525] = "%.f", -- L_GEN + [526] = "%.f", -- R_GEN + [527] = "%.f", -- INST_INV + -- Angle of attack indicator + [540] = "%0.1f", -- AOA_INDEXER_HIGH + [541] = "%0.4f", -- AOA_INDEXER_NORM + [542] = "%0.1f", -- AOA_INDEXER_LOW + -- Misc Data + [600] = "%0.1f", -- BreathFlow {0.0, 1.0} + [604] = "%.4f", -- OxygenPress {0.0, 0.5, 1.0} + -- NMSP Panel lamps + [606] = "%.f", -- HARS + [608] = "%.f", -- EGI + [610] = "%.f", -- TISL + [612] = "%.f", -- STRPT + [614] = "%.f", -- ANCHR + [616] = "%.f", -- TCN + [618] = "%.f", -- ILS + [619] = "%.f", -- UHF + [620] = "%.f", -- FM + -- Hydraulic Pressure + [647] = "%.4f", -- HydraulicPressureLeft {0.0,1.0} + [648] = "%.4f", -- HydraulicPressureRight {0.0,1.0} + -- Flap Indicator + [653] = "%.4f", -- FlapPositionIndicator {0,20} {0,2/3,1} + -- Landing Gear Lamps + [659] = "%.f", -- GEAR_N_SAFE + [660] = "%.f", -- GEAR_L_SAFE + [661] = "%.f", -- GEAR_R_SAFE + -- Misc lamps + [662] = "%.f", -- GUN_READY + [663] = "%.f", -- NOSEWHEEL_STEERING + [664] = "%.f", -- MARKER_BEACON + [665] = "%.f", -- CANOPY_UNLOCKED + [730] = "%.f", -- AIR_REFUEL_READY + [731] = "%.f", -- AIR_REFUEL_LATCHED + [732] = "%.f", -- AIR_REFUEL_DISCONNECT + [737] = "%.f", -- HANDLE_GEAR_WARNING + -- IFF Panel lamps + [798] = "%.f", -- IFF_reply_lamp {0, 1} + [799] = "%.f", -- IFF_test_lamp {0, 1} + -- + [902] = "%.4f", -- Accelerometer_min + [903] = "%.4f", -- Accelerometer_max + -- Standby Compass + [6] = "%.4f", -- heading + [720] = "%.4f", -- pitch + [721] = "%.4f", -- bank +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + --Attitude Direction Indicator + [22] = "%.4f", -- ADI Pitch Trim Knob {-.05,0.5} in 01. steps + --Horizontal Situation Indicator + [45] = "%.4f", -- HSI Heading Set Knob + [44] = "%.4f", -- HSI Course Set Knob + --Standby Attitude Indicator + [67] = "%1df", -- SAI Cage Standby Attitude Indicator. Hold Right Mouse Button and rotate Scroll Wheel to uncage + [66] = "%.4f", -- SAI Cage Standby Attitude Indicator. Hold Right Mouse Button and rotate Scroll Wheel to uncage + -- Digital Clock + [68] = "%1d", -- Clock Toggle Clock and Elapsed Time Modes + [69] = "%1d", -- Clock Start, Stop and Reset Elapsed Timer + -- Emergency Jettison Button + [101] = "%.1f", -- PTR-EXT-STORES-JETT (mergency Jettison External Stores) + -- Fire Extinguishers Panel + [102] = "%1d", -- PTR-FIRE-LENG-PULL (Left Engine Fire T-Handle) + [103] = "%1d", -- PTR-FIRE-APU-PULL (APU Fire T-Handle) + [104] = "%1d", -- PTR-FIRE-RENG-PULL (Right Engine Fire T-Handle) + [105] = "%1d", -- PTR-FIRE-EXTING-DISCH (Fire Extinguishing Agent Discharge) + -- Fuel System Control Panel + [106] = "%1d", -- PTR-FSCP-EXT-TANKS-WING (External Wing Tanks Boost Pumps) + [107] = "%1d", -- PTR-FSCP-EXT-TANKS-FUS (External Fuselage Tank Boost Pump) + [108] = "%1d", -- PTR-FSCP-TK-GATE (Tank Gate) + [109] = "%1d", -- PTR-FSCP-CROSS-FEED (Cross Feed) + [110] = "%1d", -- PTR-FSCP-BOOST-PUMPS-WING-L (Boost Pumps Left Wing) + [111] = "%1d", -- PTR-FSCP-BOOST-PUMPS-WING-R (Boost Pumps Right Wing) + [112] = "%1d", -- PTR-FSCP-BOOST-PUMPS-MAIN-L (Boost Pumps Main Fuselage Left) + [113] = "%1d", -- PTR-FSCP-BOOST-PUMPS-MAIN-R (Boost Pumps Main Fuselage Right) + [114] = "%1d", -- PTR-FSCP-SIG-AMPL (Signal Amplifier Norm/Override) + [115] = "%.1f", -- PTR-FSCP-LINE-CHECK (Line Check) + [116] = "%.3f", -- PTR-FSCP-RCVR-LT (Refueling Lighting Dial) + [117] = "%1d", -- PTR-FSCP-FILLDISABLE-WING-L (Fill Disable Wing Left) + [118] = "%1d", -- PTR-FSCP-FILLDISABLE-WING-R (Fill Disable Wing Right) + [119] = "%1d", -- PTR-FSCP-FILLDISABLE-MAIN-L (Fill Disable Main Left) + [120] = "%1d", -- PTR-FSCP-FILLDISABLE-MAIN-R (Fill Disable Main Right) + [121] = "%1d", -- PTR-FSCP-RCVR-LEVER (Aerial Refueling Slipway Control Lever) + -- Engine System and Throttle panel + [122] = "%1d", -- PTR-FUEL-FLOW-L (Left Engine Fuel Flow Control) + [123] = "%1d", -- PTR-FUEL-FLOW-R (Right Engine Fuel Flow Control) + [124] = "%1d", -- PTR-ENGINE-OPER-L (Engine Operate Left) + [125] = "%1d", -- PTR-ENGINE-OPER-R (Engine Operate Right) + [126] = "%1d", -- PTR-APU-START (APU On/Off) + [128] = "%.1f", -- PTR-THROTTLE-FRICTION (Throttle Friction Control) + [652] = "%1d", -- PTR-TEMS-DATA (TEMS DATA) + -- LASTE Control Panel + [130] = "%1d", -- PTR-LCP-RDRALTM (Radar Altimeter Normal/Disabled) + [131] = "%.1f", -- PTR-LCP-AUTOPILOT-ENGAGE (Autopilot Engage/Disengage) + [132] = "%1d", -- PTR-LCP-AUTOPILOT-PATH-ALT (Autopilot Mode Select Switch) + -- ANARC186-VHF_AM + -- AM Radio + [133] = "%.3f", -- PTR-ANARC186-VHFAM-VOLUME (Volume) + [134] = "%1d", -- PTR-ANARC186-VHFAM-SQUELCH (Squelch / TONE) + [135] = "%0.1f", -- PTR-ANARC186-VHFAM-FREQEMER-CONTROL (Frequency Selection Dial) + [136] = "%.1f", -- PTR-ANARC186-VHFAM-LOAD (Load) + [137] = "%0.3f", -- PTR-ANARC186-VHFAM-PRESET (Preset Channel Selector) + [138] = "%0.1f", -- PTR-ANARC186-VHFAM-MODE (Frequency Mode Dial) + [139] = "%0.2f", -- PTR-ANARC186-VHFAM-FREQ-1 (Frequency Selector the 1nd) + [140] = "%0.2f", -- PTR-ANARC186-VHFAM-FREQ-2 (Frequency Selector the 2nd) + [141] = "%0.2f", -- PTR-ANARC186-VHFAM-FREQ-3 (Frequency Selector the 3nd) + [142] = "%0.2f", -- PTR-ANARC186-VHFAM-FREQ-4 (Frequency Selector the 4nd) + -- FM Radio + [147] = "%.3f", -- PTR-ANARC186-VHFFM-VOLUME (Volume) + [148] = "%1d", -- PTR-ANARC186-VHFFM-SQUELCH (Squelch / TONE) + [149] = "%0.1f", -- PTR-ANARC186-VHFFM-FREQEMER-CONTROL (Frequency Selection Dial) + [150] = "%.1f", -- PTR-ANARC186-VHFFM-LOAD (Load) + [151] = "%0.3f", -- PTR-ANARC186-VHFFM-PRESET (Preset Channel Selector) + [152] = "%0.1f", -- PTR-ANARC186-VHFFM-MODE (Frequency Mode Dial) + [153] = "%0.2f", -- PTR-ANARC186-VHFFM-FREQ-1 (Frequency Selector the 1nd) + [154] = "%0.2f", -- PTR-ANARC186-VHFFM-FREQ-2 (Frequency Selector the 2nd) + [155] = "%0.2f", -- PTR-ANARC186-VHFFM-FREQ-3 (Frequency Selector the 3nd) + [156] = "%0.2f", -- PTR-ANARC186-VHFFM-FREQ-4 (Frequency Selector the 4nd) + -- ANARC164 + -- UHF Raido + [161] = "%0.2f", -- PTR-ANARC164-CHANNEL-SELECTOR (Preset Channel Selector) + [162] = "%0.1f", -- PTR-ANARC164-100MHZ-SELECTOR (100 MHz Selector) + [163] = "%0.2f", -- PTR-ANARC164-10MHZ-SELECTOR (10 MHz Selector) + [164] = "%0.2f", -- PTR-ANARC164-1MHZ-SELECTOR (1 MHz Selector) + [165] = "%0.2f", -- PTR-ANARC164-0.1MHZ-SELECTOR (0.1 MHz Selector) + [166] = "%0.2f", -- PTR-ANARC164-0.025MHZ-SELECTOR (0.025 MHz Selector) + [167] = "%0.1f", -- PTR-ANARC164-FREQMODE (Frequency Mode Dial) + [168] = "%0.1f", -- PTR-ANARC164-FUNCTION (Function Dial) + [169] = "%1d", -- PTR-ANARC164-T-TONE (T-Tone) + [170] = "%1d", -- PTR-ANARC164-SQUELCH (Squelch) + [171] = "%.3f", -- PTR-ANARC164-VOLUME (Volume) + [172] = "%.1f", -- PTR-ANARC164-TEST-DISPLAY (Test Display) + [173] = "%.1f", -- PTR-ANARC164-STATUS (Status) + [734] = "%1d", -- PTR-ANARC164-COVER + [735] = "%.1f", -- PTR-ANARC164-LOAD (Load button) + -- Emergency Flight Control Panel + [174] = "%1d", -- PTR-EFCP-SPDBK-EMER-RETR (Speed Brake Emergency Retract) + [175] = "%1d", -- Speed Brake Emergency Retract (Pitch/Roll Trim Norm/Emergency Override) + [176] = "%0.1f", -- PTR-EFCP-TRIM (Trim Emergency ...) + [177] = "%1d", -- PTR-EFCP-AILERON-EMER-DISENGAGE (Aileron Emergency Disengage) + [180] = "%1d", -- PTR-EFCP-ELEVATOR-EMER-DISENGAGE (Elevator Emergency Disengage) + [183] = "%1d", -- PTR-EFCP-FLAP-EMER-RETR (Flaps Emergency Retract) + [184] = "%1d", -- PTR-EFCP-MRFCS (Manual Reversion Flight Control System (MRFCS)) + -- STABILITY AUGMENTATION SYSTEM PANEL + [189] = "%1d", -- PTR-SASP-MONITOR-TEST (Monitor Test Left/Right) + [190] = "%.1f", -- PTR-SASP-TO-TRIM (Set Takeoff Trim) + [192] = "%.3f", -- PTR-SASP-YAW-TRIM (Yaw Trim) + -- Light System Control Panel + [193] = "%.3f", -- PTR-ALCP-RSIL (Refuel Status Indexer Lights) + [194] = "%0.1f", -- PTR-ALCP-NVIS-LTS (Nightvision Lights) + [195] = "%.3f", -- PTR-ALCP-WPNSTA (Weapon Station Lights. No function) + [196] = "%1d", -- PTR-ALCP-HARSSAS (HARS-SAS Override/NORM) + -- ALCP + [197] = "%.1f", -- "PTR-ALCP-SIGLIGHTS-LAMP-TEST (Test Cockpit Indication Lights) + -- Light System Control Panel + [198] = "%.1f", -- PTR-ALCP-FDBAL-TEST (Fire Detect Bleed Air Test) + -- IFF + [199] = "%0.1f", -- PTR-IFFCP-CODE (Code) + [200] = "%0.1f", -- PTR-IFFCP-MASTER (Master) + [201] = "%1d", -- PTR-IFFCP-OUT-AUDIO-LIGHT (Audio/light) + [202] = "%1d", -- PTR-IFFCP-TEST-M-1 (Test M-1) + [203] = "%1d", -- PTR-IFFCP-TEST-M-2 (Test M-2) + [204] = "%1d", -- PTR-IFFCP-TEST-M-3A (Test M-3A) + [205] = "%1d", -- PTR-IFFCP-TEST-M-C (Test M-C) + [206] = "%1d", -- PTR-IFFCP-RADTEST (RAD Test/Mon) + [207] = "%1d", -- PTR-IFFCP-MIC-IDENT (Ident/Mic) + [208] = "%1d", -- PTR-IFFCP-ON-OUT (IFF On/Out) + [209] = "%0.2f", -- PTR-IFFCP-MODE1-WHEEL1 (MODE1-WHEEL1) + [210] = "%0.2f", -- PTR-IFFCP-MODE1-WHEEL2 (MODE1-WHEEL2) + [211] = "%0.2f", -- PTR-IFFCP-MODE3A-WHEEL1 (MODE3A-WHEEL1) + [212] = "%0.2f", -- PTR-IFFCP-MODE3A-WHEEL2 (MODE3A-WHEEL2) + [213] = "%0.2f", -- PTR-IFFCP-MODE3A-WHEEL3 (MODE3A-WHEEL3) + [214] = "%0.2f", -- PTR-IFFCP-MODE3A-WHEEL4 (MODE3A-WHEEL4) + -- Inercom Panel + [221] = "%.3f", -- PTR-INTERCOM-INT (INT Switch) + [222] = "%1d", -- PTR-INTERCOM-INT (INT Switch) + [223] = "%.3f", -- PTR-INTERCOM-FM (FM Switch) + [224] = "%1d", -- PTR-INTERCOM-FM (FM Switch) + [225] = "%.3f", -- PTR-INTERCOM-VHF (VHF Switch) + [226] = "%1d", -- PTR-INTERCOM-VHF (VHF Switch) + [227] = "%.3f", -- PTR-INTERCOM-UHF (UHF Switch) + [228] = "%1d", -- PTR-INTERCOM-UHF (UHF Switch) + [229] = "%.3f", -- PTR-INTERCOM-AIM (AIM Switch) + [230] = "%1d", -- PTR-INTERCOM-AIM (AIM Switch) + [231] = "%.3f", -- PTR-INTERCOM-IFF (IFF Switch) + [232] = "%1d", -- PTR-INTERCOM-IFF (IFF Switch) + [233] = "%.3f", -- PTR-INTERCOM-ILS (ILS Switch) + [234] = "%1d", -- PTR-INTERCOM-ILS (ILS Switch) + [235] = "%.3f", -- PTR-INTERCOM-TCN (TCN Switch) + [236] = "%1d", -- PTR-INTERCOM-TCN (TCN Switch) + [237] = "%1d", -- PTR-INTERCOM-HM (HM Switch) + [238] = "%.3f", -- PTR-INTERCOM-VOL (Intercom volume) + [239] = "%0.1f", -- PTR-INTERCOM-MODE (Selector switch) + [240] = "%.1f", -- PTR-INTERCOM-CALL (Call button) + -- Electrical Power Panel + [241] = "%1d", -- PTR-EPP-APU-GEN-PWR (APU Generator On/Off) + [242] = "%1d", -- PTR-EPP-INVERTER (Inverter Switch) + [243] = "%1d", -- PTR-EPP-EMER-FLOOD (Emergency Flood Light) + [244] = "%1d", -- PTR-EPP-AC-GEN-PWR-L (Left AC Generator Power) + [245] = "%1d", -- PTR-EPP-AC-GEN-PWR-R (Right AC Generator Power) + [246] = "%1d", -- PTR-EPP-BATTERY-PWR (Battery Power) + -- ILS + [247] = "%1d", -- PTR-ILSCP-PWR Power + [248] = "%0.1f", -- PTR-ILSCP-PWR ILS Frequency MHz + [249] = "%.3f", -- PTR-ILSCP-VOL ILS Frequency kHz + [250] = "%0.1f", -- PTR-ILSCP-VOL Volume + [251] = "%0.1f", -- ILS_window_wheel_MHz + [252] = "%0.1f", -- ILS_window_wheel_KHz + -- TACAN + [256] = "%.1f", -- Channel Selector (Tens). Rotate mouse wheel to select (Axis) {0.0,1.0} in 0.1 steps + [257] = "%0.2f", -- Channel Selector (Ones) / X/Y Mode. Rotate mouse wheel to make channel selection (Axis) {0.0,1.0} in 0.1 steps + [258] = "%1d", -- Channel Selector (Ones) / X/Y Mode. Right mouse click to select X/Y. + [259] = "%.1f", -- PTR-TACAN-TEST (Test TACAN Signal on HSI) + [261] = "%.3f", -- PTR-TACAN-VOL (Signal Volume) (Axis) {0.0,1.0} in 0.1 steps + [262] = "%0.1f", -- PTR-TACAN-MODE (Mode Dial) {0.0,0.1,0.2,0.3,0.4} + [263] = "%.1f", -- TACAN_digit_pos.hundreds + [264] = "%.1f", -- TACAN_digit_pos.tens + [265] = "%.1f", -- TACAN_digit_pos.ones + --[266] = "%1d", -- XYwheel + -- HARS + [267] = "%.1f", -- PTR-HARS-CP-PUSH-TO-SYNC (HARS Push-To-Sync) + [268] = "%.3f", -- PTR-HARS-CP-PUSH-TO-SYNC (HARS Push-To-Sync) + [270] = "%1d", -- PTR-HARS-CP-SLAVE (HARS SLAVE-DG mode) + [271] = "%.3f", -- PTR-HARS-CP-LATITUDE (HARS Latitude Dial) + [272] = "%1d", -- PTR-HARS-CP-MAG-VAR (HARS MAG VAR) + [273] = "%1d", -- PTR-HARS-CP-N-S (HARS N/S toggle switch) + [711] = "%.1f", -- PTR-HARS-FAST-ERECT (HARS Fast Erect) + -- Environment Control Panel + [275] = "%.1f", -- PTR-ENVCP-OXY-TEST (Oxygen Indicator Test) + [276] = "%1d", -- PTR-ENVCP-WINDSHIELD-DEFOG (Windshield Defog/Deice) + [277] = "%.3f", -- PTR-ENVCP-CANOPY-DEFOG (Canopy Defog) + [278] = "%1d", -- PTR-ENVCP-WINDSHIELD-RREMOVE-WASH (Windshield Rain Removal/Wash) + [279] = "%1d", -- PTR-ENVCP-PITOT-HEAT (Pitot Heater) + [280] = "%1d", -- PTR-ENVCP-BLEED-AIR (Bleed Air) + [282] = "%1d", -- PTR-ENVCP-TEMP-PRESS (Temperature/Pressure Control) + [283] = "%1d", -- PTR-ENVCP-MAIN-AIR-SUPPLY (Main Air Supply) + [284] = "%.3f", -- PTR-ENVCP-FLOW-LEVEL (Flow Level Control) + -- Light System Control Panel + [287] = "%1d", -- PTR-LGHTCP-POSITION (Position Lights, FLASH/OFF/STEADY) + [288] = "%.3f", -- PTR-LGHTCP-FORMATION (Formation Lights) + [290] = "%.3f", -- PTR-LGHTCP-ENG-INST (Engine Instruments Lights) + [291] = "%1d", -- PTR-LGHTCP-NOSE-ILLUM (Nose Illumination) + [292] = "%.3f", -- PTR-LGHTCP-FLIGHT-INST (Flight Instruments Lights) + [293] = "%.3f", -- PTR-LGHTCP-AUX-INST (Auxiliary Instruments Lights) + [294] = "%1d", -- PTR-LGHTCP-SIGNAL-LTS (Signal Lights) + [295] = "%1d", -- PTR-LGHTCP-ACCEL-COMP (Accelerometer & Compass Lights) + [296] = "%.3f", -- PTR-LGHTCP-FLOOD (Flood Light) + [297] = "%.3f", -- PTR-LGHTCP-CONSOLE (Console Light) + -- Left MFCDI + [300] = "%.1f", -- PNT-BTN-MFD-L-01 (OSB 1) + [301] = "%.1f", -- PNT-BTN-MFD-L-02 (OSB 2) + [302] = "%.1f", -- PNT-BTN-MFD-L-03 (OSB 3) + [303] = "%.1f", -- PNT-BTN-MFD-L-04 (OSB 4) + [304] = "%.1f", -- PNT-BTN-MFD-L-05 (OSB 5) + [305] = "%.1f", -- PNT-BTN-MFD-L-06 (OSB 6) + [306] = "%.1f", -- PNT-BTN-MFD-L-07 (OSB 7) + [307] = "%.1f", -- PNT-BTN-MFD-L-08 (OSB 8) + [308] = "%.1f", -- PNT-BTN-MFD-L-09 (OSB 9) + [309] = "%.1f", -- PNT-BTN-MFD-L-10 (OSB 10) + [310] = "%.1f", -- PNT-BTN-MFD-L-11 (OSB 11) + [311] = "%.1f", -- PNT-BTN-MFD-L-12 (OSB 12) + [312] = "%.1f", -- PNT-BTN-MFD-L-13 (OSB 13) + [313] = "%.1f", -- PNT-BTN-MFD-L-14 (OSB 14) + [314] = "%.1f", -- PNT-BTN-MFD-L-15 (OSB 15) + [315] = "%.1f", -- PNT-BTN-MFD-L-16 (OSB 16) + [316] = "%.1f", -- PNT-BTN-MFD-L-17 (OSB 17) + [317] = "%.1f", -- PNT-BTN-MFD-L-18 (OSB 18) + [318] = "%.1f", -- PNT-BTN-MFD-L-19 (OSB 19) + [319] = "%.1f", -- PNT-BTN-MFD-L-20 (OSB 20) + [320] = "%1d", -- PNT-MFCD-L-ADJ-UP/DN (Moving Map Scale Adjust Increase/Decrease) + [321] = "%1d", -- PNT-MFCD-L-DSP-UP/DN (Decrease/Increase Backlight Brightness) + [322] = "%1d", -- PNT-MFD-L-BRT-UP/DN (Decrease/Increase Brightness) + [323] = "%1d", -- PNT-MFD-L-CON-UP/DN (Decrease/Increase Contrast) + [324] = "%1d", -- PNT-MFD-L-SYM-UP/DN (Decrease/Increase Symbol Levels) + [325] = "%0.1f", -- PNT-LVR-MFD-L (DAY/NIGHT/OFF) + -- Right MFCDI + [326] = "%.1f", -- PNT-BTN-MFD-R-01 (OSB 1) + [327] = "%.1f", -- PNT-BTN-MFD-R-02 (OSB 2) + [328] = "%.1f", -- PNT-BTN-MFD-R-03 (OSB 3) + [329] = "%.1f", -- PNT-BTN-MFD-R-04 (OSB 4) + [330] = "%.1f", -- PNT-BTN-MFD-R-05 (OSB 5) + [331] = "%.1f", -- PNT-BTN-MFD-R-06 (OSB 6) + [332] = "%.1f", -- PNT-BTN-MFD-R-07 (OSB 7) + [333] = "%.1f", -- PNT-BTN-MFD-R-08 (OSB 8) + [334] = "%.1f", -- PNT-BTN-MFD-R-09 (OSB 9) + [335] = "%.1f", -- PNT-BTN-MFD-R-10 (OSB 10) + [336] = "%.1f", -- PNT-BTN-MFD-R-11 (OSB 11) + [337] = "%.1f", -- PNT-BTN-MFD-R-12 (OSB 12) + [338] = "%.1f", -- PNT-BTN-MFD-R-13 (OSB 13) + [339] = "%.1f", -- PNT-BTN-MFD-R-14 (OSB 14) + [340] = "%.1f", -- PNT-BTN-MFD-R-15 (OSB 15) + [341] = "%.1f", -- PNT-BTN-MFD-R-16 (OSB 16) + [342] = "%.1f", -- PNT-BTN-MFD-R-17 (OSB 17) + [343] = "%.1f", -- PNT-BTN-MFD-R-18 (OSB 18) + [344] = "%.1f", -- PNT-BTN-MFD-R-19 (OSB 19) + [345] = "%.1f", -- PNT-BTN-MFD-R-20 (OSB 20) + [346] = "%1d", -- PNT-MFCD-R-ADJ-UP/DN (Moving Map Scale Adjust Increase/Decrease) + [347] = "%1d", -- PNT-MFCD-R-DSP-UP/DN (Decrease/Increase Backlight Brightness) + [348] = "%1d", -- PNT-MFD-R-BRT-UP/DN (Decrease/Increase Brightness) + [349] = "%1d", -- PNT-MFD-R-CON-UP/DN (Decrease/Increase Contrast) + [350] = "%1d", -- PNT-MFD-R-SYM-UP/DN (Decrease/Increase Symbol Levels) + [351] = "%0.1f", -- PNT-LVR-MFD-R (DAY/NIGHT/OFF) + -- CMSP + [352] = "%.1f", -- PNT-BTN-CMSP-ARW1 (Edit Program Value) + [353] = "%.1f", -- PNT-BTN-CMSP-ARW2 (Edit Program Value) + [354] = "%.1f", -- PNT-BTN-CMSP-ARW3 (Edit Program Value) + [355] = "%.1f", -- PNT-BTN-CMSP-ARW4 (Edit Program Value) + [356] = "%1d", -- PNT-BTN-CMSP-BRT-UP/DN (Cycle Program or Value Up/Down) + [357] = "%.1f", -- PNT-BTN-CMSP-RTN (Save and Return Program) + [358] = "%1d", -- PNT-TMB-CMSP-JTSN (Jettison Countermeasures) + [359] = "%.3f", -- PNT-LEV-CMSP-BRT (Adjust Display Brightness) + [360] = "%0.1f", -- PNT-TMB-CMSP-MWS (Missile Warning System (MWS). Left mouse - ON/OFF, Right mouse - MENU (No Function)) + [361] = "%0.1f", -- PNT-TMB-CMSP-JMR (Electronic Countermeasure Jammer (JMR). Left mouse - ON/OFF, Right mouse - MENU (No Function)) + [362] = "%0.1f", -- PNT-TMB-CMSP-RWR (Radar Warning Receiver (RWR). Left mouse - ON/OFF, Right mouse - MENU) + [363] = "%0.1f", -- PNT-TMB-CMSP-DISP (Countermeasure Dispenser (DISP). Left mouse - ON/OFF, Right mouse - MENU) + [364] = "%0.1f", -- PNT-LEV-CMSP-MODE (Master CMS Mode Select) + -- CMSC + [365] = "%.1f", -- PNT-BTN-RWR-JMR (Select Jammer Program) + [366] = "%.1f", -- PNT-BTN-RWR-MWS (Cycle Missile Warning System Programs. No function) + [367] = "%.3f", -- PNT-LEV-RWR-BRT (Adjust Display Brightness) + [368] = "%.3f", -- PNT-LEV-RWR-AUD (Adjust RWR Volume) + [369] = "%.1f", -- PNT-BTN-RWR-PRI (Toggle between 5 and 16 Priority Threats Displayed) + [370] = "%.1f", -- PNT-BTN-RWR-SEP (Separate RWR Symbols) + [371] = "%.1f", -- PNT-BTN-RWR-UNK (Display Unknown Threats) + -- AHCP + [375] = "%0.1f", -- PNT-TMB-AHCP-MARM (Master Arm) + [376] = "%0.1f", -- PNT-TMB-AHCP-GUNPAC (Gun Arm Mode) + [377] = "%0.1f", -- PNT-TMB-AHCP-LARM (Laser Arm) + [378] = "%1d", -- PNT-TMB-AHCP-TGP (Targeting Pod Power On/Off) + [379] = "%0.1f", -- PNT-TMB-AHCP-ALT (Altimeter Source) + [380] = "%1d", -- PNT-TMB-AHCP-TIME (Day/Night HUD Mode) + [381] = "%1d", -- PNT-TMB-AHCP-NORM (NORM/Standby HUD Mode) + [382] = "%1d", -- PNT-TMB-AHCP-CICU (Turn On/Off CICU) + [383] = "%1d", -- PNT-TMB-AHCP-JTRS (JTRS Datalink On/Off) + [384] = "%0.1f", -- PNT-TMB-AHCP-IFFCC (Turn On/Off/Test IFFCC) + -- UFC + [385] = "%.1f", -- PNT-BTN-UFC-1 + [386] = "%.1f", -- PNT-BTN-UFC-2 + [387] = "%.1f", -- PNT-BTN-UFC-3 + [388] = "%.1f", -- PNT-BTN-UFC-4 + [389] = "%.1f", -- PNT-BTN-UFC-5 + [390] = "%.1f", -- PNT-BTN-UFC-6 + [391] = "%.1f", -- PNT-BTN-UFC-7 + [392] = "%.1f", -- PNT-BTN-UFC-8 + [393] = "%.1f", -- PNT-BTN-UFC-9 + [394] = "%.1f", -- PNT-BTN-UFC-HACK (Display Hack Time) + [395] = "%.1f", -- PNT-BTN-UFC-0 + [396] = "%.1f", -- PNT-BTN-UFC-SPC (Space) + [397] = "%.1f", -- PNT-BTN-UFC-FUNC (Select Function Mode) + [398] = "%.1f", -- PNT-BTN-UFC-LTR (Select Letter Mode) + [399] = "%.1f", -- PNT-BTN-UFC-CLR (Clear) + [400] = "%.1f", -- PNT-BTN-UFC-ENT (Enter) + [401] = "%.1f", -- PNT-BTN-UFC-MK (Create Overhead Mark Point) + [402] = "%.1f", -- PNT-BTN-UFC-ALT (Display and Adjust Altitude Alert Values) + [405] = "%1d", -- PNT-BTN-UFC-STEER-UP/DN (Cycle Steerpoint/Waypoint) + [406] = "%1d", -- PNT-BTN-UFC-DATA-UP/DN + [407] = "%1d", -- PNT-BTN-UFC-SEL-UP/DN + [408] = "%1d", -- PNT-BTN-UFC-DEPR-UP/DN (Adjust Depressible Pipper) + [409] = "%1d", -- PNT-BTN-UFC-INTEN-RGT/LFT (Adjust HUD Brightness (Hold rocker)) + -- SYS_CONTROLLER + [403] = "%.1f", -- PNT-BTN-UFC-MASTWARN (Master Caution Light) + -- CDU + [410] = "%.1f", -- PNT-BTN-CDU-ARW-L1 (LSK 3L) + [411] = "%.1f", -- PNT-BTN-CDU-ARW-L2 (LSK 5L) + [412] = "%.1f", -- PNT-BTN-CDU-ARW-L3 (LSK 7L) + [413] = "%.1f", -- PNT-BTN-CDU-ARW-L4 (LSK 9L) + [414] = "%.1f", -- PNT-BTN-CDU-ARW-R1 (LSK 3R) + [415] = "%.1f", -- PNT-BTN-CDU-ARW-R2 (LSK 5R) + [416] = "%.1f", -- PNT-BTN-CDU-ARW-R3 (LSK 7R) + [417] = "%.1f", -- PNT-BTN-CDU-ARW-R4 (LSK 9R) + [418] = "%.1f", -- PNT-BTN-CDU-SYS (Display System (SYS) Page) + [419] = "%.1f", -- PNT-BTN-CDU-NAV (Display Navigation (NAV) Page) + [420] = "%.1f", -- PNT-BTN-CDU-WP (Display Waypoint Menu (WP MENU) Page) + [421] = "%.1f", -- PNT-BTN-CDU-OSET (Display Offset (OFFSET) Page) + [422] = "%.1f", -- PNT-BTN-CDU-FPM (Display Flight Plan Menu (FPMENU) Page) + [423] = "%.1f", -- PNT-BTN-CDU-PREV (Go to previous page) + [424] = "%1d", -- PNT-BTN-CDU-DIMBRT-L/R (Display Brightness Adjustment (Not Functional)) + [425] = "%.1f", -- PNT-BTN-CDU-1 + [426] = "%.1f", -- PNT-BTN-CDU-2 + [427] = "%.1f", -- PNT-BTN-CDU-3 + [428] = "%.1f", -- PNT-BTN-CDU-4 + [429] = "%.1f", -- PNT-BTN-CDU-5 + [430] = "%.1f", -- PNT-BTN-CDU-6 + [431] = "%.1f", -- PNT-BTN-CDU-7 + [432] = "%.1f", -- PNT-BTN-CDU-8 + [433] = "%.1f", -- PNT-BTN-CDU-9 + [434] = "%.1f", -- PNT-BTN-CDU-0 + [435] = "%.1f", -- PNT-BTN-CDU-PNT + [436] = "%.1f", -- PNT-BTN-CDU-SLASH + [437] = "%.1f", -- PNT-BTN-CDU-A + [438] = "%.1f", -- PNT-BTN-CDU-B + [439] = "%.1f", -- PNT-BTN-CDU-C + [440] = "%.1f", -- PNT-BTN-CDU-D + [441] = "%.1f", -- PNT-BTN-CDU-E + [442] = "%.1f", -- PNT-BTN-CDU-F + [443] = "%.1f", -- PNT-BTN-CDU-G + [444] = "%.1f", -- PNT-BTN-CDU-H + [445] = "%.1f", -- PNT-BTN-CDU-I + [446] = "%.1f", -- PNT-BTN-CDU-J + [447] = "%.1f", -- PNT-BTN-CDU-K + [448] = "%.1f", -- PNT-BTN-CDU-L + [449] = "%.1f", -- PNT-BTN-CDU-M + [450] = "%.1f", -- PNT-BTN-CDU-N + [451] = "%.1f", -- PNT-BTN-CDU-O + [452] = "%.1f", -- PNT-BTN-CDU-P + [453] = "%.1f", -- PNT-BTN-CDU-Q + [454] = "%.1f", -- PNT-BTN-CDU-R + [455] = "%.1f", -- PNT-BTN-CDU-S + [456] = "%.1f", -- PNT-BTN-CDU-T + [457] = "%.1f", -- PNT-BTN-CDU-U + [458] = "%.1f", -- PNT-BTN-CDU-V + [459] = "%.1f", -- PNT-BTN-CDU-W + [460] = "%.1f", -- PNT-BTN-CDU-X + [461] = "%.1f", -- PNT-BTN-CDU-Y + [462] = "%.1f", -- PNT-BTN-CDU-Z + [463] = "%1d", -- PNT-BTN-CDU-PG-UP/DN (Page Up/Down To Additional Pages When Available) + [466] = "%.1f", -- PNT-BTN-CDU-MK (Create Overhead Mark Point) + [467] = "%.1f", -- PNT-BTN-CDU-BCK (Erase Single Character. Hold for repeated erase) + [468] = "%.1f", -- PNT-BTN-CDU-SPC (Insert Space Into Scratchpad) + [469] = "%1d", -- PNT-BTN-CDU-BLANC-L/R (Scroll Waypoint Names During Search) + [470] = "%.1f", -- PNT-BTN-CDU-CLR (Erase Entire Scratchpad) + [471] = "%.1f", -- PNT-BTN-CDU-FA (Fault Acknowledge/Clear Fault Display) + [472] = "%1d", -- PNT-BTN-CDU-PLUS (Increment/Decrement Data Indicated With +/- Symbol) + -- AAP + [473] = "%0.1f", -- PNT-LVR-STEER-PT-SEL-SWITCH (Use Steerpoint From Active Flight Plan) + [474] = "%1d", -- PNT-TMB-STEER-SPRING-LD-SWITCH (Toggle Steerpoint) + [475] = "%0.1f", -- PNT-LEV-PAGE-SEL-SWITCH (CDU Page Select) + [476] = "%1d", -- PTR-TMB-CDU-SWITCH (CDU Power On/Off) + [477] = "%1d", -- PTR-TMB-EGI-SWITCH (EGI Power On/Off) + -- UFC + [531] = "%.1f", -- PNT-BTN-UFC-FWD + [532] = "%.1f", -- PNT-BTN-UFC-MID + [533] = "%.1f", -- PNT-BTN-UFC-AFT + -- Oxygen System Control Panel + [601] = "%1d", -- PTR-OXYGENCP-EMERGENCY (Oxygen Flow Emergency/Normal/Test Mask) + [602] = "%1d", -- PTR-OXYGENCP-OXYGEN-DILUTER (Oxygen Normal/100%) + [603] = "%1d", -- PTR-OXYGENCP-SUPPLY (Oxygen Supply On/Off) + -- Navigation Mode Select Panel + [605] = "%.1f", -- PTR-NMSP-HARS (HARS Backup Navigation Mode) + [607] = "%.1f", -- PTR-NMSP-EGI (EGI Navigation Mode) + [609] = "%.1f", -- PTR-NMSP-TISL (TISL No Function) + [611] = "%.1f", -- PTR-NMSP-STARTPT (STEERPT Mode) + [613] = "%.1f", -- PTR-NMSP-ANCHR (ANCHR Mode) + [615] = "%.1f", -- PTR-NMSP-TCN (TCN Mode) + [617] = "%.1f", -- PTR-NMSP-ILS (ILS Mode) + [621] = "%1d", -- PTR-NMSP-ABLE-STOW (ABLE-STOW ADI Localizer Bar) + -- TISL Control Panel + [622] = "%0.1f", -- PTR-TISLCP-MODE (TISL Mode) + [623] = "%1d", -- PTR-TISLCP-SLANT-RNG (Slant range) + [624] = "%.3f", -- PTR-TISLCP-ALT-ABV-TGT-WH1 (Altitude above target tens of thousands of feet) + [626] = "%.3f", -- PTR-TISLCP-ALT-ABV-TGT-WH2 (Altitude above target Units of thousands of feet) + [628] = "%.1f", -- PTR-TISLCP-ENTER (ENTER) + [630] = "%.1f", -- + [632] = "%.1f", -- PTR-TISLCP-BITE (BITE) + [634] = "%.1f", -- + [636] = "%0.2f", -- PTR-TISLCP-CODE-WH1 (TISL Code wheel 1) + [638] = "%0.2f", -- PTR-TISLCP-CODE-WH2 (TISL Code wheel 2) + [640] = "%0.2f", -- PTR-TISLCP-CODE-WH3 (TISL Code wheel 3) + [642] = "%0.2f", -- PTR-TISLCP-CODE-WH4 (TISL Code wheel 4) + [644] = "%1d", -- PTR-TISLCP-TISL-AUX (TISL AUX) + -- Fuel System Control Panel + -- Fuel Quantity Indicator and Selector + [645] = "%0.1f", -- PTR-FQIS-SELECT (Fuel display selector) + [646] = "%.1f", -- PTR-FQIS-TEST (Fuel Gauge Test) + -- CPT MECH + [651] = "%.1f", -- PTR-DOWNLOCK-OVERRIDE (Downlock Override) + [716] = "%1d", -- PNT-LNDGEAR (Landing Gear Lever) + [773] = "%1d", -- PTR-FLAPS (Flap Setting) + [654] = "%1d", -- PTR-ANTI-SKID (Anti Skid) + -- Light System Control Panel + [655] = "%0.1f", -- PTR-LIGHTS-LAND (Land Taxi Lights) + -- STALL + [704] = "%.1f", -- PTR-STALLWCP-STALL (Stall Volume) (Axis) {0.0,1.0} in 0.1 steps + [705] = "%.1f", -- PTR-STALLWCP-PEAK (Peak Volume) (Axis) {0.0,1.0} in 0.1 steps + -- Canopy + [712] = "%0.2f", -- PTR-CANOPY-OPEN (Canopy Open/Hold/Close) + -- Auxiliary Landing Gear Handle + [718] = "%1d", -- PTR-ARM-DWNC-L (Auxiliary Landing Gear Handle) + [722] = "%.1f", -- PTR-BTN-ARM-DWNC-L (Auxiliary Landing Gear Handle Lock button) + -- Arm Seat Handle + [733] = "%1d", -- PTR-ARM-SEAT-HANDLE (Seat Arm Handle) + -- + [772] = "%1d", -- PTR-EMER-BRKARM (Emergency Brake) + -- Secure Voice Comms Panel + [778] = "%1d", -- PTR-ZEROIZE-COVER (Zeroise Cover) + [779] = "%1d", -- PTR-ZEROIZE-SWITCH (Zeroise Switch) + [780] = "%1d", -- PTR-DELAY-SWITCH (Delay Switch) + [781] = "%0.1f", -- PTR-LVR-PANKY58-PLAIN (C/RAD switch) + [782] = "%0.1f", -- PTR-LVR-PANKY58-1TO5 (Full switch) + [783] = "%0.1f", -- PTR-LVR-PANKY58-MODE (Mode switch) + [784] = "%1d", -- PTR-TMB-PANKY58-POWER (Power switch) + -- Armament Ground Safety Override Switch + [709] = "%1d", -- PTR-ARMGS-COVER (Arm Ground Safety Override Cover) + [710] = "%1d", -- PTR-ARMGS-OVERRIDE-SWITCH (Arm Ground Safety Override Switch) + --Circuit Breaker Panel CBP + [666] = "%1d", -- PTR-CBP-AILERON-DISC-L (AILERON DISC L) + [667] = "%1d", -- PTR-CBP-AILERON-DISC-R (AILERON DISC R) + [668] = "%1d", -- PTR-CBP-SPS-RUDDER-AUTH-LIM (SPS & RUDDER AUTH LIMIT) + [669] = "%1d", -- PTR-CBP-ELEVATION-DISC-L (ELEVATION DISC L) + [670] = "%1d", -- PTR-CBP-ELEVATION-DISC-R (ELEVATION DISC R) + [671] = "%1d", -- PTR-CBP-AILERON-TAB-L (AILERON TAB L) + [672] = "%1d", -- PTR-CBP-AILERON-TAB-R (AILERON TAB R) + [673] = "%1d", -- PTR-CBP-EMER-FLAP (EMER FLAP) + [674] = "%1d", -- PTR-CBP-EMER-TRIM (EMER TRIM) + [675] = "%1d", -- PTR-CBP-LAND-GEAR (LAND GEAR) + [676] = "%1d", -- PTR-CBP-ENGINE-START-L (ENGINE START L) + [677] = "%1d", -- PTR-CBP-ENGINE-START-R (ENGINE START R) + [678] = "%1d", -- PTR-CBP-APU-CONT (APU CONT) + [679] = "%1d", -- PTR-CBP-ANG-IGNITOR-1 (ENG IGNITOR L/R-1) + [680] = "%1d", -- PTR-CBP-ANG-IGNITOR-2 (ENG IGNITOR L/R-2) + [681] = "%1d", -- PTR-CBP-EMER-FUEL-SHUTOFF-ENG-L (EMER FUEL SHUTOFF ENG L) + [682] = "%1d", -- PTR-CBP-EMER-FUEL-SHUTOFF-ENG-R (EMER FUEL SHUTOFF ENG R) + [683] = "%1d", -- PTR-CBP-DC-FUEL-PUMP (DC FUEL PUMP) + [684] = "%1d", -- PTR-CBP-BLEED-AIR-CONT-L (BLEED AIR CONT L) + [685] = "%1d", -- PTR-CBP-BLEED-AIR-CONT-R (BLEED AIR CONT R) + [686] = "%1d", -- PTR-CBP-EXT-STORES-JETT-1 (EXT STORES JETT 1) + [687] = "%1d", -- PTR-CBP-EXT-STORES-JETT-2 (EXT STORES JETT 2) + [688] = "%1d", -- PTR-CBP-STBY-ATT-IND (STBY ATT IND) + [689] = "%1d", -- PTR-CBP-MASTER-CAUT (MASTER CAUT) + [690] = "%1d", -- PTR-CBP-PITOT-HEAT-AC (PITOT HEAT AC) + [691] = "%1d", -- PTR-CBP-IFF (IFF) + [692] = "%1d", -- PTR-CBP-UHF-COMM (UHF COMM) + [693] = "%1d", -- PTR-CBP-INTER-COMM (INTER COMM) + [694] = "%1d", -- PTR-CBP-GENERATOR-CONT-L (GENERATOR CONT L) + [695] = "%1d", -- PTR-CBP-GENERATOR-CONT-R (GENERATOR CONT R) + [696] = "%1d", -- PTR-CBP-CONVERTER-L (CONVERTER L) + [697] = "%1d", -- PTR-CBP-AUX-ESS-BUS-0A (AUX ESS BUS 0A) + [698] = "%1d", -- PTR-CBP-AUX-ESS-BUS-0B (AUX ESS BUS 0B) + [699] = "%1d", -- PTR-CBP-AUX-ESS-BUS-0C (AUX ESS BUS 0C) + [700] = "%1d", -- PTR-CBP-BATTERY-BUS-TRANS (BATTERY BUS TRANS) + [701] = "%1d", -- PTR-CBP-INVERTER-PWR (INVERTER PWR) + [702] = "%1d", -- PTR-CBP-INVERTER-CONT (INVERTER CONT) + [703] = "%1d", -- PTR-CBP-AUX-ESS-BUS-TIE (AUX ESS BUS TIE) + --AAU-34/A + [62] = "%1d", -- PNT-ALT-LEVR-L (Set Pressure) + [60] = "%1d", -- PNT-ALT-LEVR-R (ELECT/PNEU) + -- Seat Adjustment Button + [770] = "%1d", -- Seat Height Adjustment up/down + -- Arm Seat Handle + [787] = "%1d", -- Extend boarding ladder cover + [788] = "%1d", -- Extend boarding ladder button + -- Accelerometer + [904] = "%1d", -- Accelerometer Push to set + -- DVADR Remote Control Panel + [789] = "%1d", -- DVADR - Function control toggle switch + -- Anti-G suit valve test button + [776] = "%1d", -- Anti-G suit valve test button + -- Internal canopy actuator disengage lever + [777] = "%1d", -- Internal canopy actuator disengage lever + -- Canopy jettison lever + [785] = "%1d", -- Canopy jettison lever + [786] = "%1d", -- Canopy Jettison Lever Unlock Button + -- Antenna Select Panel + [706] = "%1d", -- IFF - antenna switch + [707] = "%1d", -- UHF - antenna switch + [708] = "%1d", -- EGI HQ TOD + -- RWR + [16] = "%.4f", -- RWR Adjust Display Brightness {0.15, 0.85} in 0.1 steps +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- Digital Clock + ------------------------------------------------- + local lDigitalClock = ExportScript.Tools.getListIndicatorValue(4) + + if lDigitalClock ~= nil and lDigitalClock.txtHours ~= nil then + local lCET = "" + if lDigitalClock.txtET ~= nil then + lCET = ";"..lDigitalClock.txtET + else + lCET = "; "..lDigitalClock.txtC + end + + ExportScript.Tools.SendData(2010, string.format("%s%s%s%s", lDigitalClock.txtHours, lDigitalClock.txtMinutes, lDigitalClock.txtSeconds, lCET)) + end +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- Digital Clock + ------------------------------------------------- + local lDigitalClock = ExportScript.Tools.getListIndicatorValue(4) + + if lDigitalClock ~= nil and lDigitalClock.txtHours ~= nil then + ExportScript.Tools.SendDataDAC("2010", string.format("%s%s%s", lDigitalClock.txtHours, lDigitalClock.txtMinutes, lDigitalClock.txtSeconds)) + end +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- AN/ARC-164 UHF and UHF Preset Channel + --------------------------------------------------- + local lUHF_RADIO = GetDevice(54) + if lUHF_RADIO:is_on() then + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((lUHF_RADIO:get_frequency()/1000000))) + + local lPresetChannel = ExportScript.Tools.getListIndicatorValue(10) + + ExportScript.Tools.SendData(2001, string.format("%s", lPresetChannel.txtPresetChannel)) + else + ExportScript.Tools.SendData(2000, " ") + ExportScript.Tools.SendData(2001, " ") + end + + -- AN/ARC-186(V) VHF AM and Preset Channel + --------------------------------------------------- + local lVHF_AM_RADIO = GetDevice(55) + ExportScript.Tools.SendData(2002, ExportScript.Tools.RoundFreqeuncy((lVHF_AM_RADIO:get_frequency()/1000000))) + + local lVHF_AM_RADIO_PRESET = {[0.0]="1",[0.01]="2",[0.02]="3",[0.03]="4",[0.04]="5",[0.05]="6",[0.06]="7",[0.07]="8",[0.08]="9",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="1"} + ExportScript.Tools.SendData(2003, lVHF_AM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(137), 2)]) + + -- AN/ARC-186(V) VHF FM and Preset Channel + ------------------------------------------------- + local lVHF_FM_RADIO = GetDevice(56) + ExportScript.Tools.SendData(2004, ExportScript.Tools.RoundFreqeuncy((lVHF_FM_RADIO:get_frequency()/1000000))) + + -- Preset is buggy + local lVHF_FM_RADIO_PRESET = {[0.0]="1",[0.01]="2",[0.02]="3",[0.03]="4",[0.04]="5",[0.05]="6",[0.06]="7",[0.07]="8",[0.08]="9",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="1"} + ExportScript.Tools.SendData(2005, lVHF_FM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(151), 2, "ceil")]) + + -- TACAN Channel + ------------------------------------------------- + ExportScript.Tools.SendData(2008, (mainPanelDevice:get_argument_value(263) == 0 and "0" or "1")..ExportScript.Tools.round(mainPanelDevice:get_argument_value(264) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(265) * 10, 0)..(mainPanelDevice:get_argument_value(266) == 0 and "X" or "Y")) + ExportScript.Tools.SendData(266, (mainPanelDevice:get_argument_value(266) == 0 and "0" or "1")) + + -- ILS Channel + ------------------------------------------------- + local lILSFrequencyMHz = {[0]="108",[0.1]="109",[0.2]="110",[0.3]="111"} + local lILSFrequencyKHz = {[0]="10",[0.1]="15",[0.2]="30",[0.3]="35",[0.4]="50",[0.5]="55",[0.6]="70",[0.7]="75",[0.8]="90",[0.9]="95"} + + ExportScript.Tools.SendData(2009, lILSFrequencyMHz[ExportScript.Tools.round(mainPanelDevice:get_argument_value(251), 1)].."."..lILSFrequencyKHz[ExportScript.Tools.round(mainPanelDevice:get_argument_value(252), 1)]) + + -- CMSC 2020 (Text only) + ------------------------------------------------- + if mainPanelDevice:get_argument_value(364) > 0 then + local lCMSCTable = ExportScript.Tools.getListIndicatorValue(8) + + if lCMSCTable ~= nil and lCMSCTable.txt_JMR ~= nil then + ExportScript.Tools.SendData(2011, string.format("%s", lCMSCTable.txt_CHAFF_FLARE)) -- txt_CHAFF_FLARE + ExportScript.Tools.SendData(2012, string.format("%s", lCMSCTable.txt_JMR)) -- txt_JMR + ExportScript.Tools.SendData(2013, string.format("%s", lCMSCTable.txt_MWS)) -- txt_MWS + end + else + ExportScript.Tools.SendData(2011, " ") -- txt_CHAFF_FLARE + ExportScript.Tools.SendData(2012, " ") -- txt_JMR + ExportScript.Tools.SendData(2013, " ") -- txt_MWS + end + + -- CMSP + ------------------------------------------------- + if mainPanelDevice:get_argument_value(364) > 0 then + local lCMSP = ExportScript.Tools.getListIndicatorValue(7) + + local lCMSPTable = {"","","",""} + + if lCMSP ~= nil and lCMSP.txt_UP ~= nil then + lCMSP.txt_UP = lCMSP.txt_UP:gsub(" ", " ") + lCMSP.txt_UP = lCMSP.txt_UP.." " + lCMSPTable = ExportScript.Tools.split(lCMSP.txt_UP, "%s") + end + + --ExportScript.Tools.WriteToLog('lCMSP: '..ExportScript.Tools.dump(lCMSP)) + --ExportScript.Tools.WriteToLog('lCMSPTable: '..ExportScript.Tools.dump(lCMSPTable)) + + ExportScript.Tools.SendData(2014, string.format("%s", lCMSPTable[1])) + ExportScript.Tools.SendData(2015, string.format("%s", lCMSPTable[2])) + ExportScript.Tools.SendData(2016, string.format("%s", lCMSPTable[3])) + ExportScript.Tools.SendData(2017, string.format("%s", lCMSPTable[4])) + ExportScript.Tools.SendData(2018, string.format("%s", lCMSP.txt_DOWN1)) + ExportScript.Tools.SendData(2019, string.format("%s", lCMSP.txt_DOWN2)) + ExportScript.Tools.SendData(2020, string.format("%s", lCMSP.txt_DOWN3)) + ExportScript.Tools.SendData(2021, string.format("%s", lCMSP.txt_DOWN4)) + else + ExportScript.Tools.SendData(2014, " ") + ExportScript.Tools.SendData(2015, " ") + ExportScript.Tools.SendData(2016, " ") + ExportScript.Tools.SendData(2017, " ") + ExportScript.Tools.SendData(2018, " ") + ExportScript.Tools.SendData(2019, " ") + ExportScript.Tools.SendData(2020, " ") + ExportScript.Tools.SendData(2021, " ") + end + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {290,292,293}) + -- Engine Instruments Lights, Flight Instruments Lights, Auxiliary Instruments Lights + + -- CDU Data + ExportScript.AF.exportCDU() +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- AN/ARC-164 UHF and UHF Preset Channel + --------------------------------------------------- + local lUHF_RADIO = GetDevice(54) + if lUHF_RADIO:is_on() then + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((lUHF_RADIO:get_frequency()/1000000))) + + local lPresetChannel = ExportScript.Tools.getListIndicatorValue(10) + + ExportScript.Tools.SendDataDAC("2001", string.format("%s", lPresetChannel.txtPresetChannel)) + else + ExportScript.Tools.SendDataDAC("2000", "-") + ExportScript.Tools.SendDataDAC("2001", "-") + end + + -- AN/ARC-186(V) VHF AM and Preset Channel + --------------------------------------------------- + local lVHF_AM_RADIO = GetDevice(55) + ExportScript.Tools.SendDataDAC("2002", ExportScript.Tools.RoundFreqeuncy((lVHF_AM_RADIO:get_frequency()/1000000))) + + local lVHF_AM_RADIO_PRESET = {[0.0]="1",[0.01]="2",[0.02]="3",[0.03]="4",[0.04]="5",[0.05]="6",[0.06]="7",[0.07]="8",[0.08]="9",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="1"} + ExportScript.Tools.SendDataDAC("2003", lVHF_AM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(137), 2)]) + + -- AN/ARC-186(V) VHF FM and Preset Channel + ------------------------------------------------- + local lVHF_FM_RADIO = GetDevice(56) + ExportScript.Tools.SendDataDAC("2004", ExportScript.Tools.RoundFreqeuncy((lVHF_FM_RADIO:get_frequency()/1000000))) + + -- Preset is buggy + local lVHF_FM_RADIO_PRESET = {[0.0]="1",[0.01]="2",[0.02]="3",[0.03]="4",[0.04]="5",[0.05]="6",[0.06]="7",[0.07]="8",[0.08]="9",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="1"} + ExportScript.Tools.SendDataDAC("2005", lVHF_FM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(151), 2, "ceil")]) + + -- Pressure setting + -------------------------------------------------------- + local pressure_setting_3 = mainPanelDevice:get_argument_value(56) * 10000 -- {0.0, 10.0} {0.0, 1.0} + local pressure_setting_2 = mainPanelDevice:get_argument_value(57) * 1000 -- {0.0, 10.0} {0.0, 1.0} + local pressure_setting_1 = mainPanelDevice:get_argument_value(58) * 100 -- {0.0, 10.0} {0.0, 1.0} + local pressure_setting_0 = mainPanelDevice:get_argument_value(59) * 10 -- {0.0, 10.0} {0.0, 1.0} + local pressure_setting = ((pressure_setting_3 + pressure_setting_2 + pressure_setting_1 + pressure_setting_0) / 100) + ExportScript.Tools.SendDataDAC("2006", string.format("%5.2f", pressure_setting)) + + -- Calculate Total Fuel + -------------------------------------------------------- + local lFuelQuantityCounterTenthOfThous = mainPanelDevice:get_argument_value(90) * 10000 -- {0.0, 10.0} {0.0, 1.0} + local lFuelQuantityCounterThousands = mainPanelDevice:get_argument_value(91) * 1000 -- {0.0, 10.0} {0.0, 1.0} + local lFuelQuantityCounterHundreds = mainPanelDevice:get_argument_value(92) * 100 -- {0.0, 10.0} {0.0, 1.0} + -- orginal + local lFuelQuantityCounter = ((lFuelQuantityCounterTenthOfThous + lFuelQuantityCounterThousands + lFuelQuantityCounterHundreds) / 10) + ExportScript.Tools.SendDataDAC("2007", string.format("%0.0f", lFuelQuantityCounter).."00") + -- exact + --local lFuelQuantityCounter = ((lFuelQuantityCounterTenthOfThous + lFuelQuantityCounterThousands + lFuelQuantityCounterHundreds)) + --ExportScript.Tools.SendDataDAC("2007", string.format("%1d", lFuelQuantityCounter).."0") + + -- TACAN Channel + ------------------------------------------------- + ExportScript.Tools.SendDataDAC("2008", (mainPanelDevice:get_argument_value(263) == 0 and "0" or "1")..ExportScript.Tools.round(mainPanelDevice:get_argument_value(264) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(265) * 10, 0)) + + -- ILS Channel + ------------------------------------------------- + local lILSFrequencyMHz = {[0]="108",[0.1]="109",[0.2]="110",[0.3]="111"} + local lILSFrequencyKHz = {[0]="10",[0.1]="15",[0.2]="30",[0.3]="35",[0.4]="50",[0.5]="55",[0.6]="70",[0.7]="75",[0.8]="90",[0.9]="95"} + + ExportScript.Tools.SendDataDAC("2009", lILSFrequencyMHz[ExportScript.Tools.round(mainPanelDevice:get_argument_value(251), 1)].."."..lILSFrequencyKHz[ExportScript.Tools.round(mainPanelDevice:get_argument_value(252), 1)]) + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "AN/ARC-164 UHF" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 54 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 220.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 314.450 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3008 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} + ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "AN/ARC-186(V) VHF FM" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 55 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 116.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 151.975 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3003 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 137 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} + ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.01 -- minimal step for preset change + ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3006 -- load button id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = "AN/ARC-186(V) VHF AM" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 56 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 30.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 76.000 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3003 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 151 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} + ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.01 -- minimal step for preset change + ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.01 -- minimal step for preset change + ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 148 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3004 -- load button id from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 149 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + -- NOT FOR ARCAZE + ------------------------------------------------- + --[[ + -- CMSC + ------------------------------------------------- + local lCMSC = list_indication(8) + lCMSC = lCMSC:gsub("-----------------------------------------", "") + lCMSC = lCMSC:gsub("txt_CHAFF_FLARE", "") + lCMSC = lCMSC:gsub("txt_JMR", "") + lCMSC = lCMSC:gsub("txt_MWS", "") + lCMSC = lCMSC:gsub("%c%c(%C)", "%1") + lCMSC = lCMSC.."\n" + + local lCMSCTable = {} + lCMSCTable = ExportScript.Tools.split(lCMSC, "%c") + + if lCMSCTable[2] ~= nil then + ExportScript.Tools.SendDataDAC("2011", lCMSCTable[1]) -- txt_CHAFF_FLARE + ExportScript.Tools.SendDataDAC("2012", lCMSCTable[2]) -- txt_JMR + ExportScript.Tools.SendDataDAC("2013", lCMSCTable[3]) -- txt_MWS + else + ExportScript.Tools.SendDataDAC("2011", "") -- txt_CHAFF_FLARE + ExportScript.Tools.SendDataDAC("2012", "") -- txt_JMR + ExportScript.Tools.SendDataDAC("2013", "") -- txt_MWS + end + + -- CMSP + ------------------------------------------------- + local lCMSP = list_indication(7) + lCMSP = lCMSP:gsub("-----------------------------------------", "") + lCMSP = lCMSP:gsub("txt_UP", "") + lCMSP = lCMSP:gsub("txt_DOWN1", "") + lCMSP = lCMSP:gsub("txt_DOWN2", "") + lCMSP = lCMSP:gsub("txt_DOWN3", "") + lCMSP = lCMSP:gsub("txt_DOWN4", "") + lCMSP = lCMSP:gsub("%c%c(%C)", "%1") + lCMSP = lCMSP.."\n" + + local lCMSPTable = {} + lCMSPTable = ExportScript.Tools.split(lCMSP, "%c") + + lCMSP = lCMSPTable[1].."\n"..table.concat(lCMSPTable, " ", 2) + ExportScript.Tools.SendDataDAC("2014", lCMSP) + ]] + + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + local ltmp1 = 0 + for ltmp2 = 0, 13, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + --ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end + ]] +--[[ + -- LITENING_INTERFACE + local lLITENING_INTERFACE = GetDevice(11) + ExportScript.Tools.WriteToLog('lLITENING_INTERFACE:get_station '..ExportScript.Tools.dump(lLITENING_INTERFACE:get_station())) + --ExportScript.Tools.WriteToLog('lLITENING_INTERFACE:add_masked_region '..ExportScript.Tools.dump(lLITENING_INTERFACE:add_masked_region())) -- test the parameters + --ExportScript.Tools.WriteToLog('lLITENING_INTERFACE:set_laser_designation_code '..ExportScript.Tools.dump(lLITENING_INTERFACE:set_laser_designation_code())) -- test the parameters + --ExportScript.Tools.WriteToLog('lLITENING_INTERFACE:set_laser_spot_search_code '..ExportScript.Tools.dump(lLITENING_INTERFACE:set_laser_spot_search_code())) -- test the parameters + + -- ADI + local lADI = GetDevice(47) + ExportScript.Tools.WriteToLog('lADI:get_sideslip '..ExportScript.Tools.dump(lADI:get_sideslip())) + ExportScript.Tools.WriteToLog('lADI:get_bank '..ExportScript.Tools.dump(lADI:get_bank())) + ExportScript.Tools.WriteToLog('lADI:get_pitch '..ExportScript.Tools.dump(lADI:get_pitch())) + + -- SAI + local lSAI = GetDevice(48) + ExportScript.Tools.WriteToLog('lSAI:get_sideslip '..ExportScript.Tools.dump(lSAI:get_sideslip())) + ExportScript.Tools.WriteToLog('lSAI:get_bank '..ExportScript.Tools.dump(lSAI:get_bank())) + ExportScript.Tools.WriteToLog('lSAI:get_pitch '..ExportScript.Tools.dump(lSAI:get_pitch())) + + -- UHF_RADIO + local lUHF_RADIO = GetDevice(54) + ExportScript.Tools.WriteToLog('lUHF_RADIO:is_on '..ExportScript.Tools.dump(lUHF_RADIO:is_on())) + ExportScript.Tools.WriteToLog('lUHF_RADIO:get_frequency '..ExportScript.Tools.dump(lUHF_RADIO:get_frequency())) + --ExportScript.Tools.WriteToLog('lUHF_RADIO:set_frequency '..ExportScript.Tools.dump(lUHF_RADIO:set_frequency())) -- test the parameters + --ExportScript.Tools.WriteToLog('lUHF_RADIO:set_modulation '..ExportScript.Tools.dump(lUHF_RADIO:set_modulation())) -- test the parameters + --ExportScript.Tools.WriteToLog('lUHF_RADIO:set_channel '..ExportScript.Tools.dump(lUHF_RADIO:set_channel())) -- test the parameters + + -- VHF_AM_RADIO + local lVHF_AM_RADIO = GetDevice(55) + ExportScript.Tools.WriteToLog('lVHF_AM_RADIO:is_on '..ExportScript.Tools.dump(lVHF_AM_RADIO:is_on())) + ExportScript.Tools.WriteToLog('lVHF_AM_RADIO:get_frequency '..ExportScript.Tools.dump(lVHF_AM_RADIO:get_frequency())) + --ExportScript.Tools.WriteToLog('lVHF_AM_RADIO:set_frequency '..ExportScript.Tools.dump(lVHF_AM_RADIO:set_frequency())) -- test the parameters + --ExportScript.Tools.WriteToLog('lVHF_AM_RADIO:set_modulation '..ExportScript.Tools.dump(lVHF_AM_RADIO:set_modulation())) -- test the parameters + --ExportScript.Tools.WriteToLog('lVHF_AM_RADIO:set_channel '..ExportScript.Tools.dump(lVHF_AM_RADIO:set_channel())) -- test the parameters + + -- VHF_FM_RADIO + local lVHF_FM_RADIO = GetDevice(56) + ExportScript.Tools.WriteToLog('lVHF_FM_RADIO:is_on '..ExportScript.Tools.dump(lVHF_FM_RADIO:is_on())) + ExportScript.Tools.WriteToLog('lVHF_FM_RADIO:get_frequency '..ExportScript.Tools.dump(lVHF_FM_RADIO:get_frequency())) + --ExportScript.Tools.WriteToLog('lVHF_FM_RADIO:set_frequency '..ExportScript.Tools.dump(lVHF_FM_RADIO:set_frequency())) -- test the parameters + --ExportScript.Tools.WriteToLog('lVHF_FM_RADIO:set_modulation '..ExportScript.Tools.dump(lVHF_FM_RADIO:set_modulation())) -- test the parameters + --ExportScript.Tools.WriteToLog('lVHF_FM_RADIO:set_channel '..ExportScript.Tools.dump(lVHF_FM_RADIO:set_channel())) -- test the parameters + + -- INTERCOM + local lINTERCOM = GetDevice(58) + ExportScript.Tools.WriteToLog('lINTERCOM:is_communicator_available '..ExportScript.Tools.dump(lINTERCOM:is_communicator_available())) + ExportScript.Tools.WriteToLog('lINTERCOM:get_noise_level '..ExportScript.Tools.dump(lINTERCOM:get_noise_level())) + ExportScript.Tools.WriteToLog('lINTERCOM:get_signal_level '..ExportScript.Tools.dump(lINTERCOM:get_signal_level())) + --ExportScript.Tools.WriteToLog('lINTERCOM:set_communicator '..ExportScript.Tools.dump(lINTERCOM:set_communicator())) -- test the parameters + --ExportScript.Tools.WriteToLog('lINTERCOM:set_voip_mode '..ExportScript.Tools.dump(lINTERCOM:set_voip_mode())) -- test the parameters +]] +--[[ + local ltmp1 = 0 + for ltmp2 = 1, 73, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] + +--getIndicatorData(3) + +end + +----------------------------- +-- Custom functions -- +----------------------------- + +----------------------------- +-- CDU Export based on Jan Boeckers DCS BIOS +-- https://github.com/dcs-bios/dcs-bios +----------------------------- + +ExportScript.AF.CDUIndicatorData={ + ACCEPT={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="ACCEPT", + index=0, + statictext=true, + x=1, + y=5 + } + }, + ADI_ATT={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ADI_ATT", + index=0, + statictext=true, + x=10, + y=4 + } + }, + ADI_ATT0={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ADI_ATT0", + index=0, + statictext=false, + x=23, + y=4 + } + }, + ADI_ATT1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ADI_ATT1", + index=0, + statictext=false, + x=23, + y=4 + } + }, + ALIGN={ + { + alignment="LFT", + cdu_pages={ + "NAV", + "INS" + }, + id="ALIGN", + index=0, + statictext=true, + x=1, + y=3 + } + }, + ALL={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="ALL", + index=0, + statictext=true, + x=1, + y=3 + } + }, + ALL1={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="ALL1", + index=0, + statictext=false, + x=1, + y=3 + } + }, + ALL2={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="ALL2", + index=0, + statictext=true, + x=2, + y=3 + } + }, + ALM_REQ={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="ALM_REQ", + index=0, + statictext=true, + x=2, + y=8 + } + }, + ALM_REQs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="ALM_REQs", + index=0, + statictext=false, + x=11, + y=8 + } + }, + ALM_REQs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="ALM_REQs1", + index=0, + statictext=false, + x=11, + y=8 + } + }, + ALTITUDE={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ALTITUDE", + index=0, + statictext=true, + x=10, + y=8 + } + }, + ALT_ALIGN={ + { + alignment="LFT", + cdu_pages={ + "INS" + }, + id="ALT_ALIGN", + index=0, + statictext=true, + x=1, + y=5 + } + }, + ALT_ST1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ALT_ST1", + index=0, + statictext=false, + x=23, + y=8 + } + }, + ALT_ST2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ALT_ST2", + index=0, + statictext=false, + x=23, + y=8 + } + }, + ALT_WIND_TEMP={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="ALT_WIND_TEMP", + index=0, + statictext=true, + x=2, + y=4 + } + }, + ANCHORDIS1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORDIS1", + index=0, + statictext=false, + x=20, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORDIS1", + index=1, + statictext=false, + x=9, + y=8 + } + }, + ANCHORDIS2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORDIS2", + index=0, + statictext=false, + x=20, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORDIS2", + index=1, + statictext=false, + x=9, + y=8 + } + }, + ANCHORDISMH={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORDISMH", + index=0, + statictext=true, + x=19, + y=9 + } + }, + ANCHORDMH1={ + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORDMH1", + index=0, + statictext=false, + x=8, + y=7 + } + }, + ANCHORDMH2={ + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORDMH2", + index=0, + statictext=false, + x=8, + y=7 + } + }, + ANCHORIdent1={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORIdent1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + ANCHORIdent2={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORIdent2", + index=0, + statictext=false, + x=2, + y=5 + } + }, + ANCHORIdentEntry={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORIdentEntry", + index=0, + statictext=true, + x=1, + y=5 + } + }, + ANCHORMH1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORMH1", + index=0, + statictext=false, + x=16, + y=9 + } + }, + ANCHORMH2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORMH2", + index=0, + statictext=false, + x=16, + y=9 + } + }, + ANCHORMH3={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORMH3", + index=0, + statictext=false, + x=16, + y=9 + } + }, + ANCHORNumber1={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORNumber1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + ANCHORNumber2={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORNumber2", + index=0, + statictext=false, + x=2, + y=3 + } + }, + ANCHORNumberEntry={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORNumberEntry", + index=0, + statictext=true, + x=1, + y=3 + } + }, + ANCHORTOFRMode1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTOFRMode1", + index=0, + statictext=false, + x=13, + y=9 + } + }, + ANCHORTOFRMode2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTOFRMode2", + index=0, + statictext=false, + x=13, + y=9 + } + }, + ANCHORTOFRRotary={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTOFRRotary", + index=0, + statictext=true, + x=24, + y=9 + } + }, + ANCHORTTG1={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTTG1", + index=0, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORTTG1", + index=1, + statictext=false, + x=6, + y=6 + } + }, + ANCHORTTG2={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTTG2", + index=0, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORTTG2", + index=1, + statictext=false, + x=6, + y=6 + } + }, + ANCHORTTG3={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="ANCHORTTG3", + index=0, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="ANCHORTTG3", + index=1, + statictext=false, + x=6, + y=6 + } + }, + ANCHOR_PT={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="ANCHOR_PT", + index=0, + statictext=true, + x=24, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WPMENU" + }, + id="ANCHOR_PT", + index=1, + statictext=true, + x=1, + y=5 + } + }, + ANN1={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN1", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN10={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN10", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN11={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN11", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN12={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN12", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN13={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN13", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN14={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN14", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN15={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN15", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN16={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN16", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN17={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN17", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN18={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN18", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN19={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN19", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN2={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN2", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN20={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN20", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN21={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN21", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN22={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN22", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN23={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN23", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN24={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN24", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN25={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN25", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN26={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN26", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN26a={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN26a", + index=0, + statictext=false, + x=7, + y=2 + } + }, + ANN27={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN27", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN28={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN28", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN29={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN29", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN3={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN3", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN30={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN30", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN31={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN31", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN32={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN32", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN33={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN33", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN34={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN34", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN35={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN35", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN36={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN36", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN37={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN37", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN38={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN38", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN39={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN39", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN4={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN4", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN40={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN40", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN41={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN41", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN42={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN42", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN43={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN43", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN5={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN5", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN6={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN6", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN7={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN7", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN8={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN8", + index=0, + statictext=false, + x=2, + y=2 + } + }, + ANN9={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="ANN9", + index=0, + statictext=false, + x=2, + y=2 + } + }, + APP={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="APP", + index=0, + statictext=true, + x=2, + y=9 + } + }, + AS={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="AS", + index=0, + statictext=true, + x=1, + y=3 + } + }, + AS_FLAG={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="AS_FLAG", + index=0, + statictext=false, + x=8, + y=4 + } + }, + AS_FLAG1={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="AS_FLAG1", + index=0, + statictext=false, + x=8, + y=4 + } + }, + AS_FLAG2={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="AS_FLAG2", + index=0, + statictext=false, + x=8, + y=4 + } + }, + ATT={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="ATT", + index=0, + statictext=true, + x=1, + y=5 + } + }, + ATTRIBCRS0={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS0", + index=0, + statictext=false, + x=13, + y=8 + } + }, + ATTRIBCRS1={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS1", + index=0, + statictext=false, + x=13, + y=8 + } + }, + ATTRIBCRS2={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS2", + index=0, + statictext=false, + x=13, + y=8 + } + }, + ATTRIBCRS3={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS3", + index=0, + statictext=false, + x=13, + y=8 + } + }, + ATTRIBCRS4={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS4", + index=0, + statictext=false, + x=14, + y=9 + } + }, + ATTRIBCRS5={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS5", + index=0, + statictext=false, + x=14, + y=9 + } + }, + ATTRIBCRS6={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBCRS6", + index=0, + statictext=false, + x=14, + y=9 + } + }, + ATTRIBSCS0={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBSCS0", + index=0, + statictext=false, + x=6, + y=9 + } + }, + ATTRIBSCS1={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBSCS1", + index=0, + statictext=false, + x=6, + y=9 + } + }, + ATTRIBScale={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBScale", + index=0, + statictext=false, + x=2, + y=6 + } + }, + ATTRIBScale1={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBScale1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + ATTRIBScale2={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBScale2", + index=0, + statictext=false, + x=2, + y=6 + } + }, + ATTRIBScale3={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBScale3", + index=0, + statictext=false, + x=2, + y=6 + } + }, + ATTRIBSteer={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBSteer", + index=0, + statictext=false, + x=2, + y=8 + } + }, + ATTRIBSteer1={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBSteer1", + index=0, + statictext=false, + x=2, + y=8 + } + }, + ATTRIBSteer2={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBSteer2", + index=0, + statictext=false, + x=2, + y=8 + } + }, + ATTRIBUTES={ + { + alignment="RGHT", + cdu_pages={ + "NAV" + }, + id="ATTRIBUTES", + index=0, + statictext=true, + x=24, + y=5 + } + }, + ATTRIBVNavMode={ + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBVNavMode", + index=0, + statictext=false, + x=23, + y=3 + } + }, + ATTRIBVNavMode1={ + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIBVNavMode1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + ATTRIB_CRS_VAL={ + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="ATTRIB_CRS_VAL", + index=0, + statictext=false, + x=23, + y=9 + } + }, + ActiveFP={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP", + index=0, + statictext=false, + x=1, + y=3 + } + }, + ActiveFP1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP1", + index=0, + statictext=false, + x=22, + y=3 + } + }, + ActiveFP2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP2", + index=0, + statictext=false, + x=1, + y=5 + } + }, + ActiveFP3={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP3", + index=0, + statictext=false, + x=22, + y=5 + } + }, + ActiveFP4={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP4", + index=0, + statictext=false, + x=1, + y=7 + } + }, + ActiveFP5={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="ActiveFP5", + index=0, + statictext=false, + x=22, + y=7 + } + }, + AlignMode_BATH={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignMode_BATH", + index=0, + statictext=false, + x=11, + y=4 + } + }, + AlignMode_Ground={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignMode_Ground", + index=0, + statictext=false, + x=11, + y=4 + } + }, + AlignMode_InFlt={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignMode_InFlt", + index=0, + statictext=false, + x=11, + y=4 + } + }, + AlignMode_SH={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignMode_SH", + index=0, + statictext=false, + x=11, + y=4 + } + }, + AlignModes={ + { + alignment="RGHT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignModes", + index=0, + statictext=false, + x=24, + y=3 + } + }, + AlignStatus={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignStatus", + index=0, + statictext=false, + x=13, + y=8 + } + }, + AlignStatus1={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignStatus1", + index=0, + statictext=false, + x=13, + y=8 + } + }, + AlignStatus2={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignStatus2", + index=0, + statictext=false, + x=13, + y=8 + } + }, + AlignStatusAsterisk={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignStatusAsterisk", + index=0, + statictext=false, + x=13, + y=8 + } + }, + AlignTime={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignTime", + index=0, + statictext=false, + x=7, + y=8 + } + }, + AlignTimeAsterisk={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="AlignTimeAsterisk", + index=0, + statictext=false, + x=7, + y=8 + } + }, + Asterisk={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE", + "1ST_LINE" + }, + id="Asterisk", + index=0, + statictext=false, + x=1, + y=1 + } + }, + BATTERY={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="BATTERY", + index=0, + statictext=true, + x=2, + y=3 + } + }, + BATTERYs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="BATTERYs", + index=0, + statictext=false, + x=11, + y=3 + } + }, + BATTERYs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="BATTERYs1", + index=0, + statictext=false, + x=11, + y=3 + } + }, + BBCTL={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="BBCTL", + index=0, + statictext=true, + x=1, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="BBCTL", + index=1, + statictext=true, + x=1, + y=3 + } + }, + BIT_INPR={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="BIT_INPR", + index=0, + statictext=true, + x=2, + y=5 + } + }, + BIT_INPRs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="BIT_INPRs", + index=0, + statictext=false, + x=11, + y=5 + } + }, + BIT_INPRs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="BIT_INPRs1", + index=0, + statictext=false, + x=11, + y=5 + } + }, + BIT_TST={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="BIT_TST", + index=0, + statictext=true, + x=2, + y=8 + } + }, + BLOCK_NUM1={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM1", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM2={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM2", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM3={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM3", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM4={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM4", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM5={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM5", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM6={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM6", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM7={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM7", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BLOCK_NUM8={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="BLOCK_NUM8", + index=0, + statictext=false, + x=13, + y=9 + } + }, + BRACKETS={ + { + alignment="LFT", + cdu_pages={ + "WPMENU" + }, + id="BRACKETS", + index=0, + statictext=true, + x=24, + y=9 + } + }, + BRACKETS_EL={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="BRACKETS_EL", + index=0, + statictext=false, + x=1, + y=5 + } + }, + BRACKETS_FIRSTCOORD={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="BRACKETS_FIRSTCOORD", + index=0, + statictext=true, + x=1, + y=7 + } + }, + BRACKETS_INIT_WP_ID={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="BRACKETS_INIT_WP_ID", + index=0, + statictext=true, + x=1, + y=5 + } + }, + BRACKETS_ITEM1={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="BRACKETS_ITEM1", + index=0, + statictext=true, + x=1, + y=3 + } + }, + BRACKETS_ITEM2={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="BRACKETS_ITEM2", + index=0, + statictext=true, + x=1, + y=5 + } + }, + BRACKETS_ITEM3={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="BRACKETS_ITEM3", + index=0, + statictext=true, + x=1, + y=7 + } + }, + BRACKETS_ITEM4={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="BRACKETS_ITEM4", + index=0, + statictext=true, + x=1, + y=9 + } + }, + BRACKETS_MH_DIS={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="BRACKETS_MH_DIS", + index=0, + statictext=true, + x=24, + y=5 + } + }, + BRACKETS_MISC_DATA={ + { + alignment="RGHT", + cdu_pages={ + "INS" + }, + id="BRACKETS_MISC_DATA", + index=0, + statictext=true, + x=24, + y=9 + } + }, + BRACKETS_SECONDCOORD={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="BRACKETS_SECONDCOORD", + index=0, + statictext=true, + x=1, + y=9 + } + }, + BRACKETS_WPNUM_LTR={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="BRACKETS_WPNUM_LTR", + index=0, + statictext=true, + x=24, + y=9 + } + }, + BRACKETS_WPT_NAME={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO", + "WAYPT1" + }, + id="BRACKETS_WPT_NAME", + index=0, + statictext=true, + x=24, + y=3 + } + }, + BRANCH1={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="BRANCH1", + index=0, + statictext=false, + x=1, + y=3 + } + }, + BVL={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="BVL", + index=0, + statictext=true, + x=2, + y=7 + } + }, + BVL_VAL={ + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1" + }, + id="BVL_VAL", + index=0, + statictext=true, + x=24, + y=7 + } + }, + BVU={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="BVU", + index=0, + statictext=true, + x=2, + y=6 + } + }, + BVU_VAL={ + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1" + }, + id="BVU_VAL", + index=0, + statictext=true, + x=24, + y=6 + } + }, + B_ALT={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="B_ALT", + index=0, + statictext=true, + x=2, + y=5 + } + }, + B_ALT_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="B_ALT_ST", + index=0, + statictext=false, + x=21, + y=5 + } + }, + B_ALT_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="B_ALT_ST1", + index=0, + statictext=false, + x=21, + y=5 + } + }, + B_ALT_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="B_ALT_VAL", + index=0, + statictext=false, + x=13, + y=5 + } + }, + C={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="C", + index=0, + statictext=false, + x=23, + y=9 + } + }, + CADC={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC", + index=0, + statictext=true, + x=16, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC", + index=1, + statictext=true, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="CADC", + index=2, + statictext=true, + x=18, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "SYS2" + }, + id="CADC", + index=3, + statictext=true, + x=24, + y=3 + } + }, + CADC_SA={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC_SA", + index=0, + statictext=false, + x=1, + y=5 + } + }, + CADC_ST0={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC_ST0", + index=0, + statictext=false, + x=21, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT", + "RESET" + }, + id="CADC_ST0", + index=1, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CADC_ST0", + index=2, + statictext=false, + x=11, + y=6 + } + }, + CADC_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC_ST1", + index=0, + statictext=false, + x=21, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CADC_ST1", + index=1, + statictext=false, + x=11, + y=6 + } + }, + CADC_ST2={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC_ST2", + index=0, + statictext=false, + x=21, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT", + "RESET" + }, + id="CADC_ST2", + index=1, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CADC_ST2", + index=2, + statictext=false, + x=11, + y=6 + } + }, + CADC_ST3={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC_ST3", + index=0, + statictext=false, + x=21, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT", + "RESET" + }, + id="CADC_ST3", + index=1, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CADC_ST3", + index=2, + statictext=false, + x=11, + y=6 + } + }, + CADC_ST4={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="CADC_ST4", + index=0, + statictext=false, + x=21, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT", + "RESET" + }, + id="CADC_ST4", + index=1, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CADC_ST4", + index=2, + statictext=false, + x=11, + y=6 + } + }, + CADC_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC_STATUS0", + index=0, + statictext=false, + x=7, + y=5 + } + }, + CADC_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC_STATUS1", + index=0, + statictext=false, + x=7, + y=5 + } + }, + CADC_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC_STATUS2", + index=0, + statictext=false, + x=7, + y=5 + } + }, + CADC_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CADC_STATUS3", + index=0, + statictext=false, + x=7, + y=5 + } + }, + CBIT1={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT1", + index=0, + statictext=true, + x=2, + y=3 + } + }, + CBIT10={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT10", + index=0, + statictext=true, + x=14, + y=5 + } + }, + CBIT11={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT11", + index=0, + statictext=true, + x=14, + y=6 + } + }, + CBIT2={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT2", + index=0, + statictext=true, + x=2, + y=4 + } + }, + CBIT3={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT3", + index=0, + statictext=true, + x=2, + y=5 + } + }, + CBIT4={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT4", + index=0, + statictext=true, + x=2, + y=6 + } + }, + CBIT5={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT5", + index=0, + statictext=true, + x=2, + y=7 + } + }, + CBIT6={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT6", + index=0, + statictext=true, + x=2, + y=8 + } + }, + CBIT7={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT7", + index=0, + statictext=true, + x=2, + y=9 + } + }, + CBIT8={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT8", + index=0, + statictext=true, + x=14, + y=3 + } + }, + CBIT9={ + { + alignment="LFT", + cdu_pages={ + "EGI4" + }, + id="CBIT9", + index=0, + statictext=true, + x=14, + y=4 + } + }, + CDU={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU", + index=0, + statictext=true, + x=2, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="CDU", + index=1, + statictext=true, + x=18, + y=6 + } + }, + CDUTEST={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "SYS2" + }, + id="CDUTEST", + index=1, + statictext=true, + x=24, + y=5 + } + }, + CDUTEST1={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST1", + index=0, + statictext=false, + x=9, + y=3 + } + }, + CDUTEST10={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST10", + index=0, + statictext=false, + x=9, + y=6 + } + }, + CDUTEST11={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST11", + index=0, + statictext=false, + x=9, + y=6 + } + }, + CDUTEST12={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST12", + index=0, + statictext=false, + x=23, + y=3 + } + }, + CDUTEST13={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST13", + index=0, + statictext=false, + x=23, + y=3 + } + }, + CDUTEST14={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST14", + index=0, + statictext=false, + x=23, + y=3 + } + }, + CDUTEST15={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST15", + index=0, + statictext=false, + x=23, + y=4 + } + }, + CDUTEST16={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST16", + index=0, + statictext=false, + x=23, + y=4 + } + }, + CDUTEST17={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST17", + index=0, + statictext=false, + x=23, + y=4 + } + }, + CDUTEST2={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST2", + index=0, + statictext=false, + x=9, + y=4 + } + }, + CDUTEST3={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST3", + index=0, + statictext=false, + x=9, + y=4 + } + }, + CDUTEST4={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST4", + index=0, + statictext=false, + x=9, + y=4 + } + }, + CDUTEST5={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST5", + index=0, + statictext=false, + x=9, + y=4 + } + }, + CDUTEST6={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST6", + index=0, + statictext=false, + x=9, + y=5 + } + }, + CDUTEST7={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST7", + index=0, + statictext=false, + x=9, + y=5 + } + }, + CDUTEST8={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST8", + index=0, + statictext=false, + x=9, + y=5 + } + }, + CDUTEST9={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="CDUTEST9", + index=0, + statictext=false, + x=9, + y=6 + } + }, + CDU_LASTE={ + { + alignment="RGHT", + cdu_pages={ + "DTSUPLD" + }, + id="CDU_LASTE", + index=0, + statictext=true, + x=24, + y=3 + } + }, + CDU_ST0={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CDU_ST0", + index=0, + statictext=false, + x=17, + y=3 + } + }, + CDU_ST1={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="CDU_ST1", + index=0, + statictext=false, + x=23, + y=6 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CDU_ST1", + index=1, + statictext=false, + x=17, + y=3 + } + }, + CDU_ST3={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="CDU_ST3", + index=0, + statictext=false, + x=23, + y=6 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CDU_ST3", + index=1, + statictext=false, + x=17, + y=3 + } + }, + CDU_ST4={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="CDU_ST4", + index=0, + statictext=false, + x=23, + y=6 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="CDU_ST4", + index=1, + statictext=false, + x=17, + y=3 + } + }, + CDU_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU_STATUS0", + index=0, + statictext=false, + x=6, + y=7 + } + }, + CDU_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU_STATUS1", + index=0, + statictext=false, + x=6, + y=7 + } + }, + CDU_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU_STATUS2", + index=0, + statictext=false, + x=6, + y=7 + } + }, + CDU_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU_STATUS3", + index=0, + statictext=false, + x=6, + y=7 + } + }, + CDU_SYS_ACTION={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="CDU_SYS_ACTION", + index=0, + statictext=false, + x=1, + y=7 + } + }, + CHASSIS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="CHASSIS", + index=0, + statictext=true, + x=2, + y=6 + } + }, + CHASSIS_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="CHASSIS_STATUS", + index=0, + statictext=true, + x=10, + y=6 + } + }, + CLEAR={ + { + alignment="RGHT", + cdu_pages={ + "BBCTL" + }, + id="CLEAR", + index=0, + statictext=true, + x=23, + y=7 + } + }, + CLEAR_SA={ + { + alignment="RGHT", + cdu_pages={ + "BBCTL" + }, + id="CLEAR_SA", + index=0, + statictext=false, + x=24, + y=7 + } + }, + CODE={ + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="CODE", + index=0, + statictext=true, + x=2, + y=4 + } + }, + CR_ON_OFF={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="CR_ON_OFF", + index=0, + statictext=false, + x=5, + y=5 + } + }, + CR_ON_OFF1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="CR_ON_OFF1", + index=0, + statictext=false, + x=5, + y=5 + } + }, + CR_SYMB={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="CR_SYMB", + index=0, + statictext=false, + x=1, + y=5 + } + }, + CR_TXT={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="CR_TXT", + index=0, + statictext=true, + x=2, + y=5 + } + }, + CSCI={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="CSCI", + index=0, + statictext=false, + x=4, + y=10 + } + }, + CTD={ + { + alignment="LFT", + cdu_pages={ + "POS" + }, + id="CTD", + index=0, + statictext=true, + x=2, + y=8 + } + }, + CTD_VAL={ + { + alignment="LFT", + cdu_pages={ + "POS" + }, + id="CTD_VAL", + index=0, + statictext=false, + x=16, + y=8 + } + }, + CoordFormat0={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ", + "UPDATE" + }, + id="CoordFormat0", + index=0, + statictext=false, + x=23, + y=3 + } + }, + CoordFormat1={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ", + "UPDATE" + }, + id="CoordFormat1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + CurrFlightPlanLetter0={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE" + }, + id="CurrFlightPlanLetter0", + index=0, + statictext=false, + x=10, + y=1 + } + }, + CurrFlightPlanLetter1={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE" + }, + id="CurrFlightPlanLetter1", + index=0, + statictext=false, + x=10, + y=1 + } + }, + CurrFlightPlanNumber={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE" + }, + id="CurrFlightPlanNumber", + index=0, + statictext=false, + x=11, + y=1 + } + }, + CurrSteerPointAsterisk={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE" + }, + id="CurrSteerPointAsterisk", + index=0, + statictext=false, + x=14, + y=1 + } + }, + CurrSteerPointNumber={ + { + alignment="LFT", + cdu_pages={ + "1ST_LINE" + }, + id="CurrSteerPointNumber", + index=0, + statictext=false, + x=14, + y=1 + } + }, + DATA={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="DATA", + index=0, + statictext=true, + x=2, + y=4 + } + }, + DATA2={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="DATA2", + index=0, + statictext=true, + x=2, + y=6 + } + }, + DATA_OFF={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="DATA_OFF", + index=0, + statictext=false, + x=21, + y=7 + } + }, + DATA_OFF1={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="DATA_OFF1", + index=0, + statictext=false, + x=21, + y=7 + } + }, + DATA_PUMP={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="DATA_PUMP", + index=0, + statictext=true, + x=11, + y=7 + } + }, + DAY={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="DAY", + index=0, + statictext=true, + x=16, + y=7 + } + }, + DAY_DE={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="DAY_DE", + index=0, + statictext=false, + x=24, + y=7 + } + }, + DAY_TXT={ + { + alignment="RGHT", + cdu_pages={ + "TIME" + }, + id="DAY_TXT", + index=0, + statictext=false, + x=23, + y=7 + } + }, + DECR={ + { + alignment="RGHT", + cdu_pages={ + "MXLOG" + }, + id="DECR", + index=0, + statictext=true, + x=23, + y=3 + } + }, + DEF_ATT={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="DEF_ATT", + index=0, + statictext=true, + x=2, + y=3 + } + }, + DEGREE1={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="DEGREE1", + index=0, + statictext=true, + x=17, + y=5 + } + }, + DEGREE2={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="DEGREE2", + index=0, + statictext=true, + x=17, + y=7 + } + }, + DEGREE3={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="DEGREE3", + index=0, + statictext=true, + x=17, + y=9 + } + }, + DIS={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="DIS", + index=0, + statictext=true, + x=16, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="DIS", + index=1, + statictext=true, + x=7, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="DIS", + index=2, + statictext=true, + x=2, + y=8 + } + }, + DISPLAY_TEST={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST2" + }, + id="DISPLAY_TEST", + index=0, + statictext=true, + x=1, + y=3 + } + }, + DISPLAY_TEST1={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST2" + }, + id="DISPLAY_TEST1", + index=0, + statictext=true, + x=2, + y=5 + } + }, + DISPLAY_TEST_VALUES={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST2" + }, + id="DISPLAY_TEST_VALUES", + index=0, + statictext=true, + x=2, + y=6 + } + }, + DIVERT={ + { + alignment="RGHT", + cdu_pages={ + "NAV" + }, + id="DIVERT", + index=0, + statictext=true, + x=24, + y=9 + } + }, + DIVERTDIV={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDIV", + index=0, + statictext=false, + x=5, + y=4 + } + }, + DIVERTDIV1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDIV1", + index=0, + statictext=false, + x=5, + y=6 + } + }, + DIVERTDIV2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDIV2", + index=0, + statictext=false, + x=5, + y=8 + } + }, + DIVERTDIV3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDIV3", + index=0, + statictext=false, + x=5, + y=10 + } + }, + DIVERTDistance={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDistance", + index=0, + statictext=false, + x=6, + y=4 + } + }, + DIVERTDistance1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDistance1", + index=0, + statictext=false, + x=6, + y=6 + } + }, + DIVERTDistance2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDistance2", + index=0, + statictext=false, + x=6, + y=8 + } + }, + DIVERTDistance3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTDistance3", + index=0, + statictext=false, + x=6, + y=10 + } + }, + DIVERTMH={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTMH", + index=0, + statictext=false, + x=2, + y=4 + } + }, + DIVERTMH1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTMH1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + DIVERTMH2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTMH2", + index=0, + statictext=false, + x=2, + y=8 + } + }, + DIVERTMH3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTMH3", + index=0, + statictext=false, + x=2, + y=10 + } + }, + DIVERTName={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTName", + index=0, + statictext=false, + x=7, + y=3 + } + }, + DIVERTName1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTName1", + index=0, + statictext=false, + x=7, + y=5 + } + }, + DIVERTName2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTName2", + index=0, + statictext=false, + x=7, + y=7 + } + }, + DIVERTName3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTName3", + index=0, + statictext=false, + x=7, + y=9 + } + }, + DIVERTNumber={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTNumber", + index=0, + statictext=false, + x=2, + y=3 + } + }, + DIVERTNumber1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTNumber1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + DIVERTNumber2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTNumber2", + index=0, + statictext=false, + x=2, + y=7 + } + }, + DIVERTNumber3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTNumber3", + index=0, + statictext=false, + x=2, + y=9 + } + }, + DIVERTSteer={ + { + alignment="RGHT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteer", + index=0, + statictext=false, + x=23, + y=3 + } + }, + DIVERTSteer1={ + { + alignment="RGHT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteer1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + DIVERTSteer2={ + { + alignment="RGHT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteer2", + index=0, + statictext=false, + x=23, + y=7 + } + }, + DIVERTSteer3={ + { + alignment="RGHT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteer3", + index=0, + statictext=false, + x=23, + y=9 + } + }, + DIVERTSteerNOT={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteerNOT", + index=0, + statictext=false, + x=1, + y=3 + } + }, + DIVERTSteerNOT1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteerNOT1", + index=0, + statictext=false, + x=1, + y=5 + } + }, + DIVERTSteerNOT2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteerNOT2", + index=0, + statictext=false, + x=1, + y=7 + } + }, + DIVERTSteerNOT3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTSteerNOT3", + index=0, + statictext=false, + x=1, + y=9 + } + }, + DIVERTTTG={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG", + index=0, + statictext=false, + x=17, + y=4 + } + }, + DIVERTTTG1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG1", + index=0, + statictext=false, + x=17, + y=4 + } + }, + DIVERTTTG2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG2", + index=0, + statictext=false, + x=17, + y=6 + } + }, + DIVERTTTG3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG3", + index=0, + statictext=false, + x=17, + y=6 + } + }, + DIVERTTTG4={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG4", + index=0, + statictext=false, + x=17, + y=8 + } + }, + DIVERTTTG5={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG5", + index=0, + statictext=false, + x=17, + y=8 + } + }, + DIVERTTTG6={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG6", + index=0, + statictext=false, + x=17, + y=10 + } + }, + DIVERTTTG7={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTG7", + index=0, + statictext=false, + x=17, + y=10 + } + }, + DIVERTTTGText={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTGText", + index=0, + statictext=false, + x=12, + y=4 + } + }, + DIVERTTTGText1={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTGText1", + index=0, + statictext=false, + x=12, + y=6 + } + }, + DIVERTTTGText2={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTGText2", + index=0, + statictext=false, + x=12, + y=8 + } + }, + DIVERTTTGText3={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="DIVERTTTGText3", + index=0, + statictext=false, + x=12, + y=10 + } + }, + DKI={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="DKI", + index=0, + statictext=false, + x=1, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="DKI", + index=1, + statictext=true, + x=1, + y=3 + } + }, + DMH={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="DMH", + index=0, + statictext=true, + x=2, + y=7 + } + }, + DP_RTR={ + { + alignment="RGHT", + cdu_pages={ + "CDUTEST1" + }, + id="DP_RTR", + index=0, + statictext=true, + x=24, + y=7 + } + }, + DSW1={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="DSW1", + index=0, + statictext=true, + x=2, + y=4 + } + }, + DSW1_VAL={ + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1" + }, + id="DSW1_VAL", + index=0, + statictext=true, + x=24, + y=4 + } + }, + DSW2={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="DSW2", + index=0, + statictext=true, + x=2, + y=5 + } + }, + DSW2_VAL={ + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1" + }, + id="DSW2_VAL", + index=0, + statictext=true, + x=24, + y=5 + } + }, + DTCID={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTCID", + index=0, + statictext=true, + x=2, + y=3 + } + }, + DTOT={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="DTOT", + index=0, + statictext=true, + x=24, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="DTOT", + index=1, + statictext=true, + x=1, + y=9 + } + }, + DTOT_ADJUST={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="DTOT_ADJUST", + index=0, + statictext=true, + x=1, + y=3 + } + }, + DTOT_ADJUST_TXT={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="DTOT_ADJUST_TXT", + index=0, + statictext=false, + x=2, + y=4 + } + }, + DTS={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS", + index=0, + statictext=true, + x=2, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTS", + index=1, + statictext=true, + x=18, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS2" + }, + id="DTS", + index=2, + statictext=true, + x=1, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "DTSDNLD", + "DTSSTAT", + "DTSUPLD" + }, + id="DTS", + index=3, + statictext=true, + x=24, + y=9 + } + }, + DTSAS={ + { + alignment="RGHT", + cdu_pages={ + "SYS1" + }, + id="DTSAS", + index=0, + statictext=true, + x=24, + y=7 + } + }, + DTSAS_EGI_STATUS={ + { + alignment="RGHT", + cdu_pages={ + "1ST_LINE" + }, + id="DTSAS_EGI_STATUS", + index=0, + statictext=false, + x=23, + y=1 + } + }, + DTSAS_HPU1={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_HPU1", + index=0, + statictext=false, + x=10, + y=7 + } + }, + DTSAS_ON_OFF={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_ON_OFF", + index=0, + statictext=false, + x=8, + y=3 + } + }, + DTSAS_ON_OFF1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_ON_OFF1", + index=0, + statictext=false, + x=8, + y=3 + } + }, + DTSAS_OWC={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_OWC", + index=0, + statictext=false, + x=20, + y=9 + } + }, + DTSAS_OWC1={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_OWC1", + index=0, + statictext=false, + x=20, + y=9 + } + }, + DTSAS_ST0={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTSAS_ST0", + index=0, + statictext=false, + x=15, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTSAS_ST0", + index=1, + statictext=false, + x=19, + y=6 + } + }, + DTSAS_ST2={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTSAS_ST2", + index=0, + statictext=false, + x=15, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTSAS_ST2", + index=1, + statictext=false, + x=19, + y=6 + } + }, + DTSAS_ST3={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTSAS_ST3", + index=0, + statictext=false, + x=15, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTSAS_ST3", + index=1, + statictext=false, + x=19, + y=6 + } + }, + DTSAS_SYMB={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_SYMB", + index=0, + statictext=false, + x=1, + y=3 + } + }, + DTSAS_TXT={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_TXT", + index=0, + statictext=true, + x=2, + y=3 + } + }, + DTSAS_VPU1={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="DTSAS_VPU1", + index=0, + statictext=false, + x=9, + y=8 + } + }, + DTSDNLD={ + { + alignment="RGHT", + cdu_pages={ + "DTS" + }, + id="DTSDNLD", + index=0, + statictext=true, + x=24, + y=5 + } + }, + DTSSTAT={ + { + alignment="RGHT", + cdu_pages={ + "DTS" + }, + id="DTSSTAT", + index=0, + statictext=true, + x=24, + y=7 + } + }, + DTSUPLD={ + { + alignment="RGHT", + cdu_pages={ + "DTS" + }, + id="DTSUPLD", + index=0, + statictext=true, + x=24, + y=3 + } + }, + DTSUPLOAD={ + { + alignment="LFT", + cdu_pages={ + "NAV" + }, + id="DTSUPLOAD", + index=0, + statictext=true, + x=1, + y=9 + } + }, + DTS_LB={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_LB", + index=0, + statictext=true, + x=18, + y=3 + } + }, + DTS_SA={ + { + alignment="RGHT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_SA", + index=0, + statictext=false, + x=24, + y=3 + } + }, + DTS_ST0={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS_ST0", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTS_ST0", + index=1, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="DTS_ST0", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTS_ST0", + index=3, + statictext=false, + x=17, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTS_ST0", + index=4, + statictext=false, + x=23, + y=4 + } + }, + DTS_ST1={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS_ST1", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTS_ST1", + index=1, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="DTS_ST1", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTS_ST1", + index=3, + statictext=false, + x=17, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTS_ST1", + index=4, + statictext=false, + x=23, + y=4 + } + }, + DTS_ST2={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS_ST2", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTS_ST2", + index=1, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="DTS_ST2", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTS_ST2", + index=3, + statictext=false, + x=17, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTS_ST2", + index=4, + statictext=false, + x=23, + y=4 + } + }, + DTS_ST3={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS_ST3", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="DTS_ST3", + index=1, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="DTS_ST3", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTS_ST3", + index=3, + statictext=false, + x=17, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTS_ST3", + index=4, + statictext=false, + x=23, + y=4 + } + }, + DTS_ST4={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="DTS_ST4", + index=0, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="DTS_ST4", + index=1, + statictext=false, + x=17, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="DTS_ST4", + index=2, + statictext=false, + x=23, + y=4 + } + }, + DTS_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_STATUS0", + index=0, + statictext=false, + x=22, + y=3 + } + }, + DTS_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_STATUS1", + index=0, + statictext=false, + x=22, + y=3 + } + }, + DTS_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_STATUS2", + index=0, + statictext=false, + x=22, + y=3 + } + }, + DTS_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="DTS_STATUS3", + index=0, + statictext=false, + x=22, + y=3 + } + }, + DTTG={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="DTTG", + index=0, + statictext=true, + x=1, + y=7 + } + }, + DUR={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="DUR", + index=0, + statictext=true, + x=1, + y=7 + } + }, + DUR_VALS={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="DUR_VALS", + index=0, + statictext=true, + x=9, + y=7 + } + }, + EEPROM={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="EEPROM", + index=0, + statictext=false, + x=1, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="EEPROM", + index=1, + statictext=true, + x=1, + y=5 + } + }, + EGI={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGI", + index=0, + statictext=true, + x=1, + y=3 + } + }, + EGIAvailableMode={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="EGIAvailableMode", + index=0, + statictext=false, + x=24, + y=3 + } + }, + EGIAvailableMode1={ + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="EGIAvailableMode1", + index=0, + statictext=false, + x=24, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "ALTALGN" + }, + id="EGIAvailableMode1", + index=1, + statictext=false, + x=24, + y=7 + } + }, + EGIAvailableMode2={ + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="EGIAvailableMode2", + index=0, + statictext=false, + x=24, + y=7 + } + }, + EGICurrentMode={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="EGICurrentMode", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="EGICurrentMode", + index=1, + statictext=false, + x=17, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "ALTALGN" + }, + id="EGICurrentMode", + index=2, + statictext=false, + x=19, + y=3 + } + }, + EGICurrentMode1={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="EGICurrentMode1", + index=0, + statictext=false, + x=5, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="EGICurrentMode1", + index=1, + statictext=false, + x=18, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "ALTALGN" + }, + id="EGICurrentMode1", + index=2, + statictext=false, + x=20, + y=7 + } + }, + EGICurrentMode2={ + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="EGICurrentMode2", + index=0, + statictext=false, + x=20, + y=7 + } + }, + EGIStatus={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGIStatus", + index=1, + statictext=false, + x=20, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus", + index=2, + statictext=false, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="EGIStatus", + index=3, + statictext=false, + x=8, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus", + index=4, + statictext=false, + x=11, + y=3 + } + }, + EGIStatus1={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus1", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGIStatus1", + index=1, + statictext=false, + x=20, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus1", + index=2, + statictext=false, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="EGIStatus1", + index=3, + statictext=false, + x=8, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus1", + index=4, + statictext=false, + x=11, + y=3 + } + }, + EGIStatus10={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus10", + index=0, + statictext=false, + x=22, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus10", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus10", + index=2, + statictext=false, + x=11, + y=5 + } + }, + EGIStatus11={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus11", + index=0, + statictext=false, + x=22, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus11", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus11", + index=2, + statictext=false, + x=11, + y=5 + } + }, + EGIStatus12={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus12", + index=0, + statictext=false, + x=22, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus12", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus12", + index=2, + statictext=false, + x=11, + y=5 + } + }, + EGIStatus13={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus13", + index=0, + statictext=false, + x=22, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus13", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus13", + index=2, + statictext=false, + x=11, + y=5 + } + }, + EGIStatus14={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus14", + index=0, + statictext=false, + x=22, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus14", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus14", + index=2, + statictext=false, + x=11, + y=5 + } + }, + EGIStatus15={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus15", + index=0, + statictext=false, + x=17, + y=5 + } + }, + EGIStatus16={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus16", + index=0, + statictext=false, + x=17, + y=5 + } + }, + EGIStatus2={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus2", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGIStatus2", + index=1, + statictext=false, + x=20, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus2", + index=2, + statictext=false, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="EGIStatus2", + index=3, + statictext=false, + x=8, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus2", + index=4, + statictext=false, + x=11, + y=3 + } + }, + EGIStatus3={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus3", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGIStatus3", + index=1, + statictext=false, + x=20, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus3", + index=2, + statictext=false, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="EGIStatus3", + index=3, + statictext=false, + x=8, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus3", + index=4, + statictext=false, + x=11, + y=3 + } + }, + EGIStatus4={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus4", + index=0, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGIStatus4", + index=1, + statictext=false, + x=20, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus4", + index=2, + statictext=false, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="EGIStatus4", + index=3, + statictext=false, + x=8, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus4", + index=4, + statictext=false, + x=11, + y=3 + } + }, + EGIStatus5={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus5", + index=0, + statictext=false, + x=14, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus5", + index=1, + statictext=false, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus5", + index=2, + statictext=false, + x=11, + y=4 + } + }, + EGIStatus6={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus6", + index=0, + statictext=false, + x=14, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus6", + index=1, + statictext=false, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus6", + index=2, + statictext=false, + x=11, + y=4 + } + }, + EGIStatus7={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus7", + index=0, + statictext=false, + x=14, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus7", + index=1, + statictext=false, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus7", + index=2, + statictext=false, + x=11, + y=4 + } + }, + EGIStatus8={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus8", + index=0, + statictext=false, + x=14, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus8", + index=1, + statictext=false, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus8", + index=2, + statictext=false, + x=11, + y=4 + } + }, + EGIStatus9={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGIStatus9", + index=0, + statictext=false, + x=14, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="EGIStatus9", + index=1, + statictext=false, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="EGIStatus9", + index=2, + statictext=false, + x=11, + y=4 + } + }, + EGITEST={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="EGITEST", + index=0, + statictext=true, + x=1, + y=3 + } + }, + EGI_BLD_FOM={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM1={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM1", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM2={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM2", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM3={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM3", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM4={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM4", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM5={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM5", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM6={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM6", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM7={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM7", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM8={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM8", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_BLD_FOM9={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_BLD_FOM9", + index=0, + statictext=false, + x=22, + y=8 + } + }, + EGI_GPS_EHE={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_EHE", + index=0, + statictext=false, + x=15, + y=4 + } + }, + EGI_GPS_EHE1={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_EHE1", + index=0, + statictext=false, + x=15, + y=4 + } + }, + EGI_GPS_EVE={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_EVE", + index=0, + statictext=false, + x=15, + y=5 + } + }, + EGI_GPS_EVE1={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_EVE1", + index=0, + statictext=false, + x=15, + y=5 + } + }, + EGI_GPS_FOM={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM1={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM1", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM1", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM2={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM2", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM2", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM3={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM3", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM3", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM4={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM4", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM4", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM5={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM5", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM5", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM6={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM6", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM6", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM7={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM7", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM7", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM8={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM8", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM8", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_FOM9={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_GPS_FOM9", + index=0, + statictext=false, + x=14, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_FOM9", + index=1, + statictext=false, + x=15, + y=3 + } + }, + EGI_GPS_ST3={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_ST3", + index=0, + statictext=false, + x=15, + y=7 + } + }, + EGI_GPS_ST31={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_ST31", + index=0, + statictext=false, + x=15, + y=7 + } + }, + EGI_GPS_ST5={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_ST5", + index=0, + statictext=false, + x=15, + y=6 + } + }, + EGI_GPS_ST51={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="EGI_GPS_ST51", + index=0, + statictext=false, + x=15, + y=6 + } + }, + EGI_INS_FOM={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM1={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM1", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM2={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM2", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM3={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM3", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM4={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM4", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM5={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM5", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM6={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM6", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM7={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM7", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM8={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM8", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_INS_FOM9={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="EGI_INS_FOM9", + index=0, + statictext=false, + x=6, + y=8 + } + }, + EGI_OFP={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGI_OFP", + index=0, + statictext=true, + x=2, + y=7 + } + }, + EGI_SA={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="EGI_SA", + index=0, + statictext=false, + x=1, + y=7 + } + }, + EHE={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="EHE", + index=0, + statictext=true, + x=8, + y=4 + } + }, + EL={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="EL", + index=0, + statictext=true, + x=2, + y=5 + } + }, + ELEVATION={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="ELEVATION", + index=0, + statictext=true, + x=16, + y=4 + } + }, + EMPTY={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="EMPTY", + index=0, + statictext=true, + x=3, + y=5 + } + }, + ERASE={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="ERASE", + index=0, + statictext=true, + x=2, + y=7 + } + }, + ERASEFL={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="ERASEFL", + index=0, + statictext=true, + x=13, + y=4 + } + }, + ERASEFs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="ERASEFs", + index=0, + statictext=false, + x=23, + y=4 + } + }, + ERASEFs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="ERASEFs1", + index=0, + statictext=false, + x=23, + y=4 + } + }, + ERASE_SA={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="ERASE_SA", + index=0, + statictext=false, + x=1, + y=7 + } + }, + EVE={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="EVE", + index=0, + statictext=true, + x=8, + y=5 + } + }, + EX={ + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="EX", + index=0, + statictext=true, + x=2, + y=7 + } + }, + EstimatedDrift={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="EstimatedDrift", + index=0, + statictext=false, + x=13, + y=8 + } + }, + F={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="F", + index=0, + statictext=false, + x=23, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="F", + index=1, + statictext=true, + x=5, + y=4 + } + }, + FAST={ + { + alignment="RGHT", + cdu_pages={ + "ALTALGN" + }, + id="FAST", + index=0, + statictext=true, + x=23, + y=3 + } + }, + FAULT={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="FAULT", + index=0, + statictext=true, + x=2, + y=3 + } + }, + FAUL_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="FAUL_STATUS0", + index=0, + statictext=false, + x=8, + y=3 + } + }, + FAUL_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="FAUL_STATUS1", + index=0, + statictext=false, + x=8, + y=3 + } + }, + FLDINFO={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT2" + }, + id="FLDINFO", + index=0, + statictext=false, + x=23, + y=3 + } + }, + FLDINFO_APP_UHF={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_APP_UHF", + index=0, + statictext=false, + x=7, + y=9 + } + }, + FLDINFO_APP_VHF={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_APP_VHF", + index=0, + statictext=false, + x=15, + y=9 + } + }, + FLDINFO_BR={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT2" + }, + id="FLDINFO_BR", + index=0, + statictext=false, + x=24, + y=3 + } + }, + FLDINFO_ELEV={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_ELEV", + index=0, + statictext=false, + x=21, + y=4 + } + }, + FLDINFO_ID={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_ID", + index=0, + statictext=false, + x=2, + y=3 + } + }, + FLDINFO_ILS1={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_ILS1", + index=0, + statictext=false, + x=7, + y=7 + } + }, + FLDINFO_ILS2={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_ILS2", + index=0, + statictext=false, + x=15, + y=7 + } + }, + FLDINFO_NUM={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_NUM", + index=0, + statictext=false, + x=16, + y=3 + } + }, + FLDINFO_Name={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_Name", + index=0, + statictext=false, + x=2, + y=4 + } + }, + FLDINFO_RWY_HD={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_RWY_HD", + index=0, + statictext=false, + x=7, + y=6 + } + }, + FLDINFO_RWY_HD2={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_RWY_HD2", + index=0, + statictext=false, + x=15, + y=6 + } + }, + FLDINFO_RWY_LNG={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_RWY_LNG", + index=0, + statictext=false, + x=19, + y=6 + } + }, + FLDINFO_TAC_CHAN={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_TAC_CHAN", + index=0, + statictext=false, + x=7, + y=8 + } + }, + FLDINFO_TAC_OFF={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_TAC_OFF", + index=0, + statictext=false, + x=11, + y=8 + } + }, + FLDINFO_TWR_UHF={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_TWR_UHF", + index=0, + statictext=false, + x=7, + y=10 + } + }, + FLDINFO_TWR_VHF={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="FLDINFO_TWR_VHF", + index=0, + statictext=false, + x=15, + y=10 + } + }, + ["FLIGHT DRIVER"]={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FLIGHT DRIVER", + index=0, + statictext=true, + x=5, + y=4 + } + }, + FLIGHT_DRIVER={ + { + alignment="RGHT", + cdu_pages={ + "NAV", + "POS" + }, + id="FLIGHT_DRIVER", + index=0, + statictext=false, + x=23, + y=3 + } + }, + FLIGHT_DRIVER1={ + { + alignment="RGHT", + cdu_pages={ + "NAV", + "POS" + }, + id="FLIGHT_DRIVER1", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FLIGHT_DRIVER1", + index=1, + statictext=false, + x=6, + y=5 + } + }, + FLIGHT_DRIVER2={ + { + alignment="RGHT", + cdu_pages={ + "NAV", + "POS" + }, + id="FLIGHT_DRIVER2", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FLIGHT_DRIVER2", + index=1, + statictext=false, + x=6, + y=5 + } + }, + FLIGHT_DRIVER3={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FLIGHT_DRIVER3", + index=0, + statictext=false, + x=6, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "POS" + }, + id="FLIGHT_DRIVER3", + index=1, + statictext=false, + x=23, + y=3 + } + }, + FLIGHT_DRIVER4={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FLIGHT_DRIVER4", + index=0, + statictext=false, + x=6, + y=5 + } + }, + FLTR_INS={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="FLTR_INS", + index=0, + statictext=true, + x=2, + y=9 + } + }, + FLTR_INSs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="FLTR_INSs", + index=0, + statictext=false, + x=11, + y=9 + } + }, + FLTR_INSs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="FLTR_INSs1", + index=0, + statictext=false, + x=11, + y=9 + } + }, + FOM={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FOM", + index=0, + statictext=true, + x=11, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="FOM", + index=1, + statictext=true, + x=8, + y=3 + } + }, + FOM_LINE={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="FOM_LINE", + index=0, + statictext=true, + x=2, + y=8 + } + }, + FPAction={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPAction", + index=0, + statictext=false, + x=1, + y=3 + } + }, + FPAction1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPAction1", + index=0, + statictext=false, + x=1, + y=5 + } + }, + FPAction2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPAction2", + index=0, + statictext=false, + x=1, + y=7 + } + }, + FPBUILDBranch={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPBUILDBranch", + index=0, + statictext=false, + x=24, + y=3 + } + }, + FPBUILDBranch1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPBUILDBranch1", + index=0, + statictext=false, + x=24, + y=5 + } + }, + FPBUILDBranch2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPBUILDBranch2", + index=0, + statictext=false, + x=24, + y=7 + } + }, + FPMENUPageNumber={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="FPMENUPageNumber", + index=0, + statictext=false, + x=20, + y=10 + } + }, + FPBUILDPageNumber={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="FPMENUPageNumber", + index=0, + statictext=false, + x=20, + y=10 + } + }, + FPBUILDPlanName={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="FPBUILDPlanName", + index=0, + statictext=false, + x=5, + y=3 + } + }, + FPBUILDPlanNumber={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="FPBUILDPlanNumber", + index=0, + statictext=false, + x=6, + y=4 + } + }, + FPMode={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode", + index=0, + statictext=false, + x=5, + y=3 + } + }, + FPMode1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode1", + index=0, + statictext=false, + x=5, + y=3 + } + }, + FPMode2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode2", + index=0, + statictext=false, + x=5, + y=5 + } + }, + FPMode3={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode3", + index=0, + statictext=false, + x=5, + y=5 + } + }, + FPMode4={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode4", + index=0, + statictext=false, + x=5, + y=7 + } + }, + FPMode5={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPMode5", + index=0, + statictext=false, + x=5, + y=7 + } + }, + FPName={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPName", + index=0, + statictext=false, + x=11, + y=3 + } + }, + FPName1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPName1", + index=0, + statictext=false, + x=11, + y=5 + } + }, + FPName2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPName2", + index=0, + statictext=false, + x=11, + y=7 + } + }, + FPNameInput={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPNameInput", + index=0, + statictext=false, + x=1, + y=9 + } + }, + FPNumber={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPNumber", + index=0, + statictext=false, + x=2, + y=3 + } + }, + FPNumber1={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPNumber1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + FPNumber2={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FPNumber2", + index=0, + statictext=false, + x=2, + y=7 + } + }, + FPP={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="FPP", + index=0, + statictext=false, + x=1, + y=6 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="FPP", + index=1, + statictext=true, + x=1, + y=6 + } + }, + FROM_CF_RTRY={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_CF_RTRY", + index=0, + statictext=true, + x=24, + y=3 + } + }, + FROM_CoordFormat0={ + { + alignment="RGHT", + cdu_pages={ + "FROM" + }, + id="FROM_CoordFormat0", + index=0, + statictext=false, + x=23, + y=3 + } + }, + FROM_CoordFormat1={ + { + alignment="RGHT", + cdu_pages={ + "FROM" + }, + id="FROM_CoordFormat1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + FROM_DataEntry0={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_DataEntry0", + index=0, + statictext=false, + x=1, + y=3 + } + }, + FROM_DataEntry1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_DataEntry1", + index=0, + statictext=false, + x=1, + y=5 + } + }, + FROM_Lat={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_Lat", + index=0, + statictext=false, + x=2, + y=7 + } + }, + FROM_Lat1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_Lat1", + index=0, + statictext=false, + x=2, + y=7 + } + }, + FROM_Long={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_Long", + index=0, + statictext=false, + x=2, + y=9 + } + }, + FROM_Long1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_Long1", + index=0, + statictext=false, + x=2, + y=9 + } + }, + FROM_NUMBER={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="FROM_NUMBER", + index=0, + statictext=false, + x=20, + y=2 + } + }, + FROM_PT={ + { + alignment="RGHT", + cdu_pages={ + "WPMENU" + }, + id="FROM_PT", + index=0, + statictext=true, + x=24, + y=5 + } + }, + FROM_PointArea={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_PointArea", + index=0, + statictext=false, + x=2, + y=9 + } + }, + FROM_PointArea1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_PointArea1", + index=0, + statictext=false, + x=2, + y=9 + } + }, + FROM_PointGrid={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_PointGrid", + index=0, + statictext=false, + x=2, + y=7 + } + }, + FROM_PointGrid1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_PointGrid1", + index=0, + statictext=false, + x=2, + y=7 + } + }, + FROM_TITLE={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="FROM_TITLE", + index=0, + statictext=false, + x=15, + y=2 + } + }, + FROM_WptIdent={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_WptIdent", + index=0, + statictext=false, + x=2, + y=5 + } + }, + FROM_WptIdent1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_WptIdent1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + FROM_WptNumber={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_WptNumber", + index=0, + statictext=false, + x=2, + y=3 + } + }, + FROM_WptNumber1={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="FROM_WptNumber1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + FT_BRACKETS={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="FT_BRACKETS", + index=0, + statictext=false, + x=24, + y=9 + } + }, + FT_TXT={ + { + alignment="RGHT", + cdu_pages={ + "DTSAS" + }, + id="FT_TXT", + index=0, + statictext=true, + x=23, + y=9 + } + }, + FULLText={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="FULLText", + index=0, + statictext=false, + x=10, + y=9 + } + }, + FWI={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT2", + "GPSBIT3", + "GPSBIT4" + }, + id="FWI", + index=0, + statictext=true, + x=2, + y=3 + } + }, + GC={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="GC", + index=0, + statictext=true, + x=2, + y=8 + } + }, + GC1={ + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1" + }, + id="GC1", + index=0, + statictext=true, + x=24, + y=8 + } + }, + GCAS_LAST_SOURCE={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="GCAS_LAST_SOURCE", + index=0, + statictext=false, + x=2, + y=9 + } + }, + GCAS_MSGS={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="GCAS_MSGS", + index=0, + statictext=true, + x=2, + y=9 + } + }, + GCAS_MSGS1={ + { + alignment="RGHT", + cdu_pages={ + "LASTE" + }, + id="GCAS_MSGS1", + index=0, + statictext=false, + x=16, + y=9 + } + }, + GEM_OFP={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GEM_OFP", + index=0, + statictext=true, + x=2, + y=9 + } + }, + GEM_SA={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GEM_SA", + index=0, + statictext=false, + x=1, + y=9 + } + }, + GMT_DE={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="GMT_DE", + index=0, + statictext=false, + x=24, + y=9 + } + }, + GMT_LCL1={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="GMT_LCL1", + index=0, + statictext=false, + x=12, + y=9 + } + }, + GMT_LCL2={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="GMT_LCL2", + index=0, + statictext=false, + x=12, + y=9 + } + }, + GMT_LCL_Time={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="GMT_LCL_Time", + index=0, + statictext=false, + x=16, + y=9 + } + }, + GPS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPS", + index=0, + statictext=true, + x=15, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="GPS", + index=1, + statictext=true, + x=1, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "GPSBIT1", + "GPSBIT2", + "GPSBIT3", + "GPSKEYS", + "GPSSTAT2" + }, + id="GPS", + index=2, + statictext=true, + x=24, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5" + }, + id="GPS", + index=3, + statictext=true, + x=1, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPS", + index=4, + statictext=true, + x=14, + y=3 + } + }, + GPS1={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="GPS1", + index=0, + statictext=false, + x=1, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "GPSBIT4", + "GPSBIT5", + "GPSSTAT1" + }, + id="GPS1", + index=1, + statictext=true, + x=24, + y=9 + } + }, + GPS2={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="GPS2", + index=0, + statictext=true, + x=2, + y=5 + } + }, + GPSAltitude={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="GPSAltitude", + index=0, + statictext=false, + x=8, + y=9 + } + }, + GPSAltitude1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="GPSAltitude1", + index=0, + statictext=false, + x=8, + y=9 + } + }, + GPSAltitude2={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="GPSAltitude2", + index=0, + statictext=false, + x=8, + y=9 + } + }, + GPSAltitude3={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="GPSAltitude3", + index=0, + statictext=false, + x=8, + y=9 + } + }, + GPSAltitude4={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="GPSAltitude4", + index=0, + statictext=false, + x=8, + y=9 + } + }, + GPSBIT={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="GPSBIT", + index=0, + statictext=true, + x=24, + y=5 + } + }, + GPSKEYS={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="GPSKEYS", + index=0, + statictext=true, + x=24, + y=9 + } + }, + GPSSTAT={ + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="GPSSTAT", + index=0, + statictext=true, + x=24, + y=3 + } + }, + GPSStatus={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPSStatus", + index=0, + statictext=false, + x=20, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPSStatus", + index=1, + statictext=false, + x=23, + y=3 + } + }, + GPSStatus1={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPSStatus1", + index=0, + statictext=false, + x=20, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPSStatus1", + index=1, + statictext=false, + x=23, + y=3 + } + }, + GPSStatus2={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPSStatus2", + index=0, + statictext=false, + x=20, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPSStatus2", + index=1, + statictext=false, + x=23, + y=3 + } + }, + GPSStatus3={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPSStatus3", + index=0, + statictext=false, + x=20, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPSStatus3", + index=1, + statictext=false, + x=23, + y=3 + } + }, + GPSStatus4={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPSStatus4", + index=0, + statictext=false, + x=20, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GPSStatus4", + index=1, + statictext=false, + x=23, + y=3 + } + }, + GPS_SA={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_SA", + index=0, + statictext=true, + x=2, + y=3 + } + }, + GPS_SA1={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_SA1", + index=0, + statictext=false, + x=1, + y=3 + } + }, + GPS_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="GPS_STATUS", + index=0, + statictext=true, + x=20, + y=3 + } + }, + GPS_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_STATUS0", + index=0, + statictext=false, + x=6, + y=3 + } + }, + GPS_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_STATUS1", + index=0, + statictext=false, + x=6, + y=3 + } + }, + GPS_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_STATUS2", + index=0, + statictext=false, + x=6, + y=3 + } + }, + GPS_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="GPS_STATUS3", + index=0, + statictext=false, + x=6, + y=3 + } + }, + GROUND={ + { + alignment="RGHT", + cdu_pages={ + "ALIGN" + }, + id="GROUND", + index=0, + statictext=true, + x=23, + y=3 + } + }, + GUK_USER={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GUK_USER", + index=0, + statictext=true, + x=14, + y=6 + } + }, + GUK_USERs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GUK_USERs", + index=0, + statictext=false, + x=23, + y=6 + } + }, + GUK_USERs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="GUK_USERs1", + index=0, + statictext=false, + x=23, + y=6 + } + }, + G_ALT={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="G_ALT", + index=0, + statictext=true, + x=2, + y=9 + } + }, + HARS={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="HARS", + index=0, + statictext=true, + x=18, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="HARS", + index=1, + statictext=true, + x=18, + y=4 + }, + { + alignment="RGHT", + cdu_pages={ + "SYS1" + }, + id="HARS", + index=2, + statictext=true, + x=24, + y=5 + } + }, + HARS_I_F={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="HARS_I_F", + index=0, + statictext=false, + x=13, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="HARS_I_F", + index=1, + statictext=true, + x=13, + y=3 + } + }, + HARS_ST2={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="HARS_ST2", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="HARS_ST2", + index=1, + statictext=false, + x=23, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="HARS_ST2", + index=2, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="HARS_ST2", + index=3, + statictext=false, + x=11, + y=7 + } + }, + HARS_ST3={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="HARS_ST3", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="HARS_ST3", + index=1, + statictext=false, + x=23, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="HARS_ST3", + index=2, + statictext=false, + x=23, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="HARS_ST3", + index=3, + statictext=false, + x=11, + y=7 + } + }, + HAS_KEYS={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="HAS_KEYS", + index=0, + statictext=true, + x=13, + y=5 + } + }, + HAS_KEYSs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="HAS_KEYSs", + index=0, + statictext=false, + x=23, + y=5 + } + }, + HAS_KEYSs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="HAS_KEYSs1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + HPU={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="HPU", + index=0, + statictext=true, + x=2, + y=7 + } + }, + HUD_ATT={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="HUD_ATT", + index=0, + statictext=true, + x=10, + y=5 + } + }, + HUD_ATT1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="HUD_ATT1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + HUD_ATT2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="HUD_ATT2", + index=0, + statictext=false, + x=23, + y=5 + } + }, + HUD_IND={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="HUD_IND", + index=0, + statictext=true, + x=1, + y=9 + } + }, + HUD_OFF={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="HUD_OFF", + index=0, + statictext=false, + x=6, + y=9 + } + }, + HUD_ON={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="HUD_ON", + index=0, + statictext=false, + x=6, + y=9 + } + }, + IAS={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="IAS", + index=0, + statictext=true, + x=2, + y=8 + } + }, + IAS_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="IAS_ST", + index=0, + statictext=false, + x=21, + y=8 + } + }, + IAS_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="IAS_ST1", + index=0, + statictext=false, + x=21, + y=8 + } + }, + IAS_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="IAS_VAL", + index=0, + statictext=false, + x=16, + y=8 + } + }, + IE={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="IE", + index=0, + statictext=true, + x=15, + y=4 + } + }, + IE_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="IE_STATUS", + index=0, + statictext=true, + x=20, + y=4 + } + }, + IIW={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT5" + }, + id="IIW", + index=0, + statictext=true, + x=2, + y=3 + } + }, + ILS={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="ILS", + index=0, + statictext=true, + x=2, + y=7 + } + }, + ILS1={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="ILS1", + index=0, + statictext=true, + x=2, + y=10 + } + }, + INCR={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="INCR", + index=0, + statictext=true, + x=2, + y=3 + } + }, + INFLT={ + { + alignment="RGHT", + cdu_pages={ + "ALIGN" + }, + id="INFLT", + index=0, + statictext=true, + x=23, + y=5 + } + }, + INIT={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="INIT", + index=0, + statictext=true, + x=1, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="INIT", + index=1, + statictext=true, + x=2, + y=6 + } + }, + INITWAYPTIdent1={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="INITWAYPTIdent1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + INITWAYPTIdent2={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="INITWAYPTIdent2", + index=0, + statictext=false, + x=2, + y=5 + } + }, + INITWAYPTNumber1={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="INITWAYPTNumber1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + INITWAYPTNumber2={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="INITWAYPTNumber2", + index=0, + statictext=false, + x=2, + y=3 + } + }, + INITWAYPT_INCR_DECR={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="INITWAYPT_INCR_DECR", + index=0, + statictext=true, + x=1, + y=3 + } + }, + INIT_REQ={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="INIT_REQ", + index=0, + statictext=true, + x=2, + y=6 + } + }, + INIT_REQs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="INIT_REQs", + index=0, + statictext=false, + x=11, + y=6 + } + }, + INIT_REQs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="INIT_REQs1", + index=0, + statictext=false, + x=11, + y=6 + } + }, + INS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="INS", + index=0, + statictext=true, + x=1, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="INS", + index=1, + statictext=true, + x=24, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS", + index=2, + statictext=true, + x=1, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="INS", + index=3, + statictext=false, + x=24, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS", + index=4, + statictext=true, + x=2, + y=5 + } + }, + INS1={ + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="INS1", + index=0, + statictext=false, + x=24, + y=7 + } + }, + INS2={ + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="INS2", + index=0, + statictext=false, + x=24, + y=7 + } + }, + INSERT={ + { + alignment="RGHT", + cdu_pages={ + "FPBUILD" + }, + id="INSERT", + index=0, + statictext=true, + x=23, + y=3 + } + }, + INSERTDisplay={ + { + alignment="RGHT", + cdu_pages={ + "FPBUILD" + }, + id="INSERTDisplay", + index=0, + statictext=false, + x=24, + y=3 + } + }, + INSSTAT={ + { + alignment="RGHT", + cdu_pages={ + "INS" + }, + id="INSSTAT", + index=0, + statictext=true, + x=24, + y=3 + } + }, + INS_SA={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS_SA", + index=0, + statictext=false, + x=1, + y=5 + } + }, + INS_ST={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST", + index=0, + statictext=true, + x=19, + y=3 + } + }, + INS_ST1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + INS_ST2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + INS_ST3={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST3", + index=0, + statictext=false, + x=23, + y=3 + } + }, + INS_ST4={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST4", + index=0, + statictext=false, + x=23, + y=3 + } + }, + INS_ST5={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="INS_ST5", + index=0, + statictext=false, + x=23, + y=3 + } + }, + INS_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS_STATUS0", + index=0, + statictext=false, + x=6, + y=5 + } + }, + INS_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS_STATUS1", + index=0, + statictext=false, + x=6, + y=5 + } + }, + INS_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS_STATUS2", + index=0, + statictext=false, + x=6, + y=5 + } + }, + INS_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="INS_STATUS3", + index=0, + statictext=false, + x=6, + y=5 + } + }, + INVALID={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="INVALID", + index=0, + statictext=true, + x=2, + y=3 + } + }, + INVALID_ST0={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="INVALID_ST0", + index=0, + statictext=false, + x=10, + y=3 + } + }, + INVALID_ST1={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="INVALID_ST1", + index=0, + statictext=false, + x=10, + y=3 + } + }, + IN_FP={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="IN_FP", + index=0, + statictext=true, + x=19, + y=3 + } + }, + ISA={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="ISA", + index=0, + statictext=true, + x=2, + y=4 + } + }, + ISA_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="ISA_STATUS", + index=0, + statictext=true, + x=10, + y=4 + } + }, + I_F_1553={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="I_F_1553", + index=0, + statictext=false, + x=13, + y=5 + } + }, + InitInputLatUTM={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitInputLatUTM", + index=0, + statictext=false, + x=1, + y=7 + } + }, + InitInputLongMGRS={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitInputLongMGRS", + index=0, + statictext=false, + x=1, + y=9 + } + }, + InitPosCoordFormat_LL={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPosCoordFormat_LL", + index=0, + statictext=false, + x=1, + y=5 + } + }, + InitPosCoordFormat_UTM={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPosCoordFormat_UTM", + index=0, + statictext=false, + x=1, + y=5 + } + }, + InitPositLat={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPositLat", + index=0, + statictext=false, + x=2, + y=7 + } + }, + InitPositLong={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPositLong", + index=0, + statictext=false, + x=2, + y=9 + } + }, + InitPositMGRS={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPositMGRS", + index=0, + statictext=false, + x=2, + y=9 + } + }, + InitPositText={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPositText", + index=0, + statictext=false, + x=2, + y=6 + } + }, + InitPositUTM={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="InitPositUTM", + index=0, + statictext=false, + x=2, + y=7 + } + }, + KEYLOAD={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="KEYLOAD", + index=0, + statictext=true, + x=2, + y=8 + } + }, + KEY_2HR={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_2HR", + index=0, + statictext=true, + x=14, + y=8 + } + }, + KEY_DUR={ + { + alignment="RGHT", + cdu_pages={ + "GPSKEYS" + }, + id="KEY_DUR", + index=0, + statictext=false, + x=8, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "GPSSTAT2" + }, + id="KEY_DUR", + index=1, + statictext=false, + x=12, + y=7 + } + }, + KEY_PAR={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_PAR", + index=0, + statictext=true, + x=14, + y=7 + } + }, + KEY_PARs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_PARs", + index=0, + statictext=false, + x=23, + y=7 + } + }, + KEY_PARs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_PARs1", + index=0, + statictext=false, + x=23, + y=7 + } + }, + KEY_PARs2={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_PARs2", + index=0, + statictext=false, + x=23, + y=8 + } + }, + KEY_PARs3={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_PARs3", + index=0, + statictext=false, + x=23, + y=8 + } + }, + KEY_REM={ + { + alignment="RGHT", + cdu_pages={ + "GPSKEYS" + }, + id="KEY_REM", + index=0, + statictext=false, + x=11, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "GPSSTAT2" + }, + id="KEY_REM", + index=1, + statictext=false, + x=16, + y=7 + } + }, + KEY_USED={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_USED", + index=0, + statictext=true, + x=14, + y=5 + } + }, + KEY_USEDs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_USEDs", + index=0, + statictext=false, + x=23, + y=5 + } + }, + KEY_USEDs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_USEDs1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + KEY_USEDs2={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_USEDs2", + index=0, + statictext=false, + x=23, + y=5 + } + }, + KEY_USEDs3={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="KEY_USEDs3", + index=0, + statictext=false, + x=23, + y=5 + } + }, + KLDs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="KLDs", + index=0, + statictext=false, + x=17, + y=8 + } + }, + KLDs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="KLDs1", + index=0, + statictext=false, + x=17, + y=8 + } + }, + KYK={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="KYK", + index=0, + statictext=true, + x=2, + y=3 + } + }, + L4={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT2", + "GPSBIT3" + }, + id="L4", + index=0, + statictext=true, + x=2, + y=4 + } + }, + L5={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT2", + "GPSBIT3" + }, + id="L5", + index=0, + statictext=true, + x=2, + y=5 + } + }, + LAR={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="LAR", + index=0, + statictext=true, + x=17, + y=6 + } + }, + LAR_VALUE={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="LAR_VALUE", + index=0, + statictext=false, + x=23, + y=6 + } + }, + LAR_VALUE1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="LAR_VALUE1", + index=0, + statictext=false, + x=23, + y=6 + } + }, + LAR_VALUE2={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="LAR_VALUE2", + index=0, + statictext=false, + x=23, + y=6 + } + }, + LASTE={ + { + alignment="RGHT", + cdu_pages={ + "SYS1" + }, + id="LASTE", + index=0, + statictext=true, + x=24, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="LASTE", + index=1, + statictext=true, + x=24, + y=9 + } + }, + LASTE_ST0={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="LASTE_ST0", + index=0, + statictext=false, + x=15, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LASTE_ST0", + index=1, + statictext=false, + x=11, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="LASTE_ST0", + index=2, + statictext=false, + x=23, + y=3 + } + }, + LASTE_ST1={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="LASTE_ST1", + index=0, + statictext=false, + x=15, + y=7 + } + }, + LASTE_ST2={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LASTE_ST2", + index=0, + statictext=false, + x=11, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="LASTE_ST2", + index=1, + statictext=false, + x=23, + y=3 + } + }, + LASTE_V={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="LASTE_V", + index=0, + statictext=true, + x=17, + y=3 + } + }, + LCL_ADJUST={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="LCL_ADJUST", + index=0, + statictext=true, + x=1, + y=7 + } + }, + LCL_ADJUST_TXT={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="LCL_ADJUST_TXT", + index=0, + statictext=false, + x=2, + y=8 + } + }, + LINE7={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="LINE7", + index=0, + statictext=true, + x=2, + y=7 + } + }, + LINE9={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="LINE9", + index=0, + statictext=true, + x=2, + y=9 + } + }, + LOAD_PASS={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="LOAD_PASS", + index=0, + statictext=true, + x=11, + y=7 + } + }, + LRU1={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="LRU1", + index=0, + statictext=false, + x=1, + y=7 + } + }, + LRU2={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="LRU2", + index=0, + statictext=true, + x=2, + y=7 + } + }, + LRUTEST={ + { + alignment="RGHT", + cdu_pages={ + "CDUTEST1", + "EGITEST" + }, + id="LRUTEST", + index=0, + statictext=true, + x=24, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "SYS2" + }, + id="LRUTEST", + index=1, + statictext=true, + x=1, + y=5 + } + }, + LRU_CADC={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_CADC", + index=0, + statictext=false, + x=6, + y=6 + } + }, + LRU_CDU={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_CDU", + index=0, + statictext=false, + x=13, + y=3 + } + }, + LRU_DTS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_DTS", + index=0, + statictext=false, + x=13, + y=5 + } + }, + LRU_DTSAS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_DTSAS", + index=0, + statictext=false, + x=13, + y=6 + } + }, + LRU_GPS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_GPS", + index=0, + statictext=false, + x=7, + y=4 + } + }, + LRU_HARS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_HARS", + index=0, + statictext=false, + x=6, + y=7 + } + }, + LRU_INS={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_INS", + index=0, + statictext=false, + x=7, + y=3 + } + }, + LRU_LASTE={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_LASTE", + index=0, + statictext=false, + x=5, + y=8 + } + }, + LRU_MBC={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_MBC", + index=0, + statictext=false, + x=13, + y=4 + } + }, + LRU_MSN={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="LRU_MSN", + index=0, + statictext=false, + x=7, + y=5 + } + }, + MACH={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MACH", + index=0, + statictext=true, + x=18, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="MACH", + index=1, + statictext=true, + x=2, + y=7 + } + }, + MACH_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="MACH_ST", + index=0, + statictext=false, + x=21, + y=7 + } + }, + MACH_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="MACH_ST1", + index=0, + statictext=false, + x=21, + y=7 + } + }, + MACH_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="MACH_VAL", + index=0, + statictext=false, + x=16, + y=7 + } + }, + MAGH_ST2={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="MAGH_ST2", + index=0, + statictext=false, + x=19, + y=9 + } + }, + MAGH_ST3={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="MAGH_ST3", + index=0, + statictext=false, + x=19, + y=9 + } + }, + MAGH_VAL={ + { + alignment="RGHT", + cdu_pages={ + "HARS" + }, + id="MAGH_VAL", + index=0, + statictext=false, + x=16, + y=9 + } + }, + MAG_HEAD={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="MAG_HEAD", + index=0, + statictext=true, + x=2, + y=9 + } + }, + MBC={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="MBC", + index=0, + statictext=true, + x=18, + y=7 + } + }, + MBC1={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="MBC1", + index=0, + statictext=true, + x=23, + y=7 + } + }, + MBIT1={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT1", + index=0, + statictext=true, + x=2, + y=3 + } + }, + MBIT10={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT10", + index=0, + statictext=true, + x=14, + y=5 + } + }, + MBIT11={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT11", + index=0, + statictext=true, + x=14, + y=6 + } + }, + MBIT2={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT2", + index=0, + statictext=true, + x=2, + y=4 + } + }, + MBIT3={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT3", + index=0, + statictext=true, + x=2, + y=5 + } + }, + MBIT4={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT4", + index=0, + statictext=true, + x=2, + y=6 + } + }, + MBIT5={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT5", + index=0, + statictext=true, + x=2, + y=7 + } + }, + MBIT6={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT6", + index=0, + statictext=true, + x=2, + y=8 + } + }, + MBIT7={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT7", + index=0, + statictext=true, + x=2, + y=9 + } + }, + MBIT8={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT8", + index=0, + statictext=true, + x=14, + y=3 + } + }, + MBIT9={ + { + alignment="LFT", + cdu_pages={ + "EGI3" + }, + id="MBIT9", + index=0, + statictext=true, + x=14, + y=4 + } + }, + MH={ + { + alignment="RGHT", + cdu_pages={ + "ALTALGN" + }, + id="MH", + index=0, + statictext=true, + x=16, + y=5 + } + }, + MH1={ + { + alignment="RGHT", + cdu_pages={ + "ALTALGN" + }, + id="MH1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + MHD={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="MHD", + index=0, + statictext=true, + x=18, + y=7 + } + }, + MHD_ERR={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="MHD_ERR", + index=0, + statictext=false, + x=21, + y=7 + } + }, + MH_DE={ + { + alignment="LFT", + cdu_pages={ + "ALTALGN" + }, + id="MH_DE", + index=0, + statictext=false, + x=24, + y=5 + } + }, + MISC_ADDR={ + { + alignment="LFT", + cdu_pages={ + "INS" + }, + id="MISC_ADDR", + index=0, + statictext=true, + x=1, + y=9 + } + }, + MISSION={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="MISSION", + index=0, + statictext=true, + x=2, + y=4 + } + }, + MODE={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="MODE", + index=0, + statictext=true, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE", + index=1, + statictext=true, + x=2, + y=3 + } + }, + MODE0={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE0", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE1", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE2", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE3={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE3", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE4={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE4", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE5={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE5", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE6={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE6", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE7={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE7", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE8={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE8", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MODE9={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="MODE9", + index=0, + statictext=false, + x=8, + y=3 + } + }, + MONTH={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="MONTH", + index=0, + statictext=true, + x=16, + y=5 + } + }, + MONTH_DE={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="MONTH_DE", + index=0, + statictext=false, + x=24, + y=5 + } + }, + MONTH_TXT={ + { + alignment="RGHT", + cdu_pages={ + "TIME" + }, + id="MONTH_TXT", + index=0, + statictext=false, + x=23, + y=5 + } + }, + MSN={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="MSN", + index=0, + statictext=true, + x=15, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="MSN", + index=1, + statictext=true, + x=18, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN", + index=2, + statictext=false, + x=1, + y=7 + } + }, + MSN_DUR={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="MSN_DUR", + index=0, + statictext=true, + x=2, + y=7 + } + }, + MSN_SA={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN_SA", + index=0, + statictext=true, + x=2, + y=7 + } + }, + MSN_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="MSN_STATUS", + index=0, + statictext=true, + x=20, + y=5 + } + }, + MSN_STATUS0={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN_STATUS0", + index=0, + statictext=false, + x=6, + y=7 + } + }, + MSN_STATUS1={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN_STATUS1", + index=0, + statictext=false, + x=6, + y=7 + } + }, + MSN_STATUS2={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN_STATUS2", + index=0, + statictext=false, + x=6, + y=7 + } + }, + MSN_STATUS3={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="MSN_STATUS3", + index=0, + statictext=false, + x=6, + y=7 + } + }, + MV={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="MV", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="MV", + index=1, + statictext=false, + x=23, + y=5 + } + }, + MV1={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV1", + index=0, + statictext=false, + x=17, + y=5 + } + }, + MV2={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV2", + index=0, + statictext=false, + x=23, + y=5 + } + }, + MV3={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV3", + index=0, + statictext=false, + x=17, + y=5 + } + }, + MV4={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV4", + index=0, + statictext=false, + x=23, + y=5 + } + }, + MV5={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV5", + index=0, + statictext=false, + x=17, + y=5 + } + }, + MV6={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="MV6", + index=0, + statictext=false, + x=23, + y=5 + } + }, + MV_EQ={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="MV_EQ", + index=0, + statictext=false, + x=18, + y=5 + } + }, + MV_EQ1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="MV_EQ1", + index=0, + statictext=false, + x=18, + y=5 + } + }, + MV_EQ2={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="MV_EQ2", + index=0, + statictext=false, + x=18, + y=5 + } + }, + MXLOG={ + { + alignment="RGHT", + cdu_pages={ + "SYS2" + }, + id="MXLOG", + index=0, + statictext=true, + x=24, + y=9 + } + }, + MXOPT={ + { + alignment="RGHT", + cdu_pages={ + "MXLOG" + }, + id="MXOPT", + index=0, + statictext=true, + x=23, + y=7 + } + }, + Mach={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="Mach", + index=0, + statictext=false, + x=23, + y=4 + } + }, + NAV={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="NAV", + index=0, + statictext=true, + x=1, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="NAV", + index=1, + statictext=true, + x=23, + y=7 + } + }, + NAVMODEROTARY={ + { + alignment="RGHT", + cdu_pages={ + "NAV", + "POS" + }, + id="NAVMODEROTARY", + index=0, + statictext=true, + x=24, + y=3 + } + }, + NAV_DAT={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_DAT", + index=0, + statictext=true, + x=10, + y=6 + } + }, + NAV_DAT1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_DAT1", + index=0, + statictext=false, + x=23, + y=6 + } + }, + NAV_DAT2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_DAT2", + index=0, + statictext=false, + x=23, + y=6 + } + }, + NAV_DATA={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="NAV_DATA", + index=0, + statictext=true, + x=2, + y=4 + } + }, + NAV_DATAs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="NAV_DATAs", + index=0, + statictext=false, + x=11, + y=4 + } + }, + NAV_DATAs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="NAV_DATAs1", + index=0, + statictext=false, + x=11, + y=4 + } + }, + NAV_RDY={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_RDY", + index=0, + statictext=true, + x=10, + y=7 + } + }, + NAV_RDY1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_RDY1", + index=0, + statictext=false, + x=23, + y=7 + } + }, + NAV_RDY2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_RDY2", + index=0, + statictext=false, + x=23, + y=7 + } + }, + NAV_RDY3={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="NAV_RDY3", + index=0, + statictext=false, + x=23, + y=7 + } + }, + NEWFPNumber={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="NEWFPNumber", + index=0, + statictext=false, + x=2, + y=9 + } + }, + NEWFPText={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="NEWFPText", + index=0, + statictext=false, + x=10, + y=9 + } + }, + NEW_WAYPT_NUM={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET", + "WAYPT1" + }, + id="NEW_WAYPT_NUM", + index=0, + statictext=false, + x=23, + y=7 + } + }, + NM={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="NM", + index=0, + statictext=true, + x=2, + y=3 + } + }, + NMDisplay={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="NMDisplay", + index=0, + statictext=false, + x=1, + y=3 + } + }, + NMINPUT={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="NMINPUT", + index=0, + statictext=false, + x=1, + y=3 + } + }, + NOT_ATTEMPTED={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="NOT_ATTEMPTED", + index=0, + statictext=true, + x=11, + y=5 + } + }, + NS={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="NS", + index=0, + statictext=true, + x=2, + y=6 + } + }, + NS_ERR={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ" + }, + id="NS_ERR", + index=0, + statictext=false, + x=7, + y=6 + } + }, + NUM={ + { + alignment="LFT", + cdu_pages={ + "ANNUNCIATIONS" + }, + id="NUM", + index=0, + statictext=false, + x=1, + y=2 + } + }, + OAT={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="OAT", + index=0, + statictext=true, + x=15, + y=9 + } + }, + OF={ + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="OF", + index=0, + statictext=true, + x=2, + y=6 + } + }, + OFFSETDIV={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETDIV", + index=0, + statictext=true, + x=19, + y=6 + } + }, + OFFSETWAYPTCoordFormat1={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTCoordFormat1", + index=0, + statictext=false, + x=24, + y=3 + } + }, + OFFSETWAYPTCoordFormat2={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTCoordFormat2", + index=0, + statictext=false, + x=24, + y=3 + } + }, + OFFSETWAYPTDIS1={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTDIS1", + index=0, + statictext=false, + x=20, + y=6 + } + }, + OFFSETWAYPTDIS2={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTDIS2", + index=0, + statictext=false, + x=20, + y=6 + } + }, + OFFSETWAYPTLat={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTLat", + index=0, + statictext=false, + x=2, + y=7 + } + }, + OFFSETWAYPTLatUTM={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTLatUTM", + index=0, + statictext=false, + x=2, + y=7 + } + }, + OFFSETWAYPTLong={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTLong", + index=0, + statictext=false, + x=2, + y=9 + } + }, + OFFSETWAYPTLongMGRS={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTLongMGRS", + index=0, + statictext=false, + x=2, + y=9 + } + }, + OFFSETWAYPTMGRS={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTMGRS", + index=0, + statictext=false, + x=2, + y=9 + } + }, + OFFSETWAYPTMH1={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTMH1", + index=0, + statictext=false, + x=16, + y=6 + } + }, + OFFSETWAYPTMH2={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTMH2", + index=0, + statictext=false, + x=16, + y=6 + } + }, + OFFSETWAYPTNumber1={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTNumber1", + index=0, + statictext=false, + x=23, + y=9 + } + }, + OFFSETWAYPTNumber2={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTNumber2", + index=0, + statictext=false, + x=23, + y=9 + } + }, + OFFSETWAYPTUTM={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="OFFSETWAYPTUTM", + index=0, + statictext=false, + x=2, + y=7 + } + }, + OFP={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="OFP", + index=0, + statictext=true, + x=2, + y=5 + } + }, + OFPID={ + { + alignment="LFT", + cdu_pages={ + "SYS2" + }, + id="OFPID", + index=0, + statictext=true, + x=1, + y=9 + } + }, + OFPID1_LINE3={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE3", + index=0, + statictext=true, + x=2, + y=3 + } + }, + OFPID1_LINE4_1={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE4_1", + index=0, + statictext=true, + x=2, + y=4 + } + }, + OFPID1_LINE4_2={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE4_2", + index=0, + statictext=true, + x=13, + y=4 + } + }, + OFPID1_LINE5={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE5", + index=0, + statictext=true, + x=2, + y=5 + } + }, + OFPID1_LINE6_1={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE6_1", + index=0, + statictext=true, + x=2, + y=6 + } + }, + OFPID1_LINE6_2={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE6_2", + index=0, + statictext=true, + x=13, + y=6 + } + }, + OFPID1_LINE7={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE7", + index=0, + statictext=true, + x=2, + y=7 + } + }, + OFPID1_LINE8={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="OFPID1_LINE8", + index=0, + statictext=true, + x=2, + y=8 + } + }, + OFPID2_LINE3={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE3", + index=0, + statictext=true, + x=2, + y=3 + } + }, + OFPID2_LINE4_1={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE4_1", + index=0, + statictext=true, + x=2, + y=4 + } + }, + OFPID2_LINE4_2={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE4_2", + index=0, + statictext=true, + x=16, + y=4 + } + }, + OFPID2_LINE5={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE5", + index=0, + statictext=true, + x=2, + y=5 + } + }, + OFPID2_LINE6_1={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE6_1", + index=0, + statictext=true, + x=2, + y=6 + } + }, + OFPID2_LINE6_2={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE6_2", + index=0, + statictext=true, + x=16, + y=6 + } + }, + OFPID2_LINE7={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE7", + index=0, + statictext=true, + x=2, + y=7 + } + }, + OFPID2_LINE8={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="OFPID2_LINE8", + index=0, + statictext=true, + x=2, + y=8 + } + }, + OFP_SA={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="OFP_SA", + index=0, + statictext=false, + x=1, + y=5 + } + }, + OPTIOMS_MAGHEAD={ + { + alignment="RGHT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIOMS_MAGHEAD", + index=0, + statictext=false, + x=9, + y=4 + } + }, + OPTIONS={ + { + alignment="RGHT", + cdu_pages={ + "NAV" + }, + id="OPTIONS", + index=0, + statictext=true, + x=24, + y=7 + } + }, + OPTIONS_CF={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_CF", + index=0, + statictext=false, + x=4, + y=5 + } + }, + OPTIONS_DE={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_DE", + index=0, + statictext=true, + x=1, + y=5 + } + }, + OPTIONS_EQUAL={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_EQUAL", + index=0, + statictext=false, + x=4, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="OPTIONS_EQUAL", + index=1, + statictext=false, + x=18, + y=5 + } + }, + OPTIONS_EQUAL1={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_EQUAL1", + index=0, + statictext=false, + x=3, + y=5 + } + }, + OPTIONS_HD0={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HD0", + index=0, + statictext=false, + x=2, + y=4 + } + }, + OPTIONS_HD1={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HD1", + index=0, + statictext=false, + x=2, + y=4 + } + }, + OPTIONS_HF0={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HF0", + index=0, + statictext=false, + x=2, + y=3 + } + }, + OPTIONS_HF1={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HF1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + OPTIONS_HS0={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HS0", + index=0, + statictext=false, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="OPTIONS_HS0", + index=1, + statictext=true, + x=16, + y=5 + } + }, + OPTIONS_HS1={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_HS1", + index=0, + statictext=false, + x=2, + y=5 + } + }, + OPTIONS_MV={ + { + alignment="RGHT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_MV", + index=0, + statictext=false, + x=9, + y=5 + } + }, + OPTIONS_RTRY={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="OPTIONS_RTRY", + index=0, + statictext=true, + x=1, + y=3 + } + }, + ORIG_NAV={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="ORIG_NAV", + index=0, + statictext=true, + x=1, + y=5 + } + }, + OWC={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="OWC", + index=0, + statictext=true, + x=17, + y=4 + } + }, + OWC1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="OWC1", + index=0, + statictext=true, + x=21, + y=8 + } + }, + OWC_VALUE={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="OWC_VALUE", + index=0, + statictext=false, + x=23, + y=4 + } + }, + OWC_VALUE1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="OWC_VALUE1", + index=0, + statictext=false, + x=23, + y=4 + } + }, + OWC_VALUE2={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="OWC_VALUE2", + index=0, + statictext=false, + x=23, + y=4 + } + }, + Overload={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="Overload", + index=0, + statictext=false, + x=20, + y=7 + } + }, + Overload1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="Overload1", + index=0, + statictext=false, + x=20, + y=7 + } + }, + Overload2={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="Overload2", + index=0, + statictext=false, + x=20, + y=7 + } + }, + Overload3={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="Overload3", + index=0, + statictext=false, + x=23, + y=7 + } + }, + Overload4={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="Overload4", + index=0, + statictext=false, + x=22, + y=7 + } + }, + P={ + { + alignment="LFT", + cdu_pages={ + "FPMENU"}, + id="P", + index=0, + statictext=true, + x=19, + y=10 + } + }, + PC={ + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="PC", + index=0, + statictext=true, + x=2, + y=5 + } + }, + PGCAS={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PGCAS", + index=0, + statictext=true, + x=17, + y=3 + } + }, + PGCAS_VALUE={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PGCAS_VALUE", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PGCAS_VALUE1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PGCAS_VALUE1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PGCAS_VALUE2={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PGCAS_VALUE2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PITCH={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="PITCH", + index=0, + statictext=true, + x=2, + y=7 + } + }, + PITCH_ST2={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="PITCH_ST2", + index=0, + statictext=false, + x=19, + y=7 + } + }, + PITCH_ST3={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="PITCH_ST3", + index=0, + statictext=false, + x=19, + y=7 + } + }, + PITCH_VAL={ + { + alignment="RGHT", + cdu_pages={ + "HARS" + }, + id="PITCH_VAL", + index=0, + statictext=false, + x=16, + y=7 + } + }, + POS={ + { + alignment="LFT", + cdu_pages={ + "INS" + }, + id="POS", + index=0, + statictext=true, + x=1, + y=7 + } + }, + POS_SOURCE={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_SOURCE", + index=0, + statictext=true, + x=2, + y=3 + } + }, + POS_Source_DTS={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_DTS", + index=0, + statictext=false, + x=2, + y=4 + } + }, + POS_Source_GPS={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_GPS", + index=0, + statictext=false, + x=2, + y=4 + } + }, + POS_Source_GPS1={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_GPS1", + index=0, + statictext=false, + x=2, + y=4 + } + }, + POS_Source_Last_Pos={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_Last_Pos", + index=0, + statictext=false, + x=2, + y=4 + } + }, + POS_Source_Man={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_Man", + index=0, + statictext=false, + x=2, + y=4 + } + }, + POS_Source_Standby={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="POS_Source_Standby", + index=0, + statictext=false, + x=2, + y=4 + } + }, + PPOSGroundSpeed={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSGroundSpeed", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PPOSGroundSpeed1={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSGroundSpeed1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PPOSGroundSpeed2={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSGroundSpeed2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PPOSIAS={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSIAS", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PPOSSpeedMode={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode", + index=0, + statictext=false, + x=19, + y=3 + } + }, + PPOSSpeedMode1={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode1", + index=0, + statictext=false, + x=19, + y=3 + } + }, + PPOSSpeedMode2={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode2", + index=0, + statictext=false, + x=17, + y=3 + } + }, + PPOSSpeedMode3={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode3", + index=0, + statictext=false, + x=19, + y=3 + } + }, + PPOSSpeedMode4={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode4", + index=0, + statictext=false, + x=19, + y=3 + } + }, + PPOSSpeedMode5={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedMode5", + index=0, + statictext=false, + x=19, + y=3 + } + }, + PPOSSpeedRotary={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="PPOSSpeedRotary", + index=0, + statictext=true, + x=24, + y=3 + } + }, + PPOSTAS1={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="PPOSTAS1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + PR={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PR", + index=0, + statictext=true, + x=17, + y=5 + } + }, + PREF={ + { + alignment="RGHT", + cdu_pages={ + "DTSUPLD" + }, + id="PREF", + index=0, + statictext=true, + x=23, + y=4 + } + }, + PR_VALUE={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PR_VALUE", + index=0, + statictext=false, + x=23, + y=5 + } + }, + PR_VALUE1={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PR_VALUE1", + index=0, + statictext=false, + x=23, + y=5 + } + }, + PR_VALUE2={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PR_VALUE2", + index=0, + statictext=false, + x=23, + y=5 + } + }, + PS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="PS", + index=0, + statictext=true, + x=2, + y=5 + } + }, + PS_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="PS_STATUS", + index=0, + statictext=true, + x=10, + y=5 + } + }, + P_ALT={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="P_ALT", + index=0, + statictext=true, + x=2, + y=4 + } + }, + P_ALT_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="P_ALT_ST", + index=0, + statictext=false, + x=21, + y=4 + } + }, + P_ALT_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="P_ALT_ST1", + index=0, + statictext=false, + x=21, + y=4 + } + }, + P_ALT_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="P_ALT_VAL", + index=0, + statictext=false, + x=13, + y=4 + } + }, + PageFPBUILD={ + { + alignment="RGHT", + cdu_pages={ + "FPMENU" + }, + id="PageFPBUILD", + index=0, + statictext=false, + x=24, + y=2 + } + }, + PageNameACCREJ={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="PageNameACCREJ", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameALIGN={ + { + alignment="LFT", + cdu_pages={ + "ALIGN" + }, + id="PageNameALIGN", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameALTALGN={ + { + alignment="LFT", + cdu_pages={ + "ALTALGN" + }, + id="PageNameALTALGN", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameANCHOR={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="PageNameANCHOR", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameATTRIB={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="PageNameATTRIB", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameBBCTL={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="PageNameBBCTL", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameBITBALL={ + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="PageNameBITBALL", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameCADC={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="PageNameCADC", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameCDUTEST1={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="PageNameCDUTEST1", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameCDUTEST2={ + { + alignment="LFT", + cdu_pages={ + "CDUTEST2" + }, + id="PageNameCDUTEST2", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDIVERT={ + { + alignment="LFT", + cdu_pages={ + "DIVERT" + }, + id="PageNameDIVERT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDTS={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="PageNameDTS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDTSAS={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="PageNameDTSAS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDTSDNLD={ + { + alignment="LFT", + cdu_pages={ + "DTSDNLD" + }, + id="PageNameDTSDNLD", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDTSSTAT={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="PageNameDTSSTAT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameDTSUPLD={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="PageNameDTSUPLD", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameEGI={ + { + alignment="LFT", + cdu_pages={ + "EGI1", + "EGI2", + "EGI3", + "EGI4" + }, + id="PageNameEGI", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameEGITEST={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="PageNameEGITEST", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameFLDINFO={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="PageNameFLDINFO", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameFPBUILD={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="PageNameFPBUILD", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameFPMENU={ + { + alignment="LFT", + cdu_pages={ + "FPMENU" + }, + id="PageNameFPMENU", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameFROM={ + { + alignment="LFT", + cdu_pages={ + "FROM" + }, + id="PageNameFROM", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPS={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="PageNameGPS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSBIT1={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT1" + }, + id="PageNameGPSBIT1", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSBIT2={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT2" + }, + id="PageNameGPSBIT2", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSBIT3={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT3" + }, + id="PageNameGPSBIT3", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSBIT4={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT4" + }, + id="PageNameGPSBIT4", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSBIT5={ + { + alignment="LFT", + cdu_pages={ + "GPSBIT5" + }, + id="PageNameGPSBIT5", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSKEYS={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="PageNameGPSKEYS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameGPSSTAT1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="PageNameGPSSTAT1", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameHARS={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="PageNameHARS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameINS={ + { + alignment="LFT", + cdu_pages={ + "INS" + }, + id="PageNameINS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameINSSTAT={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="PageNameINSSTAT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameLASTE={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="PageNameLASTE", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameLRUTEST={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="PageNameLRUTEST", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameMXLOG={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="PageNameMXLOG", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameNAV={ + { + alignment="LFT", + cdu_pages={ + "NAV" + }, + id="PageNameNAV", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameOFFSET={ + { + alignment="LFT", + cdu_pages={ + "OFFSET" + }, + id="PageNameOFFSET", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameOFPID1={ + { + alignment="LFT", + cdu_pages={ + "OFPID1" + }, + id="PageNameOFPID1", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameOFPID2={ + { + alignment="LFT", + cdu_pages={ + "OFPID2" + }, + id="PageNameOFPID2", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameOPTIONS={ + { + alignment="LFT", + cdu_pages={ + "OPTIONS" + }, + id="PageNameOPTIONS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNamePOS={ + { + alignment="LFT", + cdu_pages={ + "POS" + }, + id="PageNamePOS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNamePOSINFO={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="PageNamePOSINFO", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameREINIT={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="PageNameREINIT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameRESET={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="PageNameRESET", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameSTARTUPBIT={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="PageNameSTARTUPBIT", + index=0, + statictext=false, + x=3, + y=1 + } + }, + PageNameSTRINFO={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="PageNameSTRINFO", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameSYS={ + { + alignment="LFT", + cdu_pages={ + "SYS" + }, + id="PageNameSYS", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameTIME={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="PageNameTIME", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameUPDATE={ + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="PageNameUPDATE", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWAYPT={ + { + alignment="LFT", + cdu_pages={ + "WAYPT" + }, + id="PageNameWAYPT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWIND={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="PageNameWIND", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWNDEDIT={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT" + }, + id="PageNameWNDEDIT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWPINFO={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="PageNameWPINFO", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWPMENU={ + { + alignment="LFT", + cdu_pages={ + "WPMENU" + }, + id="PageNameWPMENU", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PageNameWPTATT={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="PageNameWPTATT", + index=0, + statictext=true, + x=2, + y=1 + } + }, + PresPositLat={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositLat", + index=0, + statictext=false, + x=2, + y=3 + } + }, + PresPositLat1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositLat1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + PresPositLong={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositLong", + index=0, + statictext=false, + x=2, + y=4 + } + }, + PresPositLong1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositLong1", + index=0, + statictext=false, + x=2, + y=4 + } + }, + PresPositMGRS={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositMGRS", + index=0, + statictext=false, + x=2, + y=7 + } + }, + PresPositMGRS1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositMGRS1", + index=0, + statictext=false, + x=2, + y=7 + } + }, + PresPositUTM={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositUTM", + index=0, + statictext=false, + x=2, + y=6 + } + }, + PresPositUTM1={ + { + alignment="LFT", + cdu_pages={ + "POSINFO", + "POS" + }, + id="PresPositUTM1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + RAM={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="RAM", + index=0, + statictext=false, + x=1, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="RAM", + index=1, + statictext=true, + x=1, + y=4 + } + }, + RAM_1553={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="RAM_1553", + index=0, + statictext=false, + x=13, + y=4 + }, + { + alignment="LFT", + cdu_pages={ + "CDUTEST1" + }, + id="RAM_1553", + index=1, + statictext=true, + x=13, + y=4 + } + }, + READY={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY", + index=0, + statictext=true, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="READY", + index=1, + statictext=true, + x=2, + y=3 + } + }, + READY_ST0={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY_ST0", + index=0, + statictext=false, + x=8, + y=5 + } + }, + READY_ST1={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY_ST1", + index=0, + statictext=false, + x=8, + y=5 + } + }, + READY_ST2={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY_ST2", + index=0, + statictext=false, + x=8, + y=5 + } + }, + READY_ST3={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY_ST3", + index=0, + statictext=false, + x=8, + y=5 + } + }, + READY_ST4={ + { + alignment="LFT", + cdu_pages={ + "DTS" + }, + id="READY_ST4", + index=0, + statictext=false, + x=8, + y=5 + } + }, + RECENT_NAV={ + { + alignment="LFT", + cdu_pages={ + "DTSUPLD" + }, + id="RECENT_NAV", + index=0, + statictext=true, + x=1, + y=9 + } + }, + RECORD={ + { + alignment="RGHT", + cdu_pages={ + "LRUTEST" + }, + id="RECORD", + index=0, + statictext=true, + x=24, + y=7 + } + }, + REINIT={ + { + alignment="LFT", + cdu_pages={ + "SYS1" + }, + id="REINIT", + index=0, + statictext=true, + x=1, + y=9 + } + }, + REINIT_DTSAS={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="REINIT_DTSAS", + index=0, + statictext=true, + x=1, + y=9 + } + }, + REINIT_GPS={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="REINIT_GPS", + index=0, + statictext=true, + x=1, + y=5 + } + }, + REINIT_INS={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="REINIT_INS", + index=0, + statictext=true, + x=1, + y=3 + } + }, + REINIT_LASTE={ + { + alignment="LFT", + cdu_pages={ + "REINIT" + }, + id="REINIT_LASTE", + index=0, + statictext=true, + x=1, + y=7 + } + }, + REJECT={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ" + }, + id="REJECT", + index=0, + statictext=true, + x=24, + y=5 + } + }, + RESET={ + { + alignment="RGHT", + cdu_pages={ + "SYS1", + "BBCTL" + }, + id="RESET", + index=0, + statictext=true, + x=24, + y=9 + } + }, + RESET_CADC={ + { + alignment="RGHT", + cdu_pages={ + "RESET" + }, + id="RESET_CADC", + index=0, + statictext=true, + x=24, + y=3 + } + }, + RESET_CICU={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_CICU", + index=0, + statictext=true, + x=1, + y=7 + } + }, + RESET_CICU0={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_CICU0", + index=0, + statictext=false, + x=8, + y=7 + } + }, + RESET_CICU1={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_CICU1", + index=0, + statictext=false, + x=8, + y=7 + } + }, + RESET_DTS={ + { + alignment="RGHT", + cdu_pages={ + "RESET" + }, + id="RESET_DTS", + index=0, + statictext=true, + x=24, + y=7 + } + }, + RESET_EGI={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_EGI", + index=0, + statictext=true, + x=1, + y=3 + } + }, + RESET_HARS={ + { + alignment="RGHT", + cdu_pages={ + "RESET" + }, + id="RESET_HARS", + index=0, + statictext=true, + x=24, + y=5 + } + }, + RESET_LASTE={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_LASTE", + index=0, + statictext=true, + x=1, + y=5 + } + }, + RESET_LASTE1={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_LASTE1", + index=0, + statictext=true, + x=8, + y=7 + } + }, + RESET_ST0={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_ST0", + index=0, + statictext=false, + x=8, + y=5 + } + }, + RESET_ST1={ + { + alignment="LFT", + cdu_pages={ + "RESET" + }, + id="RESET_ST1", + index=0, + statictext=false, + x=8, + y=5 + } + }, + ROLL={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="ROLL", + index=0, + statictext=true, + x=2, + y=5 + } + }, + ROLL_ST2={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="ROLL_ST2", + index=0, + statictext=false, + x=19, + y=5 + } + }, + ROLL_ST3={ + { + alignment="LFT", + cdu_pages={ + "HARS" + }, + id="ROLL_ST3", + index=0, + statictext=false, + x=19, + y=5 + } + }, + ROLL_VAL={ + { + alignment="RGHT", + cdu_pages={ + "HARS" + }, + id="ROLL_VAL", + index=0, + statictext=false, + x=16, + y=5 + } + }, + RPU={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="RPU", + index=0, + statictext=true, + x=2, + y=5 + } + }, + RPU4s={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="RPU4s", + index=0, + statictext=false, + x=11, + y=5 + } + }, + RPU4s1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="RPU4s1", + index=0, + statictext=false, + x=11, + y=5 + } + }, + RTR={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ", + "UPDATE" + }, + id="RTR", + index=0, + statictext=true, + x=24, + y=3 + } + }, + RT_ADDR={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="RT_ADDR", + index=0, + statictext=false, + x=13, + y=6 + } + }, + RWY={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="RWY", + index=0, + statictext=true, + x=2, + y=6 + } + }, + RWY_L_FEET={ + { + alignment="RGHT", + cdu_pages={ + "FLDINFO" + }, + id="RWY_L_FEET", + index=0, + statictext=true, + x=24, + y=6 + } + }, + SAT4={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SAT4", + index=0, + statictext=true, + x=2, + y=4 + } + }, + SAT4s={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SAT4s", + index=0, + statictext=false, + x=11, + y=4 + } + }, + SAT4s1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SAT4s1", + index=0, + statictext=false, + x=11, + y=4 + } + }, + SCALE={ + { + alignment="LFT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="SCALE", + index=0, + statictext=true, + x=1, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="SCALE", + index=1, + statictext=true, + x=1, + y=5 + } + }, + SCS={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="SCS", + index=0, + statictext=true, + x=2, + y=9 + } + }, + SCS_ROTARY={ + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="SCS_ROTARY", + index=0, + statictext=false, + x=1, + y=9 + } + }, + SENSORS={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="SENSORS", + index=0, + statictext=true, + x=10, + y=9 + } + }, + SEN_ST1={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="SEN_ST1", + index=0, + statictext=false, + x=23, + y=9 + } + }, + SEN_ST2={ + { + alignment="LFT", + cdu_pages={ + "INSSTAT" + }, + id="SEN_ST2", + index=0, + statictext=false, + x=23, + y=9 + } + }, + SERVICE={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="SERVICE", + index=0, + statictext=true, + x=2, + y=7 + } + }, + SFKEYSs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SFKEYSs", + index=0, + statictext=false, + x=23, + y=3 + } + }, + SFKEYSs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SFKEYSs1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + SFKEYSs2={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SFKEYSs2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + SLASH1={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="SLASH1", + index=0, + statictext=true, + x=14, + y=9 + } + }, + SLASH2={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="SLASH2", + index=0, + statictext=true, + x=14, + y=10 + } + }, + SPHEROID={ + { + alignment="RGHT", + cdu_pages={ + "WPMENU" + }, + id="SPHEROID", + index=0, + statictext=false, + x=23, + y=9 + } + }, + SPU={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="SPU", + index=0, + statictext=true, + x=2, + y=3 + } + }, + SPU_STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="SPU_STATUS", + index=0, + statictext=true, + x=10, + y=3 + } + }, + ST3={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="ST3", + index=0, + statictext=true, + x=8, + y=7 + } + }, + ST5={ + { + alignment="LFT", + cdu_pages={ + "GPS" + }, + id="ST5", + index=0, + statictext=true, + x=8, + y=6 + } + }, + START={ + { + alignment="RGHT", + cdu_pages={ + "CDUTEST1" + }, + id="START", + index=0, + statictext=true, + x=23, + y=5 + } + }, + STARTUPBIT={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT", + index=0, + statictext=false, + x=9, + y=3 + } + }, + STARTUPBIT1={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT1", + index=0, + statictext=false, + x=9, + y=3 + } + }, + STARTUPBIT10={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT10", + index=0, + statictext=false, + x=9, + y=6 + } + }, + STARTUPBIT11={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT11", + index=0, + statictext=false, + x=9, + y=6 + } + }, + STARTUPBIT12={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT12", + index=0, + statictext=false, + x=23, + y=3 + } + }, + STARTUPBIT13={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT13", + index=0, + statictext=false, + x=23, + y=3 + } + }, + STARTUPBIT14={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT14", + index=0, + statictext=false, + x=23, + y=3 + } + }, + STARTUPBIT15={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT15", + index=0, + statictext=false, + x=23, + y=4 + } + }, + STARTUPBIT16={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT16", + index=0, + statictext=false, + x=23, + y=4 + } + }, + STARTUPBIT17={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT17", + index=0, + statictext=false, + x=23, + y=4 + } + }, + STARTUPBIT18={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT18", + index=0, + statictext=false, + x=23, + y=5 + } + }, + STARTUPBIT19={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT19", + index=0, + statictext=false, + x=23, + y=5 + } + }, + STARTUPBIT2={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT2", + index=0, + statictext=false, + x=9, + y=4 + } + }, + STARTUPBIT20={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT20", + index=0, + statictext=false, + x=23, + y=5 + } + }, + STARTUPBIT21={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT21", + index=0, + statictext=false, + x=23, + y=6 + } + }, + STARTUPBIT22={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT22", + index=0, + statictext=false, + x=23, + y=6 + } + }, + STARTUPBIT23={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT23", + index=0, + statictext=false, + x=23, + y=6 + } + }, + STARTUPBIT24={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT24", + index=0, + statictext=false, + x=9, + y=10 + } + }, + STARTUPBIT3={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT3", + index=0, + statictext=false, + x=9, + y=4 + } + }, + STARTUPBIT4={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT4", + index=0, + statictext=false, + x=9, + y=4 + } + }, + STARTUPBIT5={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT5", + index=0, + statictext=false, + x=9, + y=4 + } + }, + STARTUPBIT6={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT6", + index=0, + statictext=false, + x=9, + y=5 + } + }, + STARTUPBIT7={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT7", + index=0, + statictext=false, + x=9, + y=5 + } + }, + STARTUPBIT8={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT8", + index=0, + statictext=false, + x=9, + y=5 + } + }, + STARTUPBIT9={ + { + alignment="LFT", + cdu_pages={ + "STARTUP_BIT" + }, + id="STARTUPBIT9", + index=0, + statictext=false, + x=9, + y=6 + } + }, + START_SA={ + { + alignment="RGHT", + cdu_pages={ + "CDUTEST1" + }, + id="START_SA", + index=0, + statictext=false, + x=24, + y=5 + } + }, + STATUS={ + { + alignment="LFT", + cdu_pages={ + "EGI2" + }, + id="STATUS", + index=0, + statictext=true, + x=2, + y=8 + } + }, + STATUS_LINE={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="STATUS_LINE", + index=0, + statictext=true, + x=2, + y=3 + } + }, + STATUS_LINE1={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="STATUS_LINE1", + index=0, + statictext=true, + x=10, + y=3 + } + }, + STATUS_LINE2={ + { + alignment="LFT", + cdu_pages={ + "EGI1" + }, + id="STATUS_LINE2", + index=0, + statictext=true, + x=18, + y=3 + } + }, + STEER={ + { + alignment="LFT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="STEER", + index=0, + statictext=true, + x=1, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "ATTRIB" + }, + id="STEER", + index=1, + statictext=true, + x=1, + y=7 + } + }, + STEERPOINT={ + { + alignment="LFT", + cdu_pages={ + "WPMENU" + }, + id="STEERPOINT", + index=0, + statictext=true, + x=1, + y=3 + } + }, + STEERPTIndicator={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="STEERPTIndicator", + index=0, + statictext=false, + x=7, + y=3 + } + }, + STEER_PT={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STEER_PT", + index=0, + statictext=true, + x=2, + y=7 + } + }, + STOP_MSN={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="STOP_MSN", + index=0, + statictext=true, + x=2, + y=9 + } + }, + STOP_SA={ + { + alignment="LFT", + cdu_pages={ + "EGITEST" + }, + id="STOP_SA", + index=0, + statictext=false, + x=1, + y=9 + } + }, + STRBRGRAD={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRAD", + index=0, + statictext=false, + x=8, + y=7 + } + }, + STRBRGRAD1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRAD1", + index=0, + statictext=false, + x=8, + y=7 + } + }, + STRBRGRAD2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRAD2", + index=0, + statictext=false, + x=8, + y=7 + } + }, + STRBRGRAD3={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRAD3", + index=0, + statictext=false, + x=8, + y=7 + } + }, + STRBRGRAD4={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRAD4", + index=0, + statictext=false, + x=8, + y=7 + } + }, + STRBRGRADMode={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRADMode", + index=0, + statictext=false, + x=2, + y=7 + } + }, + STRBRGRADMode1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRADMode1", + index=0, + statictext=false, + x=2, + y=7 + } + }, + STRBRGRADRotary={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRBRGRADRotary", + index=0, + statictext=true, + x=1, + y=7 + } + }, + STRDIS={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRDIS", + index=0, + statictext=true, + x=2, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ACCREJ" + }, + id="STRDIS", + index=1, + statictext=false, + x=23, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="STRDIS", + index=2, + statictext=false, + x=17, + y=4 + } + }, + STRDIS1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDIS1", + index=0, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRDIS1", + index=1, + statictext=false, + x=6, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="STRDIS1", + index=2, + statictext=false, + x=17, + y=4 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDIS1", + index=3, + statictext=false, + x=23, + y=8 + } + }, + STRDIS2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDIS2", + index=0, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRDIS2", + index=1, + statictext=false, + x=6, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDIS2", + index=2, + statictext=false, + x=23, + y=8 + } + }, + STRDIS3={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDIS3", + index=0, + statictext=false, + x=10, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDIS3", + index=1, + statictext=false, + x=23, + y=8 + } + }, + STRDISMH={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRDISMH", + index=0, + statictext=true, + x=5, + y=9 + } + }, + STRDMH={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRDMH", + index=0, + statictext=true, + x=2, + y=4 + } + }, + STRDMH1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDMH1", + index=0, + statictext=false, + x=10, + y=4 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDMH1", + index=1, + statictext=false, + x=23, + y=7 + } + }, + STRDMH2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDMH2", + index=0, + statictext=false, + x=10, + y=4 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDMH2", + index=1, + statictext=false, + x=23, + y=7 + } + }, + STRDMH3={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRDMH3", + index=0, + statictext=false, + x=10, + y=4 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRDMH3", + index=1, + statictext=false, + x=23, + y=7 + } + }, + STREL={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STREL", + index=0, + statictext=true, + x=2, + y=6 + }, + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE" + }, + id="STREL", + index=1, + statictext=true, + x=17, + y=9 + } + }, + STREL1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STREL1", + index=0, + statictext=false, + x=10, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="STREL1", + index=1, + statictext=false, + x=23, + y=9 + } + }, + STREL2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STREL2", + index=0, + statictext=false, + x=10, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "UPDATE" + }, + id="STREL2", + index=1, + statictext=false, + x=23, + y=9 + } + }, + STREL3={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STREL3", + index=0, + statictext=false, + x=10, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "ACCREJ", + "UPDATE" + }, + id="STREL3", + index=1, + statictext=false, + x=23, + y=9 + } + }, + STREL4={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STREL4", + index=0, + statictext=false, + x=10, + y=6 + } + }, + STRGroundSpeed1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRGroundSpeed1", + index=0, + statictext=false, + x=23, + y=9 + } + }, + STRIAS1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRIAS1", + index=0, + statictext=false, + x=23, + y=9 + } + }, + STRIdent={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRIdent", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRIdent", + index=1, + statictext=false, + x=2, + y=5 + } + }, + STRIdent1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO", + "ANCHOR" + }, + id="STRIdent1", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRIdent1", + index=1, + statictext=false, + x=2, + y=5 + } + }, + STRIdent2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO", + "ANCHOR" + }, + id="STRIdent2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + STRIdent3={ + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRIdent3", + index=0, + statictext=false, + x=23, + y=3 + } + }, + STRIdentEntry={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO", + "ANCHOR" + }, + id="STRIdentEntry", + index=0, + statictext=false, + x=24, + y=3 + } + }, + STRMH1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRMH1", + index=0, + statictext=false, + x=2, + y=9 + } + }, + STRMH2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRMH2", + index=0, + statictext=false, + x=2, + y=9 + } + }, + STRNumber={ + { + alignment="LFT", + cdu_pages={ + "STRINFO", + "UPDATE" + }, + id="STRNumber", + index=0, + statictext=false, + x=2, + y=3 + } + }, + STRNumber1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO", + "UPDATE" + }, + id="STRNumber1", + index=0, + statictext=false, + x=2, + y=3 + } + }, + STRNumber2={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRNumber2", + index=0, + statictext=false, + x=2, + y=3 + } + }, + STRNumber3={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRNumber3", + index=0, + statictext=false, + x=3, + y=3 + } + }, + STRNumberIncDec={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRNumberIncDec", + index=0, + statictext=false, + x=1, + y=3 + } + }, + STRReqGroundSpeed={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqGroundSpeed", + index=0, + statictext=false, + x=23, + y=7 + } + }, + STRReqIAS={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqIAS", + index=0, + statictext=false, + x=23, + y=7 + } + }, + STRReqSpeedMode={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqSpeedMode", + index=0, + statictext=false, + x=19, + y=7 + } + }, + STRReqSpeedMode1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqSpeedMode1", + index=0, + statictext=false, + x=19, + y=7 + } + }, + STRReqSpeedMode2={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqSpeedMode2", + index=0, + statictext=false, + x=19, + y=7 + } + }, + STRReqSpeedRotary={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRReqSpeedRotary", + index=0, + statictext=false, + x=24, + y=7 + } + }, + STRReqTAS={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRReqTAS", + index=0, + statictext=false, + x=23, + y=7 + } + }, + STRSpeedMode3={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRSpeedMode3", + index=0, + statictext=false, + x=17, + y=9 + } + }, + STRSpeedMode4={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRSpeedMode4", + index=0, + statictext=false, + x=19, + y=9 + } + }, + STRSpeedMode5={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRSpeedMode5", + index=0, + statictext=false, + x=19, + y=9 + } + }, + STRSpeedMode6={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRSpeedMode6", + index=0, + statictext=false, + x=19, + y=9 + } + }, + STRSpeedRotary1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRSpeedRotary1", + index=0, + statictext=true, + x=24, + y=9 + } + }, + STRTAS1={ + { + alignment="RGHT", + cdu_pages={ + "STRINFO" + }, + id="STRTAS1", + index=0, + statictext=false, + x=23, + y=9 + } + }, + STRTOT={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTOT", + index=0, + statictext=false, + x=16, + y=6 + } + }, + STRTOT1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTOT1", + index=0, + statictext=false, + x=16, + y=6 + } + }, + STRTOT2={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTOT2", + index=0, + statictext=false, + x=16, + y=6 + } + }, + STRTOT3={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTOT3", + index=0, + statictext=false, + x=16, + y=6 + } + }, + STRTOT4={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTOT4", + index=0, + statictext=false, + x=16, + y=6 + } + }, + STRTTG={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG", + index=0, + statictext=true, + x=12, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRTTG", + index=1, + statictext=true, + x=7, + y=6 + } + }, + STRTTG1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG1", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRTTG1", + index=1, + statictext=false, + x=2, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRTTG1", + index=2, + statictext=false, + x=11, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRTTG1", + index=3, + statictext=false, + x=23, + y=6 + } + }, + STRTTG2={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG2", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRTTG2", + index=1, + statictext=false, + x=2, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRTTG2", + index=2, + statictext=false, + x=11, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRTTG2", + index=3, + statictext=false, + x=23, + y=6 + } + }, + STRTTG3={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG3", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="STRTTG3", + index=1, + statictext=false, + x=2, + y=8 + }, + { + alignment="LFT", + cdu_pages={ + "UPDATE" + }, + id="STRTTG3", + index=2, + statictext=false, + x=11, + y=6 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRTTG3", + index=3, + statictext=false, + x=23, + y=6 + } + }, + STRTTG4={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG4", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRTTG4", + index=1, + statictext=false, + x=23, + y=6 + } + }, + STRTTG5={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRTTG5", + index=0, + statictext=false, + x=16, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ANCHOR" + }, + id="STRTTG5", + index=1, + statictext=false, + x=23, + y=6 + } + }, + STRWindDirection1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRWindDirection1", + index=0, + statictext=false, + x=17, + y=8 + } + }, + STRWindDirection2={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRWindDirection2", + index=0, + statictext=false, + x=17, + y=8 + } + }, + STRWindSpeed1={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRWindSpeed1", + index=0, + statictext=false, + x=21, + y=8 + } + }, + STRWindSpeed2={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="STRWindSpeed2", + index=0, + statictext=false, + x=21, + y=8 + } + }, + ST_ST={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="ST_ST", + index=0, + statictext=true, + x=2, + y=6 + } + }, + SUCCESSFUL={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="SUCCESSFUL", + index=0, + statictext=true, + x=11, + y=6 + } + }, + SUFKEYS={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="SUFKEYS", + index=0, + statictext=true, + x=13, + y=3 + } + }, + T={ + { + alignment="LFT", + cdu_pages={ + "ALIGN", + "ALTALGN" + }, + id="T", + index=0, + statictext=true, + x=4, + y=8 + } + }, + TAC={ + { + alignment="LFT", + cdu_pages={ + "FLDINFO" + }, + id="TAC", + index=0, + statictext=true, + x=2, + y=8 + } + }, + TARGET_MARK={ + { + alignment="RGHT", + cdu_pages={ + "OFFSET" + }, + id="TARGET_MARK", + index=0, + statictext=true, + x=24, + y=7 + } + }, + TAS={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TAS", + index=0, + statictext=true, + x=2, + y=6 + } + }, + TAS_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TAS_ST", + index=0, + statictext=false, + x=21, + y=6 + } + }, + TAS_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TAS_ST1", + index=0, + statictext=false, + x=21, + y=6 + } + }, + TAS_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="TAS_VAL", + index=0, + statictext=false, + x=15, + y=6 + } + }, + TEMP={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TEMP", + index=0, + statictext=true, + x=2, + y=9 + } + }, + TEMP_ST={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TEMP_ST", + index=0, + statictext=false, + x=21, + y=9 + } + }, + TEMP_ST1={ + { + alignment="LFT", + cdu_pages={ + "CADC" + }, + id="TEMP_ST1", + index=0, + statictext=false, + x=21, + y=9 + } + }, + TEMP_VAL={ + { + alignment="RGHT", + cdu_pages={ + "CADC" + }, + id="TEMP_VAL", + index=0, + statictext=false, + x=14, + y=9 + } + }, + TEST_MODE0={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_MODE0", + index=0, + statictext=false, + x=2, + y=9 + } + }, + TEST_MODE1={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_MODE1", + index=0, + statictext=false, + x=2, + y=9 + } + }, + TEST_MODE2={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_MODE2", + index=0, + statictext=false, + x=2, + y=9 + } + }, + TEST_MODE4={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_MODE4", + index=0, + statictext=false, + x=2, + y=9 + } + }, + TEST_SA={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_SA", + index=0, + statictext=false, + x=1, + y=9 + } + }, + TEST_SA1={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_SA1", + index=0, + statictext=false, + x=1, + y=9 + } + }, + TEST_SA2={ + { + alignment="LFT", + cdu_pages={ + "LRUTEST" + }, + id="TEST_SA2", + index=0, + statictext=false, + x=1, + y=9 + } + }, + TGTSYM_NEW_WPT={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="TGTSYM_NEW_WPT", + index=0, + statictext=true, + x=24, + y=7 + } + }, + TIME={ + { + alignment="LFT", + cdu_pages={ + "NAV" + }, + id="TIME", + index=0, + statictext=true, + x=1, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "BITBALL" + }, + id="TIME", + index=1, + statictext=true, + x=2, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "GPS" + }, + id="TIME", + index=2, + statictext=true, + x=24, + y=7 + } + }, + TOT={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="TOT", + index=0, + statictext=true, + x=12, + y=6 + } + }, + TTG={ + { + alignment="LFT", + cdu_pages={ + "ANCHOR" + }, + id="TTG", + index=0, + statictext=true, + x=2, + y=6 + } + }, + TempC={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="TempC", + index=0, + statictext=false, + x=21, + y=9 + } + }, + TempF={ + { + alignment="RGHT", + cdu_pages={ + "POSINFO" + }, + id="TempF", + index=0, + statictext=false, + x=21, + y=9 + } + }, + TempRotary={ + { + alignment="LFT", + cdu_pages={ + "POSINFO" + }, + id="TempRotary", + index=0, + statictext=true, + x=24, + y=9 + } + }, + UPDATE={ + { + alignment="LFT", + cdu_pages={ + "NAV" + }, + id="UPDATE", + index=0, + statictext=true, + x=1, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "INS" + }, + id="UPDATE", + index=1, + statictext=true, + x=24, + y=5 + } + }, + UTC={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="UTC", + index=0, + statictext=true, + x=2, + y=7 + } + }, + UTCs={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="UTCs", + index=0, + statictext=false, + x=11, + y=7 + } + }, + UTCs1={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT1" + }, + id="UTCs1", + index=0, + statictext=false, + x=11, + y=7 + } + }, + VANGLE={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VANGLE", + index=0, + statictext=false, + x=24, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VANGLE", + index=1, + statictext=false, + x=24, + y=5 + } + }, + VANGLEEntry={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VANGLEEntry", + index=0, + statictext=false, + x=24, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VANGLEEntry", + index=1, + statictext=false, + x=24, + y=7 + } + }, + VANGLEMode={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VANGLEMode", + index=0, + statictext=false, + x=23, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VANGLEMode", + index=1, + statictext=false, + x=23, + y=6 + } + }, + VANGLEMode1={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VANGLEMode1", + index=0, + statictext=false, + x=23, + y=8 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VANGLEMode1", + index=1, + statictext=false, + x=23, + y=6 + } + }, + VANGLEValue={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VANGLEValue", + index=0, + statictext=false, + x=23, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VANGLEValue", + index=1, + statictext=false, + x=23, + y=7 + } + }, + VIEW1={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="VIEW1", + index=0, + statictext=true, + x=2, + y=3 + } + }, + VIEW2={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="VIEW2", + index=0, + statictext=true, + x=2, + y=5 + } + }, + VIEW3={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="VIEW3", + index=0, + statictext=true, + x=2, + y=7 + } + }, + VIEW4={ + { + alignment="LFT", + cdu_pages={ + "BBCTL" + }, + id="VIEW4", + index=0, + statictext=true, + x=2, + y=9 + } + }, + VIEW5={ + { + alignment="RGHT", + cdu_pages={ + "BBCTL" + }, + id="VIEW5", + index=0, + statictext=true, + x=23, + y=3 + } + }, + VNAV_MODE={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="VNAV_MODE", + index=0, + statictext=true, + x=24, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "ATTRIB" + }, + id="VNAV_MODE", + index=1, + statictext=true, + x=24, + y=3 + } + }, + VPU={ + { + alignment="LFT", + cdu_pages={ + "DTSAS" + }, + id="VPU", + index=0, + statictext=true, + x=2, + y=8 + } + }, + VRSN={ + { + alignment="LFT", + cdu_pages={ + "DTSSTAT" + }, + id="VRSN", + index=0, + statictext=true, + x=2, + y=4 + } + }, + WARCODE={ + { + alignment="LFT", + cdu_pages={ + "EGI3", + "EGI4" + }, + id="WARCODE", + index=0, + statictext=true, + x=17, + y=8 + } + }, + WARNING={ + { + alignment="LFT", + cdu_pages={ + "EGI3", + "EGI4" + }, + id="WARNING", + index=0, + statictext=true, + x=14, + y=7 + } + }, + WAYPOINT={ + { + alignment="LFT", + cdu_pages={ + "STRINFO" + }, + id="WAYPOINT", + index=0, + statictext=true, + x=1, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WAYPOINT", + index=1, + statictext=true, + x=1, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WPMENU" + }, + id="WAYPOINT", + index=2, + statictext=true, + x=24, + y=3 + } + }, + WAYPTClass={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass1={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass1", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass10={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass10", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass11={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass11", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass12={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass12", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass13={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass13", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass14={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass14", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass15={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass15", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass16={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass16", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass17={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass17", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass18={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass18", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass19={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass19", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass2={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass2", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass20={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass20", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass21={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass21", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass3={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass3", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass4={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass4", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass5={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass5", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass6={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass6", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass7={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass7", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass8={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass8", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTClass9={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTClass9", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WAYPTCoordFormat={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTCoordFormat", + index=0, + statictext=false, + x=24, + y=9 + } + }, + WAYPTCoordFormat1={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTCoordFormat1", + index=0, + statictext=false, + x=24, + y=9 + } + }, + WAYPTDATA_ENTRY={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTDATA_ENTRY", + index=0, + statictext=false, + x=1, + y=7 + } + }, + WAYPTDATA_ENTRY1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTDATA_ENTRY1", + index=0, + statictext=false, + x=1, + y=9 + } + }, + WAYPTIdent={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTIdent", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTIdent", + index=1, + statictext=false, + x=12, + y=2 + } + }, + WAYPTIdent1={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO", + "WAYPT1" + }, + id="WAYPTIdent1", + index=0, + statictext=false, + x=23, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTIdent1", + index=1, + statictext=false, + x=12, + y=2 + } + }, + WAYPTIdent2={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="WAYPTIdent2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + WAYPTLat={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTLat", + index=0, + statictext=false, + x=2, + y=7 + } + }, + WAYPTLatUTM={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTLatUTM", + index=0, + statictext=false, + x=2, + y=7 + } + }, + WAYPTLong={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTLong", + index=0, + statictext=false, + x=2, + y=9 + } + }, + WAYPTLongMGRS={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTLongMGRS", + index=0, + statictext=false, + x=2, + y=9 + } + }, + WAYPTMGRS={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTMGRS", + index=0, + statictext=false, + x=2, + y=9 + } + }, + WAYPTNumber={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTNumber", + index=0, + statictext=false, + x=2, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTNumber", + index=1, + statictext=false, + x=6, + y=2 + } + }, + WAYPTNumber1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO", + "WAYPT1" + }, + id="WAYPTNumber1", + index=0, + statictext=false, + x=2, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTNumber1", + index=1, + statictext=false, + x=6, + y=2 + } + }, + WAYPTNumber2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WAYPTNumber2", + index=0, + statictext=false, + x=2, + y=3 + } + }, + WAYPTScale={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTScale", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WAYPTScale1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTScale1", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WAYPTScale2={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTScale2", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WAYPTScale3={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTScale3", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WAYPTScale4={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTScale4", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WAYPTSteer={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTSteer", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPTSteer1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTSteer1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPTSteer2={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTSteer2", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPTSteer4={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTSteer4", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPTUTM={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ", + "UPDATE", + "WAYPT1" + }, + id="WAYPTUTM", + index=0, + statictext=false, + x=2, + y=7 + } + }, + WAYPTVNavMode={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTVNavMode", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WAYPTVNavMode1={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTVNavMode1", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WAYPTVNavMode2={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPTVNavMode2", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WAYPTWindDirection1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTWindDirection1", + index=0, + statictext=false, + x=17, + y=8 + } + }, + WAYPTWindDirection2={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTWindDirection2", + index=0, + statictext=false, + x=17, + y=8 + } + }, + WAYPTWindSpeed1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTWindSpeed1", + index=0, + statictext=false, + x=21, + y=8 + } + }, + WAYPTWindSpeed2={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPTWindSpeed2", + index=0, + statictext=false, + x=21, + y=8 + } + }, + WAYPT_CR_FLAG={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_CR_FLAG", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPT_CR_FLAG1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_CR_FLAG1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WAYPT_DTOT={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_DTOT", + index=0, + statictext=false, + x=18, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPT_DTOT", + index=1, + statictext=false, + x=8, + y=9 + } + }, + WAYPT_DTOT1={ + { + alignment="RGHT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_DTOT1", + index=0, + statictext=false, + x=18, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPT_DTOT1", + index=1, + statictext=false, + x=8, + y=9 + } + }, + WAYPT_DTTG={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPT_DTTG", + index=0, + statictext=false, + x=8, + y=7 + } + }, + WAYPT_DTTG1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT2" + }, + id="WAYPT_DTTG1", + index=0, + statictext=false, + x=7, + y=7 + } + }, + WAYPT_EL1={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_EL1", + index=0, + statictext=false, + x=5, + y=5 + } + }, + WAYPT_EL2={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_EL2", + index=0, + statictext=false, + x=5, + y=5 + } + }, + WAYPT_EL3={ + { + alignment="LFT", + cdu_pages={ + "WAYPT1" + }, + id="WAYPT_EL3", + index=0, + statictext=false, + x=5, + y=5 + } + }, + WAYPT_INCR_DECR={ + { + alignment="LFT", + cdu_pages={ + "WPINFO", + "WAYPT1" + }, + id="WAYPT_INCR_DECR", + index=0, + statictext=true, + x=1, + y=3 + } + }, + WE={ + { + alignment="LFT", + cdu_pages={ + "ACCREJ" + }, + id="WE", + index=0, + statictext=true, + x=18, + y=6 + } + }, + WE_ERR={ + { + alignment="RGHT", + cdu_pages={ + "ACCREJ" + }, + id="WE_ERR", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WIND={ + { + alignment="RGHT", + cdu_pages={ + "LASTE" + }, + id="WIND", + index=0, + statictext=true, + x=24, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WIND", + index=1, + statictext=true, + x=24, + y=3 + } + }, + WINDALT={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDALT", + index=0, + statictext=false, + x=3, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDALT", + index=1, + statictext=false, + x=3, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDALT", + index=2, + statictext=false, + x=12, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDALT", + index=3, + statictext=false, + x=12, + y=3 + } + }, + WINDALT1={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDALT1", + index=0, + statictext=false, + x=3, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDALT1", + index=1, + statictext=false, + x=3, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDALT1", + index=2, + statictext=false, + x=12, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDALT1", + index=3, + statictext=false, + x=12, + y=5 + } + }, + WINDALT2={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDALT2", + index=0, + statictext=false, + x=3, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDALT2", + index=1, + statictext=false, + x=3, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDALT2", + index=2, + statictext=false, + x=12, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDALT2", + index=3, + statictext=false, + x=12, + y=7 + } + }, + WINDALT3={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDALT3", + index=0, + statictext=false, + x=3, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDALT3", + index=1, + statictext=false, + x=12, + y=9 + } + }, + WINDCLRMODE={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDCLRMODE", + index=0, + statictext=false, + x=24, + y=7 + } + }, + WINDCLRMODE1={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDCLRMODE1", + index=0, + statictext=false, + x=24, + y=7 + } + }, + WINDCLRMODE2={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDCLRMODE2", + index=0, + statictext=false, + x=24, + y=7 + } + }, + WINDDATA_ENTRY={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY", + index=0, + statictext=false, + x=1, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY", + index=1, + statictext=false, + x=1, + y=3 + } + }, + WINDDATA_ENTRY1={ + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY1", + index=0, + statictext=false, + x=24, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY1", + index=1, + statictext=false, + x=24, + y=3 + } + }, + WINDDATA_ENTRY2={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY2", + index=0, + statictext=false, + x=1, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY2", + index=1, + statictext=false, + x=1, + y=5 + } + }, + WINDDATA_ENTRY3={ + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY3", + index=0, + statictext=false, + x=24, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY3", + index=1, + statictext=false, + x=24, + y=5 + } + }, + WINDDATA_ENTRY4={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY4", + index=0, + statictext=false, + x=1, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY4", + index=1, + statictext=false, + x=1, + y=7 + } + }, + WINDDATA_ENTRY5={ + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDATA_ENTRY5", + index=0, + statictext=false, + x=24, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY5", + index=1, + statictext=false, + x=24, + y=7 + } + }, + WINDDATA_ENTRY6={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY6", + index=0, + statictext=false, + x=1, + y=9 + } + }, + WINDDATA_ENTRY7={ + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDATA_ENTRY7", + index=0, + statictext=false, + x=24, + y=9 + } + }, + WINDDIV={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDIV", + index=0, + statictext=false, + x=9, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDIV", + index=1, + statictext=false, + x=9, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDIV", + index=2, + statictext=false, + x=5, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDIV", + index=3, + statictext=false, + x=5, + y=3 + } + }, + WINDDIV1={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDIV1", + index=0, + statictext=false, + x=9, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDIV1", + index=1, + statictext=false, + x=9, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDIV1", + index=2, + statictext=false, + x=5, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDIV1", + index=3, + statictext=false, + x=5, + y=5 + } + }, + WINDDIV2={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDIV2", + index=0, + statictext=false, + x=9, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDIV2", + index=1, + statictext=false, + x=9, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDIV2", + index=2, + statictext=false, + x=5, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDIV2", + index=3, + statictext=false, + x=5, + y=7 + } + }, + WINDDIV3={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDIV3", + index=0, + statictext=false, + x=9, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDIV3", + index=1, + statictext=false, + x=5, + y=9 + } + }, + WINDDir={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDir", + index=0, + statictext=false, + x=6, + y=5 + } + }, + WINDDir1={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDir1", + index=0, + statictext=false, + x=6, + y=5 + } + }, + WINDDirSpeed={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDirSpeed", + index=0, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed", + index=1, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed", + index=2, + statictext=false, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed", + index=3, + statictext=false, + x=2, + y=3 + } + }, + WINDDirSpeed1={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDirSpeed1", + index=0, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed1", + index=1, + statictext=false, + x=6, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed1", + index=2, + statictext=false, + x=2, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed1", + index=3, + statictext=false, + x=2, + y=3 + } + }, + WINDDirSpeed2={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDirSpeed2", + index=0, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed2", + index=1, + statictext=false, + x=6, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed2", + index=2, + statictext=false, + x=2, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed2", + index=3, + statictext=false, + x=2, + y=5 + } + }, + WINDDirSpeed3={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDDirSpeed3", + index=0, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed3", + index=1, + statictext=false, + x=6, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed3", + index=2, + statictext=false, + x=2, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed3", + index=3, + statictext=false, + x=2, + y=5 + } + }, + WINDDirSpeed4={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed4", + index=0, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed4", + index=1, + statictext=false, + x=2, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed4", + index=2, + statictext=false, + x=2, + y=7 + } + }, + WINDDirSpeed5={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed5", + index=0, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDDirSpeed5", + index=1, + statictext=false, + x=2, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed5", + index=2, + statictext=false, + x=2, + y=7 + } + }, + WINDDirSpeed6={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed6", + index=0, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed6", + index=1, + statictext=false, + x=2, + y=9 + } + }, + WINDDirSpeed7={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDDirSpeed7", + index=0, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDDirSpeed7", + index=1, + statictext=false, + x=2, + y=9 + } + }, + WINDMODE={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDMODE", + index=0, + statictext=true, + x=24, + y=3 + } + }, + WINDMODE1={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDMODE1", + index=0, + statictext=false, + x=23, + y=3 + } + }, + WINDMODE2={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDMODE2", + index=0, + statictext=false, + x=23, + y=3 + } + }, + WINDMODE3={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDMODE3", + index=0, + statictext=false, + x=23, + y=3 + } + }, + WINDMODE4={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WINDMODE4", + index=0, + statictext=false, + x=23, + y=3 + } + }, + WINDSpeed={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed", + index=0, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed", + index=1, + statictext=false, + x=10, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed", + index=2, + statictext=false, + x=6, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed", + index=3, + statictext=false, + x=6, + y=3 + } + }, + WINDSpeed1={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed1", + index=0, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed1", + index=1, + statictext=false, + x=10, + y=3 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed1", + index=2, + statictext=false, + x=6, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed1", + index=3, + statictext=false, + x=6, + y=3 + } + }, + WINDSpeed2={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed2", + index=0, + statictext=false, + x=10, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed2", + index=1, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed2", + index=2, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed2", + index=3, + statictext=false, + x=6, + y=5 + } + }, + WINDSpeed3={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed3", + index=0, + statictext=false, + x=10, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed3", + index=1, + statictext=false, + x=10, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed3", + index=2, + statictext=false, + x=6, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed3", + index=3, + statictext=false, + x=6, + y=5 + } + }, + WINDSpeed4={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed4", + index=0, + statictext=false, + x=10, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed4", + index=1, + statictext=false, + x=10, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed4", + index=2, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed4", + index=3, + statictext=false, + x=6, + y=7 + } + }, + WINDSpeed5={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDSpeed5", + index=0, + statictext=false, + x=10, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed5", + index=1, + statictext=false, + x=10, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDSpeed5", + index=2, + statictext=false, + x=6, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed5", + index=3, + statictext=false, + x=6, + y=7 + } + }, + WINDSpeed6={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed6", + index=0, + statictext=false, + x=10, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed6", + index=1, + statictext=false, + x=6, + y=9 + } + }, + WINDSpeed7={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDSpeed7", + index=0, + statictext=false, + x=10, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDSpeed7", + index=1, + statictext=false, + x=6, + y=9 + } + }, + WINDTemp={ + { + alignment="RGHT", + cdu_pages={ + "WIND", + "WNDEDIT" + }, + id="WINDTemp", + index=0, + statictext=false, + x=24, + y=2 + }, + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp", + index=1, + statictext=false, + x=13, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp", + index=2, + statictext=false, + x=13, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp", + index=3, + statictext=false, + x=23, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp", + index=4, + statictext=false, + x=23, + y=3 + } + }, + WINDTemp1={ + { + alignment="RGHT", + cdu_pages={ + "WIND", + "WNDEDIT" + }, + id="WINDTemp1", + index=0, + statictext=false, + x=24, + y=2 + }, + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp1", + index=1, + statictext=false, + x=13, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp1", + index=2, + statictext=false, + x=13, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp1", + index=3, + statictext=false, + x=23, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp1", + index=4, + statictext=false, + x=23, + y=3 + } + }, + WINDTemp10={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp10", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp10", + index=1, + statictext=false, + x=23, + y=9 + } + }, + WINDTemp11={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp11", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp11", + index=1, + statictext=false, + x=23, + y=9 + } + }, + WINDTemp12={ + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp12", + index=0, + statictext=false, + x=23, + y=9 + } + }, + WINDTemp2={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp2", + index=0, + statictext=false, + x=13, + y=5 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp2", + index=1, + statictext=false, + x=13, + y=3 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp2", + index=2, + statictext=false, + x=23, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp2", + index=3, + statictext=false, + x=23, + y=3 + } + }, + WINDTemp3={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp3", + index=0, + statictext=false, + x=13, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp3", + index=1, + statictext=false, + x=13, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp3", + index=2, + statictext=false, + x=23, + y=7 + } + }, + WINDTemp4={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp4", + index=0, + statictext=false, + x=13, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp4", + index=1, + statictext=false, + x=13, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp4", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp4", + index=3, + statictext=false, + x=23, + y=5 + } + }, + WINDTemp5={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp5", + index=0, + statictext=false, + x=13, + y=7 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp5", + index=1, + statictext=false, + x=13, + y=5 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp5", + index=2, + statictext=false, + x=23, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp5", + index=3, + statictext=false, + x=23, + y=5 + } + }, + WINDTemp6={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp6", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp6", + index=1, + statictext=false, + x=13, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp6", + index=2, + statictext=false, + x=23, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp6", + index=3, + statictext=false, + x=23, + y=5 + } + }, + WINDTemp7={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp7", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp7", + index=1, + statictext=false, + x=13, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp7", + index=2, + statictext=false, + x=23, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp7", + index=3, + statictext=false, + x=23, + y=7 + } + }, + WINDTemp8={ + { + alignment="LFT", + cdu_pages={ + "WIND1" + }, + id="WINDTemp8", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp8", + index=1, + statictext=false, + x=13, + y=7 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT1" + }, + id="WINDTemp8", + index=2, + statictext=false, + x=23, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp8", + index=3, + statictext=false, + x=23, + y=7 + } + }, + WINDTemp9={ + { + alignment="LFT", + cdu_pages={ + "WIND2" + }, + id="WINDTemp9", + index=0, + statictext=false, + x=13, + y=9 + }, + { + alignment="RGHT", + cdu_pages={ + "WNDEDIT2" + }, + id="WINDTemp9", + index=1, + statictext=false, + x=23, + y=7 + } + }, + WIND_ALT_TEMP={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT1" + }, + id="WIND_ALT_TEMP", + index=0, + statictext=true, + x=2, + y=4 + } + }, + WND={ + { + alignment="LFT", + cdu_pages={ + "STRINFO", + "WAYPT1" + }, + id="WND", + index=0, + statictext=true, + x=13, + y=8 + } + }, + WNDDIV={ + { + alignment="LFT", + cdu_pages={ + "WIND", + "WNDEDIT" + }, + id="WNDDIV", + index=0, + statictext=false, + x=17, + y=2 + } + }, + WNDEDIT={ + { + alignment="RGHT", + cdu_pages={ + "WIND" + }, + id="WNDEDIT", + index=0, + statictext=true, + x=24, + y=5 + } + }, + WNDEDWindDirection1={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT" + }, + id="WNDEDWindDirection1", + index=0, + statictext=false, + x=14, + y=2 + } + }, + WNDEDWindDirection2={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT" + }, + id="WNDEDWindDirection2", + index=0, + statictext=false, + x=14, + y=2 + } + }, + WNDEDWindSpeed1={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT" + }, + id="WNDEDWindSpeed1", + index=0, + statictext=false, + x=18, + y=2 + } + }, + WNDEDWindSpeed2={ + { + alignment="LFT", + cdu_pages={ + "WNDEDIT" + }, + id="WNDEDWindSpeed2", + index=0, + statictext=false, + x=18, + y=2 + } + }, + WNDWindDirection1={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="WNDWindDirection1", + index=0, + statictext=false, + x=14, + y=2 + } + }, + WNDWindDirection2={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="WNDWindDirection2", + index=0, + statictext=false, + x=14, + y=2 + } + }, + WNDWindSpeed1={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="WNDWindSpeed1", + index=0, + statictext=false, + x=18, + y=2 + } + }, + WNDWindSpeed2={ + { + alignment="LFT", + cdu_pages={ + "WIND" + }, + id="WNDWindSpeed2", + index=0, + statictext=false, + x=18, + y=2 + } + }, + WPActive={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive", + index=0, + statictext=false, + x=9, + y=5 + } + }, + WPActive1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive1", + index=0, + statictext=false, + x=9, + y=5 + } + }, + WPActive2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive2", + index=0, + statictext=false, + x=9, + y=6 + } + }, + WPActive3={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive3", + index=0, + statictext=false, + x=9, + y=7 + } + }, + WPActive4={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive4", + index=0, + statictext=false, + x=9, + y=7 + } + }, + WPActive5={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive5", + index=0, + statictext=false, + x=9, + y=8 + } + }, + WPActive6={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive6", + index=0, + statictext=false, + x=9, + y=9 + } + }, + WPActive7={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPActive7", + index=0, + statictext=false, + x=9, + y=9 + } + }, + WPFPNumber={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPFPNumber", + index=0, + statictext=false, + x=2, + y=5 + } + }, + WPFPNumber1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPFPNumber1", + index=0, + statictext=false, + x=2, + y=7 + } + }, + WPFPNumber2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPFPNumber2", + index=0, + statictext=false, + x=2, + y=9 + } + }, + WPInput={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPInput", + index=0, + statictext=false, + x=1, + y=5 + } + }, + WPInput1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPInput1", + index=0, + statictext=false, + x=1, + y=7 + } + }, + WPInput2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPInput2", + index=0, + statictext=false, + x=1, + y=9 + } + }, + WPN_EVENTS={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="WPN_EVENTS", + index=0, + statictext=true, + x=2, + y=8 + } + }, + WPN_EVENTS1={ + { + alignment="RGHT", + cdu_pages={ + "LASTE" + }, + id="WPN_EVENTS1", + index=0, + statictext=false, + x=16, + y=8 + } + }, + WPName={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName", + index=0, + statictext=false, + x=10, + y=5 + } + }, + WPName1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName1", + index=0, + statictext=false, + x=10, + y=5 + } + }, + WPName2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName2", + index=0, + statictext=false, + x=10, + y=6 + } + }, + WPName3={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName3", + index=0, + statictext=false, + x=10, + y=7 + } + }, + WPName4={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName4", + index=0, + statictext=false, + x=10, + y=7 + } + }, + WPName5={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName5", + index=0, + statictext=false, + x=10, + y=8 + } + }, + WPName6={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName6", + index=0, + statictext=false, + x=10, + y=9 + } + }, + WPName7={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPName7", + index=0, + statictext=false, + x=10, + y=9 + } + }, + WPNewName={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName", + index=0, + statictext=false, + x=10, + y=5 + } + }, + WPNewName1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName1", + index=0, + statictext=false, + x=10, + y=5 + } + }, + WPNewName2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName2", + index=0, + statictext=false, + x=10, + y=7 + } + }, + WPNewName3={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName3", + index=0, + statictext=false, + x=10, + y=7 + } + }, + WPNewName4={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName4", + index=0, + statictext=false, + x=10, + y=9 + } + }, + WPNewName5={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNewName5", + index=0, + statictext=false, + x=10, + y=9 + } + }, + WPNumber={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber", + index=0, + statictext=false, + x=5, + y=5 + } + }, + WPNumber1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber1", + index=0, + statictext=false, + x=5, + y=5 + } + }, + WPNumber2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber2", + index=0, + statictext=false, + x=5, + y=6 + } + }, + WPNumber3={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber3", + index=0, + statictext=false, + x=5, + y=7 + } + }, + WPNumber4={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber4", + index=0, + statictext=false, + x=5, + y=7 + } + }, + WPNumber5={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber5", + index=0, + statictext=false, + x=5, + y=8 + } + }, + WPNumber6={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber6", + index=0, + statictext=false, + x=5, + y=9 + } + }, + WPNumber7={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPNumber7", + index=0, + statictext=false, + x=5, + y=9 + } + }, + WPT={ + { + alignment="LFT", + cdu_pages={ + "WPTATT", + "WAYPT2" + }, + id="WPT", + index=0, + statictext=false, + x=2, + y=2 + } + }, + WPTATT={ + { + alignment="RGHT", + cdu_pages={ + "FPBUILD" + }, + id="WPTATT", + index=0, + statictext=false, + x=24, + y=4 + } + }, + WPTATTBranch={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPTATTBranch", + index=0, + statictext=false, + x=24, + y=5 + } + }, + WPTATTBranch1={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPTATTBranch1", + index=0, + statictext=false, + x=24, + y=7 + } + }, + WPTATTBranch2={ + { + alignment="LFT", + cdu_pages={ + "FPBUILD" + }, + id="WPTATTBranch2", + index=0, + statictext=false, + x=24, + y=9 + } + }, + WPTATTScale={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTScale", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WPTATTScale1={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTScale1", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WPTATTScale2={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTScale2", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WPTATTScale3={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTScale3", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WPTATTScale4={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTScale4", + index=0, + statictext=false, + x=2, + y=4 + } + }, + WPTATTSteer={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTSteer", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WPTATTSteer1={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTSteer1", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WPTATTSteer2={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTSteer2", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WPTATTSteer4={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTSteer4", + index=0, + statictext=false, + x=2, + y=6 + } + }, + WPTATTVNavMode={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTVNavMode", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WPTATTVNavMode1={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTVNavMode1", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WPTATTVNavMode2={ + { + alignment="RGHT", + cdu_pages={ + "WPTATT" + }, + id="WPTATTVNavMode2", + index=0, + statictext=false, + x=23, + y=6 + } + }, + WPTATT_DTOT={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTOT", + index=0, + statictext=false, + x=8, + y=9 + } + }, + WPTATT_DTOT1={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTOT1", + index=0, + statictext=false, + x=8, + y=9 + } + }, + WPTATT_DTOT_ST={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTOT_ST", + index=0, + statictext=true, + x=1, + y=9 + } + }, + WPTATT_DTTG={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTTG", + index=0, + statictext=false, + x=7, + y=7 + } + }, + WPTATT_DTTG1={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTTG1", + index=0, + statictext=false, + x=7, + y=7 + } + }, + WPTATT_DTTG_ST={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_DTTG_ST", + index=0, + statictext=true, + x=1, + y=7 + } + }, + WPTATT_FP_Number={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_FP_Number", + index=0, + statictext=false, + x=22, + y=3 + } + }, + WPTATT_WPT_Name={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_WPT_Name", + index=0, + statictext=false, + x=11, + y=2 + } + }, + WPTATT_WPT_Number={ + { + alignment="LFT", + cdu_pages={ + "WPTATT" + }, + id="WPTATT_WPT_Number", + index=0, + statictext=false, + x=6, + y=2 + } + }, + WPTDIS1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WPTDIS1", + index=0, + statictext=false, + x=20, + y=5 + } + }, + WPTDIS2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WPTDIS2", + index=0, + statictext=false, + x=20, + y=5 + } + }, + WPTDISMH={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WPTDISMH", + index=0, + statictext=true, + x=19, + y=5 + } + }, + WPTMH1={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WPTMH1", + index=0, + statictext=false, + x=16, + y=5 + } + }, + WPTMH2={ + { + alignment="LFT", + cdu_pages={ + "WPINFO" + }, + id="WPTMH2", + index=0, + statictext=false, + x=16, + y=5 + } + }, + WPTTTG1={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="WPTTTG1", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WPTTTG2={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="WPTTTG2", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WPTTTG3={ + { + alignment="RGHT", + cdu_pages={ + "WPINFO" + }, + id="WPTTTG3", + index=0, + statictext=false, + x=23, + y=4 + } + }, + WRITE={ + { + alignment="LFT", + cdu_pages={ + "MXLOG" + }, + id="WRITE", + index=0, + statictext=true, + x=2, + y=9 + } + }, + YEAR={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="YEAR", + index=0, + statictext=true, + x=16, + y=3 + } + }, + YEAR_DE={ + { + alignment="LFT", + cdu_pages={ + "TIME" + }, + id="YEAR_DE", + index=0, + statictext=false, + x=24, + y=3 + } + }, + YEAR_TXT={ + { + alignment="RGHT", + cdu_pages={ + "TIME" + }, + id="YEAR_TXT", + index=0, + statictext=false, + x=23, + y=3 + } + }, + YES={ + { + alignment="LFT", + cdu_pages={ + "LASTE" + }, + id="YES", + index=0, + statictext=true, + x=11, + y=3 + } + }, + ZEROES1={ + { + alignment="LFT", + cdu_pages={ + "SYS2" + }, + id="ZEROES1", + index=0, + statictext=true, + x=1, + y=7 + } + }, + ZEROES2={ + { + alignment="RGHT", + cdu_pages={ + "SYS2" + }, + id="ZEROES2", + index=0, + statictext=true, + x=23, + y=7 + } + }, + ZEROIZE={ + { + alignment="LFT", + cdu_pages={ + "GPSKEYS" + }, + id="ZEROIZE", + index=0, + statictext=true, + x=1, + y=9 + } + }, + pName={ + { + alignment="LFT", + cdu_pages={ + "GPSSTAT2" + }, + id="pName", + index=0, + statictext=true, + x=2, + y=1 + } + }, + ScratchBorders={ + { + alignment="LFT", + x=1, + y=10 + } + }, + ScratchString={ + { + alignment="LFT", + x=2, + y=10 + } + }, + PAGE={ + { + alignment="LFT", + x=19, + y=10 + } + }, + PAGE_NUM={ + { + alignment="LFT", + x=20, + y=10 + } + } +} + +-- Unicode UTF-16 +function ExportScript.AF.replaceSymbols(s) + s = s:gsub(string.char(0xB0), "0x00B0") --DEGREE "°" + s = s:gsub(string.char(0xB1), "0x00B1") --INC_DEC "±" + s = s:gsub(string.char(0xA9), "0x2299") --INC_DEC (Circle with Dot) + s = s:gsub(string.char(0x3A), "0x003A") --Colon ":" + s = s:gsub(":" , "0x003A") --Colon ":" + s = s:gsub(string.char(0xBB), "0x2192") --Right Arrow "→" + s = s:gsub(string.char(0xAB), "0x2190") --Left Arrow "â†" + s = s:gsub(string.char(0xB6), "0x2588") --Cursor "â–ˆ" + s = s:gsub(string.char(0xA1), "0x2337") --DATA_ENTRY "⌷" + s = s:gsub(string.char(0xAE), "0x2195") --UpDown Arrow "↕" + s = s:gsub("*" , "0x002A") -- Asterisk "*" + return s +end + +function ExportScript.AF.preReplaceSymbols(s) + s = s:gsub(string.char(26), string.char(0xBB)) -- BRANCH_L + s = s:gsub(string.char(27), string.char(0xAB)) -- BRANCH_R + s = s:gsub(string.char(18), string.char(0xAE)) -- ROTARY + s = s:gsub(string.char(20), string.char(0xA1)) -- DATA_ENTRY + s = s:gsub("©" , string.char(0xA9)) -- SYS_ACTION + s = s:gsub("°" , string.char(0xB0)) -- DEGREE + s = s:gsub("ÑŽ" , string.char(0xB6)) -- FILLED + s = s:gsub("Ñ" , string.char(0xB1)) -- INC_DEC + return s +end + +function ExportScript.AF.exportCDU() + local cdu = ExportScript.Tools.getListIndicatorValue(3) + + local cdu_lines = {} + local empty_line = " " -- 24 spaces + cdu_lines[1] = empty_line + cdu_lines[2] = empty_line + cdu_lines[3] = empty_line + cdu_lines[4] = empty_line + cdu_lines[5] = empty_line + cdu_lines[6] = empty_line + cdu_lines[7] = empty_line + cdu_lines[8] = empty_line + cdu_lines[9] = empty_line + cdu_lines[10] = empty_line + if not cdu then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('keine cdu daten') + end + ExportScript.Tools.SendData(2030, cdu_lines[1]) + ExportScript.Tools.SendData(2031, cdu_lines[2]) + ExportScript.Tools.SendData(2032, cdu_lines[3]) + ExportScript.Tools.SendData(2033, cdu_lines[4]) + ExportScript.Tools.SendData(2034, cdu_lines[5]) + ExportScript.Tools.SendData(2035, cdu_lines[6]) + ExportScript.Tools.SendData(2036, cdu_lines[7]) + ExportScript.Tools.SendData(2037, cdu_lines[8]) + ExportScript.Tools.SendData(2038, cdu_lines[9]) + ExportScript.Tools.SendData(2039, cdu_lines[10]) + return + end + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('cdu: '..ExportScript.Tools.dump(cdu)) + end + local cdu_page = list_cockpit_params():match('CDU_PAGE:"([0-9A-Za-z_]+)"') + local cursor_pos = 2 + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('cdu_page: '..ExportScript.Tools.dump(cdu_page)) + end + if cdu.ScratchString then cursor_pos = cdu.ScratchString:len()+2 end + + ExportScript.AF.CDUIndicatorData["Cursor"]={ + [1]={ + alignment="LFT", + x=cursor_pos, + y=10 + } + } + + for k, v in pairs(cdu) do + local candidates = ExportScript.AF.CDUIndicatorData[k] + if candidates then + + v = ExportScript.AF.preReplaceSymbols(v) -- make sure that 1 char == 1 byte + + local render_instructions = nil + if #candidates == 1 then + render_instructions = candidates[1] + else + for _, ri in pairs(candidates) do + for _, page in pairs(ri.cdu_pages) do + if cdu_page == "CDU_"..page then + render_instructions = ri + break + end + end + end + end + if render_instructions then + local i + local ri = render_instructions + local old_line = cdu_lines[ri.y] + local replacements = {} + if ri.alignment == "LFT" then + for i = 1, v:len(), 1 do + local c = v:sub(i,i) + if c ~= " " then replacements[ri.x + i - 1] = c end + end + elseif ri.alignment == "RGHT" then + for i = 1, v:len(), 1 do + local c = v:sub(i,i) + if c ~= " " then replacements[ri.x - (v:len() - i)] = c end + end + end + local new_line = "" + for i = 1, 24, 1 do + new_line = new_line .. (replacements[i] or old_line:sub(i,i)) + end + cdu_lines[ri.y] = new_line + end + end + end + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('cdu_lines 1: '..ExportScript.Tools.dump(cdu_lines)) + end + + cdu_lines[1] = ExportScript.AF.replaceSymbols(cdu_lines[1]) + cdu_lines[2] = ExportScript.AF.replaceSymbols(cdu_lines[2]) + cdu_lines[3] = ExportScript.AF.replaceSymbols(cdu_lines[3]) + cdu_lines[4] = ExportScript.AF.replaceSymbols(cdu_lines[4]) + cdu_lines[5] = ExportScript.AF.replaceSymbols(cdu_lines[5]) + cdu_lines[6] = ExportScript.AF.replaceSymbols(cdu_lines[6]) + cdu_lines[7] = ExportScript.AF.replaceSymbols(cdu_lines[7]) + cdu_lines[8] = ExportScript.AF.replaceSymbols(cdu_lines[8]) + cdu_lines[9] = ExportScript.AF.replaceSymbols(cdu_lines[9]) + cdu_lines[10] = ExportScript.AF.replaceSymbols(cdu_lines[10]) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('cdu_lines 2: '..ExportScript.Tools.dump(cdu_lines)) + end + ExportScript.Tools.SendData(2030, cdu_lines[1]) + ExportScript.Tools.SendData(2031, cdu_lines[2]) + ExportScript.Tools.SendData(2032, cdu_lines[3]) + ExportScript.Tools.SendData(2033, cdu_lines[4]) + ExportScript.Tools.SendData(2034, cdu_lines[5]) + ExportScript.Tools.SendData(2035, cdu_lines[6]) + ExportScript.Tools.SendData(2036, cdu_lines[7]) + ExportScript.Tools.SendData(2037, cdu_lines[8]) + ExportScript.Tools.SendData(2038, cdu_lines[9]) + ExportScript.Tools.SendData(2039, cdu_lines[10]) + +end \ No newline at end of file diff --git a/ExportsModules/AV8BNA.lua b/ExportsModules/AV8BNA.lua new file mode 100644 index 0000000..e86ebfe --- /dev/null +++ b/ExportsModules/AV8BNA.lua @@ -0,0 +1,1435 @@ +-- AV8BNA + +ExportScript.FoundDCSModule = true +ExportScript.Version.AV8BNA = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- LAMPS -------------------------------------- + --MIP INNER LEFT SIDE + [196] = "%.f", --Master Caution (yellow) + [326] = "%.f", --L FUEL + [327] = "%.f", --R FUEL + [328] = "%.f", --15 Sek + [329] = "%.f", --MFS + [330] = "%.f", --BINGO + [331] = "%.f", --H2O + --MIP RIGHT SIDE + [197] = "%.f", --Master Warning (red) + [334] = "%.f", --FIRE + [335] = "%.f", --LAW + [336] = "%.f", --FLAPS + [337] = "%.f", --L TANK + [338] = "%.f", --R TANK + [339] = "%.f", --HHYD + [340] = "%.f", --GEAR + [341] = "%.f", --OT + [342] = "%.f", --JPTL + [343] = "%.f", --EFC + [344] = "%.f", --GEN + --EYEBROW LIGHTS RIGHT SIGHT + [276] = "%.f", --SAM + [277] = "%.f", --CW + [278] = "%.f", --AI + [279] = "%.f", --AAA + --MIP OUTER LEFT SIDE + [283] = "%.f", --NAV + [285] = "%.f", --VSTOL + [281] = "%.f", --A/G + [451] = "%.f", --SEL + [452] = "%.f", --CMBT + [453] = "%.f", --STO + --CANOPY FRAME + [750] = "%.f", --LEFT + [751] = "%.f", --READY + [752] = "%.f", --RIGHT + --GEAR LEVER + [446] = "%.f", --(red warning light) + --CAUTION PANEL (from upper left to lower right) + [560] = "%.f", --OXY + [561] = "%.f", --WSLD + [562] = "%.f", --HYD 1 + [563] = "%.f", --HYD 2 + [564] = "%.f", --L PUMP + [565] = "%.f", --R PUMP + [566] = "%.f", --L TRANS + [567] = "%.f", --R TRANS + [568] = "%.f", --FLAPS 1 + [569] = "%.f", --FLAPS 2 + [570] = "%.f", --AUT FLP + [571] = "%.f", --PROP + [572] = "%.f", --LIDS + [573] = "%.f", --OIL + [574] = "%.f", --APU GEN + [575] = "%.f", --"--" + [576] = "%.f", --GPS + [577] = "%.f", --DEP RES + [578] = "%.f", --DC + [579] = "%.f", --STBY TR + [580] = "%.f", --CS COOL + [581] = "%.f", --LOAD + [582] = "%.f", --CANOPY + [583] = "%.f", --INS + [584] = "%.f", --SKID + [585] = "%.f", --EFC + [586] = "%.f", --NWS + [587] = "%.f", --AFC + [588] = "%.f", --C AUT + [589] = "%.f", --H2O SEL + [590] = "%.f", --APU + [591] = "%.f", --PITCH + [592] = "%.f", --IFF + [593] = "%.f", --SPD BRK + [594] = "%.f", --DROOP + [595] = "%.f", --ROLL + [596] = "%.f", --AFT BAY + [597] = "%.f", --AV BIT -----MAYBE NOT WORKING !----- + [598] = "%.f", --"--" + [599] = "%.f", --YAW + [600] = "%.f", --CW NOGO + [601] = "%.f", --P JAM + [602] = "%.f", --JAM HOT + [603] = "%.f", --ENG EXC + [604] = "%.f", --P NOGO + [605] = "%.f", --CW JAM + [606] = "%.f", --REPLY + --ENGINE DISPLAY + [253] = "%.4f", --DUCT 1. DRUM + [254] = "%.4f", --DUCT 2. + [255] = "%.4f", --DUCT 3. + [256] = "%.4f", --RPM 1. DRUM + [257] = "%.4f", --RPM 2. + [258] = "%.4f", --RPM 3. + [259] = "%.4f", --RPM 4. + [260] = "%.4f", --FF 1. DRUM + [261] = "%.4f", --FF 2. + [262] = "%.4f", --FF 3. + [263] = "%.4f", --JPT 1. DRUM + [264] = "%.4f", --JPT 2. + [265] = "%.4f", --JPT 3. + [266] = "%.4f", --STAB(Arrow up/down) + [267] = "%.4f", --STAB 1. Number, 2.DRUM + [268] = "%.4f", --STAB 2. Number, 3. DRUM + [269] = "%.4f", --H2O 1. Number + [270] = "%.4f", --H2O 2. Number -----3. Number is fix !!---- + [177] = "%.f", --FLOW W LAMP + [271] = "%.4f", --NOZZLE POINTER + --FUEL PANEL DISPLAY + [365] = "%.4f", --ON/OFF FLAG + [366] = "%.4f", --TOT FUEL 1. DRUM + [367] = "%.4f", --TOT FUEL 2. + [368] = "%.4f", --TOT FUEL 3. + [369] = "%.4f", --TOT FUEL 4. + [370] = "%.4f", --TOT FUEL 5. + [371] = "%.4f", --LBS L 1. DRUM + [372] = "%.4f", --LBS L 2. + [373] = "%.4f", --LBS L 3. + [374] = "%.4f", --LBS L 4. + [375] = "%.4f", --LBS R 1. DRUM + [376] = "%.4f", --LBS R 2. + [377] = "%.4f", --LBS R 3. + [378] = "%.4f", --LBS R 4. + [381] = "%.4f", --BINGO 1. DRUM + [382] = "%.4f", --BINGO 2. + [383] = "%.4f", --BINGO 3. + [384] = "%.4f", --BINGO 4. + --UPPER AMARMENT PANEL + [385] = "%.4f", --MODE + [386] = "%.4f", --FUZ 1. DRUM + [387] = "%.4f", --FUR 2. + [392] = "%.4f", --InVT x 10 1. DRUM + [393] = "%.4f", --InVT x 10 2. + [394] = "%.4f", --InVT x 10 3. + [391] = "%.4f", --MULT + [389] = "%.4f", --QTY 1. Drum + [390] = "%.4f", --QTY 2. + --LOWER AMARMENT PANEL + [406] = "%.4f", --SET FLAG 1 + [408] = "%.4f", --SET FLAG 2 + [410] = "%.4f", --SET FLAG 3 + [412] = "%.4f", --SET FLAG 4 + [414] = "%.4f", --SET FLAG 5 + [416] = "%.4f", --SET FLAG 6 + [418] = "%.4f", --SET FLAG 7 + --GEAR PANEL DISPLAY --STATUS LIGHTS-- + [462] = "%.f", --NOSE GEAR (YELLOW) + [463] = "%.f", --NOSE GEAR (GREEN) + [464] = "%.f", --LEFR GEAR (YELLOW) + [465] = "%.f", --LEFT GEAR (GREEN) + [466] = "%.f", --RIGHT GEAR (YELLOW) + [467] = "%.f", --RIGHT GEAR (GREEN) + [469] = "%.f", --MAIN GEAR (YELLOW) + [468] = "%.f", --MAIN GEAR (GREEN) + --BRAKE/ HYD DISPLAY + [550] = "%.4f", --BRAKE 1. DRUM + [551] = "%.4f", --BRAKE 2. + [552] = "%.4f", --BRAKE 3. + [553] = "%.4f", --HYD1 1. DRUM + [554] = "%.4f", --HYD1 2. + [555] = "%.4f", --HYD1 3. + [556] = "%.4f", --HYD2 1. DRUM + [557] = "%.4f", --HYD2 2. + [558] = "%.4f", --HYD2 3. + --FLAP POSITION DISPLAY + [455] = "%.4f", --FLAP POS 1. DRUM + [456] = "%.4f", --FLAP POS 2. DRUM + -- INSTRUMENTS ------------------------------------------------ + ---STBY MIP + --ADI + [349] = "%.4f", --ADI DRUM UO/DWN CLIMB/DESCEND + [348] = "%.4f", --ADI DRUM LEFR RIGHT (BANK) + [347] = "%.4f", --OFF FLAG + --AIRSPEED + [346] = "%.4f", --KNT POINTER SHORT + [345] = "%.4f", --KNT POINTER LONG + --ALTIMETER + [352] = "%.4f", --ALT POINTER + [355] = "%.4f", --ALT DIGITAL 1. NUMBER + [354] = "%.4f", --ALT DIGITAL 2. + [353] = "%.4f", --ALT DIGITAL 3. + [356] = "%.4f", --IN HG 1. NUMBER + [357] = "%.4f", --IN HG 2. NUMBER + [358] = "%.4f", --IN HG 3. NUMBER + [359] = "%.4f", --IN HG 4. NUMBER + --AOA + [360] = "%.4f", --AOA FLAG + [361] = "%.4f", --AOA POINTER + --VVI + [362] = "%.4f", --VVI POINTER + --SLIP INDICATOR + [363] = "%.4f", --BALL + ---SIDE PANELS LEFT + --AILERON METER + [473] = "%.4f", --AILERON NEEDLE + --RUDDER + [474] = "%.4f", --RUDDER NEEDLE + ---SIDE PANELS RIGHT + --ACCU METER + [559] = "%.4f", --ACCU POINTER + --CABIN PRESSURE + [607] = "%.4f", --CABIN PRESS POINTER + --BATTERY (VOLT METER) + [608] = "%.4f", --VOLT METER POINTER + ---Compass + [753] = "%.4f", --Compassrose N-> S (rotate) + [754] = "%.4f", --Compassrose Up / Down + [755] = "%.4f", --Compassrose bank + ---CLOCK + [759] = "%.4f", --POINTER HOUR + [760] = "%.4f", --POINTER MINUTE + [761] = "%.4f", --POINTER SECOND + ---STOPWATCH + --NOTHING FOUND YET + --CABIN LIGHTNING + [180] = "%.f", --FLOOD + [182] = "%.f", --MIP BACKLIGHTING + [183] = "%.f", --LEFT AND RIGHT SIDEPANEL LIGHTING + [184] = "%.f", --WHISKEY COMPASS BACKLIGHT (LEFT CANOPY FRAME) +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Master Modes Panel + [282] = "%.1f", --Nav Master Mode selector + [284] = "%.1f", --VSTOL Master Mode Selector + [280] = "%.1f", --AG Master Mode Selector + -- Engine Display Panel + [272] = "%.4f", --EDP Brightness Control + [655] = "%1d", --EDP BIT Button + -- HUD Control Panel + [288] = "%.4f", --HUD + [289] = "%.4f", --HUD Off/Brightness Control + [290] = "%.1f", --HUD Display Mode Switch + [291] = "%.4f", --HUD Video Brightness Control + [292] = "%.4f", --HUD Video Contrast Control + [293] = "%1d", --HUD Altitude Selector Switch + -- UFC Panel + [302] = "%1d", --UFC Button 1 + [303] = "%1d", --UFC Button 2/N + [304] = "%1d", --UFC Button 3 + [306] = "%1d", --UFC Button 4/W + [307] = "%1d", --UFC Button 5 + [308] = "%1d", --UFC Button 6/E + [310] = "%1d", --UFC Button 7 + [311] = "%1d", --UFC Button 8/S + [312] = "%1d", --UFC Button 9 + [315] = "%1d", --UFC Button 0 + [316] = "%1d", --UFC Button . + [313] = "%1d", --UFC Button - + [314] = "%1d", --ENTER Data Button + [305] = "%1d", --Clear Entry Button + [294] = "%1d", --Timer Function Selector + [324] = "%1d", --Altitude Function Selector + [318] = "%1d", --IFF Function Selector + [319] = "%1d", --TACAN Function Selector + [320] = "%1d", --All Weather Landing Function Selector + [317] = "%1d", --Radalt/TACAN/AWL/IFF ON/OFF Toggle + [325] = "%1d", --EMCON ON/OFF Toggle + [296] = "%1d", --Target-Of-Opportunity Selector + [322] = "%1d", --Waypoint Overfly INS Update Selector + [321] = "%1d", --Weapons Function Selector + [323] = "%1d", --Radar Beacon Function Selector + [297] = "%1d", --I/P Button + [309] = "%1d", --Save Data Button + [295] = "%1d", --Display Brightness Control + [298] = "%.4f", --Comm 1 Volume Control + [299] = "%.4f", --Comm 2 Volume Control + [300] = "%.4f", --Comm 1 Channel Selector + [301] = "%.4f", --Comm 2 Channel Selector + [178] = "%.4f", --Comm 1 Channel Show Button + [179] = "%.4f", --Comm 2 Channel Show Button + -- ODU Panel + [250] = "%1d", --ODU Option1 + [251] = "%1d", --ODU Option2 + [252] = "%1d", --ODU Option3 + [248] = "%1d", --ODU Option4 + [249] = "%1d", --ODU Option5 + -- Master Caution/Warning Panel + [198] = "%1d", --Master Caution + [199] = "%1d", --Master Warning + -- Fuel Quantity Indicator + [379] = "%.1f", --Fuel Totalizer Selector + [380] = "%.4f", --Bingo Fuel Set Knob + -- MPCD left + [200] = "%1d", --MPCD Left Button 1 + [201] = "%1d", --MPCD Left Button 2 + [202] = "%1d", --MPCD Left Button 3 + [203] = "%1d", --MPCD Left Button 4 + [204] = "%1d", --MPCD Left Button 5 + [205] = "%1d", --MPCD Left Button 6 + [206] = "%1d", --MPCD Left Button 7 + [207] = "%1d", --MPCD Left Button 8 + [208] = "%1d", --MPCD Left Button 9 + [209] = "%1d", --MPCD Left Button 10 + [210] = "%1d", --MPCD Left Button 11 + [211] = "%1d", --MPCD Left Button 12 + [212] = "%1d", --MPCD Left Button 13 + [213] = "%1d", --MPCD Left Button 14 + [214] = "%1d", --MPCD Left Button 15 + [215] = "%1d", --MPCD Left Button 16 + [216] = "%1d", --MPCD Left Button 17 + [217] = "%1d", --MPCD Left Button 18 + [218] = "%1d", --MPCD Left Button 19 + [219] = "%1d", --MPCD Left Button 20 + [220] = "%1d", --MPCD Left Display DAY/NIGHT Mode + [221] = "%1d", --MPCD Left Display Symbology + [222] = "%1d", --MPCD Left Display Gain + [223] = "%1d", --MPCD Left Display Contrast + [194] = "%.4f", --MPCD Left Off/Brightness Control + -- MPCD Right + [224] = "%1d", --MPCD Right Button 1 + [225] = "%1d", --MPCD Right Button 2 + [226] = "%1d", --MPCD Right Button 3 + [227] = "%1d", --MPCD Right Button 4 + [228] = "%1d", --MPCD Right Button 5 + [229] = "%1d", --MPCD Right Button 6 + [230] = "%1d", --MPCD Right Button 7 + [231] = "%1d", --MPCD Right Button 8 + [232] = "%1d", --MPCD Right Button 9 + [233] = "%1d", --MPCD Right Button 10 + [234] = "%1d", --MPCD Right Button 11 + [235] = "%1d", --MPCD Right Button 12 + [236] = "%1d", --MPCD Right Button 13 + [237] = "%1d", --MPCD Right Button 14 + [238] = "%1d", --MPCD Right Button 15 + [239] = "%1d", --MPCD Right Button 16 + [240] = "%1d", --MPCD Right Button 17 + [241] = "%1d", --MPCD Right Button 18 + [242] = "%1d", --MPCD Right Button 19 + [243] = "%1d", --MPCD Right Button 20 + [244] = "%1d", --MPCD Right Display DAY/NIGHT Mode + [245] = "%1d", --MPCD Right Display Symbology + [246] = "%1d", --MPCD Right Display Gain + [247] = "%1d", --MPCD Right Display Contrast + [195] = "%.4f", --MPCD Right Off/Brightness Control + -- Armament Control Panel ACP + [395] = "%.1f", --Manual Release Control Knob + [396] = "%1d", --Armament Mode Control + [397] = "%1d", --Fuzing Control + [398] = "%1d", --Quantity Selector (Tens) + [399] = "%1d", --Quantity Selector (Units) + [400] = "%1d", --Multiple Release Control + [401] = "%1d", --Release Interval Control (Hundreds) + [402] = "%1d", --Release Interval Control (Tens) + [403] = "%1d", --Release Interval Control (Units) + [404] = "%1d", --Jettison Mode Selector + [405] = "%1d", --Jettison Stores + [407] = "%1d", --Select Station 1 Toggle + [409] = "%1d", --Select Station 2 Toggle + [411] = "%1d", --Select Station 3 Toggle + [413] = "%1d", --Select Station 4 Toggle + [415] = "%1d", --Select Station 5 Toggle + [417] = "%1d", --Select Station 6 Toggle + [419] = "%1d", --Select Station 7 Toggle + [420] = "%1d", --Ground IR Cool Switch + -- Master Armament Panel + [286] = "%1d", --Launch Flare Salvo + [287] = "%1d", --Master Arm Switch + -- ECM Control Panel + [273] = "%.2f", --RWR Power/Volume Button + [274] = "%.1f", --Decoy Dispenser Control + [275] = "%.1f", --Jammer Control + -- Landing Gear/Flaps Control Panel + [447] = "%1d", --Emergency Landing Gear Lever + [448] = "%1d", --Gear Down Lock Override Button + [454] = "%.1f", --Flaps Mode Switch + [457] = "%.1f", --Flaps Power Switch + [458] = "%1d", --Emergency Jettison Button + [459] = "%.1f", --Anti-Skid Switch + [460] = "%1d", --Flaps BIT Button + [461] = "%1d", --Landing Gear Lever + [470] = "%1d", --Landing Gear Emergency Battery Lever + -- Combat/Water Panel + [449] = "%.1f", --H2O Mode Switch + [450] = "%1d", --CMBT Thrust Button + -- Bulkhead Switches + [501] = "%1d", --MFS Emergency Lever + [1121] = "%1d", --Stopwatch Start/Stop + [1122] = "%1d", --Stopwatch Lap/Reset + -- Seat + [800] = "%1d", --Seat Ground Safety Lever + + ------------------------------------------------------------------- + -- CENTER CONSOLE: + ------------------------------------------------------------------- +-- Flights Instruments Panel + [364] = "%.4f", --NAV Course Setting + [653] = "%.4f", --Barometric Pressure Calibration + [350] = "%1d", --Backup ADI Cage + [351] = "%.4f", --Backup ADI Pitch Adjust Knob +-- Miscelaneous Switch Panel + [422] = "%1d", --Video Recorder System Mode Switch + [423] = "%1d", --Video Recorder System Display Selector Switch + [424] = "%1d", --DMT Toggle On/Off + [425] = "%.1f", --Dual Processor Mode Selector Switch + [426] = "%1d", --Probe Heat Mode Switch + [427] = "%.1f", --Mission Computer Mode Switch + [429] = "%1d", --FLIR Power Switch + -- INS Panel + [421] = "%.1f", --INS Mode Knob + ------------------------------------------------------------------- +-- LEFT CONSOLE: +------------------------------------------------------------------- +-- Trim Panel + [471] = "%.1f", --RPS/YAW Trim Switch + [472] = "%.1f", --Trim Mode Switch +-- SAAHS Panel + [476] = "%1d", --Alt Hold Switch + [475] = "%1d", --Q Feel Switch + [477] = "%.1f", --AFC Switch + [478] = "%1d", --SAS Yaw Switch" + [479] = "%1d", --SAS Roll Switch + [480] = "%1d", --SAS Pitch Switch +-- Throttle Quadrant + [481] = "%1d", --JPTL Switch + [483] = "%1d", --Rudder Trim Switch + [482] = "%1d", --EMS Button + [484] = "%1d", --Manual Fuel Switch + [485] = "%.4f", --Throttle Lever Friction Knob + [486] = "%.4f", --Nozzle Lever Friction Knob + [490] = "%1d", --Throttle Cutoff Lever + [489] = "%1d", --Parking Brake Lever + [487] = "%.4f", --Nozzle Control Lever + [488] = "%.4f", --STO Stop Lever + --[491] = "%1d", --Air Brake Switch +-- Fuel Panel + [504] = "%1d", --Fuel Proportioner + [505] = "%.1f", --Fuel Pump L Switch + [506] = "%.1f", --Fuel Pump R Switch + [507] = "%.1f", --Air Refueling Probe Switch + [508] = "%1d", --Fuel Dump L Switch + [509] = "%1d", --Fuel Dump R Switch" +-- External Lights Panel + [472] = "%.1f", --Landing/Taxi Lights Switch + [503] = "%.1f", --External Lights Mode Switch" + [510] = "%.4f", --Formation Lights Knob + [511] = "%1d", --Position Lights Switch + [512] = "%1d", --Anti-Collision Lights Switch + [513] = "%1d", --External Auxiliary Lights Switch +-- Pilot Service Panel + [514] = "%1d", --"Oxygen Switch + [515] = "%1d", --H2O Dump Switch + [516] = "%1d", --LIDS Switch + [517] = "%1d", --ENG RPM Switch + [518] = "%1d", --EFC Switch +-- Bulkhead Switches + [502] = "%1d", --Seat Adjustment Switch + [519] = "%1d", --Fuel Shutoff Lever + [520] = "%1d", --DECS Switch +------------------------------------------------------------------- +-- RIGHT CONSOLE: +------------------------------------------------------------------- +-- Electrical Panel + [609] = "%.1f", --DC Test Switch + [610] = "%.1f", --APU Generator Switch + [611] = "%1d", --Engine Start Switch + [612] = "%.1f", --Generator Switch + [613] = "%.1f", --Battery Switch +-- V/UHF Radio Panel + [614] = "%.4f", --V/UHF RSC Volume Knob + [615] = "%.3f", --V/UHF RSC Chan/Freq Knob + [616] = "%.1f", --V/UHF RSC Operational Mode Switch + [617] = "%1d", --V/UHF RSC Ancillary Mode Pointer + [618] = "%1d", --V/UHF RSC Ancillary Mode Switch + [619] = "%.1f", --V/UHF RSC Frequency Mode Switch + [620] = "%1d", --V/UHF RSC LOAD/OFST Switch +-- ACNIP + [621] = "%1d", --ACNIP Mode Switch + [622] = "%1d", --KY-1 Cipher Type Selector Switch + [623] = "%1d", --KY-2 Cipher Type Selector Switch + [624] = "%1d", --KY-1 Code/Mode Switch + [625] = "%1d", --KY-2 Code/Mode Switch + [626] = "%1d", --ACNIP Radio Selector Switch + [627] = "%1d", --KY-58 Codes Clear Switch + [628] = "%1d", --KY-58 Remote Codes Load Switch +-- ICS + [629] = "%.4f", --ICS Aux Volume Knob + [630] = "%.4f", --ICS Ground Volume Knob + [631] = "%.1f", --ICS Mic Operational Mode Switch +-- IFF + [632] = "%1d", --IFF Operational Mode Switch + [633] = "%1d", --IFF Crypto Mode Switch +-- Interior Lights Panel + [634] = "%1d", --Compass Light/Test Lights + [635] = "%.4f", --Instruments Lights + [636] = "%.4f", --Console Lights + [637] = "%.4f", --Flood Lights + [638] = "%.4f", --Annunciator Lights +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --ENGINE DISPLAY + + --[253] = "%.4f", --DUCT 1. DRUM + --[254] = "%.4f", --DUCT 2. + --[255] = "%.4f", --DUCT 3. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(253) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(254) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(255) * 10) + + ExportScript.Tools.SendData(2001, digits[1]..digits[2]..digits[3]) + + --[256] = "%.4f", --RPM 1. DRUM + --[257] = "%.4f", --RPM 2. + --[258] = "%.4f", --RPM 3. + --[259] = "%.4f", --RPM 4. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(256) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(257) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(258) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(259) * 10) + + ExportScript.Tools.SendData(2002, digits[1]..digits[2]..digits[3]..digits[4]) + + --[260] = "%.4f", --FF 1. DRUM + --[261] = "%.4f", --FF 2. + --[262] = "%.4f", --FF 3. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(260) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(261) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(262) * 10) + + ExportScript.Tools.SendData(2003, digits[1]..digits[2]..digits[3]) + + --[263] = "%.4f", --JPT 1. DRUM + --[264] = "%.4f", --JPT 2. + --[265] = "%.4f", --JPT 3. + --[266] = "%.4f", --STAB(Arrow up/down) + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(263) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(264) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(265) * 10) + + ExportScript.Tools.SendData(2004, digits[1]..digits[2]..digits[3]) + + --[267] = "%.4f", --STAB 1. Number, 2. DRUM + --[268] = "%.4f", --STAB 2. Number, 3. DRUM + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(267) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(268) * 10) + + ExportScript.Tools.SendData(2005, digits[1]..digits[2]) + + --[269] = "%.4f", --H2O 1. Number + --[270] = "%.4f", --H2O 2. Number -----3. Number is fix !!---- + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(269) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(270) * 10) + + ExportScript.Tools.SendData(2006, digits[1]..digits[2]) + + -- Fuel Total + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(366) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(367) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(368) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(369) * 10) + digits[5] = string.format("%1.0f",mainPanelDevice:get_argument_value(370) * 10) + + ExportScript.Tools.SendData(2010, digits[1]..digits[2]..digits[3]..digits[4]..digits[5]) + + --[371] = "%.4f", --LBS L 1. DRUM + --[372] = "%.4f", --LBS L 2. + --[373] = "%.4f", --LBS L 3. + --[374] = "%.4f", --LBS L 4. + + -- Fuel Left + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(371) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(372) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(373) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(374) * 10) + + ExportScript.Tools.SendData(2011, digits[1]..digits[2]..digits[3]..digits[4]) + + --[375] = "%.4f", --LBS R 1. DRUM + --[376] = "%.4f", --LBS R 2. + --[377] = "%.4f", --LBS R 3. + --[378] = "%.4f", --LBS R 4. + + -- Fuel Right + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(375) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(376) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(377) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(378) * 10) + + ExportScript.Tools.SendData(2012, digits[1]..digits[2]..digits[3]..digits[4]) + + --[381] = "%.4f", --BINGO 1. DRUM + --[382] = "%.4f", --BINGO 2. + --[383] = "%.4f", --BINGO 3. + --[384] = "%.4f", --BINGO 4. + + -- Fuel Bingo + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(381) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(382) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(383) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(384) * 10) + + ExportScript.Tools.SendData(2013, digits[1]..digits[2]..digits[3]..digits[4]) + + --FLAP POSITION DISPLAY + --[455] = "%.4f", --FLAP POS 1. DRUM + --[456] = "%.4f", --FLAP POS 2. DRUM + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(455) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(456) * 10) + + ExportScript.Tools.SendData(2014, digits[1]..digits[2]) + + --BRAKE/HYD DISPLAY + --[550] = "%.4f", --BRAKE 1. DRUM + --[551] = "%.4f", --BRAKE 2. + --[552] = "%.4f", --BRAKE 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(550) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(551) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(552) * 10) + + ExportScript.Tools.SendData(2015, digits[1]..digits[2]..digits[3]) + + --[553] = "%.4f", --HYD1 1. DRUM + --[554] = "%.4f", --HYD1 2. + --[555] = "%.4f", --HYD1 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(553) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(554) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(555) * 10) + + ExportScript.Tools.SendData(2016, digits[1]..digits[2]..digits[3]) + + --[556] = "%.4f", --HYD2 1. DRUM + --[557] = "%.4f", --HYD2 2. + --[558] = "%.4f", --HYD2 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(556) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(557) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(558) * 10) + + ExportScript.Tools.SendData(2017, digits[1]..digits[2]..digits[3]) + + --UPPER AMARMENT PANEL + --[385] = "%.4f", --MODE + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(385) * 10) + + if digits[1] == "0" then + ExportScript.Tools.SendData(2018, " - ") + elseif digits[1] == "2" then + ExportScript.Tools.SendData(2018, "AUT") + elseif digits[1] == "4" then + ExportScript.Tools.SendData(2018, "CP ") + elseif digits[1] == "6" then + ExportScript.Tools.SendData(2018, "DSL") + elseif digits[1] == "8" then + ExportScript.Tools.SendData(2018, "DR ") + elseif digits[1] == "10" then + ExportScript.Tools.SendData(2018, "AGM") + end + + --[386] = "%.4f", --FUZ 1. DRUM + --[387] = "%.4f", --FUR 2. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(386) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(387) * 10) + + ExportScript.Tools.SendData(2019, digits[1]..digits[2]) + + --[392] = "%.4f", --InVT x 10 1. DRUM + --[393] = "%.4f", --InVT x 10 2. + --[394] = "%.4f", --InVT x 10 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(392) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(393) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(394) * 10) + + ExportScript.Tools.SendData(2020, digits[1]..digits[2]..digits[3]) + + --[391] = "%.4f", --MULT + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(391) * 10) + + ExportScript.Tools.SendData(2021, digits[1]) + + --[389] = "%.4f", --QTY 1. Drum + --[390] = "%.4f", --QTY 2. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(389) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(390) * 10) + + ExportScript.Tools.SendData(2022, digits[1]..digits[2]) + + --> McMicha + + -- UFC Displays + local lUfcDisplays = list_indication(5) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lUfcDisplays : '..ExportScript.Tools.dump(lUfcDisplays)) + end + + local to1, to2, from1, from2, lUFC_Chnl1, lUFC_Chnl2, lUFC_Left_Position, lUFC_Right_Position, lUFC_Display = nil, nil, nil, nil, "", "", "", "", "" + to1, to2 = lUfcDisplays:find("UFC_DISPLAY") + if (to1 ~= nil) then + from1, from2 = lUfcDisplays:find("ufc_chnl_1_.%c") + if (from2 ~= nill) then + to1, to2 = lUfcDisplays:find("%c", from2+2) + if (to1 ~= nil) then + lUFC_Chnl1 = lUfcDisplays:sub(from2+1, to1-1) + end + end + + from1, from2 = lUfcDisplays:find("ufc_chnl_2_.%c", to2) + if (from2 ~= nill) then + to1, to2 = lUfcDisplays:find("%c", from2+2) + if (to1 ~= nil) then + lUFC_Chnl2 = lUfcDisplays:sub(from2+1, to1-1) + end + end + + from1, from2 = lUfcDisplays:find("ufc_left_position%c", to2) + if (from2 ~= nill) then + to1, to2 = lUfcDisplays:find("%c", from2+2) + if (to1 ~= nil) then + lUFC_Left_Position = lUfcDisplays:sub(from2+1, to1-1) + end + end + + from1, from2 = lUfcDisplays:find("ufc_right_position%c", to2) + if (from2 ~= nill) then + if (from2 ~= nil) then + lUFC_Right_Position = lUfcDisplays:sub(from2+1) + lUFC_Right_Position = lUFC_Right_Position:gsub("%c", "") + end + end + end + + local lRep = 8 - lUFC_Left_Position:len() - lUFC_Right_Position:len() + + lUFC_Display = lUFC_Left_Position..string.rep(" ", lRep)..lUFC_Right_Position + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("lUFC_Chnl1: "..string.format("%s", lUFC_Chnl1)) -- string with max 2 charachters + ExportScript.Tools.WriteToLog("lUFC_Chnl2: "..string.format("%s", lUFC_Chnl2)) -- string with max 2 charachters + ExportScript.Tools.WriteToLog("lUFC_Left_Position: "..string.format("%s", lUFC_Left_Position)) + ExportScript.Tools.WriteToLog("lUFC_Right_Position: "..string.format("%s", lUFC_Right_Position)) + ExportScript.Tools.WriteToLog("lUFC_Display: "..string.format("%s", lUFC_Display)) -- string with max 8 charachters + end + ExportScript.Tools.SendData(2023, string.format("%s", lUFC_Chnl1)) -- string with max 2 charachters + ExportScript.Tools.SendData(2024, string.format("%s", lUFC_Chnl2)) -- string with max 2 charachters + ExportScript.Tools.SendData(2025, string.format("%s", lUFC_Display)) -- string with max 8 charachters + + -- ODU Display + local lODUDisplays = list_indication(6) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lODUDisplays : '..ExportScript.Tools.dump(lODUDisplays)) + end + + local to1, to2, from1, from2 = nil, nil, nil, nil + local lODU_Text = {"","","","",""} + local lODU_select = " " + + to1, to2 = lODUDisplays:find("ODU_DISPLAY") + if (to1 ~= nil) then + for lIndex = 1, 5, 1 do + lODU_select = " " + + from1, from2 = lODUDisplays:find("ODU_Option_"..lIndex.."_Slc%c") + if (from2 ~= nill) then + to1, to2 = lODUDisplays:find("%c", from2+2) + if (to1 ~= nil) then + lODU_select = lODUDisplays:sub(from2+1, to1-1) + lODU_select = lODU_select:gsub(":", "¦") + end + end + + from1, from2 = lODUDisplays:find("ODU_Option_"..lIndex.."_Text%c") + if (from2 ~= nill) then + to1, to2 = lODUDisplays:find("%c", from2+2) + if (to1 ~= nil) then + lODU_Text[lIndex] = lODUDisplays:sub(from2+1, to1-1) + end + end + + lODU_Text[lIndex] = lODU_select..lODU_Text[lIndex] + end -- for + end + + -- string with max 5 characters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("lODU_Text1: "..string.format("%s", lODU_Text[1])) + ExportScript.Tools.WriteToLog("lODU_Text2: "..string.format("%s", lODU_Text[2])) + ExportScript.Tools.WriteToLog("lODU_Text3: "..string.format("%s", lODU_Text[3])) + ExportScript.Tools.WriteToLog("lODU_Text4: "..string.format("%s", lODU_Text[4])) + ExportScript.Tools.WriteToLog("lODU_Text5: "..string.format("%s", lODU_Text[5])) + end + ExportScript.Tools.SendData(2026, string.format("%s", lODU_Text[1])) + ExportScript.Tools.SendData(2027, string.format("%s", lODU_Text[2])) + ExportScript.Tools.SendData(2028, string.format("%s", lODU_Text[3])) + ExportScript.Tools.SendData(2029, string.format("%s", lODU_Text[4])) + ExportScript.Tools.SendData(2030, string.format("%s", lODU_Text[5])) + + -- UVHF Display + local lUVHFDisplay = list_indication(7) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lUVHFDisplay : '..ExportScript.Tools.dump(lUVHFDisplay)) + end + + local to1, to2, from1, from2, lUVHF_Channel, lUHF_Freq_Left, lacnip_1_label_mode, lacnip_1_mode, lacnip_1_label_code, lacnip_1_code, lacnip_2_label_mode, lacnip_2_mode, lacnip_2_label_code, lacnip_2_code = nil, nil, nil, nil, "", "", "", "", "", "", "", "", "", "" + local lacnip_line = {"", "", "", ""} + + to1, to2 = lUVHFDisplay:find("UVHF_DISPLAY") + if (to1 ~= nil) then + from1, from2 = lUVHFDisplay:find("uvhf_channel%c") + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lUVHF_Channel = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("uvhf_freq_left%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lUHF_Freq_Left = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_label_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_label_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_label_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_label_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_label_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_label_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_label_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_label_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + end + + lacnip_line[1] = lacnip_1_label_mode.." "..lacnip_2_label_mode + local lRep1 = 4 - lacnip_1_mode:len() + local lRep2 = 4 - lacnip_2_mode:len() + lacnip_line[2] = string.rep(" ", lRep1)..lacnip_1_mode.." "..lacnip_2_mode..string.rep(" ", lRep2) + lacnip_line[3] = lacnip_1_label_code.." "..lacnip_2_label_code + lRep1 = 4 - lacnip_1_code:len() + lRep2 = 4 - lacnip_2_code:len() + lacnip_line[4] = string.rep(" ", lRep1)..lacnip_1_code.." "..lacnip_2_code..string.rep(" ", lRep2) + + if ExportScript.Config.Debug then + -- string with max 2 charachters + ExportScript.Tools.WriteToLog("lUVHF_Channel: "..string.format("%s", lUVHF_Channel)) + -- string with max 7 charachters + ExportScript.Tools.WriteToLog("lUHF_Freq_Left: "..string.format("%s", lUHF_Freq_Left)) + -- string with max 10 charachters + ExportScript.Tools.WriteToLog("lacnip_line1: '"..string.format("%s", lacnip_line[1]).."'") + ExportScript.Tools.WriteToLog("lacnip_line2: '"..string.format("%s", lacnip_line[2]).."'") + ExportScript.Tools.WriteToLog("lacnip_line3: '"..string.format("%s", lacnip_line[3]).."'") + ExportScript.Tools.WriteToLog("lacnip_line4: '"..string.format("%s", lacnip_line[4]).."'") + end + -- string with max 2 charachters + ExportScript.Tools.SendData(2031, string.format("%s", lUVHF_Channel)) + -- string with max 7 charachters + ExportScript.Tools.SendData(2032, string.format("%s", lUHF_Freq_Left)) + -- string with max 10 charachters + ExportScript.Tools.SendData(2033, string.format("%s", lacnip_line[1])) + ExportScript.Tools.SendData(2034, string.format("%s", lacnip_line[2])) + ExportScript.Tools.SendData(2035, string.format("%s", lacnip_line[3])) + ExportScript.Tools.SendData(2036, string.format("%s", lacnip_line[4])) +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] + --ENGINE DISPLAY + + --[253] = "%.4f", --DUCT 1. DRUM + --[254] = "%.4f", --DUCT 2. + --[255] = "%.4f", --DUCT 3. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(253) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(254) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(255) * 10) + + ExportScript.Tools.SendDataDAC(2001, digits[1]..digits[2]..digits[3]) + + --[256] = "%.4f", --RPM 1. DRUM + --[257] = "%.4f", --RPM 2. + --[258] = "%.4f", --RPM 3. + --[259] = "%.4f", --RPM 4. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(256) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(257) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(258) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(259) * 10) + + ExportScript.Tools.SendDataDAC(2002, digits[1]..digits[2]..digits[3]..digits[4]) + + --[260] = "%.4f", --FF 1. DRUM + --[261] = "%.4f", --FF 2. + --[262] = "%.4f", --FF 3. + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(260) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(261) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(262) * 10) + + ExportScript.Tools.SendDataDAC(2003, digits[1]..digits[2]..digits[3]) + + --[263] = "%.4f", --JPT 1. DRUM + --[264] = "%.4f", --JPT 2. + --[265] = "%.4f", --JPT 3. + --[266] = "%.4f", --STAB(Arrow up/down) + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(263) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(264) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(265) * 10) + + ExportScript.Tools.SendDataDAC(2004, digits[1]..digits[2]..digits[3]) + + --[267] = "%.4f", --STAB 1. Number, 2. DRUM + --[268] = "%.4f", --STAB 2. Number, 3. DRUM + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(267) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(268) * 10) + + ExportScript.Tools.SendDataDAC(2005, digits[1]..digits[2]) + + --[269] = "%.4f", --H2O 1. Number + --[270] = "%.4f", --H2O 2. Number -----3. Number is fix !!---- + + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(269) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(270) * 10) + + ExportScript.Tools.SendDataDAC(2006, digits[1]..digits[2]) + + -- Fuel Total + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(366) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(367) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(368) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(369) * 10) + digits[5] = string.format("%1.0f",mainPanelDevice:get_argument_value(370) * 10) + + ExportScript.Tools.SendDataDAC(2010, digits[1]..digits[2]..digits[3]..digits[4]..digits[5]) + + --[371] = "%.4f", --LBS L 1. DRUM + --[372] = "%.4f", --LBS L 2. + --[373] = "%.4f", --LBS L 3. + --[374] = "%.4f", --LBS L 4. + + -- Fuel Left + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(371) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(372) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(373) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(374) * 10) + + ExportScript.Tools.SendDataDAC(2011, digits[1]..digits[2]..digits[3]..digits[4]) + + --[375] = "%.4f", --LBS R 1. DRUM + --[376] = "%.4f", --LBS R 2. + --[377] = "%.4f", --LBS R 3. + --[378] = "%.4f", --LBS R 4. + + -- Fuel Right + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(375) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(376) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(377) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(378) * 10) + + ExportScript.Tools.SendDataDAC(2012, digits[1]..digits[2]..digits[3]..digits[4]) + + --[381] = "%.4f", --BINGO 1. DRUM + --[382] = "%.4f", --BINGO 2. + --[383] = "%.4f", --BINGO 3. + --[384] = "%.4f", --BINGO 4. + + -- Fuel Bingo + ------------------------------------------------- + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(381) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(382) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(383) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(384) * 10) + + ExportScript.Tools.SendDataDAC(2013, digits[1]..digits[2]..digits[3]..digits[4]) + + --FLAP POSITION DISPLAY + --[455] = "%.4f", --FLAP POS 1. DRUM + --[456] = "%.4f", --FLAP POS 2. DRUM + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(455) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(456) * 10) + + ExportScript.Tools.SendDataDAC(2014, digits[1]..digits[2]) + + --BRAKE/HYD DISPLAY + --[550] = "%.4f", --BRAKE 1. DRUM + --[551] = "%.4f", --BRAKE 2. + --[552] = "%.4f", --BRAKE 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(550) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(551) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(552) * 10) + + ExportScript.Tools.SendDataDAC(2015, digits[1]..digits[2]..digits[3]) + + --[553] = "%.4f", --HYD1 1. DRUM + --[554] = "%.4f", --HYD1 2. + --[555] = "%.4f", --HYD1 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(553) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(554) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(555) * 10) + + ExportScript.Tools.SendDataDAC(2016, digits[1]..digits[2]..digits[3]) + + --[556] = "%.4f", --HYD2 1. DRUM + --[557] = "%.4f", --HYD2 2. + --[558] = "%.4f", --HYD2 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(556) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(557) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(558) * 10) + + ExportScript.Tools.SendDataDAC(2017, digits[1]..digits[2]..digits[3]) + + --UPPER AMARMENT PANEL + --[385] = "%.4f", --MODE + --[[ + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(385) * 10) + + if digits[1] == "0" then + ExportScript.Tools.SendDataDAC(2018, " - ") + elseif digits[1] == "2" then + ExportScript.Tools.SendDataDAC(2018, "AUT") + elseif digits[1] == "4" then + ExportScript.Tools.SendDataDAC(2018, "CP ") + elseif digits[1] == "6" then + ExportScript.Tools.SendDataDAC(2018, "DSL") + elseif digits[1] == "8" then + ExportScript.Tools.SendDataDAC(2018, "DR ") + elseif digits[1] == "10" then + ExportScript.Tools.SendDataDAC(2018, "AGM") + end + ]] + + --[386] = "%.4f", --FUZ 1. DRUM + --[387] = "%.4f", --FUR 2. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(386) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(387) * 10) + + ExportScript.Tools.SendDataDAC(2019, digits[1]..digits[2]) + + --[392] = "%.4f", --InVT x 10 1. DRUM + --[393] = "%.4f", --InVT x 10 2. + --[394] = "%.4f", --InVT x 10 3. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(392) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(393) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(394) * 10) + + ExportScript.Tools.SendDataDAC(2020, digits[1]..digits[2]..digits[3]) + + --[391] = "%.4f", --MULT + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(391) * 10) + + ExportScript.Tools.SendDataDAC(2021, digits[1]) + + --[389] = "%.4f", --QTY 1. Drum + --[390] = "%.4f", --QTY 2. + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(389) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(390) * 10) + + ExportScript.Tools.SendDataDAC(2022, digits[1]..digits[2]) + + +--> McMicha + + local lUVHFDisplay = list_indication(7) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lUVHFDisplay : '..ExportScript.Tools.dump(lUVHFDisplay)) + end + + local to1, to2, from1, from2, lUVHF_Channel, lUHF_Freq_Left, lacnip_1_label_mode, lacnip_1_mode, lacnip_1_label_code, lacnip_1_code, lacnip_2_label_mode, lacnip_2_mode, lacnip_2_label_code, lacnip_2_code = nil, nil, nil, nil, "-", "-", "", "", "", "", "", "", "", "" + local lacnip_line = {"", "", "", ""} + + to1, to2 = lUVHFDisplay:find("UVHF_DISPLAY") + if (to1 ~= nil) then + from1, from2 = lUVHFDisplay:find("uvhf_channel%c") + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lUVHF_Channel = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("uvhf_freq_left%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lUHF_Freq_Left = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_label_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_label_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_label_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_label_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_1_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_1_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_label_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_label_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_mode%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_mode = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_label_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_label_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + + from1, from2 = lUVHFDisplay:find("acnip_2_code%c", to2) + if (from2 ~= nil) then + to1, to2 = lUVHFDisplay:find("%c", from2+2) + if (to1 ~= nil) then + lacnip_2_code = lUVHFDisplay:sub(from2+1, to1-1) + end + end + end + + lacnip_line[1] = lacnip_1_label_mode.." "..lacnip_2_label_mode + local lRep1 = 4 - lacnip_1_mode:len() + local lRep2 = 4 - lacnip_2_mode:len() + lacnip_line[2] = string.rep(" ", lRep1)..lacnip_1_mode.." "..lacnip_2_mode..string.rep(" ", lRep2) + lacnip_line[3] = lacnip_1_label_code.." "..lacnip_2_label_code + lRep1 = 4 - lacnip_1_code:len() + lRep2 = 4 - lacnip_2_code:len() + lacnip_line[4] = string.rep(" ", lRep1)..lacnip_1_code.." "..lacnip_2_code..string.rep(" ", lRep2) + + if ExportScript.Config.Debug then + -- string with max 2 charachters + ExportScript.Tools.WriteToLog("lUVHF_Channel: "..string.format("%s", lUVHF_Channel)) + -- string with max 7 charachters + ExportScript.Tools.WriteToLog("lUHF_Freq_Left: "..string.format("%s", lUHF_Freq_Left)) + -- string with max 10 charachters + ExportScript.Tools.WriteToLog("lacnip_line1: '"..string.format("%s", lacnip_line[1]).."'") + ExportScript.Tools.WriteToLog("lacnip_line2: '"..string.format("%s", lacnip_line[2]).."'") + ExportScript.Tools.WriteToLog("lacnip_line3: '"..string.format("%s", lacnip_line[3]).."'") + ExportScript.Tools.WriteToLog("lacnip_line4: '"..string.format("%s", lacnip_line[4]).."'") + end + -- string with max 2 charachters + ExportScript.Tools.SendDataDAC(2031, string.format("%s", lUVHF_Channel)) + -- string with max 7 charachters + ExportScript.Tools.SendDataDAC(2032, string.format("%s", lUHF_Freq_Left)) + +--[[ + local TmpDevice1 = GetDevice(1) + if TmpDevice1 ~= nil then + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC get_DC_Bus_1_voltage: '..ExportScript.Tools.dump(TmpDevice1:get_DC_Bus_1_voltage())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC get_DC_Bus_2_voltage: '..ExportScript.Tools.dump(TmpDevice1:get_DC_Bus_2_voltage())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC get_AC_Bus_1_voltage: '..ExportScript.Tools.dump(TmpDevice1:get_AC_Bus_1_voltage())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC AC_Generator_1_on: '..ExportScript.Tools.dump(TmpDevice1:AC_Generator_1_on())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC AC_Generator_2_on: '..ExportScript.Tools.dump(TmpDevice1:AC_Generator_2_on())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC get_AC_Bus_2_voltage: '..ExportScript.Tools.dump(TmpDevice1:get_AC_Bus_2_voltage())) + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC DC_Battery_on: '..ExportScript.Tools.dump(TmpDevice1:DC_Battery_on())) + else + ExportScript.Tools.WriteToLog('TmpDevice1 ELECTRIC ist NIL') + end + + local TmpDevice2 = GetDevice(2) + if TmpDevice2 ~= nil then + ExportScript.Tools.WriteToLog('TmpDevice2 COMM1: '..ExportScript.Tools.dump(TmpDevice2:get_frequency())) + else + ExportScript.Tools.WriteToLog('TmpDevice2 COMM1 ist NIL') + end + + local TmpDevice3 = GetDevice(3) + if TmpDevice3 ~= nil then + ExportScript.Tools.WriteToLog('TmpDevice3 COMM2: '..ExportScript.Tools.dump(TmpDevice3:get_frequency())) + else + ExportScript.Tools.WriteToLog('TmpDevice3 COMM2 ist NIL') + end + + local TmpDevice29 = GetDevice(29) + if TmpDevice29 ~= nil then + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_station_info: '..ExportScript.Tools.dump(TmpDevice29:get_station_info())) + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_ECM_status: '..ExportScript.Tools.dump(TmpDevice29:get_ECM_status())) + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_chaff_count: '..ExportScript.Tools.dump(TmpDevice29:get_chaff_count())) + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_flare_count: '..ExportScript.Tools.dump(TmpDevice29:get_flare_count())) + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_target_range: '..ExportScript.Tools.dump(TmpDevice29:get_target_range())) + ExportScript.Tools.WriteToLog('TmpDevice29 SMC get_target_span: '..ExportScript.Tools.dump(TmpDevice29:get_target_span())) + else + ExportScript.Tools.WriteToLog('TmpDevice29 SMC ist NIL') + end + + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) +]] +--[[ funktion get_power() gibt es nicht.... + local TmpDevice17 = GetDevice(17) + if TmpDevice17 ~= nil then + ExportScript.Tools.WriteToLog('TmpDevice17 RWR: '..ExportScript.Tools.dump(TmpDevice3:get_power())) + else + ExportScript.Tools.WriteToLog('TmpDevice17 RWR ist NIL') + end +]] + +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/Bf-109K-4.lua b/ExportsModules/Bf-109K-4.lua new file mode 100644 index 0000000..5284bfb --- /dev/null +++ b/ExportsModules/Bf-109K-4.lua @@ -0,0 +1,334 @@ +-- Bf-109K-4 Kurfürst + +ExportScript.FoundDCSModule = true +ExportScript.Version.Bf109K4 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + [1] = "%.4f", -- MW50 pressure {0.0, 3.0}kg/cm2 = {0.0, 1.0} + [2] = "%.4f", -- Airspeed Gauge {0, 100, 150, 200, 700, 750, 900, 1000} = {0.0, 0.1, 0.15, 0.2, 0.7, 0.75, 0.9, 1.0} + -- Artificial horizon Fl_22415 + [3] = "%.4f", -- turn indicator {-1.0, 1.0} + [4] = "%.4f", -- Bank {1.0, -1.0} + [5] = "%.4f", -- Pitch {1.0, -1.0} + [6] = "%.4f", -- Slipball {-1.0, 1.0} + [7] = "%.4f", -- Caged {0.0, 1.0} + --Altitude Gauge + [8] = "%.4f", -- Altimeter_FinePtr {0.0, 1000.0} = {0.0, 1.0} + [9] = "%.4f", -- Altimeter_CoarsePtr {0.0, 13000.0} = {0.0, 1.0} + [10] = "%.4f", -- Altimeter_Pressure {712.56, 780.07} = {0.0, 1.0} + [11] = "%.4f", -- Pressure_Setter_Pinion {0.0, 1440.0} = {0.0, 1.0} + -- AN5730 remote compass + [13] = "%.4f", -- CompassHeading {0.0, 1.0} + [12] = "%.4f", -- CommandedCourse {0.0, 1.0} + -- AFN2 blind landing system + [14] = "%.4f", -- AFN2_Horizontal_Needle {-1.0, 1.0} + [15] = "%.4f", -- AFN2_Vertical_Needle {0.0, 1.0} + [16] = "%.f", -- AFN2_Signal_Lamp {0.0, 1.0} + --Dual-Range Pressure Gauge + [25] = "%.4f", -- Fuel_Pressure {0.0, 2.0} -- kg/cm2 = {0.0, 1.0} + [26] = "%.4f", -- Oil_Pressure {0.0, 10.0} = {0, 1.0} + [27] = "%.4f", -- Coolant_Temperature {-1, 0, 130} = {-1, 0, 1} + [28] = "%.4f", -- Oil_Temperature {-1, 0, 130} = {-1, 0, 1} + [29] = "%.4f", -- Engine_RPM {400.0, 3600.0} = {0.0, 1.0} + -- propeller pitch indicator, changed 1hour every 6degrees of pitch change + [30] = "%.4f", -- Propeller_Pitch_Hour {0.0, 12.0} = {0.0, 1.0} + [31] = "%.4f", -- Propeller_Pitch_Minute {0.0, 60.0} = {0.0, 1.0} + -- Manifold_Pressure + [32] = "%.4f", -- Manifold_Pressure {0.6, 1.8} = {0.0, 1.0} + --fuel system + [33] = "%.4f", -- Fuel_Tank_Fuselage {-1.0, 0.0, 100.0, 150.0, 200.0, 250.0, 300.0, 350.0, 400.0} -- Liters = {-1.0, 0.0, 0.07, 0.175, 0.31, 0.52, 0.73, 0.88, 1.0} + --oxygen pressure indicator + [34] = "%.4f", -- Oxygen_Pressure {0.0, 250.0} = {0.0, 1.0} + --[35] = "%.1f", -- Oxygen_Flow_Blinker {0.0, 1.0} + -- Variometer + [36] = "%.4f", -- Variometer {-30, -10, -5, 0, 5, 10, 30} = {-0.3, -0.1, -0.05, 0.0, 0.05, 0.1, 0.3} + --Weapon gauges + [40] = "%.4f", -- MG131_0_Shell_Counter {0.0, 500.0} = {0.0, 1.0} + [41] = "%.4f", -- MG131_1_Shell_Counter {0.0, 500.0} = {0.0, 1.0} + --[42] = "%.4f", -- MG131_0_Klappanker {0.0, 60.0} = {0.0, 1.0} + --[43] = "%.4f", -- MG131_1_Klappanker {0.0, 60.0} = {0.0, 1.0} + [44] = "%.f", -- LeftWing_MG151_Control_Lamp {0.0, 1.0} + [45] = "%.f", -- RightWing_MG151_Control_Lamp {0.0, 1.0} + --REVI_16B_Gunsight + [46] = "%.4f", -- BodyState {0.0, 0.15,0.25, 1.0} = {0.0, 0.15,0.25, 1.0} + [47] = "%.4f", -- SmokedScreen {0.0, 1.0} + [48] = "%.4f", -- SightBrightness {0.0, 1.0} + -- Landing Gear Light + [56] = "%.f", -- LandingGearRedLight {0.0, 1.0} + [57] = "%.f", -- LandingGearGreenLightLeft {0.0, 1.0} + [58] = "%.f", -- LandingGearGreenLightRight {0.0, 1.0} + -- Fuel_Reserve_Lamp + [135] = "%.f" -- Fuel_Reserve_Lamp {0.0, 29.0} = {0.0, 1.0} +} +ExportScript.ConfigArguments = +{ + -- FuseBox Controls - Electrical Switches + -- RH Fuse Box Circuit Breakers + -- Left Row + -- A 100 - Generator Cut-Off Relay + [114] = "%1d", -- Generator On {0, 1} + [151] = "%1d", -- Generator OFF {0, 1} + -- D 100 - Heating CB + [115] = "%1d", -- Pitot/Windscreen Heating On {0, 1} + [152] = "%1d", -- Pitot/Windscreen Heating OFF {0, 1} + -- C 100 - Navigation Lights CB + [116] = "%1d", -- Nav. Lights On {0, 1} + [153] = "%1d", -- Nav. Lights OFF {0, 1} + -- C 101 - Instrument Panel Illumination CB {0, 1} + [117] = "%1d", -- UV Lights On {0, 1} + [154] = "%1d", -- UV Lights Off {0, 1} + -- V 101 - Drop Ordnance & Optional Armament CB + [118] = "%1d", -- Wing / Drop Ordnance On {0, 1} + [155] = "%1d", -- Wing / Drop Ordnance Off {0, 1} + -- V 100 - Systematic & Ignition CB + [119] = "%1d", -- Ignition On {0, 1} + [156] = "%1d", -- Ignition Off {0, 1} + -- Spotlights CB - TODO implement when landing lights rustsatz is available + --[] = "%1d", -- Spotlights On {0, 1} + --[] = "%1d", -- Spotlights Off {0, 1} + -- Right Row + -- A 101 - Battery Cut-Off Relay + [120] = "%1d", -- Battery On {0, 1} + [157] = "%1d", -- Battery Off {0, 1} + -- F 135 - Radio CB - Labelled "FuG 16" + [121] = "%1d", -- Radio On {0, 1} + [158] = "%1d", -- Radio Off {0, 1} + -- F 211 - IFF CB - Labelled "FuG 25a" + [122] = "%1d", -- IFF On {0, 1} + [159] = "%1d", -- IFF Off {0, 1} + -- E 101 - Fuel Pump CB - Labelled "Tankpumpe" + [123] = "%1d", -- Fuel Pump On {0, 1} + [160] = "%1d", -- Fuel Pump Off {0, 1} + -- Ignition Controls and Starter and Motor-Related Switches + -- Magneto Selector + [59] = "%.1f", -- Magnetos (Off, M1, M2, M1+M2) {0.0, 0.1, 0.2, 0.3} + -- Starter Handle Cover + [51] = "%1d", -- Starter Handle Cover {0, 1} + -- Starter Turn Handle + [52] = "%1d", -- Starter {0, 1} + -- WM-Kommandgerat Toggle + [62] = "%1d", -- Governor Automation {0, 1} + -- Dashboard and Secondary Switches + -- A 104 - Kill Switch + [49] = "%1d", -- Kill Switch {0, 1} + -- Button T - Gun Camera Trigger + [149] = "%1d", -- Button T {0, 1} + -- SZKK3 Weapons Control Master Switch + [37] = "%1d", -- Weapons Master {0, 1} + -- LH SZ 500 Ammo Counter + [38] = "%.1f", -- Left Ammo Counter Setter Pinion (axis) {0.0 - 0.0} + -- RH SZ 500 Ammo Counter + [39] = "%.1f", -- Right Ammo Counter Setter Pinion (axis) {0.0 - 0.0} + -- MW50 Operational Toggle + [60] = "%1d", -- MW50 Boost {0, 1} + -- Wing Cannons Toggle + [61] = "%1d", -- Wing Cannons {0, 1} + -- MK 108 / Wing Guns Toggle + [62] = "%1d", -- MK 108 / R 21 {0, 1} + -- R 101 ZSK 244 A Bomb Panel Master Switch + -- Operated internally via ZSK 244 A Mode Control + -- R 101 ZSK 244 A Mode Selector + [64] = "%.1f", -- Bomb Fusing Selector (DIVE (INSTANT), DIVE (DELAYED), OFF, LEVEL (DELAYED), LEVEL (INSTANT)) {0.0, 0.25, 0.5, 0.75, 1.0} + -- Illumination Controls + -- C 102 LH UV Lamp Rheostat + [80] = "%.1f", -- Left UV Lamp Brightness (axis) {0.0 - 0.5} + -- C 103 RH UV Lamp Rheostat + [82] = "%.1f", -- Right UV Lamp Brightness (axis) {0.0 - 0.5} + -- Oxygen Apparatus Controls + -- Apparatus Connecting Valve + [127] = "%1d", -- Oxygen Operating Valve {0, 1} + [126] = "%1d", -- Oxygen Emergency By-Pass {0, 1} + -- Main Panel Controls + -- Undercarriage Controls + -- U/C Plungers Cover + [53] = "%1d", -- Undercarriage Controls Cover {0, 1} + [54] = "%1d", -- Undercarriage Raise {1.0, 1.0} + [55] = "%1d", -- Undercarriage Lower {1.0, 1.0} + [63] = "%1d", -- Undercarriage Emergency Release + -- Fuel and MW50 Systems Controls + -- Fuel Primer Hand Pump + [140] = "%1d", -- Fuel Priming Pump {0, 1} + -- Schnellstop Lever + [88] = "%1d", -- Engine Stop {0, 1} + -- Booster Pumps Lever + [87] = "%.1f", -- Booster Pumps (Off, P1, P2, P1+P2) {0.0, 0.1, 0.2, 0.3} + -- Stoff-Kraftstoff Ventilbatterie Lever + [96] = "%1d", -- MW / Fuel {0, 1} + -- Fuel Jettison Knob + [112] = "%1d", -- "Fuel / MW Jettison {0, 1} + -- Coolant System Controls + -- Radiator Mode Lever {0, 1} + [113] = "%.1f", -- Radiators Mode (Drive Off, Open, Automatic, Close) {0.0, 0.1, 0.2, 0.3} + -- LH Radiator Hose Cut-Off Pull Handle + [90] = "%1d", -- LH Radiator Cut-Off {0, 1} + -- RH Radiator Hose Cut-Off Pull Handle + [91] = "%1d", -- RH Radiator Cut-Off {0, 1} + -- Navigation Instruments + -- Altimeter + [11] = "%.2f", -- Altimeter Pressure Set (axis) 1.0 in 0.04 steps + -- Artificial Horizon + --[7] = "%.2f", -- Horizon Cage (axis) {0.0, 0.511} in 0.04 steps + -- Repeater Compass + --[12] = "%.2f", -- Course Set (axis) 0.0 in 0.04 steps + -- Instruments + -- Clock Scale + [21] = "%.8f", -- Scale Set (axis) 0.0 in 0.01612434 steps + -- Clock Setter Pinion + [22] = "%.1f", -- Adjusting Knob (axis) 0.0 in 0.1 steps + -- Clock Freeze Lever + [23] = "%1d", -- Time Setting Lever {0, 1} + -- Clock Stopwatch Button + [24] = "%1d", -- Start/Stop/Reset Chronometer + -- P 112 Gun Sight Brightness Rheostat {0, 1} + --[48] = "%.1f", -- Gun Sight Brightness (axis) 0.5 in 0.1 steps + -- P 112 Gun Sight Folding Controls + [139] = "%1d", -- Gunsight Fold {0, 1} + -- P 112 Gun Sight Smoked Screen Controls + --[47] = "%.1f", -- Gunsight Smoked Screen (axis) {0, 1} in 01 steps + -- Radio Controls + -- FUG16 + [128] = "%.1f", -- FuG16ZY Preset Selector (1, 2, TR, SQ) {0.0, 0.1, 0.2, 0.3} + [129] = "%.2f", -- FuG16 ZY Fine Tune (axis) 0.5 in 0.05 steps + [130] = "%.2f", -- FuG16 ZY Volume (axis) 0.0 in 0.04 steps + [131] = "%1d", -- "Mic. On/Off {0, 1} + -- FUG25 + [132] = "%.1f", -- FuG25 Mode Selector (1, 2) {0.0, 1.0} + [133] = "%1d", -- FuG25 Test {0, 1} + -- Left Wall Controls + -- Tail Wheel Lock Handle + [97] = "%1d", -- Tail Wheel Lock {0, 1} + -- Cockpit Open/Close Control + [136] = "%1d", -- Canopy (Open/Close) {0, 1} + [137] = "%1d", -- Canopy (Open/Close) H {0, 1} + [138] = "%1d", -- Canopy (Open/Close) S {0, 1} + -- Cockpit Jettison Pull Handle + [83] = "%1d", -- Jettison Canopy {0, 1} + -- Trim Wheel + [141] = "%1d", -- Stabilizer Trim Nose Up {0, 1} + [142] = "%1d", -- Stabilizer Trim Nose Down {0, 1} + -- Flaps Wheel + [143] = "%1d", -- Extend Flaps {0, 1} + [144] = "%1d", -- Retract Flaps {0, 1} + -- Notwurf / Ordinance Dump + [92] = "%1d", -- Ordinance Emergency Release + --[98] = "$1d", -- Cockpit Left Vent {0, 1} + -- Right Wall Controls + -- RH Cockpit Vent + --[99] = "%1d", -- Cockpit Right Vent {0, 1} + -- Flare Gun Trigger + [72] = "%1d", -- Fire Flare Gun + -- Engine Controls & Quadrant + -- Propellor Control Rocker + [85] = "%.1f", -- Decrease RPM {1.0, -1.0} + -- Radio Transmit Button + [150] = "%1d", -- Microphone On {0, 1} + -- E 103 Propellor Automation Switch + [89] = "%1d", -- Governor Automation {0, 1} + -- Cold Weather Start Valve Handle + [86] = "%1d" -- Cold Weather Start {0, 1} +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + ExportScript.Tools.SendData(35, string.format("%0.4f", mainPanelDevice:get_argument_value(35))) -- Oxygen_Flow_Blinker + ExportScript.Tools.SendData(42, string.format("%0.4f", mainPanelDevice:get_argument_value(42))) -- MG131_0_Klappanker + ExportScript.Tools.SendData(43, string.format("%0.4f", mainPanelDevice:get_argument_value(43))) -- MG131_1_Klappanker +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + local lRADIO = GetDevice(14) + --ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", lRADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy(lRADIO:get_frequency()/1000000)) + + -- Lamps + ExportScript.Tools.SendDataDAC("35", mainPanelDevice:get_argument_value(35) > 0.8 and 1 or 0) -- Oxygen_Flow_Blinker + ExportScript.Tools.SendDataDAC("42", mainPanelDevice:get_argument_value(42) > 0.8 and 1 or 0) -- MG131_0_Klappanker + ExportScript.Tools.SendDataDAC("43", mainPanelDevice:get_argument_value(43) > 0.8 and 1 or 0) -- MG131_1_Klappanker + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/F-14B.lua b/ExportsModules/F-14B.lua index 2996807..2b83a0c 100644 --- a/ExportsModules/F-14B.lua +++ b/ExportsModules/F-14B.lua @@ -1,998 +1,2092 @@ ---[[ - ,d ,d - 88 88 -MM88MMM ,adPPYba, 88,dPYba,,adPYba, ,adPPYba, ,adPPYYba, MM88MMM - 88 a8" "8a 88P' "88" "8a a8" "" "" `Y8 88 - 88 8b d8 88 88 88 8b ,adPPPPP88 88 - 88, "8a, ,a8" 88 88 88 "8a, ,aa 88, ,88 88, - "Y888 `"YbbdP"' 88 88 88 `"Ybbd8"' `"8bbdP"Y8 "Y888 F-14B Tomcat Export Script DCS World -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ version: 0.11 █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +-- F-14B Tomacat -Created by: nosaMtrevoC of ED Forums (dt1) - -If you find any errors/ommissions or have any questions in general and for updates, please see this thread on ED Forums: -https://forums.eagle.ru/showthread.php?p=4387597#post4387597 - -For use with DCS-ExportScripts plugin https://github.com/charlestytler/streamdeck-dcs-interface (Awesome work) -Special ID's for ctytler's Stream Deck plugin (requires ExportScripts) at https://github.com/charlestytler/streamdeck-dcs-interface (Also Awesome) - - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ ŦЋÄnk ȲÅÅ« █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - -Thanks GunSlingerAUS & Phoenix FR of ED Forums for providing me with the F-14 Module to make this possible, it was a nice jester (sic). - -Testers (if you would like to help make this better, please see: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 for more info) - -[TESTER]____________________ [Description]_________________________________________________________________________________________________________ -Arbil Approach Indexer Lights, ACM Panel gauges and lights for full ACM -Chacal IX ACM Panel Testing - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ Changelog █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - -Version 0.11 - Matched most of the missing ID's, fixed error in ACM Panel (Chacal IX) -Version 0.10 - Matched many more ID's (not tested) for panels: A6b/A6c/A7, Created All Graphic Icons for panel A6a ACM Panel, App. Indexer Icons - Custom Station Weap. Flags output for ACM, ACM Switch, Master Arm Switch, Gun Rate Code, code for SW Cool/MSL Prep/MODE stp switch - testing ACM Panel items on Stream deck and creating profiles, Triple Indicator code and icons, Master Caution Button/Light, - L & R Fire Lights, Slip/Ball Indicator Gauge, fill icons for stream deck, testing, A6a ACM Panel completed w/StmDeck Prof. & Icons -Version 0.09 - Created 298 conifg Arguments and documentation for all pilot panels Left: A1a/A1b/A2/A4/A5/A6a/A6b/A6c/A6d/A7/A8/A10/A11a/A11b/12 - Formatting, Matched most DCS ID's (not tested) for panels: A1a/A1b/A2/A6a -Version 0.08 - Formatting, Arresting Hook handle/emerg.Handle/Light, Gun Ammun. Counter knob, gun rounds counter -Version 0.07 - Create tape function for vertical tape displays, created engine RPM Tape and BG Icon, EIG Eng. Temp on A3, EIG Fuel Flow on A3 -Version 0.06 - 2 Hydraulic Press. Gauges on A3 (51023 & 51063), added Engine Nozzle Tape A3, engine oil press. gauge -Version 0.05 - Formatting, Added Bingo Knob, Accelerometer Reset, Clock Wind, Clock Start/Stop/Reset, fixed error in Timer, A9 Panel Complete -Version 0.04 - More formatting, added Aft&L/Fwd&R fuselage fuel info, added Accelerometer gauge, added clock and timer gauge, Added Cockpit Refs. -Version 0.03 - Organization of Cockpit and RIO areas in this file for organizational purposes (ease of use) -Version 0.02 - Added formatted fuel output for location A9 -Version 0.01 - Initial Layout and formatting of .lua file along with organization outside this file of all functions ID's calls etc.. - -[Currently working on]_____________________________________________________________________________________________________________________________ -Pilot Cockpit config arguments - -[To-Do] -Fuel Warning indicators (example low fuel / Bingo fuel) for multi-gauge and fuel gauges -Background images for EIG TIT and FF tapes -Problem with Title string not showing in ExportScript.dualTapeString() -Installation instructions - VS Code - copy .lua to proper directory - load and test script (with special id for testing) - how-to display a stream deck gauge (custom id) background image in folder and font size - how to setup a button or switch for a panel - - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ Formatted for Stream Deck █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - -Extra ID's created for nice formatted output on Stream Deck See ID Guide Below: - -[ID]______ [Ref]__ [Description]__________________________ [Status]_______ [Output e.g.]___________________________________________________________ - -51057 A3 EIG - Engine RPM L & R tape working NOTE: need "F-14B_A3_RPM.png" included as background (shows vert. tape) -51059 A3 EIG - Engine Exhaust Temperature working NOTE: need "F-14B_A3_TIT.png" included as background (shows vert. tape) -51061 A3 EIG - Fuel flow tape working NOTE: need "F-14B_A3_FF.png" included as background (shows vert. tape) -51023 A3 Hydraulic Pressure Gauge and Flags 1 working -51063 A3 Hydraulic Pressure Gauge and Flags 2 working -51065 A3 Engine Oil Pressure Gauges working L 42 psi | Eng. Oil | R 42 psi -51068 A3 Engine Nozzle position gauge (tape) working (shows a graphical vertical tape) ---------------------------------------------------------------------------------------------------------------------------------------------------- - A4 Radar Altimiter w/Bug & Flag & inHg â–ˆ In Development â–ˆ - A4 Servopneumatic Altimiter â–ˆ TODO â–ˆ ---------------------------------------------------------------------------------------------------------------------------------------------------- -51047 A6a Master Arm 3 way switch working outputs a graphical 3 way switch to be used with included icons (font9) -56501 A6a Slip/Ball Indicator working outputs slip and ball gauge -59201 A6a ACM seam/coll./hot trig light working outputs masks to show/hide triple warning light in one button -59204 A6a Gun Rate HIGH|LOW Light working outputs 1 or 0 to monitor HIGH|LOW Gun Rate light (usually two IDs) -59206 A6a SW Cool Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) -59208 A6a MSL Prep Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) -59210 A6a MSL Mode Light NORM|BRSIT working outputs 1 or 0 to monitor light (usually two IDs) -59221 A6a Station Status Flag 1A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59222 A6a Station Status Flag 1B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59223 A6a Station Status Flag 3 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59224 A6a Station Status Flag 4 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59225 A6a Station Status Flag 5 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59226 A6a Station Status Flag 6 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59227 A6a Station Status Flag 8B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) -59228 A6a Station Status Flag 8A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) ---------------------------------------------------------------------------------------------------------------------------------------------------- -50110 A9 Accelerometer Gauge +/- G & current G working 5 G | 1 G | -2G -51096 A9 Clock and Timer Gauge working Clock | 10 15 | Timer | 4 23 21 -51054 A9 Aft & L-left feed & aft fuselage Thanks working AFT & L | 6500 | LBS -51055 A9 Fwd & R-right feed & fwd fuselage tanks working FWD & R | 6500 | LBS -56000 A9 Left Fuel Gauge in lbs working 4000 lbs -56004 A9 Right Fuel Gauge in lbs working 4000 lbs -56010 A9 Total Fuel Gauge in lbs working 15200 lbs -56020 A9 Bingo Fuel Guage in lbs working 04000 lbs -56024 A9 Multi Fuel Guage Custom working Shows all relevant fuel output totals in a single stream deck button ---------------------------------------------------------------------------------------------------------------------------------------------------- -54060 A10 Gun Rounds Ammunition Counter working ROUNDS | 670 ---------------------------------------------------------------------------------------------------------------------------------------------------- -52117 B7 RIO Total Fuel Gauge in lbs working 15000 lbs - - - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ Stream Deck References █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - -The following references (with a picture) can be found (as of June 15, 2020) in Chapter 2 (Cockpit Overview) first 2 pages (pg10 and pg11) of -the F-14B manual. This manual is located in the C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\F14\Docs Directory as a .pdf -Can also be found in the official thread for this script at: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 - -Anywhere the following Descriptors can be found, they refer to this table in that portion of the manual -e.g. [A9] Pilot-Right Knee Panel describes A as Pilot Cockpit (instead of B RIO Cockpit) and 9 in the table on pg 10 (also below) which is the Right -Knee Panel where the fuel and accelerometer and clock are. - - ________________________________________________________________________________________________________ - | | - | [Ref]_ [Position]_ [Description]__________________| [Ref]_ [Position]_ [Description]___________________| - | | | - | A1 Pilot Left Side Console | B1 RIO Left Side Console | - | A2 Pilot Left Vertical Console | B2 RIO Left Vertical Console | - | A3 Pilot Left Knee Panel | B3 RIO Left Instrument Panel | - | A4 Pilot Left Instrument Panel | B4 RIO Center Panel | - | A5 Pilot Left Windshield Frame | B5 RIO Center Console | - | A6 Pilot Center Panel | B6 RIO Left and Right Footwells | - | A7 Pilot Right Windshield Frame | B7 RIO Right Instrument Panel | - | A8 Pilot Right Instrument Panel | B8 RIO Right Knee Panel | - | A9 Pilot Right Knee Panel | B9 RIO Right Vertical Console | - | A10 Pilot Right Vertical Console | B10 RIO Right Side Console | - | A11 Pilot Right Side Console | B11 RIO Canopy Control Handle | - | A12 Pilot Canopy Control Handle | | - |___________________________________________________|____________________________________________________| - - -Description Guide:__________________________________________________________________________________________________________________________________ -[BUTTON ID: 3043 / DEVICE ID: 26] - Clock Timer Start/Stop/Reset Button - {28.1, 31.0}{0.0, 1.0} -Button ID: Used in Stream Deck "Button ID:" -Device ID: Used in Stream Deck "Device ID" Note: this is not DCS ID -- Description of button - -{min gauge value, max gauge value}{stored/variable min value, stored/variable max value} - - -]] ExportScript.FoundDCSModule = true ExportScript.Version.F14 = "1.2.1" -ExportScript.ConfigEveryFrameArguments = +ExportScript.ConfigEveryFrameArguments = { --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) [DeviceID] = "Format" - [4] = "%.4f", <- floating-point number with 4 digits after point - [19] = "%0.1f", <- floating-point number with 1 digit after point - [129] = "%1d", <- decimal number - [5] = "%.f", <- floating point number rounded to a decimal number + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number ]] --- PILOT COCKPIT ------------------------------------------------------------------------------ - - -- [NEEDS TESTING] ------------------------------------------------------------------------ - - - -- [END NEEDS TESTING] -------------------------------------------------------------------- - - - -- [In Development / Testing] ------------------------------------------------------------- - --- A1a - -- Volume/TACAN Command Panel - [2040] = "%.4f", -- ALR-67 Knob controls audio volume to pilot - [2039] = "%.4f", -- SW knob volume of sidewinder audio tone to pilot - [2038] = "%.4f", -- V/UHF 2 knob audio from AN/ARC-182 to pilot - [0] = "%.4f", -- TACAN CMD switch sets crew member in command of Tacan - - -- ICS Control Panel - [2048] = "%.4f", -- VOL knob from RIO to pilot - [2045] = "%.4f", -- AMP selection knob (B/U|NORM|EMER) - [2044] = "%.4f", -- ICS switch (RADIO OVERRIDE|HOT MIC|COLD MIC) - - -- AFCS Control Panel - [2106] = "%.4f", -- PITCH switch enables stability augmentation - [2107] = "%.4f", -- ROLL switch enables stability augmentation - [2108] = "%.4f", -- YAW switch enables stability augmentation - [2109] = "%.4f", -- VEC/PCD/ACL switch (VEC/PCD|OFF|ACL) - [2110] = "%.4f", -- ALT switch (ON|OFF) - [2111] = "%.4f", -- HDG switch (HDG|OFF|GT) - [2112] = "%.4f", -- ENGAGE switch (ENGAGE|OFF) - - -- ASYM Limiter/Engine Mode Select - [16006] = "%.4f", -- ASYM LIMITER switch (ON|OFF) - [16005] = "%.4f", -- ASYM LIMITER cover - [16007] = "%.4f", -- L ENG MODE SELECT (PRI|SEC) - [16008] = "%.4f", -- R ENG MODE SELECT (PRI|SEC) - - [0] = "%.4f", -- Target Designate swith to designate ground targ. on HUD (up/down/forward designate) - - -- Inlet Ramps/Throttle Control Panel - [2104] = "%.4f", -- THROTTLE MODE (AUTO|BOOST|MAN) - [2103] = "%.4f", -- THROTTLE TEMP (HOT|NORM|COLD) - [2100] = "%.4f", -- L INLET RAMP (STOW|AUTO) - [2101] = "%.4f", -- R INLET RAMP (STOW|AUTO) - [2102] = "%.4f", -- ENG CRANK (L|R) - [0] = "%.4f", -- BACK UP IGNITION (ON|NORM) - [0] = "%.4f", -- RUDDER TRIM (L|R) - - - - --- A1b - -- Oxygen Vent Airflow Control Panel - [0] = "%.4f", -- VENT AIRFLOW dial - [8114] = "%.4f", -- OXYGEN switch (ON|OFF) - - -- TACAN Control Panel - [8888] = "%.4f", -- Dual rotary switch Outer Dial - [8889] = "%.4f", -- Dual rotary switch Inner Dial - [0] = "%.4f", -- TACAN channel 3 digit - [8050] = "%.4f", -- Status Go - [8051] = "%.4f", -- Status NO-GO - [2115] = "%.4f", -- BIT button initiating TACAN BIT - [2043] = "%.4f", -- NORMAL MODE switche (X|Y) - [2036] = "%.4f", -- VOL knob for TACAN audio to pilot - [2041] = "%.4f", -- MODE konb (OFF|REC|T/R|A/A|BCN) - [2042] = "%.4f", -- MODE (NORMAL|INVERSE) - - -- UHF 1 (AN/ARC-159) Radio - [2031] = "%.4f", -- VOL knob controls radio to pilot vol. - [2035] = "%.4f", -- SQL switch squelch (ON|OFF) - [2030] = "%.4f", -- Freq. Select Switch 1 - [2029] = "%.4f", -- Freq. Select Switch 2 - [2028] = "%.4f", -- Freq. Select Switch 3 - [2026] = "%.4f", -- Freq. Select Switch 4 - [0] = "%.4f", -- FREQ/(CHAN) display ??? (maybe the switch values above???) - [8115] = "%.4f", -- READ button - [2027] = "%.4f", -- BRT knob display brightness - [16009] = "%.4f", -- LOAD button - [2034] = "%.4f", -- Function selector knob (ADF|BOTH|MAIN|OFF) - [2032] = "%.4f", -- CHAN SEL knob selects preset channels - [2033] = "%.4f", -- Mode selector knob (GUARD|MANUAL|PRESET) - [16010] = "%.4f", -- TONE button transmits tone on freq. - - -- Throttle Buttons - [0] = "%.4f", -- Speed Brake switch (EXT|RET) - [0] = "%.4f", -- Wing Sweep switch (AUTO|FWD|AFT|BOMB) - [0] = "%.4f", -- PLM button lockon - [0] = "%.4f", -- CAGE/SEAM button lockon - [0] = "%.4f", -- Exterior Light switch (ON|OFF) - [0] = "%.4f", -- ICS PIT switch (ICS|BOTH|UHF1|UHF2) - - - - --- A2 - -- Fuel Management Panel - [1076] = "%.4f", -- QTY SEL Switch (FEED|WING|EXT) - [1095] = "%.4f", -- Select Fuel Feed to engines (FWD|NORM|AFT) - [1094] = "%.4f", -- Fuel feed cover - [1001] = "%.4f", -- WING/EXT Transfer (ORIDE|AUTO|OFF) - [15002] = "%.4f", -- Refueling Probe Indicator Light - [1074] = "%.4f", -- Fuel Dump Switch (OFF|DUMP) - [1073] = "%.4f", -- Refuel Probe Switch (ALL EXTD|FUS EXTD|RET) - [1072] = "%.4f", -- Anti skid spoiler bk switch (BOTH|OFF|SPOILER BK) - [1071] = "%.4f", -- MASTER RESET button resets CADC failure - - -- Control surface position indicator - [0] = "%.4f", -- L SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing 8315-8322 - [0] = "%.4f", -- C SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing - [0] = "%.4f", -- R SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing - [1092] = "%.4f", -- RUDDER position indicators Left - [1093] = "%.4f", -- RUDDER position indicators Right - [1090] = "%.4f", -- HORIZ. STAB. Position indicator Left - [1091] = "%.4f", -- HORIZ. STAB. Position indicator Right - - -- Landing Gear Control Panel - [326] = "%.4f", -- Landing Gear Handle (UP|DOWN) - [16015] = "%.4f", -- Landing Gear Emer. Extension - [631] = "%.4f", -- HYD ISOL (FLT|T.O.LDG) - [999] = "%.4f", -- Transition Light - [0] = "%.4f", -- EMERG STORES button (illuminates when pressed) - [0] = "%.4f", -- EMERG STORES light ??? - [1075] = "%.4f", -- NOSE STRUT switch (EXTD|OFF|KNEEL) - [237] = "%.4f", -- Brake Pull Handle - [2049] = "%.4f", -- EJECT CMD Indicator (PILOT|MCO) - - -- Wheels-Flaps Pisition Indicator - [8302] = "%.4f", -- Left Landing Gear Indicator - [8305] = "%.4f", -- Right Landing Gear Indicator - [8301] = "%.4f", -- Nose Landing Gear Indicator - [0] = "%.4f", -- SPD BK Indicator - [8310] = "%.4f", -- Slats Indicator - [8311] = "%.4f", -- Flaps Indicator - - - - - --- A4 - -- Radar Altimiter - [103] = "%.4f", -- Radar Altimeter needle - [308] = "%.4f", -- Radar Altimeter Control Knob - [2123] = "%.4f", -- Radar Altimeter Bug - [2124] = "%.4f", -- Radar Altimeter OFF Flag - [4154] = "%.4f", -- Radar Altimeter Bug - [16020] = "%.4f", -- Radar Altimeter Knob Push - [19108] = "%.4f", -- Radar Altimeter Test Light - - -- Servopneumatic Altimeter - [0] = "%.4f", -- Altimeter readout 112/262/300-304 - [104] = "%.4f", -- Altimeter Baro readout - [306] = "%.4f", -- Baroset knob sets local press. in in.Hg - [0] = "%.4f", -- Local barometric pressure (Kollsman Window) - [307] = "%.4f", -- Mode switch - - -- Airspeed Mach Indicator - [0] = "%.4f", -- Airspeed dial ??? - [0] = "%.4f", -- Indicated airspeed scale (outer) ??? - [0] = "%.4f", -- Indicated airspeed scale (inner) ??? - [0] = "%.4f", -- Mach number scale ??? - [0] = "%.4f", -- Indicated airspeed index pointer ??? - [0] = "%.4f", -- Mach Number index pointer ??? - [0] = "%.4f", -- Safe Mach number index pointer ??? - [0] = "%.4f", -- Index knob pushed in ??? - [0] = "%.4f", -- Index knob pulled out ??? - - [0] = "%.4f", -- Vertical Velocity Indicator - [0] = "%.4f", -- Left Engine Fuel Shutoff Handle - [0] = "%.4f", -- Angle of Attack Indicator - - - - - --- A5 - [9356] = "%.4f", -- LEFT Eng. Stall Indicator - - [9350] = "%.4f", -- WHEELS warning - [9351] = "%.4f", -- BRAKES warning - antiskid or brake fail / parking break - [9352] = "%.4f", -- ACLS/AP - ACLS or AP disengaged - [9353] = "%.4f", -- NWS ENGA - nosewheel steering engaged - [9354] = "%.4f", -- AUTO THROT - disengagement of auto throttle - - - - - - --- 6b - -- Vertical Display Indicator (VDI) - [1037] = "%.4f", -- HUD Brightness Control - [1036] = "%.4f", -- VDI Brightness Control - [1038] = "%.4f", -- VDI Contrast Control - [1033] = "%.4f", -- FILTER Handle when pulled inserts filter for night ops - [1034] = "%.4f", -- HUD Trim control for pitch lines - [1035] = "%.4f", -- VDI Trim adjustment of pitch lines on VDI - - -- VDI Caution Lights (also check 2222 id range if below not working) - [9360] = "%.4f", -- ADJ A/C Advisory light indicating other aircraft close to own traffic pattern. - [9361] = "%.4f", -- LANDING CHK Advisory light indicating carrier has a channel - [9362] = "%.4f", -- ACL READY indicating CATCC has aquired aircraft - [9363] = "%.4f", -- A/P CPLR indicating CATCC is ready to control aircraft. - [9364] = "%.4f", -- CMD CONTROL aircraft is under data link control for landing. - [9365] = "%.4f", -- 10 SECONDS waypoint and carrier motion info - [9366] = "%.4f", -- TILT no data link command received for the last 2 sec - [9367] = "%.4f", -- VOICE - CATCC not ready for ACL - [9368] = "%.4f", -- AUTO Throttle - [9369] = "%.4f", -- A/P REF autopilot selected but not engaged. - [15070] = "%.4f", -- WAVEOFF Warning light indicating waveoff commanded. 2222/15070 - [15071] = "%.4f", -- WING SWEEP failure in both wing-sweep channels - [15072] = "%.4f", -- REDUCE SPEED flap retraction failure - [15073] = "%.4f", -- ALT LOW Non functional, light on radar altimeter is used instead - - - - --- 6c - -- Horizontal Situation Display Indicator (HSD) - [1043] = "%.4f", -- BRT controls HSD Brightness - [1039] = "%.4f", -- HDG controls heading reference bug in TACAN mode - [1040] = "%.4f", -- CRS controls cour in MAN and TACAN mode - [1041] = "%.4f", -- TEST allows reset of HSD - - [0] = "%.4f", -- BIT indicator failure in HSD (shows flags ???) - [0] = "%.4f", -- Bit Indicator knob ??? - - - - --- 6d - -- Center Panel at bottom - [0] = "%.4f", -- Cabin Pressure Altimeter in 1,000 foot increments (0-50,000') 935|2210 - [0] = "%.4f", -- Emerg. Brake Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 999|9260 - [0] = "%.4f", -- Emerg. Aux Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 9261 - - - - --- A7 - [9355] = "%.4f", -- Right Eng. STALL - - -- ECM Warning Lights - [9357] = "%.4f", -- SAM - steady when lock from SAM / Flashes when missle launch - [9358] = "%.4f", -- AAA - steady when lock from AAA / Flashes on missle launch - [9359] = "%.4f", -- AI - steady when lock from airborne radar - - [15097] = "%.4f", -- Standby Compass - - - - --- A8 - [0] = "%.4f", -- Wing Sweep Indicator 404|405|507|508|2001|2002 flags: 15091-15095 - [0] = "%.4f", -- Right Engine Fuel Shutoff Handle - [0] = "%.4f", -- Standby Attitude Indicator ?? - - -- UHF/VHF Remote Indicators - [0] = "%.4f", -- UHF 1 frequency display - [0] = "%.4f", -- UHF 1 TEST button displays 888.888 if good - [0] = "%.4f", -- UHF 1 DIM controls display brightness - [0] = "%.4f", -- V/UHF 2 frequency display - [0] = "%.4f", -- V/UHF 2 TEST button displays 888.888 if good - [0] = "%.4f", -- V/UHF 2 BRT controls display brightness - - [353] = "%0.1f", -- VHF/UHF ARC-182 Freq Mode (UHF GUARD|V/UHF|V/UHF GUARD|PRESET|V/UHF|LOAD?) -- Bailey - - -- Bearing Distance Heading Indicator BDHI - [0] = "%.4f", -- No. 2 Bearing Pointer magnetic course to TACAN station - [0] = "%.4f", -- Compass Rose magnetic heading - [0] = "%.4f", -- No. 1 bearing pointer magnetic course to UHF/ADF station - [0] = "%.4f", -- Distance Counter in nautical miles - - -- ALR-67 Indicator - [0] = "%.4f", -- INT knob intensity brightness - - [224] = "%.4f", -- Canopy Jettison Handle - - - - - --- A10 - -- Displays Control Panel - -- Steering Commands Selectors - [1002] = "%.4f", -- TACAN - Selects TACAN as steering command source - [1003] = "%.4f", -- DEST - Selects RIO set waypoint as steering command source - [1004] = "%.4f", -- AWL/PCD - All weather landing/prec. course direction - [1005] = "%.4f", -- VEC - Vector, selects data link deviation steering as source - [1006] = "%.4f", -- MAN - Manual, selects manually selected course and heading - - -- Mode Selectors - [1015] = "%.4f", -- T.O. Takeoff mode - [1014] = "%.4f", -- CRUISE mode - [1013] = "%.4f", -- A/A Air-to-Air mode - [1012] = "%.4f", -- A/G Air-to-Ground mode - [1011] = "%.4f", -- LDG Landing Mode - - -- HUD - [1021] = "%.4f", -- DeClutter Mode for HUD (ON|OFF) - [1020] = "%.4f", -- Which AWL to display on HUD Switch (ILS|ACL) - - -- VDI - [1019] = "%.4f", -- TV Displays video from TCS or LANTIRN or NORM (TV|NORM) - [1018] = "%.4f", -- Which AWL to display on VDI (ILS|ACL) - - -- HSD - [1016] = "%.4f", -- HSD Mode (NAV|TID) nav display or TID repeats RIO TID Info - [1017] = "%.4f", -- ECM (ORIDE|OFF) [NOT USED/MODELED] - - -- Power Switches - [1010] = "%.4f", -- VDI (ON|OFF) - [1009] = "%.4f", -- HUD (ON|OFF) - [1008] = "%.4f", -- HSD/ECMD (ON|OFF) - - -- Pitch LAD BRT Knob - [1007] = "%.4f", -- Controls brightness of pitch ladder on HUD - -- END Displays Control Panel - - -- gun elevation lead in mils - [2270] = "%.4f", -- Hundreds Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils - [2271] = "%.4f", -- Tens Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils - [2272] = "%.4f", -- Ones Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils - [2273] = "%.4f", -- Knob adjust counter - - - - --- 11a - -- Spoiler Failure Override - [902] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) COVER - [903] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) COVER - [908] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) - [907] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) - - -- Caution Advisory Indicator - [15037] = "%.1f", -- PITCH STAB 1 - inoperative pitch channel - [15040] = "%.1f", -- PITCH STAB 2 - inoperative pitch channel - [15039] = "%.1f", -- ROLL STAB 1 - inoperative roll channel - [15056] = "%.1f", -- ROLL STAB 2 - inoperative roll channel - [15025] = "%.1f", -- YAW STAB OP - one inoperative yaw channel - [15026] = "%.1f", -- YAW STAB OUT - two inoperative yaw channels - [15031] = "%.1f", -- EMERG JETT - caution activation of emerg stores jett button - [15050] = "%.1f", -- LADDER - boarding ladder not correctly stowed - [15052] = "%.1f", -- INLET ICE - accumulation of ice on ice detector in L eng. - [15046] = "%.1f", -- FLAP - failure in flap system or flaps down & speed > 225k - [15047] = "%.1f", -- HZ TAIL AUTH - failure of lateral tail auth. actuator - [15053] = "%.1f", -- RUDDER AUTH - failure of rudder auth. actuator - [15057] = "%.1f", -- SPOILERS - spoiler sys failure - [15041] = "%.1f", -- AUTO PILOT - A/P failure - [15054] = "%.1f", -- Left INLET - AICS programmer and/or system failure - [15051] = "%.1f", -- Right INLET - AICS programmer and/or system failure - [15048] = "%.1f", -- OIL PRESS - left or right engine oil press. < 11psi - [15038] = "%.1f", -- BLEED DUCT - high temp air leak in engine comp. - [15049] = "%.1f", -- LEFT RAMPS - ramps not locked in pos. - [15044] = "%.1f", -- RIGHT RAMPS - ramps not locked in pos. - [15063] = "%.1f", -- START VALVE - starter solenoid air valve is open - [15061] = "%.1f", -- LEFT ENG SEC - engin AFTC is in secondary mode - [15064] = "%.1f", -- RIGHT ENG SEC - engin AFTC is in secondary mode - [15016] = "%.1f", -- LEFT GEN - respective engine generator inoperative - [15020] = "%.1f", -- RIGHT GEN - respective engine generator inoperative - [15027] = "%.1f", -- CANOPY - canopy is not own and locked - [15033] = "%.1f", -- BINGO - aircraft fuel qty at or below set bingo - [15017] = "%.1f", -- LEFT OIL HOT - respective eng. oil is too hot - [15022] = "%.1f", -- RIGHT OIL HOT - respective eng. oil is too hot - [15028] = "%.1f", -- CADC - air data computer failure - [15034] = "%.1f", -- HYD PRESS - press. in either engine hyd. < 2,100 psi - [15018] = "%.1f", -- LEFT FUEL PRESS - press. < 9 psi in respective fuel pump - [15021] = "%.1f", -- RIGHT FUEL PRESS - press. < 9 psi in respective fuel pump - [15029] = "%.1f", -- LEFT FUEL LOW - fuel < 1000 lbs in aft and left tank - [15035] = "%.1f", -- RIGHT FUEL LOW - fuel < 1000 lbs in fwd and righ tank - [15023] = "%.1f", -- WING SWEEP - failure of a single channel in wing sweep - [15062] = "%.1f", -- RATS - RATS enabled - [15058] = "%.1f", -- TRANS/RECT - transformer rectifier failure - [15036] = "%.1f", -- MACH TRIM - failure in Mach trim actuator - [15030] = "%.1f", -- WSHLD HOT - central windshield overheat - [15045] = "%.1f", -- LAUNCH BAR - weight on wheels - [15060] = "%.1f", -- INTEG TRIM - trim failure - [15055] = "%.1f", -- AHRS - unreliable attitude or hdg info from AHRS - [15019] = "%.1f", -- ENG FIRE EXT - low press. in fire extenguisher - [15024] = "%.1f", -- AUX FIRE EXT - low press. in Aux. fire ext. - - -- Master Generator Control Panel - [937] = "%.4f", -- LEFT MASTER GEN switch (NORM|OFF/RESET|TEST) - [936] = "%.4f", -- RIGHT MASTER GEN switch (NORM|OFF/RESET|TEST) - [927] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) COVER - [926] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) - - -- Air Condition Control Panel - [940] = "%.4f", -- TEMP switch (AUTO|MAN) - [939] = "%.4f", -- CABIN PRESS switch (NORM|DUMP) - [938] = "%.4f", -- RAM AIR switch (INCR|DECR) - [929] = "%.4f", -- AIR SOURCE selection (RAM) - [930] = "%.4f", -- AIR SOURCE selection (L ENG.) - [931] = "%.4f", -- AIR SOURCE selection (R ENG.) - [932] = "%.4f", -- AIR SOURCE selection BOTH ENG.) - [933] = "%.4f", -- AIR SOURCE selection (OFF) - [950] = "%.4f", -- TEMP thumbwheel (1-14 COOL-WARM) - - -- External Environmental Control Panel - [942] = "%.4f", -- WIND SHIELD switch (AIR|OFF) - [941] = "%.4f", -- ANTI-ICE switch (ORIDE|AUTO|OFF) - - -- Hydraulic Transfer Pump Switch - [630] = "%.4f", -- Transfer Pump switch cover - [629] = "%.4f", -- HYD TRANSFER PUMP switch (NORMAL|SHUTOFF) - - - - - --- 11b - -- Compass Control Panel - [0] = "%.4f", -- SYNC Indicator 2221? - [906] = "%.4f", -- N-S Switch hemisphere (N|S) - [909] = "%.4f", -- Lat Knob (0-90) - [1026] = "%.4f", -- Lat Knob (0-90) - [905] = "%.4f", -- Mode Switch AHRS Hdg Info (COMP|SLAVED|DG) - [904] = "%.4f", -- HDG Knob - [16014] = "%.4f", -- HDG Button - - -- ARA-63 Control Panel - [912] = "%.4f", -- Channel Selector (1 of 20 available ICLS channels) - [911] = "%.4f", -- BIT button - [910] = "%.4f", -- Power Switch (ON|OFF) - [910] = "%.4f", -- Power ON Light for ARA-63 (taken from power on/off switch) - - -- Master Light Control Panel - [923] = "%.4f", -- ANTI COLLISION switch (ON|OFF) - [919] = "%.4f", -- POSITION switch (FLASH|STEADY) - [916] = "%.4f", -- TAIL POSITION switch (DIM|OFF|BRT) - [913] = "%.4f", -- WING POSITION switch (DIM|OFF|BRT) - [15005] = "%.4f", -- ACM thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) - [15006] = "%.4f", -- INDEXER thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) - [15007] = "%.4f", -- INSTRUMENT thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) - [15008] = "%.4f", -- CONSOLE thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) - [15009] = "%.4f", -- FORMATION thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) - [915] = "%.4f", -- HOOK BYPASS (FIELD|CARRIER) - [918] = "%.4f", -- TAXI lights switch (ON|OFF) - [921] = "%.4f", -- WHITE FLOOD switch (OFF|DIM|BRT) - [924] = "%.4f", -- RED FLOOD switch (DIM|MED|BRT) - - -- Master Test Panel - [934] = "%.4f", -- MASTER TEST SELECTOR (OFF|LTS|FIRE DET/EXT|INST|OBC|EMERG GEN|MACH LEV|WG SWP|FLT GR DN|FLT GR UP|D/L RAD|STICK SW) - [15098] = "%.4f", -- MASTER TEST SELECTOR Knob Push - [15010] = "%.4f", -- GO light - light used in test to indicate go/no-go conditions of that system - [15011] = "%.4f", -- NO-GO light - light used in test to indicate go/no-go conditions of that system - [928] = "%.4f", -- EMERG FLT HYD (HIGH|LOW|AUTO(LOW)) - [615] = "%.4f", -- EMERG FLT HYD switch cover - - -- Canopy Defog/Cabin Air Lever - [0] = "%.4f", -- CABIN AIR - [0] = "%.4f", -- CANOPY DEFOG - - - - --- 12 - [0] = "%.4f", -- Canopy Control Handle (BOOST|CLOSE|HOLD|OPEN|AUX OPEN) - - - -- [END In Development] ------------------------------------------------------------------- - -- ################################################################################################################################################################### - -- ################################################################################################################################################################### - - - - - - - - - - - - - -- [A1 Pilot - Left Side Console] --------------------------------------------------------- - -- [END A1] ------------------------------------------------------------------------------- - -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- - -- [END A2] ------------------------------------------------------------------------------- + --Lamps +[10] = "%.1f", -- RADAR DDD WCS PSRCH +[11] = "%.1f", -- RADAR DDD_WCS TWSMAN +[12] = "%.1f", -- RADAR DDD WCS TWSAUTO +[13] = "%.1f", -- RADAR_DDD_WCS_RWS +[14] = "%.1f", -- RADAR_DDD_WCS_PDSRCH +[15] = "%.1f", -- RADAR_DDD_WCS_PSTT +[9916] = "%.1f", -- RADAR_DDD_WCS_PDSTT +[17] = "%.1f", -- RADAR_DDD_display_IFF +[18] = "%.1f", -- RADAR_DDD_display_IR +[19] = "%.1f", -- RADAR_DDD_display_radar +[20] = "%.1f", -- RADAR_IR_gain +[21] = "%.1f", -- RADAR_IR_volume +[22] = "%.1f", -- RADAR_IR_threshold +[23] = "%.1f", -- RADAR_DDD_bright +[24] = "%.1f", -- RADAR_DDD_pulse_vid +[25] = "%.1f", -- RADAR_DDD_erase +[26] = "%.1f", -- RADAR_DDD_pulse_gain +[27] = "%.1f", -- RADAR_ACM_thresh +[28] = "%.1f", -- RADAR_jamjet +[29] = "%.1f", -- RADAR_PD_thresh_clutter +[30] = "%.1f", -- RADAR_PD_thresh_clear - -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- +[31] = "%.1f", -- VDI_Light_Color +[32] = "%.1f", -- HUD_Light_Color - -- Electronic Instrument Group - [1057] = "%.4f", -- Engine RPM Left [STREAM DECK FORMAT: 51057] - [1058] = "%.4f", -- Engine RPM Right [STREAM DECK FORMAT: 51057] - [1059] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Left [STREAM DECK FORMAT: 51059] - [1060] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Right [STREAM DECK FORMAT: 51059] - [1061] = "%.4f", -- Engine Fuel Flow Left [STREAM DECK FORMAT: 51061] - [1062] = "%.4f", -- Engine Fuel Flow Right [STREAM DECK FORMAT: 51061] +[33] = "%.1f", -- HIDE_Stick - -- Hydraulic Pressure Indicator - [1063] = "%.4f", -- HYD_FlightHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] - [1064] = "%.4f", -- HYD_CombinedHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] +[9945] = "%.1f", -- DATA_ADF_Switch - -- Engine Oil Pressure Gauges - [1065] = "%.4f", -- Right Engine Oil Pressure [STREAM DECK FORMAT: 51065] - [1066] = "%.4f", -- Left Engine Oil Pressure [STREAM DECK FORMAT: 51065] +[403] = "%.1f", -- INT_CANOPY_Open +[404] = "%.1f", -- Pilot_Seat_Safety +[405] = "%.1f", -- RIO_UHF_REMOTE_TEST +[406] = "%.1f", -- RIO_UHF_REMOTE_DIM +[407] = "%.1f", -- HCU_POWER_RESET_LIGHT +[408] = "%.1f", -- HCU_WCS_POWER_LIGHT +[409] = "%.1f", -- HCU_IR_STBY_LIGHT +[410] = "%.1f", -- RIO_LOD +[411] = "%.1f", -- PILOT_LOD +[412] = "%.1f", -- COMP_IND_SYNC_NEEDLE +[413] = "%.1f", -- DATALINK_ON_OFF_SW - -- Engine Exhaust Nozzle Position - [1067] = "%.1f", -- Right Nozzle [STREAM DECK FORMAT: 51068] - [1068] = "%.1f", -- Left Nozzle [STREAM DECK FORMAT: 51068] +[414] = "%.1f", -- TACAN_NFO_RIO_INDICATOR - -- [END A3] ------------------------------------------------------------------------------- +[1800] = "%.1f", -- PILOT_FloodLights +[1801] = "%.1f", -- PILOT_PanelLights +[1802] = "%.1f", -- PILOT_InstrumentLights +[1803] = "%.1f", -- PILOT_WhiteFloodLights - -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- +[1804] = "%.1f", -- RIO_FloodLights +[1805] = "%.1f", -- RIO_PanelLights +[1806] = "%.1f", -- RIO_InstrumentLights +[1807] = "%.1f", -- RIO_WhiteFloodLights - -- [END A4] ------------------------------------------------------------------------------- - - -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- +[1808] = "%.1f", -- PILOT_Cockpit_LeanForward +[1809] = "%.1f", -- PILOT_Cockpit_LeanLeftRight - -- Approach Indexer - [3760] = "%d", -- Approach Indexer AOA Slow green light - {0, 1}{0, 1} - [3761] = "%d", -- Approach Indexer AOA optimum yellow light - {0, 1}{0, 1} - [3762] = "%d", -- Approach Indexer AOA fast red light - {0, 1}{0, 1} +[1810] = "%.1f", -- RIO_Cockpit_LeanForward +[1811] = "%.1f", -- RIO_Cockpit_LeanLeftRight - -- [END A5] ------------------------------------------------------------------------------- +[1812] = "%.1f", -- CCM_SPL +[1813] = "%.1f", -- CCM_ALT_DIFF +[1814] = "%.1f", -- CCM_VGS - -- [A6a Pilot - Center Panel] ------------------------------------------------------------- +[6501] = "%.1f", -- ACM_TurnIndicator +[6500] = "%.1f", -- ACM_SlipBall - -- ACM Switch - [1049] = "%d", -- ACM Switch Cover actives the ACM mode - {0, 1}{0, 1} [BUTTON ID:3133 / DEVICE ID:55 ] - [1048] = "%d", -- ACM JETT button jettison stores - {0, 1}{0, 1} [BUTTON ID:3138 / DEVICE ID:55 ] +[6502] = "%.1f", -- COMPASSBALL_ROTATE +[6503] = "%.1f", -- COMPASSBALL_ROTATE_VERTICAL - -- Master Arm Switch - [1046] = "%d", -- MASTER ARM cover - {0, 1}{0, 1} [BUTTON ID:3135 / DEVICE ID:55 ] - [1047] = "%d", -- MASTER ARM switch (OFF|ON|TNG) - {-1, 1}{-1, 1} [BUTTON ID:3136 / DEVICE ID:55 ] +[8000] = "%.1f", -- MIRROR_Shake_FrontTop +[8001] = "%.1f", -- MIRROR_Shake_FrontLeft +[8002] = "%.1f", -- MIRROR_Shake_FrontRight - -- Turn and Slip Indicator 6a (Not sure how to do this at the moment) - [6500] = "%.4f", -- Slip Ball - [6501] = "%.4f", -- Turn Indicator +[15012] = "%.1f", -- SPOILER_FLR_ORIDE_Left +[15013] = "%.1f", -- SPOILER_FLR_ORIDE_Right - -- Master Caution light - [9200] = "%d", -- MASTER CAUTION Light - flashes - {0, 1}{0, 1} - - -- [END A6a] ------------------------------------------------------------------------------ - - -- [A6b Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6b] ------------------------------------------------------------------------------ - - -- [A6c Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6c] ------------------------------------------------------------------------------ - - -- [A6d Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6d] ------------------------------------------------------------------------------ - - -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- - -- [END A7] ------------------------------------------------------------------------------- - - -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- - -- [END A8] ------------------------------------------------------------------------------- - - -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- - - -- FUS & FEED tapes Shows fuel qty in fuselage tanks - [1054] = "%.4f", -- Left feed and aft fuselage tanks [STREAM DECK FORMAT: 51054] - [1055] = "%.4f", -- Right feed and forward fuselage tanks [STREAM DECK FORMAT: 51055] - - -- Total Left Fuel Qty (main fuel guage at bottom left) - [6000] = "%.1f", -- FUEL_LFuelDial1k [STREAM DECK FORMAT: 56000] - [6001] = "%.1f", -- FUEL_LFuelDial100 [STREAM DECK FORMAT: 56000] - [6002] = "%.1f", -- FUEL_LFuelDial10 [STREAM DECK FORMAT: 56000] - [6003] = "%.1f", -- FUEL_LFuelDial1 [STREAM DECK FORMAT: 56000] - - -- Total Right Fuel Qty (main fuel guage at bottom right) - [6004] = "%.1f", -- FUEL_RFuelDial1k [STREAM DECK FORMAT: 56004] - [6005] = "%.1f", -- FUEL_RFuelDial100 [STREAM DECK FORMAT: 56004] - [6006] = "%.1f", -- FUEL_RFuelDial10 [STREAM DECK FORMAT: 56004] - [6007] = "%.1f", -- FUEL_RFuelDial1 [STREAM DECK FORMAT: 56004] - - -- Total Fuel Qty in all aircraft tanks (main fuel guage in center shows "Fuel 15000 Qty") - [6010] = "%.1f", -- FUEL_TotalFuel10k [STREAM DECK FORMAT: 56010] - [6011] = "%.1f", -- FUEL_TotalFuel1k [STREAM DECK FORMAT: 56010] - [6012] = "%.1f", -- FUEL_TotalFuel100 [STREAM DECK FORMAT: 56010] - [6013] = "%.1f", -- FUEL_TotalFuel10 [STREAM DECK FORMAT: 56010] - [6014] = "%.1f", -- FUEL_TotalFuel1 [STREAM DECK FORMAT: 56010] - - -- Currently set BINGO fuel quantity (main fuel guage in center at top shows "Bingo 4000") - [6020] = "%.1f", -- FUEL_BingoFuel10k [STREAM DECK FORMAT: 56020] - [6021] = "%.1f", -- FUEL_BingoFuel1k [STREAM DECK FORMAT: 56020] - [6022] = "%.1f", -- FUEL_BingoFuel100 [STREAM DECK FORMAT: 56020] - [6023] = "%.1f", -- FUEL_BingoFuel10 [STREAM DECK FORMAT: 56020] - [6024] = "%.1f", -- FUEL_BingoFuel1 [STREAM DECK FORMAT: 56020] - - -- Accelerometer (3 needles) - [110] = "%.4f", -- Needle - Current G (+10 to -6) [STREAM DECK FORMAT: 50110] - [15076] = "%.4f", -- Needle 2 - Max Postive G pulled (max 10) [STREAM DECK FORMAT: 50110] - [15077] = "%.4f", -- Needle 3 - Max Negative G Pulled (max -6) [STREAM DECK FORMAT: 50110] - - -- [END A9] ------------------------------------------------------------------------------- - - -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- - - -- Gun Ammunition Rounds Counter - [4060] = "%.1f", -- Gun Ammunition Rounds Counter Hundreds [STREAM DECK FORMAT: 54060] - [4061] = "%.1f", -- Gun Ammunition Rounds Counter Tens [STREAM DECK FORMAT: 54060] - [4062] = "%.1f", -- Gun Ammunition Rounds Counter Ones [F-14 DOESN'T DISPLAY] - - -- [END A10] ------------------------------------------------------------------------------ - - -- [A11 Pilot - Right Side Console] ------------------------------------------------------- - -- [END A11] ------------------------------------------------------------------------------ - - -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- - -- [END A12] ------------------------------------------------------------------------------ --- END PILOT COCKPIT -------------------------------------------------------------------------- +[15014] = "%.1f", -- Light_RFIRE +[15015] = "%.1f", -- Light_LFIRE --- RIO OFFICER COCKPIT ------------------------------------------------------------------------ - -- [B1 RIO - Left Side Console] ----------------------------------------------------------- - -- [END B1] ------------------------------------------------------------------------------- - - -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- - -- [END B2] ------------------------------------------------------------------------------- - -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- - -- [END B3] ------------------------------------------------------------------------------- +[1044] = "%.1f", -- Fire_Ext_Handle_Right +[15081] = "%.1f", -- Fire_Ext_Handle_Left +[15082] = "%.1f", -- Fire_Ext_Button_Right +[15083] = "%.1f", -- Fire_Ext_Button_Left - -- [B4 RIO - Center Panel] ---------------------------------------------------------------- - -- [END B4] ------------------------------------------------------------------------------- - -- [B5 RIO - Center Console] -------------------------------------------------------------- - -- [END B5] ------------------------------------------------------------------------------- +[34] = "%.1f", -- RADAR_DDD_aspect +[35] = "%.1f", -- RADAR_DDD_Vc_scale +[36] = "%.1f", -- RADAR_DDD_tgts +[37] = "%.1f", -- RADAR_DDD_MLC +[38] = "%.1f", -- RADAR_DDD_AGC +[3900] = "%.1f", -- RADAR_DDD_paramp +[40] = "%.1f", -- RADAR_DDD_range_5 +[41] = "%.1f", -- RADAR_DDD_range_10 +[42] = "%.1f", -- RADAR_DDD_range_20 +[43] = "%.1f", -- RADAR_DDD_range_50 +[44] = "%.1f", -- RADAR_DDD_range_100 +[45] = "%.1f", -- RADAR_DDD_range_200 - -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- - -- [END B6] ------------------------------------------------------------------------------- +[48] = "%.1f", -- TID_bright +[49] = "%.1f", -- TID_contrast - -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ +[52] = "%.1f", -- TID_CLSN +[53] = "%.1f", -- TID_trackhold - -- Total RIO Fuel Qty (Radar Officer Fuel Dial) - [2117] = "%.1f", -- FUEL_TotalFuelRIO10k (10's of thousands in decimal 0.1 = 10,000 lbs) [STREAM DECK FORMAT: 56010] - [2118] = "%.1f", -- FUEL_TotalFuelRIO1k (thousands of lbs in decimal 0.4 = 1,000 lbs) [STREAM DECK FORMAT: 56010] - [2119] = "%.1f", -- FUEL_TotalFuelRIO100 (hundreds of lbs in decimal 0.3 = 300 lbs) [STREAM DECK FORMAT: 56010] - [2120] = "%.1f", -- FUEL_TotalFuelRIO10 (ten lbs of fuel in decimal 0.7 = 70 lbs) [F-14 DOESN'T DISPLAY TENS OF LBS] - [2135] = "%.1f", -- FUEL_TotalFuelRIO1 (lbs of fuel in decimal 0.2 = 2 lbs) [F-14 DOESN'T DISPLAY] +[54] = "%.1f", -- PEDALS_Yaw +[55] = "%.1f", -- PEDALS_Brake_Left - -- [END B7] ------------------------------------------------------------------------------- +[58] = "%.1f", -- WEAP_Elec_Fuse +[59] = "%.4f", -- WEAP_Type_Wheel - -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ - -- [END B1] ------------------------------------------------------------------------------- - - -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ - -- [END B2] ------------------------------------------------------------------------------- +[60] = "%.1f", -- WEAP_Bomb_SinglePairs +[61] = "%.1f", -- WEAP_Bomb_StepRipple +[62] = "%.1f", -- WEAP_AG_Gun +[63] = "%.1f", -- WEAP_Mech_Fuse +[64] = "%.1f", -- WEAP_Jett_Station6 +[65] = "%.1f", -- WEAP_Jett_Station3 +[66] = "%.1f", -- WEAP_Jett_RackWeapons +[67] = "%.1f", -- WEAP_Jett_RightTank +[68] = "%.1f", -- WEAP_Jett_Station1 +[69] = "%.1f", -- WEAP_Jett_Station4 +[70] = "%.1f", -- WEAP_Jett_Station5 +[71] = "%.1f", -- WEAP_Jett_Station8 +[72] = "%.1f", -- WEAP_MSL_SPD_Gate +[73] = "%.1f", -- WEAP_Jett_LeftTank +[74] = "%.1f", -- WEAP_AA_Launch +[75] = "%.1f", -- WEAP_Missile_Option - -- [B10 RIO - Right Side Console] --------------------------------------------------------- - -- [END B3] ------------------------------------------------------------------------------- +[78] = "%.1f", -- WEAP_Selective_Jett +[79] = "%.5f", -- RADAR_elevation_bars_knob +[80] = "%.5f", -- RADAR_azimuth_scan_knob +[81] = "%.1f", -- RADAR_elevation_center_knob +[82] = "%.1f", -- RADAR_azimuth_center_knob +[83] = "%.1f", -- RADAR_stab_switch +[84] = "%.1f", -- RADAR_VSL_switch + +[87] = "%.1f", -- TCS_ACQ_switch +[88] = "%.1f", -- TCS_FOV_button +[89] = "%.1f", -- TCS_Slave_switch +[90] = "%.1f", -- RECORD_power +[91] = "%.1f", -- RECORD_mode +[92] = "%.1f", -- RECORD_standby_lamp +[93] = "%.1f", -- RECORD_rec_lamp +[94] = "%.1f", -- RECORD_endoftape_lamp +[95] = "%.1f", -- LIQUID_cooling_switch +[96] = "%.1f", -- BEACON_power_switch + +[98] = "%.1f", -- CAP_category + + +[104] = "%.1f", -- ALTI_NeedleBaro +[20104] = "%.1f", -- RIOALTI_NeedleBaro + +[106] = "%.1f", -- VSI_needle + +[228] = "%.1f", -- ACCEL_Reset +[110] = "%.1f", -- ACCEL_AccelerometerNeedle +[15076] = "%.1f", -- ACCEL_AccelerometerNeedle2 +[15077] = "%.1f", -- ACCEL_AccelerometerNeedle3 + +[15078] = "%.1f", -- HOOK_EmergencyDown + +[15079] = "%.1f", -- HSI_Flag_NukeThing + +[112] = "%.1f", -- ALTI_ThousandsL + +[117] = "%.1f", -- BEACON_ACLS_test_button +[118] = "%.1f", -- BEACON_mode_knob + +[20112] = "%.1f", -- RIOALTI_ThousandsL + +[123] = "%.1f", -- CAP_button5 -- note: 4 and 5 are swapped +[124] = "%.1f", -- CAP_button4 +[125] = "%.1f", -- CAP_button3 +[126] = "%.1f", -- CAP_button2 +[127] = "%.1f", -- CAP_button1 +[128] = "%.1f", -- CAP_tng_nbr +[129] = "%.1f", -- CAP_button10 +[130] = "%.1f", -- CAP_button9 +[131] = "%.1f", -- CAP_button8 +[132] = "%.1f", -- CAP_button7 +[133] = "%.1f", -- CAP_button6 +[134] = "%.1f", -- CAP_program_restart + +[136] = "%.1f", -- CAP_LONG_6 +[137] = "%.1f", -- CAP_LAT_1 +[138] = "%.1f", -- CAP_NBR_2 +[139] = "%.1f", -- CAP_7 +[140] = "%.1f", -- CAP_HDG_8 +[141] = "%.1f", -- CAP_SPD_3 +[143] = "%.1f", -- CAP_ALT_4 +[142] = "%.1f", -- CAP_9 +[144] = "%.1f", -- CAP_BRG_0 +[145] = "%.1f", -- CAP_RNG_5 +[146] = "%.1f", -- CAP_NE +[147] = "%.1f", -- CAP_SW +[148] = "%.1f", -- CAP_clear +[149] = "%.1f", -- CAP_enter + + + +[156] = "%.1f", -- ECMD_Override_SW +[168] = "%.1f", -- ECMD_Corr_SW +[189] = "%.1f", -- ECMD_Mode_SW +[190] = "%.1f", -- ECMD_Data_ADF_SW + +[2023] = "%.1f", -- ECMD_Knob_Brightness +[2024] = "%.1f", -- ECMD_Btn_Test + + +[151] = "%.1f", -- DECM_Mode_Knob +[9950] = "%.1f", -- DECM_Vol_Knob + + +[174] = "%.1f", -- RCP45_Power_SW +[173] = "%.1f", -- RCP45_AAA_Mode_SW + + + +[175] = "%.1f", -- DATALINK_Antenna +[176] = "%.1f", -- DATALINK_Reply +[177] = "%.1f", -- DATALINK_Cains +[191] = "%.1f", -- DATALINK_antijam +[196] = "%.1f", -- DATALINK_freq_10s +[195] = "%.1f", -- DATALINK_freq_1s +[197] = "%.1f", -- DATALINK_freq_tenths + +[161] = "%.1f", -- IFF_audiolight_switch +[162] = "%.1f", -- IFF_M1_switch +[163] = "%.1f", -- IFF_M2_switch +[164] = "%.1f", -- IFF_M3A_switch +[165] = "%.1f", -- IFF_MC_switch +[166] = "%.1f", -- IFF_RAD_switch +[167] = "%.1f", -- IFF_ident_switch +[181] = "%.1f", -- IFF_M4_switch +[183] = "%.1f", -- IFF_code_knob +[184] = "%.1f", -- IFF_master_knob +[185] = "%.1f", -- IFF_test_button +[186] = "%.1f", -- IFF_reply_button + +[2262] = "%.1f", -- IFF_M3code_1s +[2261] = "%.1f", -- IFF_M3code_10s +[198] = "%.1f", -- IFF_M3code_100s +[199] = "%.1f", -- IFF_M3code_1000s +[200] = "%.1f", -- IFF_M1code_1s +[201] = "%.1f", -- IFF_M1code_10s + -- see also RIO_IFF_TEST_LIGHT and RIO_IFF_REPLY_LIGHT + + -- ALR-67 RWR Control Panel +[16011] = "%.1f", -- RWR_Brightness_Pilot +[376] = "%.1f", -- RWR_Brightness_RIO + + -- CMDS ALE-39 +[390] = "%.1f", -- CMDS_Master_Mode_SW +[389] = "%.1f", -- CMDS_Chaff_Oper_SW +[388] = "%.1f", -- CMDS_Flare_Oper_SW +[387] = "%.1f", -- CMDS_Jammer_Oper_SW +[391] = "%.1f", -- CMDS_Flare_Salvo_SW +[398] = "%.1f", -- CMDS_Flare_Mode_SW + +[392] = "%.1f", -- CMDS_Chaff_Counter_Roller_10 +[393] = "%.1f", -- CMDS_Chaff_Counter_Roller_1 +[394] = "%.1f", -- CMDS_Flare_Counter_Roller_10 +[395] = "%.1f", -- CMDS_Flare_Counter_Roller_1 +[396] = "%.1f", -- CMDS_Jammer_Counter_Roller_10 +[397] = "%.1f", -- CMDS_Jammer_Counter_Roller_1 + +[386] = "%.1f", -- CMDS_Chaff_Counter_Control +[385] = "%.1f", -- CMDS_Flare_Counter_Control +[399] = "%.1f", -- CMDS_Jammer_Counter_Control + +[206] = "%.1f", -- CMDS_L10_Wheel +[207] = "%.1f", -- CMDS_L20_Wheel +[209] = "%.1f", -- CMDS_R10_Wheel +[208] = "%.1f", -- CMDS_R20_Wheel + +[211] = "%.1f", -- CMDS_JAMR_Intv_1 +[212] = "%.1f", -- CMDS_JAMR_Intv_10 +[213] = "%.1f", -- CMDS_JAMR_Intv_100 +[204] = "%.1f", -- CMDS_JAMR_Qty + +[216] = "%.1f", -- CMDS_Programmer_Reset + +[214] = "%.1f", -- CMDS_Chaff_Burst_Qty_Wheel +[215] = "%.1f", -- CMDS_Chaff_Burst_Intv_Wheel +[203] = "%.1f", -- CMDS_Chaff_Salvo_Qty_Wheel +[202] = "%.1f", -- CMDS_Chaff_Salvo_Intv_Wheel + +[205] = "%.1f", -- CMDS_Flare_Qty_Wheel +[210] = "%.1f", -- CMDS_Flare_Intv_Wheel + +[999] = "%.1f", -- CMDS_RIO_Left_Grip_Hat +[999] = "%.1f", -- CMDS_RIO_Right_Grip_Hat + +[222] = "%.1f", -- DATALINK_addr_hi +[223] = "%.1f", -- DATALINK_addr_lo + +[225] = "%.1f", -- FLAP_Lever +[226] = "%.1f", -- TID_NON_ATTK + +[229] = "%.1f", -- STICK_Weaponselect +[230] = "%.1f", -- STICK_Weaponselectbutton +[231] = "%.1f", -- STICK_Hatswitch +[232] = "%.1f", -- STICK_RightRed +[233] = "%.1f", -- STICK_Wheel_Rotate +[234] = "%.1f", -- STICK_Wheel_Push +[235] = "%.1f", -- STICK_Button_Left +[236] = "%.1f", -- STICK_Button_RedBehind +[240] = "%.1f", -- STICK_Lever +[241] = "%.1f", -- STICK_Trigger + +[237] = "%.1f", -- BRAKE_ParkingBrake +[238] = "%.1f", -- HOOK_Handle +[239] = "%.1f", -- WEAP_Emer_Jettison + +[39] = "%.1f", -- BODY_Pilot_Left_Right +[99] = "%.1f", -- BODY_Pilot_Up_Down +[1600] = "%.1f", -- BODY_Pilot_Salute +[1700] = "%.1f", -- BODY_Pilot + +[1701] = "%.1f", -- BODY_RIO +[1601] = "%.1f", -- BODY_RIO_Lean_And_Grab +[1603] = "%.1f", -- BODY_RIO_Hold_On +[1605] = "%.1f", -- BODY_RIO_Right_Left +[1607] = "%.1f", -- BODY_RIO_Up_Down + + +[2129] = "%.1f", -- AIRSPD_Needle +[2128] = "%.1f", -- AIRSPD_Inner +[2125] = "%.1f", -- AIRSPD_Bug1 +[2126] = "%.1f", -- AIRSPD_Bug2 +[2127] = "%.1f", -- AIRSPD_KnobPush +[310] = "%.1f", -- AIRSPD_Knob + +[250] = "%.1f", -- AIRSPD_Needle_RIO +[251] = "%.1f", -- AIRSPD_Inner_RIO +[252] = "%.1f", -- AIRSPD_Bug1_RIO +[253] = "%.1f", -- AIRSPD_Bug2_RIO +[254] = "%.1f", -- AIRSPD_KnobPush_RIO +[255] = "%.1f", -- AIRSPD_Knob_RIO + +[290] = "%.1f", -- PILOT_TACAN_Indicator_PLT +[291] = "%.1f", -- PILOT_TACAN_Indicator_NFO +[292] = "%.1f", -- PILOT_TACAN_Button + +[934] = "%.1f", -- BIT_Selector +[923] = "%.1f", -- --BIT_SelectorPush --temp for testing + +[152] = "%.1f", -- ACM_Light_Intensity +[153] = "%.1f", -- INDEXER_Light_Intensity + +[103] = "%.1f", -- ALTI_NeedleRadar +[19107] = "%.1f", -- ALTI_Radar_WarningLight +[19108] = "%.1f", -- ALTI_Radar_TestLight +[2124] = "%.1f", -- ALTI_Radar_OffFlag +[2123] = "%.1f", -- ALTI_Radar_Bug +[308] = "%.1f", -- ALTI_Radar_Knob +[16020] = "%.1f", -- ALTI_Radar_KnobPush +[16021] = "%.1f", -- Brake_Pedal_Left + +[262] = "%.1f", -- ALTI_ThousandsR +[300] = "%.1f", -- ALTI_HundredsWhite +[301] = "%.1f", -- ALTI_HundredsSmall1 +[302] = "%.1f", -- ALTI_HundredsSmall2 +[303] = "%.1f", -- ALTI_HundredsSmall3 +[304] = "%.1f", -- ALTI_HundredsSmall4 +[305] = "%.1f", -- ALTI_STDBYcard +[306] = "%.1f", -- ALTI_LeftKnob +[307] = "%.1f", -- ALTI_RightKnob + + + +[20262] = "%.1f", -- RIOALTI_ThousandsR +[20300] = "%.1f", -- RIOALTI_HundredsWhite +[20301] = "%.1f", -- RIOALTI_HundredsSmall1 +[20302] = "%.1f", -- RIOALTI_HundredsSmall2 +[20303] = "%.1f", -- RIOALTI_HundredsSmall3 +[20304] = "%.1f", -- RIOALTI_HundredsSmall4 +[20305] = "%.1f", -- RIOALTI_STDBYcard +[20306] = "%.1f", -- RIOALTI_LeftKnob +[20307] = "%.1f", -- RIOALTI_RightKnob + + + + + +[310] = "%.1f", -- Mach_MeterKnob + +[317] = "%.1f", -- WINGSWEEP_EmergencySweepCover + +[326] = "%.1f", -- GEAR_Handle +[16015] = "%.1f", -- GEAR_HandleEmergency +[1075] = "%.1f", -- GEAR_Strut + +[384] = "%.1f", -- WINGSWEEP_EmergencySweepLever + +[623] = "%.1f", -- HYD_PRESS +[1064] = "%.1f", -- HYD_CombinedHydraulicSystemPressure +[1063] = "%.1f", -- HYD_FlightHydraulicSystemPressure +[629] = "%.1f", -- HYD_TRANSFER_PUMP_Switch +[630] = "%.1f", -- HYD_TRANSFER_PUMP_SwitchCover +[631] = "%.1f", -- HYD_ISOLATION_Switch +[928] = "%.1f", -- HYD_EMERGENCY_FLT_Switch +[615] = "%.1f", -- HYD_EMERGENCY_FLT_SwitchCover +[632] = "%.1f", -- HYD_EMERG_PUMP + + + + + +[2] = "%.1f", -- STICK_Pitch +[1] = "%.1f", -- STICK_Roll + +[19109] = "%.1f", -- BDHI_CompassRing_Pilot +[19105] = "%.1f", -- BDHI_CompassFlag_Pilot +[19106] = "%.1f", -- BDHI_CompassRoller_Pilot +[699] = "%.1f", -- BDHI_NeedleTCN_Pilot +[700] = "%.1f", -- BDHI_NeedleADF_Pilot + +[701] = "%.1f", -- PILOT_JETT_Light + +[702] = "%.1f", -- BDHI_PILOT_Roller1 +[703] = "%.1f", -- BDHI_PILOT_Roller2 +[704] = "%.1f", -- BDHI_PILOT_Roller3 + +[705] = "%.1f", -- BDHI_RIO_Roller1 +[706] = "%.1f", -- BDHI_RIO_Roller2 +[707] = "%.1f", -- BDHI_RIO_Roller3 + + + + + +[29109] = "%.1f", -- BDHI_CompassRing_RIO +[29105] = "%.1f", -- BDHI_CompassFlag_RIO +[29106] = "%.1f", -- BDHI_CompassRoller_RIO +[20699] = "%.1f", -- BDHI_NeedleTCN_RIO +[20700] = "%.1f", -- BDHI_NeedleADF_RIO + +[15016] = "%.1f", -- WARN_LGen +[15017] = "%.1f", -- WARN_LOilHot +[15018] = "%.1f", -- WARN_LFuelPress +[15019] = "%.1f", -- WARN_EngFireExt +[15020] = "%.1f", -- WARN_RGen +[15021] = "%.1f", -- WARN_RFuelPress +[15022] = "%.1f", -- WARN_ROilHot +[15023] = "%.1f", -- WARN_WingSweep +[15024] = "%.1f", -- WARN_AuxFireExt +[15025] = "%.1f", -- WARN_YawStabOp +[15026] = "%.1f", -- WARN_YawStabOut +[15027] = "%.1f", -- WARN_Canopy +[15028] = "%.1f", -- WARN_CADC +[15029] = "%.1f", -- WARN_LFuelLow +[15030] = "%.1f", -- WARN_WShieldHot +[15031] = "%.1f", -- WARN_EmergJett +[15032] = "%.1f", -- WARN_OxyLow +[15033] = "%.1f", -- WARN_Bingo +[15034] = "%.1f", -- WARN_HydPress +[15035] = "%.1f", -- WARN_RFuelLow +[15036] = "%.1f", -- WARN_MachTrim +[15037] = "%.1f", -- WARN_PitchStab1 +[15038] = "%.1f", -- WARN_BleedDirty +[15039] = "%.1f", -- WARN_RollStab1 +[15040] = "%.1f", -- WARN_PitchStab2 +[15041] = "%.1f", -- WARN_AutoPilot +[15042] = "%.1f", -- WARN_LOvspValve +[15043] = "%.1f", -- WARN_ROvspValve +[15044] = "%.1f", -- WARN_RRamp +[15045] = "%.1f", -- WARN_LaunchBar +[15046] = "%.1f", -- WARN_Flap +[15047] = "%.1f", -- WARN_HzTailAuth +[15048] = "%.1f", -- WARN_OilPress +[15049] = "%.1f", -- WARN_LRamp +[15050] = "%.1f", -- WARN_Ladder +[15051] = "%.1f", -- WARN_RInlet +[15052] = "%.1f", -- WARN_InletIce +[15053] = "%.1f", -- WARN_RudderAuth +[15054] = "%.1f", -- WARN_LInlet +[15055] = "%.1f", -- WARN_ANRS +[15056] = "%.1f", -- WARN_RollStab2 +[15057] = "%.1f", -- WARN_Spoilers +[15058] = "%.1f", -- WARN_TransRect +[15059] = "%.1f", -- WARN_ReduceSpeed +[15060] = "%.1f", -- WARN_InterTrim +[15061] = "%.1f", -- WARN_LEngSec +[15062] = "%.1f", -- WARN_Rats +[15063] = "%.1f", -- WARN_StartValve +[15064] = "%.1f", -- WARN_REngSec + + + + + + + + +[752] = "%.1f", -- ENGINE_RightThrottle +[753] = "%.1f", -- ENGINE_LeftThrottle + +[902] = "%.1f", -- SPOIL_Inboard_Override_Cover +[903] = "%.1f", -- SPOIL_Outboard_Override_Cover +[907] = "%.1f", -- SPOIL_Outboard_Override +[908] = "%.1f", -- SPOIL_Inboard_Override + +[16014] = "%.1f", -- AHRS_HDG_PushButton +[904] = "%.1f", -- AHRS_HDG_Rotate +[905] = "%.1f", -- AHRS_ModeSwitch +[906] = "%.1f", -- AHRS_NorthSouth +[909] = "%.1f", -- AHRS_LatCorrection +[1026] = "%.1f", -- AHRS_LatCorrectionDial + +[915] = "%.1f", -- AoA_HookBypass + +[918] = "%.1f", -- LIGHT_Taxi +[924] = "%.1f", -- LIGHT_RedFloodSwitch +[921] = "%.1f", -- LIGHT_WhiteFloodSwitch +[913] = "%.1f", -- LIGHTS_PositionWings +[916] = "%.1f", -- LIGHTS_PositionTail +[919] = "%.1f", -- LIGHTS_PositionFlash +[923] = "%.1f", -- LIGHTS_AntiCol + +[194] = "%.1f", -- LIGHT_RedFloodSwitch_RIO +[159] = "%.1f", -- LIGHT_WhiteFloodSwitch_RIO + + +[926] = "%.1f", -- ELEC_EMERG_GEN_Switch +[936] = "%.1f", -- ELEC_MASTER_GEN_RightSwitch +[937] = "%.1f", -- ELEC_MASTER_GEN_LeftSwitch + +[9260] = "%.1f", -- Brake_Pressure_Left +[9261] = "%.1f", -- Brake_Pressure_Right + +[941] = "%.1f", -- ENGINE_Probe_Anti_Ice +[942] = "%.1f", -- WINDSHIELD_AIR +[950] = "%.1f", -- TEMPERATURE +[938] = "%.1f", -- RAMAIR +[940] = "%.1f", -- TEMPMANAUTO + +[927] = "%.1f", -- ELEC_EMERG_GEN_SwitchCover +[56] = "%.1f", -- PEDALS_Brake_Right +[999] = "%.1f", -- GEAR_WheelsWarningLight +[999] = "%.1f", -- ELEC_R_GEN_CautionLight +[999] = "%.1f", -- BRAKE_PressureGauge +[999] = "%.1f", -- ELEC_TRANS_RECT_AdvisoryLight +[999] = "%.1f", -- GEAR_TransitionLight +[999] = "%.1f", -- ELEC_L_GEN_CautionLight + +[2273] = "%.1f", -- WEAP_Gun_Elevation_PlusMinus + +[1001] = "%.1f", -- FUELSYSTEM_WingExt_Trans + +[1002] = "%.1f", -- NAV_Btn_Steer_TCN +[1003] = "%.1f", -- NAV_Btn_Steer_DEST +[1004] = "%.1f", -- NAV_Btn_Steer_AWL_PCD +[1005] = "%.1f", -- NAV_Btn_Steer_VEC +[1006] = "%.1f", -- NAV_Btn_Steer_MAN + +[1007] = "%.1f", -- DISP_HUD_pitch_bright +[1008] = "%.1f", -- DISP_HSD_ECMD_power +[1009] = "%.1f", -- DISP_HUD_power +[1010] = "%.1f", -- DISP_VDI_power +[1011] = "%.1f", -- DISP_mode_landing +[1012] = "%.1f", -- DISP_mode_air2ground +[1013] = "%.1f", -- DISP_mode_air2air +[1014] = "%.1f", -- DISP_mode_cruise +[1015] = "%.1f", -- DISP_mode_takeoff + +--[1016] = "%.1f", -- HSD_Display_Mode_Cycle +[1017] = "%.1f", -- HSD_ECM_Override + +[1018] = "%.1f", -- DISP_VDI_landing_mode +--[1019] = "%.1f", -- DISP_VDI_display_mode +[1020] = "%.1f", -- DISP_HUD_AWL_mode +--[1021] = "%.1f", -- DISP_HUD_declutter + +[1022] = "%.1f", -- WEAP_Gun_Ammo_adjust + +[1023] = "%.1f", -- HYD_SPOIL_FLAG +[1024] = "%.1f", -- HYD_EMER_HI_FLAG +[1025] = "%.1f", -- HYD_EMER_LO_FLAG + +[1026] = "%.1f", -- COMP_DIAL + +[1031] = "%.1f", -- RADIO_UHF_Remote_DISP_BRT_Pilot +[1030] = "%.1f", -- RADIO_VHF_Remote_DISP_BRT_Pilot + +[1071] = "%.1f", -- MASTER_Reset + +[19100] = "%.1f", -- STDBYADI_off +[19101] = "%.1f", -- STDBYADI_trim + +[6155] = "%.1f", -- STDBYADI_RIO_uncage +[6156] = "%.1f", -- STDBYADI_RIO_trim +[19900] = "%.1f", -- STDBYADI_RIO_off +[3333] = "%.1f", -- STDBYADI_RIO_Pitch +[19901] = "%.1f", -- STDBYADI_RIO_Roll + + + + +[1033] = "%.1f", -- VDIG_VDI_handle +[1034] = "%.1f", -- VDIG_HUD_trim +[1035] = "%.1f", -- VDIG_VSDI_trim +[1036] = "%.1f", -- VDIG_VSDI_bright +[1037] = "%.1f", -- VDIG_HUD_bright +[1038] = "%.1f", -- VDIG_VDI_contrast + +[1039] = "%.1f", -- HSD_Knob_Heading +[1040] = "%.1f", -- HSD_Knob_Course +[1041] = "%.1f", -- HSD_Test +[1043] = "%.1f", -- HSD_Knob_Brightness + +[1044] = "%.1f", -- FUELSYSTEM_Shutoff_R + +[1046] = "%.1f", -- WEAP_Master_Arm_Cover +[1047] = "%.1f", -- WEAP_Master_Arm +[1048] = "%.1f", -- WEAP_ACM_Jettison +[1049] = "%.1f", -- WEAP_ACM_Cover + +[1050] = "%.1f", -- FUELSYSTEM_Bingo_Knob + +[1051] = "%.1f", -- CLOCK_Wind +[1000] = "%.1f", -- CLOCK_Timer + +[1052] = "%.1f", -- CLOCK_RIO_WIND +[1053] = "%.1f", -- CLOCK_RIO_TIMER + +[1054] = "%.1f", -- FUEL_AftL +[1055] = "%.1f", -- FUEL_FwdR + +[1057] = "%.1f", -- ENGINE_RpmL +[1058] = "%.1f", -- ENGINE_RpmR +[1059] = "%.1f", -- ENGINE_TitL +[1060] = "%.1f", -- ENGINE_TitR +[1061] = "%.1f", -- ENGINE_FfL +[1062] = "%.1f", -- ENGINE_FFR +[1065] = "%.1f", -- ENGINE_OilPressureR +[1066] = "%.1f", -- ENGINE_OilPressureL +[1067] = "%.1f", -- ENGINE_NozzleR +[1068] = "%.1f", -- ENGINE_NozzleL + +[1069] = "%.1f", -- SEL_JETT_GUARD + + + +[15005] = "%.1f", -- LIGHTS_ACM +[15006] = "%.1f", -- LIGHTS_INDEXER +[15007] = "%.1f", -- LIGHTS_INSTRUMENT +[15008] = "%.1f", -- LIGHTS_CONSOLE +[15009] = "%.1f", -- LIGHTS_FORMATION + +[193] = "%.1f", -- LIGHTS_INSTRUMENT_RIO +[192] = "%.1f", -- LIGHTS_CONSOLE_RIO + +[15010] = "%.1f", -- MASTER_TEST_Go +[15011] = "%.1f", -- MASTER_TEST_NoGo + +[1070] = "%.1f", -- FUELSYSTEM_Shutoff_L + +[1072] = "%.1f", -- BRAKE_AntiSkidAndSpoilerBrake + +[1073] = "%.1f", -- FUELSYSTEM_Refuel_Probe +[1074] = "%.1f", -- FUELSYSTEM_Dump +[1076] = "%.1f", -- FUELSYSTEM_Fuel_Qty_Sel + +[4150] = "%.1f", -- RIO_CLOCK_Hours +[4151] = "%.1f", -- RIO_CLOCK_Minutes +[4152] = "%.1f", -- RIO_CLOCK_TimerSeconds +[4153] = "%.1f", -- RIO_CLOCK_Timer + +[4154] = "%.1f", -- RADAR_Altimeter_Bug + +[1096] = "%.1f", -- CLOCK_Hours +[1097] = "%.1f", -- CLOCK_Minutes +[1098] = "%.1f", -- CLOCK_TimerSeconds +[1099] = "%.1f", -- CLOCK_Timer + +[1094] = "%.1f", -- FUELSYSTEM_Fuel_Feed_Cover +[1095] = "%.1f", -- FUELSYSTEM_Fuel_Feed + +[2000] = "%.1f", -- CLOCK_TimerMinutes + +[2047] = "%.1f", -- SWEEP_MinimumIndex +[2001] = "%.1f", -- SWEEP_Commanded +[2002] = "%.1f", -- SWEEP_Position +[2003] = "%.1f", -- AoA_slider + +[1117] = "%.1f", -- TID_DATA_LINK +[1116] = "%.1f", -- TID_SYM_ELEM +[1115] = "%.1f", -- TID_ALT_NUM +[1118] = "%.1f", -- TID_JAM_STROBE +[2004] = "%.1f", -- TID_RID_DSBL -- doesn't seem to work +[2005] = "%.5f", -- TID_mode_knob +[2006] = "%.1f", -- TID_range_knob + +[50] = "%.1f", -- TID_nav_mode +[51] = "%.1f", -- TID_dest_mode + +[2007] = "%.1f", -- HCU_IR_TV +[2008] = "%.1f", -- HCU_RDR +[2009] = "%.1f", -- HCU_DDD_cursor +[2010] = "%.1f", -- HCU_TID_cursor +[2011] = "%.1f", -- HCU_TVIR_enable +[2012] = "%.1f", -- HCU_WCS_enable +[2013] = "%.1f", -- HCU_POWER_RESET_BUTTON +[2014] = "%.1f", -- HCU_LIGHT_TEST_BUTTON + +[2016] = "%.1f", -- ACLS_TEST_LIGHT + +[2031] = "%.1f", -- RADIO_UHF_VOL_Pilot +[383] = "%.1f", -- RADIO_UHF_VOL_RIO +[2035] = "%.1f", -- RADIO_UHF_SQL_Pilot +[2030] = "%.1f", -- RADIO_UHF_FREQ_HUNDRED_TEN_Pilot +[2029] = "%.1f", -- RADIO_UHF_FREQ_UNIT_Pilot +[2028] = "%.1f", -- RADIO_UHF_FREQ_TEHTH_Pilot +[2026] = "%.1f", -- RADIO_UHF_FREQ_HUNDREDTH_Pilot +[2027] = "%.1f", -- RADIO_UHF_BRT_Pilot +[2034] = "%.1f", -- RADIO_UHF_FUNC_Pilot +[2032] = "%.1f", -- RADIO_UHF_CHAN_Pilot +[2033] = "%.1f", -- RADIO_UHF_FREQ_MODE_Pilot +[8115] = "%.1f", -- RADIO_UHF_READ_Pilot +[16009] = "%.1f", -- RADIO_UHF_LOAD_Pilot +[16010] = "%.1f", -- RADIO_UHF_TONE_Pilot + +[350] = "%.1f", -- RADIO_VHF_VOL_RIO +[2038] = "%.1f", -- RADIO_VHF_VOL_PILOT +[351] = "%.1f", -- RADIO_VHF_SQL_RIO +[354] = "%.1f", -- RADIO_VHF_FREQ_HUNDRED_TEN_RIO +[355] = "%.1f", -- RADIO_VHF_FREQ_UNIT_RIO +[356] = "%.1f", -- RADIO_VHF_FREQ_TEHTH_RIO +[357] = "%.1f", -- RADIO_VHF_FREQ_HUNDREDTH_RIO +[360] = "%.1f", -- RADIO_VHF_BRT_RIO +[358] = "%.1f", -- RADIO_VHF_FUNC_RIO +[352] = "%.1f", -- RADIO_VHF_CHAN_RIO +[353] = "%.1f", -- RADIO_VHF_FREQ_MODE_RIO +[359] = "%.1f", -- RADIO_VHF_FM_AM_RIO +[106] = "%.1f", -- --RADIO_VHF_TOD_RIO +[100] = "%.1f", -- --RADIO_VHF_NORM_AJ_RIO + + + +[2040] = "%.1f", -- RADIO_ICS_Vol_ALR45 +[2039] = "%.1f", -- RADIO_ICS_Vol_ALR50 +[2040] = "%.1f", -- RADIO_ICS_Vol_ALR67_Pilot +[2039] = "%.1f", -- RADIO_ICS_Vol_Sidewinder + +[2048] = "%.1f", -- RADIO_ICS_Vol_Pilot +[2045] = "%.1f", -- RADIO_ICS_Ampl_Pilot +[2044] = "%.1f", -- RADIO_ICS_Func_Pilot + +[8109] = "%.1f", -- RADIO_ICS_HotMic_Pilot + +[400] = "%.1f", -- RADIO_ICS_Vol_RIO +[401] = "%.1f", -- RADIO_ICS_Ampl_RIO +[402] = "%.1f", -- RADIO_ICS_Func_RIO + +[490] = "%.1f", -- TID_STBY_LIGHT +[491] = "%.1f", -- TID_READY_LIGHT + +[492] = "%.1f", -- RIO_LAUNCH_LIGHT + +[493] = "%.1f", -- DECM_LIGHT + +[494] = "%.1f", -- CANOPY_VISIBILITY_INT + +[495] = "%.1f", -- RIO_Ejection_Seat_Visibility + + + +[116] = "%.1f", -- RADIO_KY28_POWER_MODE +[115] = "%.1f", -- RADIO_KY28_RADIO_SELECTOR +[361] = "%.1f", -- RADIO_KY28_ZEROIZE +[150] = "%.1f", -- RADIO_KY28_ZEROIZE_COVER + +[2049] = "%.1f", -- EJECT_CMD_Lever + +[2100] = "%.1f", -- INLET_RAMPS_LeftSwitch +[2101] = "%.1f", -- INLET_RAMPS_RightSwitch + +[2102] = "%.1f", -- ENGINE_Crank +[2103] = "%.1f", -- ENGINE_Throttle_Temp +[2104] = "%.1f", -- ENGINE_Throttle_Mode +[2105] = "%.1f", -- ENGINE_Air_Start + +--[2106] = "%.1f", -- AFCS_Stability_Pitch +--[2107] = "%.1f", -- AFCS_Stability_Roll +--[2108] = "%.1f", -- AFCS_Stability_Yaw + +--[2109] = "%.1f", -- AP_Vector +--[2110] = "%.1f", -- AP_Altitude +--[2111] = "%.1f", -- AP_Heading +--[2112] = "%.1f", -- AP_Engage +[2113] = "%.1f", -- TID_LAUNCH_ZONE +[2114] = "%.1f", -- TID_VEL_VECTOR + +[2114] = "%.1f", -- --Pilot Stdby ADI Pullout (Cage) +[2115] = "%.1f", -- --RIO Stdby ADI Twist +[2116] = "%.1f", -- --RIO Stdby ADI pullout + +[8114] = "%.1f", -- ENVIRO_PilotOxygenOn +[119] = "%.1f", -- ENVIRO_RIOOxygenOn +[939] = "%.1f", -- ENVIRO_CabinPressureDump +[929] = "%.1f", -- ENVIRO_AirSourceRam +[933] = "%.1f", -- ENVIRO_AirSourceOff +[930] = "%.1f", -- ENVIRO_AirSourceLEng +[931] = "%.1f", -- ENVIRO_AirSourceREng +[932] = "%.1f", -- ENVIRO_AirSourceBoth +[935] = "%.1f", -- ENVIRO_CabinPressureNeedle +[2999] = "%.1f", -- ENVIRO_LiquidOxygen_OFF_Flag + +[910] = "%.1f", -- ARA63_Power_Switch +[911] = "%.1f", -- ARA63_BIT_Btn +[912] = "%.1f", -- ARA63_Chnl_Knob + + +[135] = "%.1f", -- TACAN_CMD_Btn_RIO + +[2022] = "%.1f", -- WEAP_ATTK_Mode + + +[2199] = "%.1f", -- rAnnunc_OXYLOW +[2200] = "%.1f", -- rAnnunc_MCAUT +[2201] = "%.1f", -- rAnnunc_IFF +[2202] = "%.1f", -- rAnnunc_RCV +[2203] = "%.1f", -- rAnnunc_XMIT +[2204] = "%.1f", -- rAnnunc_SAM +[2205] = "%.1f", -- rAnnunc_AAA +[2206] = "%.1f", -- rAnnunc_CW +[2208] = "%.1f", -- rAnnunc_AI + +[2209] = "%.1f", -- rAnnunc_CDHOT +[2210] = "%.1f", -- rAnnunc_CABINPRESS +[2211] = "%.1f", -- rAnnunc_FUELLOW +[2212] = "%.1f", -- rAnnunc_CANOPY +[2213] = "%.1f", -- rAnnunc_FUZEHV +[2214] = "%.1f", -- rAnnunc_RDRENABLED +[2215] = "%.1f", -- rAnnunc_COOLINGAIR +[2216] = "%.1f", -- rAnnunc_MSLCOND +[2217] = "%.1f", -- rAnnunc_AWG9COND +[2218] = "%.1f", -- rAnnunc_NAVCOMP +[2219] = "%.1f", -- rAnnunc_FILMLOW +[2220] = "%.1f", -- rAnnunc_IMU +[2221] = "%.1f", -- rAnnunc_AHRS + +[2222] = "%.1f", -- rAnnunc_WAVEOFF +[2223] = "%.1f", -- rAnnunc_LANDCHK +[2224] = "%.1f", -- rAnnunc_ACLBEAC +[2225] = "%.1f", -- rAnnunc_ACLRDY +[2226] = "%.1f", -- rAnnunc_APCPLR +[2227] = "%.1f", -- rAnnunc_10SEC +[2228] = "%.1f", -- rAnnunc_ADJAC +[2229] = "%.1f", -- rAnnunc_VOICE +[2230] = "%.1f", -- rAnnunc_TILT +[2231] = "%.1f", -- rAnnunc_CMDCHG +[2232] = "%.1f", -- rAnnunc_ALTCHG +[2233] = "%.1f", -- rAnnunc_MONALT +[2234] = "%.1f", -- rAnnunc_MANUAL +[2235] = "%.1f", -- rAnnunc_SPDCHG +[2236] = "%.1f", -- rAnnunc_MONSPD +[2237] = "%.1f", -- rAnnunc_CMDCTRL +[2238] = "%.1f", -- rAnnunc_CHGCHN +[2239] = "%.1f", -- rAnnunc_HDGCHN +[2240] = "%.1f", -- rAnnunc_CANCRPY +[2241] = "%.1f", -- rAnnunc_FWDVEC +[2242] = "%.1f", -- rAnnunc_AFTVEC +[2243] = "%.1f", -- rAnnunc_COIVEC +[2244] = "%.1f", -- rAnnunc_NOMSG +[2245] = "%.1f", -- rAnnunc_TOWAYPT +[2246] = "%.1f", -- rAnnunc_HANDOVER +[2247] = "%.1f", -- rAnnunc_ORBIT +[2248] = "%.1f", -- rAnnunc_CHALNGE +[2249] = "%.1f", -- rAnnunc_ARM1 +[2250] = "%.1f", -- rAnnunc_ARM2 +[2251] = "%.1f", -- rAnnunc_ARM3 +[2252] = "%.1f", -- rAnnunc_NOTCMD +[2253] = "%.1f", -- rAnnunc_FRELAN +[2254] = "%.1f", -- rAnnunc_DISGAGE +[2255] = "%.1f", -- rAnnunc_ABORT +[2256] = "%.1f", -- rAnnunc_BEACON +[2257] = "%.1f", -- rAnnunc_BEACDUB +[2258] = "%.1f", -- rAnnunc_DROP +[2259] = "%.1f", -- rAnnunc_BEACOFF +[2260] = "%.1f", -- rAnnunc_RETBASE + + + + +[2036] = "%.1f", -- TACAN_Knob_Vol_Pilot +[2041] = "%.1f", -- TACAN_Knob_Func_Pilot +[2042] = "%.1f", -- TACAN_Mode_Norm_Inv_Pilot +[2043] = "%.1f", -- TACAN_Mode_X_Y_Pilot +[2115] = "%.1f", -- TACAN_Btn_BIT_Pilot + +[375] = "%.1f", -- TACAN_Knob_Vol_RIO +[374] = "%.1f", -- TACAN_Knob_Func_RIO +[373] = "%.1f", -- TACAN_Mode_Norm_Inv_RIO +[372] = "%.1f", -- TACAN_Mode_X_Y_RIO +[371] = "%.1f", -- TACAN_Btn_BIT_RIO + +[380] = "%.1f", -- RIO_UHF_UPR_LWR +[381] = "%.1f", -- RADIO_ICS_XMTR_SEL_RIO +[382] = "%.1f", -- RIO_KY_MODE + + +[2121] = "%.1f", -- RADAR_Elevation_arrow +[2122] = "%.1f", -- TCS_Elevation_arrow +[2117] = "%.4f", -- FUEL_TotalFuelRIO10k +[2118] = "%.1f", -- FUEL_TotalFuelRIO1k +[2119] = "%.1f", -- FUEL_TotalFuelRIO100 +[2120] = "%.1f", -- FUEL_TotalFuelRIO10 +[2135] = "%.1f", -- FUEL_TotalFuelRIO1 + +[2136] = "%.1f", -- ALR67_RIO_RWR_DISPLAY_TYPE +[2137] = "%.1f", -- ALR67_RIO_RWR_MODE +[2138] = "%.1f", -- ALR67_RIO_RWR_VOL +[2139] = "%.1f", -- ALR67_RIO_RWR_PWR +[2140] = "%.1f", -- ALR67_RIO_RWR_TEST + +[3001] = "%.1f", -- STDBYADI_Pitch +[3002] = "%.1f", -- STDBYADI_Roll + +[3450] = "%.1f", -- TID_Light + +[3760] = "%.1f", -- AOA_Slow +[3761] = "%.1f", -- AOA_Optimum +[3762] = "%.1f", -- AOA_Fast + +[4001] = "%.1f", -- CockpitRandomArg1 +[4002] = "%.1f", -- CockpitRandomArg2 +[4003] = "%.1f", -- CockpitRandomArg3 +[4004] = "%.1f", -- CockpitRandomArg4 +[4005] = "%.1f", -- CockpitRandomArg5 + +[4060] = "%.1f", -- AMMO_Hundreds +[4061] = "%.1f", -- AMMO_Tens +[4062] = "%.1f", -- AMMO_Ones +[2270] = "%.1f", -- WEAP_Gun_lead_Hundreds +[2271] = "%.1f", -- WEAP_Gun_lead_Tens +[2272] = "%.1f", -- WEAP_Gun_lead_Ones + + +[5550] = "%.1f", -- CAP_light_CLEAR +[5551] = "%.1f", -- CAP_light_SW +[5552] = "%.1f", -- CAP_light_NE +[5553] = "%.1f", -- CAP_light_ENTER +[5554] = "%.1f", -- CAP_light_1 +[5555] = "%.1f", -- CAP_light_2 +[5556] = "%.1f", -- CAP_light_3 +[5557] = "%.1f", -- CAP_light_4 +[5558] = "%.1f", -- CAP_light_5 +[5559] = "%.1f", -- CAP_light_6 +[5560] = "%.1f", -- CAP_light_7 +[5561] = "%.1f", -- CAP_light_8 +[5562] = "%.1f", -- CAP_light_9 +[5563] = "%.1f", -- CAP_light_0 +[5564] = "%.1f", -- CAP_light_msg_btn6 +[5565] = "%.1f", -- CAP_light_msg_btn7 +[5566] = "%.1f", -- CAP_light_msg_btn8 +[5567] = "%.1f", -- CAP_light_msg_btn9 +[5568] = "%.1f", -- CAP_light_msg_btn1 +[5569] = "%.1f", -- CAP_light_msg_btn2 +[5570] = "%.1f", -- CAP_light_msg_btn3 +[5571] = "%.1f", -- CAP_light_msg_btn4 +[5572] = "%.1f", -- CAP_light_msg_btn5 +[5573] = "%.1f", -- CAP_light_TNG_NBR +[5574] = "%.1f", -- CAP_light_PGM_RESTART + +[5590] = "%.1f", -- CAP_light_msg_btn10 + +[6000] = "%.1f", -- FUEL_LFuelDial1k +[6001] = "%.1f", -- FUEL_LFuelDial100 +[6002] = "%.1f", -- FUEL_LFuelDial10 +[6003] = "%.1f", -- FUEL_LFuelDial1 +[6004] = "%.1f", -- FUEL_RFuelDial1k +[6005] = "%.1f", -- FUEL_RFuelDial100 +[6006] = "%.1f", -- FUEL_RFuelDial10 +[6007] = "%.1f", -- FUEL_RFuelDial1 +[6010] = "%.4f", -- FUEL_TotalFuel10k +[6011] = "%.1f", -- FUEL_TotalFuel1k +[6012] = "%.1f", -- FUEL_TotalFuel100 +[6013] = "%.1f", -- FUEL_TotalFuel10 +[6014] = "%.1f", -- FUEL_TotalFuel1 +[6020] = "%.4f", -- FUEL_BingoFuel10k +[6021] = "%.1f", -- FUEL_BingoFuel1k +[6022] = "%.1f", -- FUEL_BingoFuel100 +[6023] = "%.1f", -- FUEL_BingoFuel10 +[6024] = "%.1f", -- FUEL_BingoFuel1 + +[1032] = "%.1f", -- STDBY_ADI_Push +[1042] = "%.1f", -- STDBY_ADI_Twist + + + +[6100] = "%.1f", -- DDD_range_roller +[6101] = "%.1f", -- TID_readout_src_roller +[6102] = "%.1f", -- DDD_radar_mode +[6103] = "%.1f", -- TID_steering_roller + +[6111] = "%.1f", -- DDD_mode_light_rdr +[6112] = "%.1f", -- DDD_mode_light_ir +[6113] = "%.1f", -- DDD_mode_light_iff +[6114] = "%.1f", -- DDD_mode_light_pdstt +[6115] = "%.1f", -- DDD_mode_light_pstt +[6116] = "%.1f", -- DDD_mode_light_pdsearch +[6117] = "%.1f", -- DDD_mode_light_rws +[6118] = "%.1f", -- DDD_mode_light_tws_auto +[6119] = "%.1f", -- DDD_mode_light_tws_man +[6120] = "%.1f", -- DDD_mode_light_psearch +[6121] = "%.1f", -- CCM_mode_light_spl +[6122] = "%.1f", -- CCM_mode_light_altoff +[6123] = "%.1f", -- CCM_mode_light_vgs + +[6125] = "%.1f", -- TID_trackhold_light +[6126] = "%.1f", -- TID_CLSN_light +[6127] = "%.1f", -- TID_option_light_riddsbl +[6128] = "%.1f", -- TID_option_light_altnum +[6129] = "%.1f", -- TID_option_light_symelem +[6130] = "%.1f", -- TID_option_light_datalink +[6131] = "%.1f", -- TID_option_light_jam +[6132] = "%.1f", -- TID_option_light_nonattk +[6133] = "%.1f", -- TID_option_light_LZ +[6134] = "%.1f", -- TID_option_light_velvec +[6135] = "%.1f", -- HCU_mode_light_TVIR +[6136] = "%.1f", -- HCU_mode_light_RDR +[6137] = "%.1f", -- HCU_mode_light_DDD +[6138] = "%.1f", -- HCU_mode_light_TID + +[8050] = "%.1f", -- TACAN_LIGHT_GO_Pilot +[8051] = "%.1f", -- TACAN_LIGHT_NOGO_Pilot + +[8052] = "%.1f", -- RIO_IFF_TEST_LIGHT +[8053] = "%.1f", -- RIO_IFF_REPLY_LIGHT + +[8300] = "%.1f", -- NOSEGEAR_OffFlag +[8301] = "%.1f", -- NOSEGEAR_Indicator + +[8302] = "%.1f", -- L_GEAR_Indicator +[8303] = "%.1f", -- L_GEAR_OffFlag + +[8304] = "%.1f", -- R_GEAR_OffFlag +[8305] = "%.1f", -- R_GEAR_Indicator + +[15001] = "%.1f", -- Landing_Gear_Light +[15002] = "%.1f", -- Refuel_probe_light +[15004] = "%.1f", -- UHF_Test_Button_Pilot +[15003] = "%.1f", -- VHF_Test_Button_Pilot + +[15090] = "%.1f", -- Hook_Light + +[15091] = "%.1f", -- Wingsweep_Flag_OFF +[15092] = "%.1f", -- Wingsweep_Flag_AUTO +[15093] = "%.1f", -- Wingsweep_Flag_MAN +[15094] = "%.1f", -- Wingsweep_Flag_EMER +[15095] = "%.1f", -- Wingsweep_Flag_OVER + +[15096] = "%.1f", -- Wingsweep_Lever_Popout + +[15097] = "%.1f", -- Stdby_Compass_Roll +[15098] = "%.1f", -- Master_test_knob_push + + +[8306] = "%.1f", -- SPDBRK_OffFlag +[8307] = "%.1f", -- SPDBRK_In_and_Partial +[8308] = "%.1f", -- SPDBRK_Full + +[8309] = "%.1f", -- SLATS_OffFlag +[8310] = "%.1f", -- SLATS_Indicator + +[8311] = "%.1f", -- FLAPS_Indicator + +[8315] = "%.1f", -- SPOILER_DN_OuterLeft +[8316] = "%.1f", -- SPOILER_DN_InnerLeft +[8317] = "%.1f", -- SPOILER_DN_InnerRight +[8318] = "%.1f", -- SPOILER_DN_OuterRight +[8319] = "%.1f", -- SPOILER_Indicator_OuterLeft +[8320] = "%.1f", -- SPOILER_Indicator_InnerLeft +[8321] = "%.1f", -- SPOILER_Indicator_OuterRight +[8322] = "%.1f", -- SPOILER_Indicator_InnterRight + +[1090] = "%.1f", -- STABILATOR_Indicator_Left +[1091] = "%.1f", -- STABILATOR_Indicator_Right + +[1092] = "%.1f", -- RUDDER_Indicator_Left +[1093] = "%.1f", -- RUDDER_Indicator_Right + +--[[ +[8888] = "%.1f", -- TACAN_Dial_Outer_Pilot +[8889] = "%.1f", -- TACAN_Dial_Inner_Pilot +[8890] = "%.1f", -- TACAN_Dial_Inner_RIO +[8891] = "%.1f", -- TACAN_Dial_Outer_RIO +]] +[8892] = "%.1f", -- TACAN_LIGHT_NOGO_RIO +[8893] = "%.1f", -- TACAN_LIGHT_GO_RIO + +[9199] = "%.1f", -- WEAP_Master_Caution_Button + +[9200] = "%.1f", -- WEAP_Master_Caution +[9201] = "%.1f", -- WEAP_Hot_Trig +[9202] = "%.1f", -- WEAP_Collision +[9203] = "%.1f", -- WEAP_SEAM_lock +[9204] = "%.1f", -- WEAP_gunrate_high +[9205] = "%.1f", -- WEAP_gunrate_low +[9206] = "%.1f", -- WEAP_SW_Cool_on +[9207] = "%.1f", -- WEAP_SW_Cool_off +[9208] = "%.1f", -- WEAP_MSL_Prep_on +[9209] = "%.1f", -- WEAP_MSL_Prep_off +[9210] = "%.1f", -- WEAP_MSL_Mode_norm +[9211] = "%.1f", -- WEAP_MSL_Mode_boresight +[9221] = "%.2f", -- WEAP_store_1a +[9222] = "%.2f", -- WEAP_store_1b +[9223] = "%.2f", -- WEAP_store_3 +[9224] = "%.2f", -- WEAP_store_4 +[9225] = "%.2f", -- WEAP_store_5 +[9226] = "%.2f", -- WEAP_store_6 +[9227] = "%.2f", -- WEAP_store_8b +[9228] = "%.2f", -- WEAP_store_8a +[16000] = "%.1f", -- WEAP_GunRateButton +[16001] = "%.1f", -- WEAP_SWCoolButton +[16002] = "%.1f", -- WEAP_MSLPrepButton +[16003] = "%.1f", -- WEAP_ModeSTPButton + +[16004] = "%.1f", -- AOA_Indicator_OFF_Flag + +[16005] = "%.1f", -- ASYM_Limiter_Flipcover +[16006] = "%.1f", -- ASYM_Limiter_Switch + +[16007] = "%.1f", -- ENG_Mode_L +[16008] = "%.1f", -- ENG_Mode_R + +[16012] = "%.1f", -- VDI_Realtime_Light +[16013] = "%.1f", -- HUD_Realtime_Light + +[260] = "%.1f", -- DDD_Realtime_Light +[3450] = "%.1f", -- TID_Realtime_Light + +[16015] = "%.1f", -- Gear_emergency_down + +[16016] = "%.1f", -- RECORD_Knob_Reset + + +[9360] = "%.1f", -- ADV_ADJAC +[9361] = "%.1f", -- ADV_LandingChk +[9362] = "%.1f", -- ADV_ACLReady +[9363] = "%.1f", -- ADV_APCPLR +[9364] = "%.1f", -- ADV_CMDControl +[9365] = "%.1f", -- ADV_TenSeconds +[9366] = "%.1f", -- ADV_TILT +[9367] = "%.1f", -- ADV_Voice +[9368] = "%.1f", -- ADV_AutoThrottle +[9369] = "%.1f", -- ADV_APRef + + + +[15070] = "%.1f", -- LIGHT_WAVE_OFF +[15071] = "%.1f", -- LIGHT_WING_SWEEP +[15072] = "%.1f", -- LIGHT_REDUCESPD +[15073] = "%.1f", -- LIGHT_ALTLOW + + +[9350] = "%.1f", -- HUD_Wheels +[9351] = "%.1f", -- HUD_Brakes +[9352] = "%.1f", -- HUD_ACLAP +[9353] = "%.1f", -- HUD_NWSEnga +[9354] = "%.1f", -- HUD_AutoThrottle + +[9355] = "%.1f", -- HUD_RStall +[9356] = "%.1f", -- HUD_LStall + +[9357] = "%.1f", -- HUD_SAM +[9358] = "%.1f", -- HUD_AAA +[9359] = "%.1f", -- HUD_AI + + + +[9960] = "%.1f", -- WEAP_Interval_10s +[9961] = "%.1f", -- WEAP_Interval_100s +[9962] = "%.1f", -- WEAP_Quantity_10s +[9963] = "%.1f", -- WEAP_Quantity_1s +[9964] = "%.1f", -- WEAP_Next_launch + +[11500] = "%.1f", -- HCU_joystick_rightleft +[11501] = "%.1f", -- HCU_joystick_backfore + +[11503] = "%.1f", -- DDD_ANT_TRK_light +[11504] = "%.1f", -- DDD_RDROT_light +[11505] = "%.1f", -- DDD_JAT_light +[11506] = "%.1f", -- DDD_IROT_light + +[11600] = "%.1f", -- RECORD_minutes_hi +[11601] = "%.1f", -- RECORD_minutes_med +[11602] = "%.1f", -- RECORD_minutes_low + +[224] = "%.1f", -- CANOPY_Jettison +[122] = "%.1f", -- RIO_STORAGE_BOX + + +[497] = "%.1f", -- GEAR_LaunchBarAbort +[496] = "%.1f", -- GEAR_LaunchBarAbortCover + +[498] = "%.1f", -- RIO_SEAT_SAFETY + +[666] = "%.1f", -- LANTIRN_Panel_Visibility + +[667] = "%.1f", -- LANTIRN_RotaryKnob +[668] = "%.1f", -- LANTIRN_Laser +[669] = "%.1f", -- LANTIRN_MODE +[670] = "%.1f", -- LANTIRN_Video +[671] = "%.1f", -- LANTIRN_Button + +[672] = "%.1f", -- LANTIRN_RedButton + +[673] = "%.1f", -- LANTIRN_OPERSTBY +[674] = "%.1f", -- LANTIRN_IMUGPS +[675] = "%.1f", -- LANTIRN_LGPFLIR +[676] = "%.1f", -- LANTIRN_MUXEGU +[677] = "%.1f", -- LANTIRN_LASERSERVO +[678] = "%.1f", -- LANTIRN_FLIRTCS +[679] = "%.1f", -- LANTIRN_IBIT +[680] = "%.1f", -- LANTIRN_LASERARMED + +[38] = "%.1f", -- CANOPY_Open + +[404] = "%.1f", -- WINGS_LeftSweep + +[1022] = "%.1f", -- CONTROL_LeftOuterSlats +[509] = "%.1f", -- CONTROL_LeftRudder + + +[25] = "%.1f", -- GEARHOOK_Hook +[1305] = "%.1f", -- GEARHOOK_Visual + +[28] = "%.1f", -- ENGINE_RightAB_Dummy +[435] = "%.1f", -- ENGINE_RightAB +[500] = "%.1f", -- ENGINE_RightAB_Stage4 +[29] = "%.1f", -- ENGINE_LeftAB_Dummy +[436] = "%.1f", -- ENGINE_LeftAB +[501] = "%.1f", -- ENGINE_LeftAB_Stage4 +[434] = "%.1f", -- ENGINE_LeftNozzle +[433] = "%.1f", -- ENGINE_RightNozzle +[5353] = "%.1f", -- ENGINE_LeftFan +[5352] = "%.1f", -- ENGINE_RightFan + +[85] = "%.1f", -- GEARHOOK_LaunchBar + +[400] = "%.1f", -- CONTROL_TopSpeedBrake +[401] = "%.1f", -- CONTROL_BottomLeftSpeedBrake +[402] = "%.1f", -- CONTROL_BottomRightSpeedBrake + +[405] = "%.1f", -- WINGS_RightSweep +[507] = "%.1f", -- WINGS_LeftOverSweep +[508] = "%.1f", -- WINGS_RightOverSweep + +[450] = "%.1f", -- CONTROL_LeftStabilator +[406] = "%.1f", -- CONTROL_RightStabilator + +[1609] = "%.1f", -- AICS_LeftRamp1 --500 +[1610] = "%.1f", -- AICS_LeftRamp2 --501 +[1611] = "%.1f", -- AICS_RightRamp1 --502 +[1612] = "%.1f", -- AICS_RightRamp2 --503 + +[600] = "%.1f", -- WEAP_Front_Phoenix_rails +[601] = "%.1f", -- WEAP_Front_Phoenix_left_plug +[602] = "%.1f", -- WEAP_Front_Phoenix_right_plug +[603] = "%.1f", -- WEAP_Rear_Phoenix_left_plug +[604] = "%.1f", -- WEAP_Rear_Phoenix_right_plug +[605] = "%.1f", -- WEAP_Rear_Phoenix_rails +[606] = "%.1f", -- WEAP_LANTIRN +[607] = "%.1f", -- WEAP_LANTIRN_Rotate1 +[608] = "%.1f", -- WEAP_LANTIRN_Rotate2 + +[999] = "%.1f", -- FUEL_FuelDumpTorchHor +[999] = "%.1f", -- FUEL_FuelDumpTorchVert +[22] = "%.1f", -- FUEL_FuelProbe +[999] = "%.1f", -- FUEL_FuelDump +[999] = "%.1f", -- FUEL_FuelDumpTorch + +[999] = "%.1f", -- CONTROL_LeftInnerSlats +[999] = "%.1f", -- CONTROL_RightInnerSlats +[1004] = "%.1f", -- CONTROL_LeftAuxFlaps +[1001] = "%.1f", -- CONTROL_LeftMainFlaps +[1003] = "%.1f", -- CONTROL_RightMainFlaps +[1002] = "%.1f", -- CONTROL_RightAuxFlaps + +[1500] = "%.1f", -- WINGS_LeftFlex +[1501] = "%.1f", -- WINGS_RightFlex + +[1010] = "%.1f", -- CONTROL_LeftOuterSpoiler +[1011] = "%.1f", -- CONTROL_LeftInnerSpoiler +[1012] = "%.1f", -- CONTROL_RightInnerSpoiler +[1013] = "%.1f", -- CONTROL_RightOuterSpoiler +[1020] = "%.1f", -- CONTROL_RightRudder +--[1021] = "%.1f", -- CONTROL_RightOuterSlats + +[6000] = "%.1f", -- PILOT_Left_Right +[6001] = "%.1f", -- PILOT_Up_Down +[1600] = "%.1f", -- PILOT_Salute +[6002] = "%.1f", -- PILOT_LeanSideways + +[1601] = "%.1f", -- RIO_Lean_And_Grab +[1603] = "%.1f", -- RIO_Hold_On +[1605] = "%.1f", -- RIO_Right_Left +[1607] = "%.1f", -- RIO_Up_Down +[6003] = "%.1f", -- RIO_LeanSideways +[6004] = "%.1f", -- RIO_LeanForward + +[1608] = "%.1f", -- DDD_Lamp + +[1614] = "%.1f", -- PILOT_Lean_Forward +[1615] = "%.1f", -- PILOT_Lean_Back + +[16] = "%.1f", -- DUMMY_LeftElevator +[15] = "%.1f", -- DUMMY_RightElevator +[12] = "%.1f", -- DUMMY_LeftAileron +[11] = "%.1f", -- DUMMY_RightAileron + +[3600] = "%.1f", -- Sync1 +[3601] = "%.1f", -- Sync2 +[3602] = "%.1f", -- Sync3 +[3603] = "%.1f", -- Sync4 + +[51] = "%.1f", -- LIGHTS_Taxi +[200] = "%.1f", -- LIGHTS_Formation +[84] = "%.1f", -- LIGHTS_Approach +[609] = "%.1f", -- LIGHTS_Approach_Bright_Dim_Switch +[610] = "%.1f", -- LIGHTS_Fuel_Probe +[611] = "%.1f", -- LIGHTS_Position_Wing +[612] = "%.1f", -- LIGHTS_Position_Glove +[613] = "%.1f", -- LIGHTS_Position_Tail +[620] = "%.1f", -- LIGHTS_Anticollision +[614] = "%.1f", -- LIGHTS_Anticollision_Bottom +[615] = "%.1f", -- LIGHTS_External_Dummy +[621] = "%.1f", -- LIGHTS_Disable_Ext +[625] = "%.1f", -- LIGHTS_External_Dummy2 + +[626] = "%.1f", -- RIO_Right_Left_Dummy +[627] = "%.1f", -- RIO_Up_Down_Dummy + - -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ - -- [END B4] ------------------------------------------------------------------------------- --- END RIO OFFICER COCKPIT -------------------------------------------------------------------- } - - ExportScript.ConfigArguments = { - -- arguments for export in low tick interval - --- PILOT COCKPIT ------------------------------------------------------------------------------ - -- [A1 Pilot - Left Side Console] --------------------------------------------------------- - -- [END A1] ------------------------------------------------------------------------------- - - -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- - -- [END A2] ------------------------------------------------------------------------------- - - -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- - - -- Hydraulic Pressure Indicator Flags - [1023] = "%d", -- Pressure availability to the spoilers flag - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] - [1024] = "%d", -- Emer. Flight hyd. pump operating on High - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] - [1025] = "%d", -- Emer. Flight hyd. pump operating on LOW - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] - - -- [END A3] ------------------------------------------------------------------------------- - - -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- - -- [END A4] ------------------------------------------------------------------------------- - - -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- - -- [END A5] ------------------------------------------------------------------------------- - - -- [A6a Pilot - Center Panel] ------------------------------------------------------------- - - -- Master Caution Button (light in high tik) - [9199] = "%d", -- MASTER CAUTION Button - press to reset - {0, 1}{0, 1} [BUTTON ID:3056 / DEVICE ID:34 ] - - -- Triple Indicator Lights - [9203] = "%d", -- SEAM LOCK light - sidewinder acquisition in progress.. - [9202] = "%d", -- COLLISION light - collision steering has been selected - [9201] = "%d", -- HOT TRIG light - when lit trigger will release a weapon - - -- Gun Rate Switch and Lights - [9204] = "%d", -- GUN RATE light HIGH (HIGH|LOW) - {0, 1}{0, 1} - [9205] = "%d", -- GUN RATE light LOW (HIGH|LOW) - {0, 1}{0, 1} - [16000] = "%d", -- GUN RATE switch (HIGH|LOW) - {0, 1}{0, 1} [BUTTON ID:3130 / DEVICE ID:55 ] - - -- Sidewinder Cooling - [9206] = "%d", -- SW COOL Switch light On - {0, 1}{0, 1} - [9207] = "%d", -- SW COOL Switch light Off - {0, 1}{0, 1} - [16001] = "%d", -- SW COOL switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3139 / DEVICE ID:55 ] - - -- MSL Preperation Switch - [9208] = "%d", -- MSL PREP switch light On - {0, 1}{0, 1} - [9209] = "%d", -- MSL PREP switch light Off - {0, 1}{0, 1} - [16002] = "%d", -- MSL PREP switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3140 / DEVICE ID:55 ] - - -- MSL Mode Switch - [9210] = "%d", -- MSL Mode switch light Norm - {0, 1}{0, 1} - [9211] = "%d", -- MSL Mode switch light Boresight - {0, 1}{0, 1} - [16003] = "%d", -- MSL Mode switch (NORM|BRSIT) - {0, 1}{0, 1} [BUTTON ID:3141 / DEVICE ID:55 ] - - -- Weapon Station Status Flags - [9221] = "%.2f", -- Station Status Flag 1A (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9222] = "%.2f", -- Station Status Flag 1B (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9223] = "%.2f", -- Station Status Flag 3 (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9224] = "%.2f", -- Station Status Flag 4 (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9225] = "%.2f", -- Station Status Flag 5 (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9226] = "%.2f", -- Station Status Flag 6 (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9227] = "%.2f", -- Station Status Flag 8B (OFF|WHITE|CHECK) - {0, 1}{0, 1} - [9228] = "%.2f", -- Station Status Flag 8A (OFF|WHITE|CHECK) - {0, 1}{0, 1} - - -- Engine Fire Lights - [15014] = "%d", -- Left Engine FIRE Light - {0, 1}{0, 1} - [15015] = "%d", -- Right Engine FIRE Light - {0, 1}{0, 1} - - -- [END A6a] ------------------------------------------------------------------------------ - - -- [A6b Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6b] ------------------------------------------------------------------------------ - - -- [A6c Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6c] ------------------------------------------------------------------------------ - - -- [A6d Pilot - Center Panel] ------------------------------------------------------------- - -- [END A6d] ------------------------------------------------------------------------------ - - -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- - -- [END A7] ------------------------------------------------------------------------------- - - -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- - -- [END A8] ------------------------------------------------------------------------------- - - -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- - - -- Accelerometer - [228] = "%.4f", -- Accelerometer Reset knob - {0, 1}{0, 1} [BUTTON ID: 3488 / DEVICE ID: 24] - - -- Bingo Set Knob - [1050] = "%.4f", -- Knob used to set BINGO fuel Qty - +/- 1 per step is 100 lbs of fuel [BUTTON ID: 3069 / DEVICE ID: 20] - - -- Clock and Timer - [1051] = "%.4f", -- Clock Timer wind - +/- 0.06 per step is 1 Minute [BUTTON ID: 3042 / DEVICE ID: 26] - [1096] = "%.4f", -- Clock Hours - {0, 12}{0.0000, 1.0000} e.g. 0.5000 * 12 = 6pm [STREAM DECK FORMAT: 51096] - [1097] = "%.4f", -- Clock Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] - [1098] = "%.4f", -- Clock Timer Seconds - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Seconds [STREAM DECK FORMAT: 51096] - [1099] = "%d", -- Clock Timer Start/Stop/Reset Button - {0, 1}{0, 1} [BUTTON ID: 3043 / DEVICE ID: 26] - [2000] = "%.4f", -- Clock Timer Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] - - -- [END A9] ------------------------------------------------------------------------------- - - -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- - - -- Arresting Hook - [238] = "%d", -- HOOK_Handle Arresting hook handle down/up - {0, 1}{0, 1} [BUTTON ID: 3021 / DEVICE ID: 17] - [15078] = "%d", -- HOOK_EmergencyDown Emergency release - {0, 1}{0, 1} [BUTTON ID: 3022 / DEVICE ID: 17] - [15090] = "%d", -- Hook_Light Arresting Hook Light - {0, 1}{0, 1} [LIGHT/LAMP] - - -- Gun Rounds and Knob - [1022] = "%.4f", -- Gun Ammunition Counter Adj. Knob - {0, 1}{increase or decrease by 0.1 to inc/dec. by 10 rounds} [BUTTON ID: 3132 / DEVICE ID: 55] - - -- [END A10] ------------------------------------------------------------------------------ - - -- [A11a Pilot - Right Side Console] ------------------------------------------------------ - -- [END A11a] ----------------------------------------------------------------------------- - - -- [A11b Pilot - Right Side Console] ------------------------------------------------------ - - -- HUD Video Control Panel (Not Implemented in DCS) - --[0] = "%.4f", -- HUD CAM(E)RA switch (TRG|NORMAL|OFF|RUN) - --[0] = "%.4f", -- VTR Power (ON|OFF) - --[0] = "%.4f", -- VTR (RECORD|STANDBY) - - -- [END A11b] ----------------------------------------------------------------------------- - - - -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- - -- [END A12] ------------------------------------------------------------------------------ --- END PILOT COCKPIT -------------------------------------------------------------------------- - - - - --- RIO OFFICER COCKPIT ------------------------------------------------------------------------ - -- [B1 RIO - Left Side Console] ----------------------------------------------------------- - -- [END B1] ------------------------------------------------------------------------------- - - -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- - -- [END B2] ------------------------------------------------------------------------------- - - -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- - -- [END B3] ------------------------------------------------------------------------------- - - -- [B4 RIO - Center Panel] ---------------------------------------------------------------- - -- [END B4] ------------------------------------------------------------------------------- - - -- [B5 RIO - Center Console] -------------------------------------------------------------- - -- [END B5] ------------------------------------------------------------------------------- - - -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- - -- [END B6] ------------------------------------------------------------------------------- - - -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ - -- [END B7] ------------------------------------------------------------------------------- - - -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ - -- [END B1] ------------------------------------------------------------------------------- - - -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ - -- [END B2] ------------------------------------------------------------------------------- - - -- [B10 RIO - Right Side Console] --------------------------------------------------------- - -- [END B3] ------------------------------------------------------------------------------- - - -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ - -- [END B4] ------------------------------------------------------------------------------- --- END RIO OFFICER COCKPIT -------------------------------------------------------------------- - + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] +[15082] = "%1d", -- Fire Ext Bottle - Right, (1, 0, 1) +[15083] = "%1d", -- Fire Ext Bottle - Left, (1, 0, 1) +-- ACCELEROMETER(24) +[228] = "%1d", -- Accelerometer Reset, (1, 0, 1) +-- AFCS(21) +[2112] = "%1d", -- Autopilot - Engage, (-2, -1, 1) Shold be -2 and 2 -Bailey +[2106] = "%1d", -- AFCS Stability Augmentation - Pitch, (-1, 0, 1) +[2107] = "%1d", -- AFCS Stability Augmentation - Roll, (-1, 0, 1) +[2108] = "%1d", -- AFCS Stability Augmentation - Yaw, (-1, 0, 1) +[2109] = "%1d", -- Autopilot - Vector / Automatic Carrier Landing, (-1, -1, 1) +[2110] = "%1d", -- Autopilot - Altitude Hold, (-1, 0, 1) +[2111] = "%1d", -- Autopilot - Heading / Ground Track, (-1, -1, 1) +--[2106] = "%1d", -- AFCS Stability Augmentation - Pitch, (1, 0, 1) +--[2107] = "%1d", -- AFCS Stability Augmentation - Roll, (1, 0, 1) +--[2108] = "%1d", -- AFCS Stability Augmentation - Yaw, (1, 0, 1) +--[2109] = "%1d", -- Autopilot - Vector / Automatic Carrier Landing, (1, -1, 1) +--[2110] = "%1d", -- Autopilot - Altitude Hold, (1, 0, 1) +--[2111] = "%1d", -- Autopilot - Heading / Ground Track, (1, -1, 1) +--[2112] = "%1d", -- Autopilot - Engage, (2, -1, 1) +-- AHRS(51) +[905] = "%1d", -- Compass Mode, (-1, -1, 1) +[906] = "%1d", -- Compass N-S Hemisphere, (-1, 0, 1) +[909] = "%1d", -- Compass LAT Correction, (0, 0, 1) +[904] = "%1d", -- Compass HDG Slave Knob/nPush (Left Mouse Button) and rotate (Right Mouse Button), (1, -1, 1) +[905] = "%1d", -- Compass Mode, (1, -1, 1) +[906] = "%1d", -- Compass N-S Hemisphere, (1, 0, 1) +[16014] = "%1d", -- Compass HDG Slave Knob/nPush (Left Mouse Button) and rotate (Right Mouse Button), (1, 0, 1) +-- AICS(13) +[2100] = "%1d", -- Stow Inlet Ramps Left Switch, (-1, 0, 1) +[2101] = "%1d", -- Stow Inlet Ramps Right Switch, (-1, 0, 1) +[2100] = "%1d", -- Stow Inlet Ramps Left Switch, (1, 0, 1) +[2101] = "%1d", -- Stow Inlet Ramps Right Switch, (1, 0, 1) +-- AOASYSTEM(25) +[915] = "%1d", -- Hook Bypass, (-1, 0, 1) +[915] = "%1d", -- Hook Bypass, (1, 0, 1) +[15006] = "%.4f", -- AoA Indexer Light Intensity, (0.125, 0, 1) +[15006] = "%.4f", -- AoA Indexer Light Intensity, (-0.125, 0, 1) +-- ARC159(3) +[2026] = "%1d", -- UHF ARC-159 0.025MHz, (-1, -1, 0) +[2028] = "%1d", -- UHF ARC-159 0.1MHz, (-1, -1, 0) +[2029] = "%1d", -- UHF ARC-159 1MHz, (-1, -1, 0) +[2030] = "%1d", -- UHF ARC-159 100MHz & 10MHz, (-1, -1, 0) +[2035] = "%1d", -- UHF ARC-159 Squelch Switch, (-1, 0, 1) +[383] = "%1d", -- UHF ARC-159 Volume RIO, (0, 0, 1) +[2027] = "%1d", -- UHF ARC-159 Display Brightness, (0, 0, 1) +[2031] = "%1d", -- UHF ARC-159 Volume Pilot, (0, 0, 1) +[405] = "%1d", -- UHF Radio Remote Display Test, (1, 0, 1) +[406] = "%1d", -- UHF Radio Remote Display Brightness, (1, 0, 1) +[1031] = "%1d", -- UHF Radio Remote Display Brightness, (1, 0, 1) +[2026] = "%1d", -- UHF ARC-159 0.025MHz, (1, 1, 0) +[2028] = "%1d", -- UHF ARC-159 0.1MHz, (1, 1, 0) +[2029] = "%1d", -- UHF ARC-159 1MHz, (1, 1, 0) +[2030] = "%1d", -- UHF ARC-159 100MHz & 10MHz, (1, 1, 0) +[2035] = "%1d", -- UHF ARC-159 Squelch Switch, (1, 0, 1) +[8115] = "%1d", -- UHF ARC-159 Read, (1, 0, 1) +[15004] = "%1d", -- UHF Radio Remote Display Test, (1, 0, 1) +[16009] = "%1d", -- UHF ARC-159 Load, (1, 0, 1) +[16010] = "%1d", -- UHF ARC-159 Tone, (1, 0, 1) +[2032] = "%.4f", -- UHF ARC-159 Preset Channel Selector, (0.0833333333, 0, 0.9166666663) +[2032] = "%.4f", -- UHF ARC-159 Preset Channel Selector, (-0.0833333333, 0, 0.9166666663) +[2034] = "%.4f", -- UHF ARC-159 Function, (0.333333, 0, 0.999999) +[2034] = "%.4f", -- UHF ARC-159 Function, (-0.333333, 0, 0.999999) +[2033] = "%.1f", -- UHF ARC-159 Freq Mode, (0.5, 0, 1) +[2033] = "%.1f", -- UHF ARC-159 Freq Mode, (-0.5, 0, 1) +-- ARC182(4) +[351] = "%1d", -- VHF/UHF ARC-182 Squelch Switch, (-1, 0, 1) +[354] = "%1d", -- VHF/UHF ARC-182 100MHz & 10MHz, (-1, -1, 0) +[355] = "%1d", -- VHF/UHF ARC-182 1MHz, (-1, -1, 0) +[356] = "%1d", -- VHF/UHF ARC-182 0.1MHz, (-1, -1, 0) +[357] = "%1d", -- VHF/UHF ARC-182 0.025MHz, (-1, -1, 0) +[359] = "%1d", -- VHF/UHF ARC-182 FM/AM Switch, (-1, 0, 1) +[350] = "%1d", -- VHF/UHF ARC-182 Volume RIO, (0, 0, 1) +[360] = "%1d", -- VHF/UHF ARC-182 Display Brightness, (0, 0, 1) +[2038] = "%1d", -- VHF/UHF ARC-182 Volume Pilot, (0, 0, 1) +[351] = "%1d", -- VHF/UHF ARC-182 Squelch Switch, (1, 0, 1) +[354] = "%1d", -- VHF/UHF ARC-182 100MHz & 10MHz, (1, 1, 0) +[355] = "%1d", -- VHF/UHF ARC-182 1MHz, (1, 1, 0) +[356] = "%1d", -- VHF/UHF ARC-182 0.1MHz, (1, 1, 0) +[357] = "%1d", -- VHF/UHF ARC-182 0.025MHz, (1, 1, 0) +[359] = "%1d", -- VHF/UHF ARC-182 FM/AM Switch, (1, 0, 1) +[1030] = "%1d", -- VHF/UHF Radio Remote Display Brightness, (1, 0, 1) +[15003] = "%1d", -- VHF/UHF Radio Remote Display Test, (1, 0, 1) +[352] = "%.4f", -- VHF/UHF ARC-182 Preset Channel Selector, (0.0833333333, 0, 0.9166666663) +[352] = "%.4f", -- VHF/UHF ARC-182 Preset Channel Selector, (-0.0833333333, 0, 0.9166666663) +[353] = "%.1f", -- VHF/UHF ARC-182 Freq Mode, (0.2, 0, 1) +[353] = "%.1f", -- VHF/UHF ARC-182 Freq Mode, (-0.2, 0, 1) +[358] = "%.2f", -- VHF/UHF ARC-182 MODE, (0.25, 0, 1) +[358] = "%.2f", -- VHF/UHF ARC-182 MODE, (-0.25, 0, 1) +-- BAROALTIMETER(28) +[307] = "%1d", -- Altimeter Mode Switch, (-1, -1, 0) +[20307] = "%1d", -- Altimeter Mode Switch, (-1, -1, 0) +[306] = "%1d", -- Altimeter Pressure Setting, (0, 0, 1) +[20306] = "%1d", -- Altimeter Pressure Setting, (0, 0, 1) +[307] = "%1d", -- Altimeter Mode Switch, (1, 1, 0) +[20307] = "%1d", -- Altimeter Mode Switch, (1, 1, 0) +-- BITPANEL(10) +[15098] = "%1d", -- Master Test Selector (LB to rotate, (1, 0, 1) +[934] = "%.4f", -- Master Test Selector (LB to rotate, (0.090909090909091, 0, 0.90909090909091) +-- CADC(22) +[1071] = "%1d", -- MASTER RESET, (1, 0, 1) +-- CAP(23) +[123] = "%1d", -- CAP btn 5, (1, 0, 1) +[124] = "%1d", -- CAP btn 4, (1, 0, 1) +[125] = "%1d", -- CAP btn 3, (1, 0, 1) +[126] = "%1d", -- CAP btn 2, (1, 0, 1) +[127] = "%1d", -- CAP btn 1, (1, 0, 1) +[128] = "%1d", -- CAP TNG NBR, (1, 0, 1) +[129] = "%1d", -- CAP btn 10, (1, 0, 1) +[130] = "%1d", -- CAP btn 9, (1, 0, 1) +[131] = "%1d", -- CAP btn 8, (1, 0, 1) +[132] = "%1d", -- CAP btn 7, (1, 0, 1) +[133] = "%1d", -- CAP btn 6, (1, 0, 1) +[134] = "%1d", -- CAP PGM RSTRT, (1, 0, 1) +[136] = "%1d", -- CAP LONG 6, (1, 0, 1) +[137] = "%1d", -- CAP LAT 1, (1, 0, 1) +[138] = "%1d", -- CAP NBR 2, (1, 0, 1) +[139] = "%1d", -- CAP 7, (1, 0, 1) +[140] = "%1d", -- CAP HDG 8, (1, 0, 1) +[141] = "%1d", -- CAP SPD 3, (1, 0, 1) +[142] = "%1d", -- CAP 9, (1, 0, 1) +[143] = "%1d", -- CAP ALT 4, (1, 0, 1) +[144] = "%1d", -- CAP BRG 0, (1, 0, 1) +[145] = "%1d", -- CAP RNG 5, (1, 0, 1) +[146] = "%1d", -- CAP N+E, (1, 0, 1) +[147] = "%1d", -- CAP S-W, (1, 0, 1) +[148] = "%1d", -- CAP clear, (1, 0, 1) +[149] = "%1d", -- CAP enter, (1, 0, 1) +[98] = "%.1f", -- CAP category, (0.2, 0, 1) +[98] = "%.1f", -- CAP category, (-0.2, 0, 1) +-- CLOCK(26) +[1099] = "%1d", -- Clock Timer Start/Stop/Reset, (1, 0, 1) +[4153] = "%1d", -- Clock Timer Start/Stop/Reset, (1, 0, 1) +[1051] = "%.1f", -- Clock Wind, (0.5, 0, 1) +--[] = "%.1f", -- Clock Wind, (0.5, 0, 1) +-- COCKPITMECHANICS(11) +[119] = "%1d", -- RIO Oxygen On, (-1, 0, 1) +[159] = "%1d", -- White Flood Light, (-1, -1, 1) +[194] = "%1d", -- Red Flood Light, (-1, -1, 1) +[913] = "%1d", -- Position Lights Wing, (-1, -1, 1) +[916] = "%1d", -- Position Lights Tail, (-1, -1, 1) +[918] = "%1d", -- Taxi Light, (-1, 0, 1) +[919] = "%1d", -- Position Lights Flash, (-1, 0, 1) +[921] = "%1d", -- White Flood Light, (-1, -1, 1) +[923] = "%1d", -- Anti-Collision Lights, (-1, 0, 1) +[924] = "%1d", -- Red Flood Light, (-1, -1, 1) +[929] = "%1d", -- Air Source Ram, (-1, 0, 1) +[930] = "%1d", -- Air Source Left Engine, (-1, 0, 1) +[931] = "%1d", -- Air Source Right Engine, (-1, 0, 1) +[932] = "%1d", -- Air Source Both Engines, (-1, 0, 1) +[933] = "%1d", -- Air Source Off, (-1, 0, 1) +[938] = "%1d", -- Ram Air, (-1, 0, 1) +[939] = "%1d", -- Cabin Pressure Dump, (-1, 0, 1) +[940] = "%1d", -- Temp Auto / Man, (-1, 0, 1) +[942] = "%1d", -- Wind Shield Air, (-1, -1, 1) +[8114] = "%1d", -- Pilot Oxygen On, (-1, 0, 1) +[122] = "%1d", -- Storage, (0, 0, 1) +[224] = "%1d", -- Canopy Jettison, (0, 0, 1) +[224] = "%1d", -- Canopy Jettison, (0, 0, 1) +[404] = "%1d", -- Ejection Seat Safety, (0, 0, 1) +[498] = "%1d", -- Ejection Seat Safety, (0, 0, 1) +[2049] = "%1d", -- Ejection CMD Lever, (0, 0, 1) +[119] = "%1d", -- RIO Oxygen On, (1, 0, 1) +[122] = "%1d", -- Storage, (1, 0, 1) +[159] = "%1d", -- White Flood Light, (1, -1, 1) +[194] = "%1d", -- Red Flood Light, (1, -1, 1) +[224] = "%1d", -- Canopy Jettison, (1, 0, 1) +[224] = "%1d", -- Canopy Jettison, (1, 0, 1) +[404] = "%1d", -- Ejection Seat Safety, (1, 0, 1) +[498] = "%1d", -- Ejection Seat Safety, (1, 0, 1) +[913] = "%1d", -- Position Lights Wing, (1, -1, 1) +[916] = "%1d", -- Position Lights Tail, (1, -1, 1) +[918] = "%1d", -- Taxi Light, (1, 0, 1) +[919] = "%1d", -- Position Lights Flash, (1, 0, 1) +[921] = "%1d", -- White Flood Light, (1, -1, 1) +[923] = "%1d", -- Anti-Collision Lights, (1, 0, 1) +[924] = "%1d", -- Red Flood Light, (1, -1, 1) +[929] = "%1d", -- Air Source Ram, (1, 0, 1) +[930] = "%1d", -- Air Source Left Engine, (1, 0, 1) +[931] = "%1d", -- Air Source Right Engine, (1, 0, 1) +[932] = "%1d", -- Air Source Both Engines, (1, 0, 1) +[933] = "%1d", -- Air Source Off, (1, 0, 1) +[938] = "%1d", -- Ram Air, (1, 0, 1) +[939] = "%1d", -- Cabin Pressure Dump, (1, 0, 1) +[940] = "%1d", -- Temp Auto / Man, (1, 0, 1) +[942] = "%1d", -- Wind Shield Air, (1, -1, 1) +[2049] = "%1d", -- Ejection CMD Lever, (1, 0, 1) +[8114] = "%1d", -- Pilot Oxygen On, (1, 0, 1) +[192] = "%.4f", -- Console Light Intensity, (0.125, 0, 1) +[193] = "%.4f", -- Instrument Light Intensity, (0.125, 0, 1) +[950] = "%.4f", -- Temperature, (0.125, 0, 1) +[15005] = "%.4f", -- ACM Panel Light Intensity, (0.125, 0, 1) +[15007] = "%.4f", -- Instrument Light Intensity, (0.125, 0, 1) +[15008] = "%.4f", -- Console Light Intensity, (0.125, 0, 1) +[15009] = "%.4f", -- Formation Light Intensity, (0.125, 0, 1) +[192] = "%.4f", -- Console Light Intensity, (-0.125, 0, 1) +[193] = "%.4f", -- Instrument Light Intensity, (-0.125, 0, 1) +[950] = "%.4f", -- Temperature, (-0.125, 0, 1) +[15005] = "%.4f", -- ACM Panel Light Intensity, (-0.125, 0, 1) +[15007] = "%.4f", -- Instrument Light Intensity, (-0.125, 0, 1) +[15008] = "%.4f", -- Console Light Intensity, (-0.125, 0, 1) +[15009] = "%.4f", -- Formation Light Intensity, (-0.125, 0, 1) +-- COUNTERMEASURES(5) +[387] = "%1d", -- AN/ALE-37 Jammer Dispense, (-1, -1, 0) +[388] = "%1d", -- AN/ALE-37 Flare Dispense, (-1, -1, 0) +[389] = "%1d", -- AN/ALE-37 Chaff Dispense, (-1, -1, 0) +[390] = "%1d", -- AN/ALE-37 Power/Mode, (-1, -1, 1) +[398] = "%1d", -- AN/ALE-37 Flare Mode, (-1, -1, 1) +[216] = "%1d", -- AN/ALE-37 Programmer Reset, (1, 0, 1) +[385] = "%1d", -- AN/ALE-37 Flare Counter, (1, 0, 1) +[386] = "%1d", -- AN/ALE-37 Chaff Counter, (1, 0, 1) +[387] = "%1d", -- AN/ALE-37 Jammer Dispense, (1, 1, 0) +[388] = "%1d", -- AN/ALE-37 Flare Dispense, (1, 1, 0) +[389] = "%1d", -- AN/ALE-37 Chaff Dispense, (1, 1, 0) +[390] = "%1d", -- AN/ALE-37 Power/Mode, (1, -1, 1) +[391] = "%1d", -- AN/ALE-37 Flare Salvo, (1, 0, 1) +[398] = "%1d", -- AN/ALE-37 Flare Mode, (1, -1, 1) +[399] = "%1d", -- AN/ALE-37 Jammer Counter, (1, 0, 1) +[211] = "%.4f", -- AN/ALE-37 Jammer Interval Units, (0.11111111111111, 0, 1) +[212] = "%.4f", -- AN/ALE-37 Jammer Interval Tens, (0.11111111111111, 0, 1) +[213] = "%.4f", -- AN/ALE-37 Jammer Interval Hundreds, (0.11111111111111, 0, 1) +[211] = "%.4f", -- AN/ALE-37 Jammer Interval Units, (-0.11111111111111, 0, 1) +[212] = "%.4f", -- AN/ALE-37 Jammer Interval Tens, (-0.11111111111111, 0, 1) +[213] = "%.4f", -- AN/ALE-37 Jammer Interval Hundreds, (-0.11111111111111, 0, 1) +[203] = "%.4f", -- AN/ALE-37 Chaff Salvo Quantity, (0.16666666666667, 0, 1) +[203] = "%.4f", -- AN/ALE-37 Chaff Salvo Quantity, (-0.16666666666667, 0, 1) +[205] = "%.1f", -- AN/ALE-37 Flare Quantity, (0.2, 0, 1) +[214] = "%.1f", -- AN/ALE-37 Chaff Burst Quantity, (0.2, 0, 1) +[215] = "%.1f", -- AN/ALE-37 Chaff Burst Interval, (0.2, 0, 1) +[205] = "%.1f", -- AN/ALE-37 Flare Quantity, (-0.2, 0, 1) +[214] = "%.1f", -- AN/ALE-37 Chaff Burst Quantity, (-0.2, 0, 1) +[215] = "%.1f", -- AN/ALE-37 Chaff Burst Interval, (-0.2, 0, 1) +[202] = "%.2f", -- AN/ALE-37 Chaff Salvo Interval, (0.25, 0, 1) +[210] = "%.2f", -- AN/ALE-37 Flare Interval, (0.25, 0, 1) +[202] = "%.2f", -- AN/ALE-37 Chaff Salvo Interval, (-0.25, 0, 1) +[210] = "%.2f", -- AN/ALE-37 Flare Interval, (-0.25, 0, 1) +[204] = "%.4f", -- AN/ALE-37 Jammer Quantity, (0.33333333333333, 0, 1) +[204] = "%.4f", -- AN/ALE-37 Jammer Quantity, (-0.33333333333333, 0, 1) +[206] = "%.1f", -- AN/ALE-37 L10 Load Type, (0.5, 0, 1) +[207] = "%.1f", -- AN/ALE-37 L20 Load Type, (0.5, 0, 1) +[208] = "%.1f", -- AN/ALE-37 R20 Load Type, (0.5, 0, 1) +[209] = "%.1f", -- AN/ALE-37 R10 Load Type, (0.5, 0, 1) +[206] = "%.1f", -- AN/ALE-37 L10 Load Type, (-0.5, 0, 1) +[207] = "%.1f", -- AN/ALE-37 L20 Load Type, (-0.5, 0, 1) +[208] = "%.1f", -- AN/ALE-37 R20 Load Type, (-0.5, 0, 1) +[209] = "%.1f", -- AN/ALE-37 R10 Load Type, (-0.5, 0, 1) +-- DATALINK(52) +[96] = "%1d", -- Beacon Power, (-1, -1, 1) +[175] = "%1d", -- Datalink Antenna (no function), (-1, 0, 1) +[176] = "%1d", -- Datalink Reply (no function), (-1, 0, 1) +[177] = "%1d", -- Datalink CAINS/TAC, (-1, 0, 1) +[191] = "%1d", -- Datalink Antijam (no function), (-1, -1, 1) +[413] = "%1d", -- Datalink Power, (-1, -1, 1) +[96] = "%1d", -- Beacon Power, (1, -1, 1) +[117] = "%1d", -- ACLS test, (1, 0, 1) +[175] = "%1d", -- Datalink Antenna (no function), (1, 0, 1) +[176] = "%1d", -- Datalink Reply (no function), (1, 0, 1) +[177] = "%1d", -- Datalink CAINS/TAC, (1, 0, 1) +[191] = "%1d", -- Datalink Antijam (no function), (1, -1, 1) +[413] = "%1d", -- Datalink Power, (1, -1, 1) +[195] = "%.4f", -- Datalink freq 1MHz, (0.11111111111111, 0, 1) +[196] = "%.4f", -- Datalink freq 10MHz, (0.11111111111111, 0, 1) +[197] = "%.4f", -- Datalink freq 100kHz, (0.11111111111111, 0, 1) +[222] = "%.4f", -- Datalink address high, (0.11111111111111, 0, 1) +[223] = "%.4f", -- Datalink address low, (0.11111111111111, 0, 1) +[195] = "%.4f", -- Datalink freq 1MHz, (-0.11111111111111, 0, 1) +[196] = "%.4f", -- Datalink freq 10MHz, (-0.11111111111111, 0, 1) +[197] = "%.4f", -- Datalink freq 100kHz, (-0.11111111111111, 0, 1) +[222] = "%.4f", -- Datalink address high, (-0.11111111111111, 0, 1) +[223] = "%.4f", -- Datalink address low, (-0.11111111111111, 0, 1) +[118] = "%.4f", -- Beacon mode, (0.166667, 0, 1.000002) +[118] = "%.4f", -- Beacon mode, (-0.166667, 0, 1.000002) +-- DECM(53) +[9950] = "%1d", -- DECM ALQ-100 Volume, (0, 0, 1) +[151] = "%.1f", -- DECM ALQ-100 Power/Mode, (0.2, 0, 1) +[151] = "%.1f", -- DECM ALQ-100 Power/Mode, (-0.2, 0, 1) +-- ECMD(44) +[2023] = "%1d", -- ECMD Brightness, (0, 0, 1) +[2024] = "%1d", -- ECMD Test, (1, 0, 1) +-- ELECTRICS(14) +[902] = "%1d", -- Inboard Spoiler Override Cover, (-1, 0, 1) +[903] = "%1d", -- Outboard Spoiler Override Cover, (-1, 0, 1) +[907] = "%1d", -- Outboard Spoiler Override, (-1, 0, 1) +[908] = "%1d", -- Inboard Spoiler Override, (-1, 0, 1) +[926] = "%1d", -- Emergency Generator Switch, (-1, 0, 1) +[927] = "%1d", -- Emergency Generator Switch Cover, (-1, 0, 1) +[936] = "%1d", -- Right Generator Switch, (-1, -1, 1) +[937] = "%1d", -- Left Generator Switch, (-1, -1, 1) +[902] = "%1d", -- Inboard Spoiler Override Cover, (1, 0, 1) +[903] = "%1d", -- Outboard Spoiler Override Cover, (1, 0, 1) +[907] = "%1d", -- Outboard Spoiler Override, (1, 0, 1) +[908] = "%1d", -- Inboard Spoiler Override, (1, 0, 1) +[926] = "%1d", -- Emergency Generator Switch, (1, 0, 1) +[927] = "%1d", -- Emergency Generator Switch Cover, (1, 0, 1) +[936] = "%1d", -- Right Generator Switch, (1, -1, 1) +[937] = "%1d", -- Left Generator Switch, (1, -1, 1) +-- ENGINE(19) +[941] = "%1d", -- Engine/Probe Anti-Ice, (-1, -1, 1) +[2102] = "%1d", -- Engine Crank, (-1, -1, 1) +[2103] = "%1d", -- Throttle Temp, (-1, -1, 1) +[2104] = "%1d", -- Throttle Mode, (-1, -1, 1) +[2105] = "%1d", -- Engine Airstart, (-1, 0, 1) +[12300] = "%1d", -- Left Engine Fuel Cutoff, (-1, 0, 1) +[12301] = "%1d", -- Right Engine Fuel Cutoff, (-1, 0, 1) +[16005] = "%1d", -- Asymmetric Thrust Limiter Cover, (-1, 0, 1) +[16006] = "%1d", -- Asymmetric Thrust Limiter, (-1, 0, 1) +[16007] = "%1d", -- Left Engine Mode, (-1, 0, 1) +[16008] = "%1d", -- Right Engine Mode, (-1, 0, 1) +[941] = "%1d", -- Engine/Probe Anti-Ice, (1, -1, 1) +[2102] = "%1d", -- Engine Crank, (1, -1, 1) +[2103] = "%1d", -- Throttle Temp, (1, -1, 1) +[2104] = "%1d", -- Throttle Mode, (1, -1, 1) +[2105] = "%1d", -- Engine Airstart, (1, 0, 1) +[12300] = "%1d", -- Left Engine Fuel Cutoff, (1, 0, 1) +[12301] = "%1d", -- Right Engine Fuel Cutoff, (1, 0, 1) +[16005] = "%1d", -- Asymmetric Thrust Limiter Cover, (1, 0, 1) +[16006] = "%1d", -- Asymmetric Thrust Limiter, (1, 0, 1) +[16007] = "%1d", -- Left Engine Mode, (1, 0, 1) +[16008] = "%1d", -- Right Engine Mode, (1, 0, 1) +-- FLAPS(18) +[225] = "%1d", -- Flaps Lever, (1, 0, 1) +-- FUELSYSTEM(20) +[1001] = "%1d", -- Wing/Ext Trans, (-1, -1, 1) +[1073] = "%1d", -- Refuel Probe, (-1, -1, 1) +[1074] = "%1d", -- Fuel Dump, (-1, 0, 1) +[1076] = "%1d", -- Fuel Quantity Selector, (-1, -1, 0) +[1094] = "%1d", -- Fuel Feed Cover, (-1, 0, 1) +[1095] = "%1d", -- Fuel Feed, (-1, -1, 1) +[1044] = "%1d", -- Fuel Shutoff - Right, (0, 0, 1) +[15081] = "%1d", -- Fuel Shutoff - Left, (0, 0, 1) +[1001] = "%1d", -- Wing/Ext Trans, (1, -1, 1) +[1044] = "%1d", -- Fuel Shutoff - Right, (1, 0, 1) +[1050] = "%1d", -- BINGO Fuel Level Knob, (1, 0, 1) +[1073] = "%1d", -- Refuel Probe, (1, -1, 1) +[1074] = "%1d", -- Fuel Dump, (1, 0, 1) +[1076] = "%1d", -- Fuel Quantity Selector, (1, 1, 0) +[1094] = "%1d", -- Fuel Feed Cover, (1, 0, 1) +[1095] = "%1d", -- Fuel Feed, (1, -1, 1) +[15081] = "%1d", -- Fuel Shutoff - Left, (1, 0, 1) +-- GEARHOOK(17) +[496] = "%1d", -- Launch Bar Abort Switch Cover, (-1, 0, 1) +[1072] = "%1d", -- Anti-Skid Spoiler BK Switch, (-1, -1, 1) +[1075] = "%1d", -- Nose Strut Compression Switch, (-1, -1, 0) +[237] = "%1d", -- Parking Brake Handle, (0, 0, 1) +[237] = "%1d", -- Parking Brake Handle, (1, 0, 1) +[238] = "%1d", -- Hook Extension Handle (RB cycle emergency mode), (1, 0, 1) +[326] = "%1d", -- Landing Gear Lever (RB emergency extend), (1, 0, 1) +[496] = "%1d", -- Launch Bar Abort Switch Cover, (1, 0, 1) +[497] = "%1d", -- Launch Bar Abort, (1, 0, 1) +[1072] = "%1d", -- Anti-Skid Spoiler BK Switch, (1, -1, 1) +[1075] = "%1d", -- Nose Strut Compression Switch, (1, 1, 0) +[15078] = "%1d", -- Hook Extension Handle (RB cycle emergency mode), (1, 0, 1) +[16015] = "%1d", -- Landing Gear Lever (RB emergency extend), (1, 0, 1) +-- HCU(58) +[2007] = "%1d", -- HCU TCS mode, (-1, 0, 1) +[2008] = "%1d", -- HCU radar mode, (-1, 0, 1) +[2009] = "%1d", -- HCU DDD mode, (-1, 0, 1) +[2010] = "%1d", -- HCU TID mode, (-1, 0, 1) +[2007] = "%1d", -- HCU TCS mode, (1, 0, 1) +[2008] = "%1d", -- HCU radar mode, (1, 0, 1) +[2009] = "%1d", -- HCU DDD mode, (1, 0, 1) +[2010] = "%1d", -- HCU TID mode, (1, 0, 1) +-- HSD(41) +[1008] = "%1d", -- HSD/ECMD Power On/Off, (-1, 0, 1) +[1016] = "%1d", -- HSD Display Mode, (-1, 0, 1) +[1017] = "%1d", -- HSD ECM Override, (-1, 0, 1) +[1039] = "%1d", -- HSD Selected Heading, (0, 0, 1) +[1040] = "%1d", -- HSD Selected Course, (0, 0, 1) +[1043] = "%1d", -- HSD Brightness, (0, 0, 1) +[1008] = "%1d", -- HSD/ECMD Power On/Off, (1, 0, 1) +--[1016] = "%1d", -- HSD Display Mode, (1, 0, 1) +[1017] = "%1d", -- HSD ECM Override, (1, 0, 1) +[1041] = "%1d", -- HSD Test, (1, 0, 1) +-- HUD(40) +[1009] = "%1d", -- HUD Power On/Off, (-1, 0, 1) +[1011] = "%1d", -- HUD Landing Mode, (-1, 0, 1) +[1012] = "%1d", -- HUD Air-to-Ground Mode, (-1, 0, 1) +[1013] = "%1d", -- HUD Air-to-Air Mode, (-1, 0, 1) +[1014] = "%1d", -- HUD Cruise Mode, (-1, 0, 1) +[1015] = "%1d", -- HUD Take-Off Mode, (-1, 0, 1) +[1020] = "%1d", -- HUD AWL Mode, (-1, 0, 1) +[1021] = "%1d", -- HUD De-clutter On/Off, (-1, 0, 1) +[1033] = "%1d", -- HUD filter, (0, 0, 1) +[1007] = "%1d", -- HUD Pitch Ladder Brightness, (1, 0, 1) +[1009] = "%1d", -- HUD Power On/Off, (1, 0, 1) +[1011] = "%1d", -- HUD Landing Mode, (1, 0, 1) +[1012] = "%1d", -- HUD Air-to-Ground Mode, (1, 0, 1) +[1013] = "%1d", -- HUD Air-to-Air Mode, (1, 0, 1) +[1014] = "%1d", -- HUD Cruise Mode, (1, 0, 1) +[1015] = "%1d", -- HUD Take-Off Mode, (1, 0, 1) +[1020] = "%1d", -- HUD AWL Mode, (1, 0, 1) +--[1021] = "%1d", -- HUD De-clutter On/Off, (1, 0, 1) +[1033] = "%1d", -- HUD filter, (1, 0, 1) +[1034] = "%1d", -- HUD Trim, (1, 0, 1) +[1037] = "%1d", -- HUD Brightness, (1, 0, 1) +-- HYDRAULICS(12) +[615] = "%1d", -- Hydraulic Emergency Flight Control Switch Cover, (-1, 0, 1) +[629] = "%1d", -- Hydraulic Transfer Pump Switch, (-1, 0, 1) +[630] = "%1d", -- Hydraulic Transfer Pump Switch Cover, (-1, 0, 1) +[631] = "%1d", -- Hydraulic Isolation Switch, (-1, 0, 1) +[928] = "%1d", -- Hydraulic Emergency Flight Control Switch, (-1, -1, 1) +[632] = "%1d", -- Hydraulic Hand Pump, (0, 0, 1) +[615] = "%1d", -- Hydraulic Emergency Flight Control Switch Cover, (1, 0, 1) +[629] = "%1d", -- Hydraulic Transfer Pump Switch, (1, 0, 1) +[630] = "%1d", -- Hydraulic Transfer Pump Switch Cover, (1, 0, 1) +[631] = "%1d", -- Hydraulic Isolation Switch, (1, 0, 1) +[632] = "%1d", -- Hydraulic Hand Pump, (1, 0, 1) +[928] = "%1d", -- Hydraulic Emergency Flight Control Switch, (1, -1, 1) +-- ICS(2) +[150] = "%1d", -- KY-28 ZEROIZE Cover, (-1, 0, 1) +[380] = "%1d", -- V/UHF 2 ANT Switch, (-1, 0, 1) +[381] = "%1d", -- XMTR SEL Switch, (-1, -1, 1) +[382] = "%1d", -- KY MODE Switch, (-1, -1, 1) +[402] = "%1d", -- ICS Function Selector, (-1, -1, 1) +[2044] = "%1d", -- ICS Function Selector, (-1, -1, 1) +[400] = "%1d", -- ICS Volume, (0, 0, 1) +[2039] = "%1d", -- Sidewinder Volume, (0, 0, 1) +[2040] = "%1d", -- ALR-67 Volume, (0, 0, 1) +[2048] = "%1d", -- ICS Volume, (0, 0, 1) +[150] = "%1d", -- KY-28 ZEROIZE Cover, (1, 0, 1) +[361] = "%1d", -- KY-28 ZEROIZE, (1, 0, 1) +[380] = "%1d", -- V/UHF 2 ANT Switch, (1, 0, 1) +[381] = "%1d", -- XMTR SEL Switch, (1, -1, 1) +[382] = "%1d", -- KY MODE Switch, (1, -1, 1) +[402] = "%1d", -- ICS Function Selector, (1, -1, 1) +[2044] = "%1d", -- ICS Function Selector, (1, -1, 1) +[2138] = "%1d", -- AN/ALR-67 Volume, (1, 0, 1) +[115] = "%.1f", -- KY-28 Radio Selector, (0.5, 0, 1) +[116] = "%.1f", -- KY-28 Power Mode, (0.5, 0, 1) +[401] = "%.1f", -- ICS Amplifier Selector, (0.5, 0, 1) +[2045] = "%.1f", -- ICS Amplifier Selector, (0.5, 0, 1) +[115] = "%.1f", -- KY-28 Radio Selector, (-0.5, 0, 1) +[116] = "%.1f", -- KY-28 Power Mode, (-0.5, 0, 1) +[401] = "%.1f", -- ICS Amplifier Selector, (-0.5, 0, 1) +[2045] = "%.1f", -- ICS Amplifier Selector, (-0.5, 0, 1) +-- IFF(64) +[161] = "%1d", -- IFF audio/light (no function), (-1, -1, 1) +[162] = "%1d", -- IFF M1 (no function), (-1, -1, 1) +[163] = "%1d", -- IFF M2 (no function), (-1, -1, 1) +[164] = "%1d", -- IFF M3/A (no function), (-1, -1, 1) +[165] = "%1d", -- IFF MC (no function), (-1, -1, 1) +[166] = "%1d", -- IFF RAD (no function), (-1, -1, 1) +[167] = "%1d", -- IFF Ident (no function), (-1, -1, 1) +[181] = "%1d", -- IFF M4 (no function), (-1, 0, 1) +[161] = "%1d", -- IFF audio/light (no function), (1, -1, 1) +[162] = "%1d", -- IFF M1 (no function), (1, -1, 1) +[163] = "%1d", -- IFF M2 (no function), (1, -1, 1) +[164] = "%1d", -- IFF M3/A (no function), (1, -1, 1) +[165] = "%1d", -- IFF MC (no function), (1, -1, 1) +[166] = "%1d", -- IFF RAD (no function), (1, -1, 1) +[167] = "%1d", -- IFF Ident (no function), (1, -1, 1) +[181] = "%1d", -- IFF M4 (no function), (1, 0, 1) +[185] = "%1d", -- IFF test (no function), (1, 0, 1) +[186] = "%1d", -- IFF reply (no function), (1, 0, 1) +[198] = "%.4f", -- IFF M3 code -x-- (no function), (0.11111, 0, 0.77777) +[199] = "%.4f", -- IFF M3 code x--- (no function), (0.11111, 0, 0.77777) +[200] = "%.4f", -- IFF M1 code -x (no function), (0.11111, 0, 0.33333) +[201] = "%.4f", -- IFF M1 code x- (no function), (0.11111, 0, 0.77777) +[2261] = "%.4f", -- IFF M3 code --x- (no function), (0.11111, 0, 0.77777) +[2262] = "%.4f", -- IFF M3 code ---x (no function), (0.11111, 0, 0.77777) +[198] = "%.4f", -- IFF M3 code -x-- (no function), (-0.11111, 0, 0.77777) +[199] = "%.4f", -- IFF M3 code x--- (no function), (-0.11111, 0, 0.77777) +[200] = "%.4f", -- IFF M1 code -x (no function), (-0.11111, 0, 0.33333) +[201] = "%.4f", -- IFF M1 code x- (no function), (-0.11111, 0, 0.77777) +[2261] = "%.4f", -- IFF M3 code --x- (no function), (-0.11111, 0, 0.77777) +[2262] = "%.4f", -- IFF M3 code ---x (no function), (-0.11111, 0, 0.77777) +[184] = "%.2f", -- IFF master (no function), (0.25, 0, 1) +[184] = "%.2f", -- IFF master (no function), (-0.25, 0, 1) +[183] = "%.4f", -- IFF code (no function), (0.33333333333333, 0, 1) +[183] = "%.4f", -- IFF code (no function), (-0.33333333333333, 0, 1) +-- ILS(48) +[910] = "%1d", -- AN/ARA-63 Power Switch, (-1, 0, 1) +[910] = "%1d", -- AN/ARA-63 Power Switch, (1, 0, 1) +[911] = "%1d", -- AN/ARA-63 BIT Button, (1, 0, 1) +[912] = "%.4f", -- AN/ARA-63 Channel Knob, (0.052631578947368, 0, 1) +[912] = "%.4f", -- AN/ARA-63 Channel Knob, (-0.052631578947368, 0, 1) +-- INS(50) +[50] = "%.4f", -- Navigation Mode, (0.1666667, 0, 1.0000002) +[50] = "%.4f", -- Navigation Mode, (-0.1666667, 0, 1.0000002) +-- LANTIRN(38) +[668] = "%1d", -- LANTIRN Laser Arm Switch, (-1, 0, 1) +[668] = "%1d", -- LANTIRN Laser Arm Switch, (1, 0, 1) +[669] = "%1d", -- LANTIRN Operate Mode (Unstow), (1, 0, 1) +[671] = "%1d", -- LANTIRN IBIT, (1, 0, 1) +[667] = "%.1f", -- LANTIRN Power, (0.5, 0, 1) +[667] = "%.1f", -- LANTIRN Power, (-0.5, 0, 1) +-- MACHANDAIRSPEED(27) +[2127] = "%1d", -- Airspeed Indicator Bug Knob, (1, 0, 1) +[310] = "%.1f", -- Airspeed Indicator Bug Knob, (0.5, 0, 1) +-- NAV_INTERFACE(46) +[1002] = "%1d", -- Navigation Steer Commands: TACAN, (-1, 0, 1) +[1003] = "%1d", -- Navigation Steer Commands: Destination, (-1, 0, 1) +[1004] = "%1d", -- Navigation Steer Commands: AWL PCD, (-1, 0, 1) +[1005] = "%1d", -- Navigation Steer Commands: Vector, (-1, 0, 1) +[1006] = "%1d", -- Navigation Steer Commands: Manual, (-1, 0, 1) +[1002] = "%1d", -- Navigation Steer Commands: TACAN, (1, 0, 1) +[1003] = "%1d", -- Navigation Steer Commands: Destination, (1, 0, 1) +[1004] = "%1d", -- Navigation Steer Commands: AWL PCD, (1, 0, 1) +[1005] = "%1d", -- Navigation Steer Commands: Vector, (1, 0, 1) +[1006] = "%1d", -- Navigation Steer Commands: Manual, (1, 0, 1) +[51] = "%.4f", -- Destination Mode, (0.142857, 0, 0.999999) +[51] = "%.4f", -- Destination Mode, (-0.142857, 0, 0.999999) +-- RADAR(39) +[38] = "%1d", -- Automatic Gain Control (no function), (-2, -1, 1) +[3900] = "%1d", -- Parametric amplifier (no function), (-2, -1, 1) +[34] = "%.1f", -- Aspect, (-1, -1, 1) +[35] = "%.1f", -- Closing Velocity scale, (-1, -1, 1) +[36] = "%.1f", -- Target size (no function), (-1, -1, 1) +[37] = "%.1f", -- Main Lobe Clutter filter, (-1, -1, 1) +[83] = "%1d", -- Stabilize, (-1, 0, 1) +[84] = "%1d", -- VSL switch, (-1, -1, 0) +[95] = "%1d", -- Liquid cooling, (-1, -1, 1) +[2012] = "%1d", -- WCS switch, (-1, -1, 1) +[81] = "%1d", -- Radar elevation center, (0, -1, 1) +[82] = "%1d", -- Radar azimuth center, (0, -1, 1) +[-1] = "%1d", -- DDD filter, (1, 0, 1) +[10] = "%1d", -- RADAR pulse search, (1, 0, 1) +[11] = "%1d", -- RADAR track while scan manual, (1, 0, 1) +[12] = "%1d", -- RADAR track while scan auto, (1, 0, 1) +[13] = "%1d", -- RADAR range while scan, (1, 0, 1) +[14] = "%1d", -- RADAR pulse doppler search, (1, 0, 1) +[15] = "%1d", -- RADAR pulse single target track, (1, 0, 1) +[17] = "%1d", -- DDD Interrogate Friend or Foe, (1, 0, 1) +[18] = "%1d", -- DDD Infrared (no function), (1, 0, 1) +[19] = "%1d", -- DDD RADAR, (1, 0, 1) +[34] = "%.1f", -- Aspect, (1, -1, 1) +[35] = "%.1f", -- Closing Velocity scale, (1, -1, 1) +[36] = "%.1f", -- Target size (no function), (1, -1, 1) +[37] = "%.1f", -- Main Lobe Clutter filter, (1, -1, 1) +[40] = "%1d", -- RADAR 5 NM, (1, 0, 1) +[41] = "%1d", -- RADAR 10 NM, (1, 0, 1) +[42] = "%1d", -- RADAR 20 NM, (1, 0, 1) +[43] = "%1d", -- RADAR 50 NM, (1, 0, 1) +[44] = "%1d", -- RADAR 100 NM, (1, 0, 1) +[45] = "%1d", -- RADAR 200 NM, (1, 0, 1) +[83] = "%1d", -- Stabilize, (1, 0, 1) +[84] = "%1d", -- VSL switch, (1, 1, 0) +[95] = "%1d", -- Liquid cooling, (1, -1, 1) +[1812] = "%1d", -- CCM SPL (no function), (1, 0, 1) +[1813] = "%1d", -- CCM ALT DIFF (no function), (1, 0, 1) +[1814] = "%1d", -- CCM VGS (no function), (1, 0, 1) +[2012] = "%1d", -- WCS switch, (1, -1, 1) +[2013] = "%1d", -- Power reset, (1, 0, 1) +[2014] = "%1d", -- Light test, (1, 0, 1) +[9916] = "%1d", -- RADAR pulse doppler single target track, (1, 0, 1) +[38] = "%1d", -- Automatic Gain Control (no function), (2, -1, 1) +[3900] = "%1d", -- Parametric amplifier (no function), (2, -1, 1) +[79] = "%.5f", -- Radar elevation scan, (0.33333, 0, 0.99999) +[80] = "%.5f", -- Radar azimuth scan, (0.33333, 0, 0.99999) +[79] = "%.5f", -- Radar elevation scan, (-0.33333, 0, 0.99999) +[80] = "%.5f", -- Radar azimuth scan, (-0.33333, 0, 0.99999) +[20] = "%.1f", -- IR gain (no function), (0.5, 0, 1) +[21] = "%.1f", -- IR volume (no function), (0.5, 0, 1) +[22] = "%.1f", -- IR threshold (no function), (0.5, 0, 1) +[23] = "%.1f", -- Brightness, (0.5, 0, 1) +[24] = "%.1f", -- Pulse video, (0.5, 0, 1) +[25] = "%.1f", -- Erase, (0.5, 0, 1) +[26] = "%.1f", -- Pulse gain, (0.5, 0, 1) +[27] = "%.1f", -- ACM threshold (no function), (0.5, 0, 1) +[28] = "%.1f", -- JAM/JET (no function), (0.5, 0, 1) +[29] = "%.1f", -- PD threshold clutter, (0.5, 0, 1) +[30] = "%.1f", -- PD threshold clear (no function), (0.5, 0, 1) +-- RADARALTIMETER(29) +[16020] = "%1d", -- Radar Altimeter Control Knob, (1, 0, 1) +[308] = "%.1f", -- Radar Altimeter Control Knob, (0.5, 0, 1) +-- RWR(54) +[2137] = "%1d", -- AN/ALR-67 Mode, (-1, -1, 0) +[2139] = "%1d", -- AN/ALR-67 Power, (-1, 0, 1) +[2140] = "%1d", -- AN/ALR-67 Test, (-1, -1, 0) +[376] = "%1d", -- AN/ALR-67 Display Brightness, (1, 0, 1) +[2137] = "%1d", -- AN/ALR-67 Mode, (1, 1, 0) +[2139] = "%1d", -- AN/ALR-67 Power, (1, 0, 1) +[2140] = "%1d", -- AN/ALR-67 Test, (1, 1, 0) +[16011] = "%1d", -- AN/ALR-67 Display Brightness, (1, 0, 1) +[2136] = "%.2f", -- AN/ALR-67 Display Type, (0.25, 0, 1) +[2136] = "%.2f", -- AN/ALR-67 Display Type, (-0.25, 0, 1) +-- STDBYAI(30) +[6155] = "%1d", -- Standby ADI Knob, (1, 0, 1) +--[] = "%1d", -- Standby ADI Knob, (1, 0, 1) +[6156] = "%.1f", -- Standby ADI Knob, (0.5, 0, 1) +[19101] = "%.1f", -- Standby ADI Knob, (0.5, 0, 1) +-- TACAN(47) +[2042] = "%1d", -- TACAN Mode Normal/Inverse, (-2, -1, 1) +[2043] = "%1d", -- TACAN Channel X/Y, (-2, -1, 1) +[372] = "%1d", -- TACAN Channel X/Y, (-1, 0, 1) +[373] = "%1d", -- TACAN Mode Normal/Inverse, (-1, 0, 1) +[375] = "%1d", -- TACAN Volume, (0, 0, 1) +[2036] = "%1d", -- TACAN Volume, (0, 0, 1) +[135] = "%1d", -- TACAN CMD Button, (1, 0, 1) +[292] = "%1d", -- TACAN CMD Button, (1, 0, 1) +[371] = "%1d", -- TACAN BIT, (1, 0, 1) +[372] = "%1d", -- TACAN Channel X/Y, (1, 0, 1) +[373] = "%1d", -- TACAN Mode Normal/Inverse, (1, 0, 1) +[2115] = "%1d", -- TACAN BIT, (1, 0, 1) +[2042] = "%1d", -- TACAN Mode Normal/Inverse, (2, -1, 1) +[2043] = "%1d", -- TACAN Channel X/Y, (2, -1, 1) +[8888] = "%.4f", -- TACAN Channel Wheel (Tens), (0.083333333333333, 0, 1) +[8891] = "%.4f", -- TACAN Channel Wheel (Tens), (0.083333333333333, 0, 1) +--[8888] = "%.4f", -- TACAN Channel Wheel (Tens), (-0.083333333333333, 0, 1) +--[8891] = "%.4f", -- TACAN Channel Wheel (Tens), (-0.083333333333333, 0, 1) +[8889] = "%.4f", -- TACAN Channel Lever (Ones), (0.11111111111111, 0, 1) +[8890] = "%.4f", -- TACAN Channel Lever (Ones), (0.11111111111111, 0, 1) +--[8889] = "%.4f", -- TACAN Channel Lever (Ones), (-0.11111111111111, 0, 1) +--[8890] = "%.4f", -- TACAN Channel Lever (Ones), (-0.11111111111111, 0, 1) +[374] = "%.2f", -- TACAN Mode, (0.25, 0, 1) +[2041] = "%.2f", -- TACAN Mode, (0.25, 0, 1) +[374] = "%.2f", -- TACAN Mode, (-0.25, 0, 1) +[2041] = "%.2f", -- TACAN Mode, (-0.25, 0, 1) +-- TCS(37) +[88] = "%1d", -- TCS FOV, (-2, -1, 1) +[87] = "%1d", -- TCS Acquisition, (-1, -1, 1) +[89] = "%1d", -- TCS Slave, (-1, -1, 1) +[90] = "%1d", -- Record power (no function), (-1, -1, 1) +[2011] = "%1d", -- TV/IR switch, (-1, -1, 1) +[87] = "%1d", -- TCS Acquisition, (1, -1, 1) +[89] = "%1d", -- TCS Slave, (1, -1, 1) +[90] = "%1d", -- Record power (no function), (1, -1, 1) +[2011] = "%1d", -- TV/IR switch, (1, -1, 1) +[16016] = "%1d", -- Record reset (no function), (1, 0, 1) +[88] = "%1d", -- TCS FOV, (2, -1, 1) +[91] = "%.2f", -- Record mode (no function), (0.25, 0, 1) +[91] = "%.2f", -- Record mode (no function), (-0.25, 0, 1) +-- TID(43) +[48] = "%1d", -- TID Brightness, (1, 0, 1) +[49] = "%1d", -- TID Contrast, (1, 0, 1) +[52] = "%1d", -- collision steering, (1, 0, 1) +[53] = "%1d", -- TID track hold, (1, 0, 1) +[226] = "%1d", -- TID Non attack, (1, 0, 1) +[670] = "%1d", -- Video Output Toggle (TCS/LANTIRN), (1, 0, 1) +[1115] = "%1d", -- TID Alt num, (1, 0, 1) +[1116] = "%1d", -- TID Sym Elem, (1, 0, 1) +[1117] = "%1d", -- TID Data link, (1, 0, 1) +[1118] = "%1d", -- TID Jam strobe, (1, 0, 1) +[2004] = "%1d", -- TID Reject Image Device disable (no function), (1, 0, 1) +[2113] = "%1d", -- TID Launch zone, (1, 0, 1) +[2114] = "%1d", -- TID Velocity vector, (1, 0, 1) +[9964] = "%1d", -- Next Launch, (1, 0, 1) +[2005] = "%.5f", -- TID Mode, (0.33333, 0, 0.99999) +[2005] = "%.5f", -- TID Mode, (-0.33333, 0, 0.99999) +[2006] = "%.1f", -- TID Range, (0.5, -1, 1) +[2006] = "%.1f", -- TID Range, (-0.5, -1, 1) +-- VDI(42) +[1010] = "%1d", -- VDI Power On/Off, (-1, 0, 1) +[1018] = "%1d", -- VDI Landing Mode, (-1, 0, 1) +[1019] = "%1d", -- VDI Display Mode, (-1, 0, 1) +--[-1] = "%1d", -- VDI filter, (1, 0, 1) +[1010] = "%1d", -- VDI Power On/Off, (1, 0, 1) +[1018] = "%1d", -- VDI Landing Mode, (1, 0, 1) +--[1019] = "%1d", -- VDI Display Mode, (1, 0, 1) +[1035] = "%1d", -- VSDI Screen Trim, (1, 0, 1) +[1036] = "%1d", -- VSDI Screen Brightness, (1, 0, 1) +[1038] = "%1d", -- VDI Screen Contrast, (1, 0, 1) +-- WARNINGLIGHTS(34) +[9199] = "%1d", -- Master Caution Reset, (1, 0, 1) +-- WEAPONS(55) +[60] = "%1d", -- Bomb single/pairs, (-1, 0, 1) +[61] = "%1d", -- Bomb step/ripple, (-1, 0, 1) +[62] = "%1d", -- A/G gun mode, (-1, 0, 1) +[63] = "%1d", -- Mech fuse, (-1, -1, 1) +[64] = "%1d", -- Jettison station 6, (-1, 0, 1) +[65] = "%1d", -- Jettison station 3, (-1, 0, 1) +[66] = "%1d", -- Jettison racks/weapons, (-1, 0, 1) +[67] = "%1d", -- Jettison right tank, (-1, 0, 1) +[68] = "%1d", -- Jettison station 1, (-1, -1, 1) +[69] = "%1d", -- Jettison station 4, (-1, 0, 1) +[70] = "%1d", -- Jettison station 5, (-1, 0, 1) +[71] = "%1d", -- Jettison station 8, (-1, -1, 1) +[73] = "%1d", -- Jettison left tank, (-1, 0, 1) +[75] = "%1d", -- Missile option, (-1, -1, 1) +[78] = "%1d", -- Selective jettison, (-1, -1, 0) +[1047] = "%1d", -- Master Arm Switch, (-1, -1, 1) +[1046] = "%1d", -- Master Arm Cover, (0, 0, 1) +[1049] = "%1d", -- ACM Cover, (0, 0, 1) +[1069] = "%1d", -- Jettison aux guard, (0, 0, 1) +[60] = "%1d", -- Bomb single/pairs, (1, 0, 1) +[61] = "%1d", -- Bomb step/ripple, (1, 0, 1) +[62] = "%1d", -- A/G gun mode, (1, 0, 1) +[63] = "%1d", -- Mech fuse, (1, -1, 1) +[64] = "%1d", -- Jettison station 6, (1, 0, 1) +[65] = "%1d", -- Jettison station 3, (1, 0, 1) +[66] = "%1d", -- Jettison racks/weapons, (1, 0, 1) +[67] = "%1d", -- Jettison right tank, (1, 0, 1) +[68] = "%1d", -- Jettison station 1, (1, -1, 1) +[69] = "%1d", -- Jettison station 4, (1, 0, 1) +[70] = "%1d", -- Jettison station 5, (1, 0, 1) +[71] = "%1d", -- Jettison station 8, (1, -1, 1) +[73] = "%1d", -- Jettison left tank, (1, 0, 1) +[74] = "%1d", -- A/A Launch, (1, 0, 1) +[75] = "%1d", -- Missile option, (1, -1, 1) +[78] = "%1d", -- Selective jettison, (1, 1, 0) +[239] = "%1d", -- Emergency stores jettison, (1, 0, 1) +[1022] = "%1d", -- Gun Ammunition Counter Adjustment, (1, 0, 1) +[1046] = "%1d", -- Master Arm Cover, (1, 0, 1) +[1047] = "%1d", -- Master Arm Switch, (1, -1, 1) +[1048] = "%1d", -- ACM Jettison, (1, 0, 1) +[1049] = "%1d", -- ACM Cover, (1, 0, 1) +[1069] = "%1d", -- Jettison aux guard, (1, 0, 1) +[16000] = "%1d", -- Gun rate, (1, 0, 1) +[16001] = "%1d", -- Sidewinder cool, (1, 0, 1) +[16002] = "%1d", -- Missile prepare, (1, 0, 1) +[16003] = "%1d", -- Missile mode, (1, 0, 1) +--[] = "%1d", -- Gun Elevation Lead Adjustment, (1, 0, 1) +--[59] = "%.4f", -- Weapon type wheel, (0.023255813953488, 0, 1) +[59] = "%.4f", -- Weapon type wheel, (-0.023255813953488, 0, 1) +[9960] = "%.4f", -- Weapon Interval x10ms, (0.11111111111111, 0, 1) +[9961] = "%.4f", -- Weapon Interval x100ms, (0.11111111111111, 0, 1) +[9962] = "%.4f", -- Weapon Quantity 10s, (0.11111111111111, , ) +[9963] = "%.4f", -- Weapon Quantity 1s, (0.11111111111111, 0, 1) +[9960] = "%.4f", -- Weapon Interval x10ms, (-0.11111111111111, 0, 1) +[9961] = "%.4f", -- Weapon Interval x100ms, (-0.11111111111111, 0, 1) +[9962] = "%.4f", -- Weapon Quantity 10s, (-0.11111111111111, 0, 0.3333) +[9963] = "%.4f", -- Weapon Quantity 1s, (-0.11111111111111, 0, 1) +[72] = "%.1f", -- Missile speed gate, (0.2, 0, 1) +[72] = "%.1f", -- Missile speed gate, (-0.2, 0, 1) +[58] = "%.2f", -- Elec fuse, (0.25, 0, 1) +[2022] = "%.2f", -- Attack mode, (0.25, 0, 1) +[58] = "%.2f", -- Elec fuse, (-0.25, 0, 1) +[2022] = "%.2f", -- Attack mode, (-0.25, 0, 1) +-- WINGSWEEP(16) +[15096] = "%1d", -- Emergency Wing Sweep Handle (Click to pop out), (-1, 0, 1) +[317] = "%1d", -- Emergency Wing Sweep Handle Cover, (0, 0, 1) +[317] = "%1d", -- Emergency Wing Sweep Handle Cover, (1, 0, 1) +[384] = "%1d", -- Emergency Wing Sweep Handle (Click to pop out), (1, 0, 1) } - ----------------------------- -- HIGH IMPORTANCE EXPORTS -- -- done every export event -- @@ -1002,120 +2096,18 @@ ExportScript.ConfigArguments = function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- every frame export to Ikarus - -- A3 - Pilot Cockpit Left Knee Panel - ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic Pressure Indicator Gauges and Flags - ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge - ExportScript.engOilPressure(mainPanelDevice) -- Engine Oil Pressure gauges - ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group - -- end A3 - - -- A6a - ACM Panel - ExportScript.stationStatusFlags(mainPanelDevice) -- Air Combat Maneuver Panel - ExportScript.ACMButtons(mainPanelDevice) -- 4 different ACM Buttons - ExportScript.masterArmSwitch(mainPanelDevice) -- Master Arm Switch - ExportScript.ACMTriple(mainPanelDevice) -- ACM Triple Indicator - ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge - -- end A6a - -- A9 - Pilot Cockpit Right Knee Panel ExportScript.displayFuel(mainPanelDevice) -- Set of 5 different fuel gauges and a nice multi-gauge (ID's 52117 / 56000 / 56004 / 56010 / 56020 / 56024) Cus. Func. - ExportScript.displayAccel(mainPanelDevice) -- Accellerometer Gauge Custom Function - ExportScript.clockAndTimer(mainPanelDevice) -- Clock and Timer in digital format on same gauge Custom Function + ExportScript.displayAccel(mainPanelDevice) -- Display Accellerometer Gauge Custom Function + ExportScript.clockAndTimer(mainPanelDevice) -- Display Clock and Timer in digital format on same gauge Custom Function + ExportScript.stationStatusFlags(mainPanelDevice) -- Air Combat Maneuver Panel -- end A9 - - -- A10 - Pilot Right Vertical Console - ExportScript.gunCounter(mainPanelDevice) -- Gun Ammunition Counter / Rounds left - -- end A10 - - ----------------------------------- - -----Get F14 Radio Frequencies----- Bailey - ----------------------------------- + ExportScript.flareAndChaffCounters(mainPanelDevice) - -----UHF----- - - --[[ - 1. Get the state of the switch to determine if presets or freqs are being used - 2. Get the channel or freq - 3. Using the above logic, present the Channel or Freq - 4. Preceede channels with "CH ". - 5. Dont preceede freqs with anything. - ]] + local x = {0, 0.057, 0.1, 0.141, 0.212, 0.328, 0.427, 0.518, 0.588, 0.646, 0.731, 0.801, 0.867, 0.915, 1.000} + local y = {0, 80, 100, 120, 150, 200, 250, 300, 350, 400, 500, 600, 700, 800, 1000} -- 1000 KIAS is fake just to fill the range + ExportScript.Tools.SendData(2504, string.format("%d", ExportScript.Linearize(mainPanelDevice:get_argument_value(2129), x, y))) - --[[ - [2033] = "%.4f", -- Mode selector knob (GUARD|MANUAL|PRESET) - 0.0000 = preset - 0.5000 = MANUAL - 1.0000 = GUARD - ]] - - local UHF_ARC159_infoBase = ExportScript.Tools.split(list_indication(8), "%c")--this contains the formated table of the base radio - local UHF_ARC159_readoutBase = UHF_ARC159_infoBase[10] -- so far it has always been 10 in both channel and freq modes - local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) - - if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then - ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60001, string.format(UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) - elseif UHF_ARC159_FreqMode == "0.0" then - ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60001, string.format("CH " .. UHF_ARC159_readoutBase:sub(4,6))) - end - - - local UHF_ARC159_infoPilot = ExportScript.Tools.split(list_indication(9), "%c")--this contains the formated table of the Pilot radio - local UHF_ARC159_readoutPilot = UHF_ARC159_infoPilot[16] -- so far it has always been 10 in both channel and freq modes - local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) - - if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then - ExportScript.Tools.SendData(60002, string.format("ARC-159\n" .. UHF_ARC159_readoutPilot:sub(1,3) .. "." .. UHF_ARC159_readoutPilot:sub(4,6))) - ExportScript.Tools.SendData(60003, string.format(UHF_ARC159_readoutPilot:sub(1,3) .. "." .. UHF_ARC159_readoutPilot:sub(4,6))) - elseif UHF_ARC159_FreqMode == "0.0" then - ExportScript.Tools.SendData(60002, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutPilot:sub(4,6))) - ExportScript.Tools.SendData(60003, string.format("CH " .. UHF_ARC159_readoutPilot:sub(4,6))) - end - - - local UHF_ARC159_infoRio = ExportScript.Tools.split(list_indication(9), "%c")--this contains the formated table of the Rio radio - local UHF_ARC159_readoutRio = UHF_ARC159_infoRio[16] -- so far it has always been 10 in both channel and freq modes - local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) - - if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then - ExportScript.Tools.SendData(60004, string.format("ARC-159\n" .. UHF_ARC159_readoutRio:sub(1,3) .. "." .. UHF_ARC159_readoutRio:sub(4,6))) - ExportScript.Tools.SendData(60005, string.format(UHF_ARC159_readoutRio:sub(1,3) .. "." .. UHF_ARC159_readoutRio:sub(4,6))) - elseif UHF_ARC159_FreqMode == "0.0" then - ExportScript.Tools.SendData(60004, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutRio:sub(4,6))) - ExportScript.Tools.SendData(60005, string.format("CH " .. UHF_ARC159_readoutRio:sub(4,6))) - end - - -----V/UHF ARC182----- - - --[[ - [353] = "%0.1f", -- VHF/UHF ARC-182 Freq Mode (UHF GUARD|V/UHF|V/UHF GUARD|PRESET|V/UHF|LOAD?) - 0.0 = UHF GUARD - 0.2 = V/UHF - 0.4 = V/UHF GUARD - 0.6 = PRESET - 0.8 = V/UHF - 1.0 = LOAD? - ]] - - local VHF_ARC182_infoBase = ExportScript.Tools.split(list_indication(12), "%c")--this contains the formated table of the base radio - local VHF_ARC182_readoutBase = VHF_ARC182_infoBase[10] -- so far it has always been 10 in both channel and freq modes - local VHF_ARC182_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(353)) - - if VHF_ARC182_FreqMode == "0.0" or VHF_ARC182_FreqMode == "0.2" then - ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - elseif VHF_ARC182_FreqMode == "0.4" or VHF_ARC182_FreqMode == "0.8" then - ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - elseif VHF_ARC182_FreqMode == "1.0" then - ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) - elseif VHF_ARC182_FreqMode == "0.6" then - ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. "CH " .. VHF_ARC182_readoutBase:sub(4,6))) - ExportScript.Tools.SendData(60007, string.format("CH " .. VHF_ARC182_readoutBase:sub(4,6))) - end - end function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) @@ -1134,247 +2126,108 @@ end function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) -- export in low tick interval to DAC -end --[[ - - - - - - - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ Custom functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - â–ˆ ExportScript.onff(switch) - Receives a binary and returns string OFF|ON - â–ˆ ExportScript.dualTapeString(leftTape, rightTape) - Receives two values (percent of tape) and returns a string tape display (e.g. RPM) - â–ˆ ExportScript.rotaryCounter(fp) - receives a fp like 0.1 and returns a string 1 (third charachter), handles negatives and 0 gracefully - â–ˆ ExportScript.drawStationStatusFlags(flagValue) - Draws Station Flags for Weapons on ACM A6a]] - -function ExportScript.dualTapeString(title, leftTape, rightTape) -- Creates a dual vertical bar tape for custom gauge - -- Receives title as string - -- Receives a value from 0.00 to 1.00 that represents a percentage from 0% to 100% of the tape, 0.25 is 1/4 up the tape etc.. - -- Returns a string that shows 2 tapes in a "somewhat" graphical format using extended ascii characters. - local a = 5 - local b = 0 - leftTape = tonumber(string.format("%.1f", (leftTape * 10) / 2 )) - rightTape = tonumber(string.format("%.1f", (rightTape * 10) / 2 )) - local buildDisplay = title .. "\n" - repeat - b = a - 0.5 - if leftTape >= a then buildDisplay = buildDisplay .. "â–ˆ " elseif leftTape >= b then buildDisplay = buildDisplay .. "â–„ " else buildDisplay = buildDisplay .. "_ " end - if rightTape >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rightTape >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end - buildDisplay = buildDisplay .. "\n" - a = a - 1 - until( a < 1 ) - return buildDisplay end +--______________________________________________________________________________________________________________________________________ +--###################################################################################################################################### +--# [ Custom functions ] # +--###################################################################################################################################### -function ExportScript.onff(switch) -- Takes a binary 1(on) or 0(off) and returns string "ON" or "OFF" - if switch == 1 then returnString = "ON" elseif switch == 0 then returnString = "OFF" end - return returnString -end - - -function ExportScript.rotaryCounter(fp) -- Takes a value as floating point like 0.1324 and returns 1 as a string or 0.4 as 4 as a string (3'rd character including decimal) - local returnString - if fp == 1 or fp <= 0 then returnString = "0" else returnString = string.sub(string.format("%.1f", fp), 3, 3) end - return returnString -end - - -function ExportScript.drawStationStatusFlags(flagValue) -- Takes a 0/1/0.45 and draws nothing/white/checker flag and returns - local returnString - if flagValue > 0.5 then returnString = "█████\n▀▀▀▀▀\n\n." elseif flagValue > 0.4 then returnString = "▀▄▀▄▀\nâ–€ â–€ â–€\n\n." else returnString = "" end - return returnString -end ---[[ - - - - -___________________________________________________________________________________________________________________________________________________ -▀▀▀█ Custom Gauges functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀]] - -function ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge - local turn - local turnL - local turnR - local turnIndicator = mainPanelDevice:get_argument_value(6501) - local turnLString = "" - local turnRString = "" - local ball - local ballL - local ballR - local ballIndicator = mainPanelDevice:get_argument_value(6500) - local ballLString = "" - local ballRString = "" - local stringOutput = "" - if turnIndicator < 0 then -- negative 12 on left and right - if turnIndicator < -0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 4, 4)) end - turnL = 12 - turn - turnR = 12 + turn - repeat - turnLString = turnLString .. " " - turnL = turnL - 1 - until( turnL == 1) - repeat - turnRString = turnRString .. " " - turnR = turnR - 1 - until( turnR == 1) - stringOutput = stringOutput .. turnLString - stringOutput = stringOutput .. "â–ˆ" - stringOutput = stringOutput .. turnRString - elseif turnIndicator > 0 then -- positive - if turnIndicator > 0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 3, 3)) end - turnL = 12 + turn - turnR = 12 - turn - repeat - turnLString = turnLString .. " " - turnL = turnL - 1 - until( turnL == 1) - repeat - turnRString = turnRString .. " " - turnR = turnR - 1 - until( turnR == 1) - stringOutput = stringOutput .. turnLString - stringOutput = stringOutput .. "â–ˆ" - stringOutput = stringOutput .. turnRString +function ExportScript.flareAndChaffCounters(mainPanelDevice) -- It seems like the roller rolls and jitters way too much for calculations + --[392] = "%.1f", -- CMDS_Chaff_Counter_Roller_10 + --[393] = "%.1f", -- CMDS_Chaff_Counter_Roller_1 + --[394] = "%.1f", -- CMDS_Flare_Counter_Roller_10 + --[395] = "%.1f", -- CMDS_Flare_Counter_Roller_1 + + --local chaffCount = math.floor((mainPanelDevice:get_argument_value(392) * 10) + 0.5) .. math.floor((mainPanelDevice:get_argument_value(393) * 10) + 0.5) + + --[[ Method 1 + local chaffCountFirstDigit = round(mainPanelDevice:get_argument_value(392) * 10) + + if chaffCountFirstDigit < 0.5 then + chaffCountFirstDigit = 0 + elseif chaffCountFirstDigit >= 0.5 and chaffCountFirstDigit < 1.5 then + chaffCountFirstDigit = 1 + elseif chaffCountFirstDigit >= 1.5 and chaffCountFirstDigit < 2.5 then + chaffCountFirstDigit = 2 + elseif chaffCountFirstDigit >= 2.5 and chaffCountFirstDigit < 3.5 then + chaffCountFirstDigit = 3 + elseif chaffCountFirstDigit >= 3.5 and chaffCountFirstDigit < 4.5 then + chaffCountFirstDigit = 4 + elseif chaffCountFirstDigit >= 4.5 and chaffCountFirstDigit < 5.5 then + chaffCountFirstDigit = 5 + elseif chaffCountFirstDigit >= 5.5 and chaffCountFirstDigit < 6.5 then + chaffCountFirstDigit = 6 + elseif chaffCountFirstDigit >= 6.5 and chaffCountFirstDigit < 7.5 then + chaffCountFirstDigit = 7 + elseif chaffCountFirstDigit >= 7.5 and chaffCountFirstDigit < 8.5 then + chaffCountFirstDigit = 8 + elseif chaffCountFirstDigit >= 8.5 and chaffCountFirstDigit < 9.5 then + chaffCountFirstDigit = 9 else - turn = 0 - stringOutput = " â–ˆ " + chaffCountFirstDigit = 0 end - - stringOutput = stringOutput .. "\n â–  â–ˆ â–  \n" - - if ballIndicator < 0 then -- negative 12 on left and right - if ballIndicator < -0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 4, 4)) end - ballL = 12 - ball - ballR = 12 + ball - repeat - ballLString = ballLString .. " " - ballL = ballL - 1 - until( ballL == 1) - repeat - ballRString = ballRString .. " " - ballR = ballR - 1 - until( ballR == 1) - stringOutput = stringOutput .. ballLString - stringOutput = stringOutput .. "O" - stringOutput = stringOutput .. ballRString - elseif ballIndicator > 0 then -- positive - if ballIndicator > 0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 3, 3)) end - ballL = 12 + ball - ballR = 12 - ball - repeat - ballLString = ballLString .. " " - ballL = ballL - 1 - until( ballL == 1) - repeat - ballRString = ballRString .. " " - ballR = ballR - 1 - until( ballR == 1) - stringOutput = stringOutput .. ballLString - stringOutput = stringOutput .. "O" - stringOutput = stringOutput .. ballRString + + local chaffCountSecondDigit = round(mainPanelDevice:get_argument_value(393),1) + if chaffCountSecondDigit < 0.070 then + chaffCountSecondDigit = 0 + elseif chaffCountSecondDigit >= 0.070 and chaffCountSecondDigit < 0.147 then + chaffCountSecondDigit = 1 + elseif chaffCountSecondDigit >= 0.147 and chaffCountSecondDigit < 0.256 then + chaffCountSecondDigit = 2 + elseif chaffCountSecondDigit >= 0.256 and chaffCountSecondDigit < 0.349 then + chaffCountSecondDigit = 3 + elseif chaffCountSecondDigit >= 0.349 and chaffCountSecondDigit < 0.442 then + chaffCountSecondDigit = 4 + elseif chaffCountSecondDigit >= 0.442 and chaffCountSecondDigit < 0.535 then + chaffCountSecondDigit = 5 + elseif chaffCountSecondDigit >= 0.535 and chaffCountSecondDigit < 0.628 then + chaffCountSecondDigit = 6 + elseif chaffCountSecondDigit >= 0.628 and chaffCountSecondDigit < 0.736 then + chaffCountSecondDigit = 7 + elseif chaffCountSecondDigit >= 0.736 and chaffCountSecondDigit < 0.829 then + chaffCountSecondDigit = 8 + elseif chaffCountSecondDigit >= 0.829 and chaffCountSecondDigit < 0.938 then + chaffCountSecondDigit = 9 else - ball = 0 - stringOutput = " O " + chaffCountSecondDigit = 0 end - ExportScript.Tools.SendData(56501, stringOutput) -end - - -function ExportScript.ACMTriple(mainPanelDevice) -- Triple indicator lights for ACM (Seam/Collision/Hot Trig) - local stringOutput = "" - if mainPanelDevice:get_argument_value(9203) == 1 then stringOutput = stringOutput .. "\n\n" else stringOutput = stringOutput .. "██████████\n\n" end - if mainPanelDevice:get_argument_value(9202) == 1 then stringOutput = stringOutput .. "\n\n\n" else stringOutput = stringOutput .. "â–„â–„â–„â–„â–„â–„â–„â–„â–„â–„\n▀▀▀▀▀▀▀▀▀▀\n\n" end - if mainPanelDevice:get_argument_value(9201) == 1 then stringOutput = stringOutput .. "." else stringOutput = stringOutput .. "██████████" end - ExportScript.Tools.SendData(59201, stringOutput) -end - - -function ExportScript.masterArmSwitch(mainPanelDevice) -- Output Master Arm Position - if mainPanelDevice:get_argument_value(1047) == -1 then stringOutput = " ███\n |\n |\n\n ." - elseif mainPanelDevice:get_argument_value(1047) == 0 then stringOutput = " |\n ███\n |\n\n ." - else stringOutput = " |\n |\n ███\n\n ." + ]]-- + + + --[[ Method 2 + local chaffCountFirstDigitTenths = round(mainPanelDevice:get_argument_value(392) * 10,1) + local chaffCountFirstDigit = math.floor(chaffCountFirstDigitTenths) + + local differenceFirst = chaffCountFirstDigitTenths - chaffCountFirstDigit -- this number should be somewhere between 0.0 and 0.9 + if differenceFirst > 0.5 then --round up + chaffCountFirstDigit = math.ceil(chaffCountFirstDigitTenths) + else + chaffCountFirstDigit = math.floor(chaffCountFirstDigitTenths) end - ExportScript.Tools.SendData(51047, stringOutput) + + local chaffCountSecondDigitTenths = round(mainPanelDevice:get_argument_value(393) * 10,1) + local chaffCountSecondDigit = math.floor(chaffCountSecondDigitTenths) + + local differenceSecond = chaffCountSecondDigitTenths - chaffCountSecondDigit -- this number should be somewhere between 0.0 and 0.9 + if differenceSecond > 0.5 then --round up + chaffCountSecondDigit = math.ceil(chaffCountSecondDigitTenths) + else + chaffCountSecondDigit = math.floor(chaffCountSecondDigitTenths) + end + --]] + + --[[ + --ExportScript.Tools.SendData(5, chaffCount) + ExportScript.Tools.SendData(6, chaffCountFirstDigit) + ExportScript.Tools.SendData(7, chaffCountSecondDigit) + ExportScript.Tools.SendData(8, mainPanelDevice:get_argument_value(392)) + ExportScript.Tools.SendData(9, mainPanelDevice:get_argument_value(393)) + ExportScript.Tools.SendData(4, differenceFirst) + ExportScript.Tools.SendData(5, differenceSecond) + ]]-- end - -function ExportScript.ACMButtons(mainPanelDevice) -- Monitors two lights on diff. id's and outputs 1 or 0 to one id for (gun rate/SW cool/MSL prep/Mode stp) - if mainPanelDevice:get_argument_value(9204) == 1 then ExportScript.Tools.SendData(59204, 1) else ExportScript.Tools.SendData(59204, 0) end -- gun rate light - if mainPanelDevice:get_argument_value(9206) == 1 then ExportScript.Tools.SendData(59206, 1) else ExportScript.Tools.SendData(59206, 0) end -- sw cool light - if mainPanelDevice:get_argument_value(9208) == 1 then ExportScript.Tools.SendData(59208, 1) else ExportScript.Tools.SendData(59208, 0) end -- msl prep light - if mainPanelDevice:get_argument_value(9210) == 1 then ExportScript.Tools.SendData(59210, 1) else ExportScript.Tools.SendData(59210, 0) end -- msl mode stp light -end - - -function ExportScript.stationStatusFlags(mainPanelDevice) -- Display Station status flags 1 to 8 on ACM panel - local b - local a = 9221 - repeat - b = "5" .. a - ExportScript.Tools.SendData(b, ExportScript.drawStationStatusFlags(mainPanelDevice:get_argument_value(a))) - a = a + 1 - until( a > 9228) -end - - -function ExportScript.gunCounter(mainPanelDevice) -- Gun Counter - local gunCounter = ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4060)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4061)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4062)) - ExportScript.Tools.SendData(54060, "ROUNDS\n" .. gunCounter) -end - - -function ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group EIG - local EIGrpm = ExportScript.dualTapeString("RPM % x10", mainPanelDevice:get_argument_value(1057), mainPanelDevice:get_argument_value(1058)) - local EIGegt = ExportScript.dualTapeString("TIT C x100", mainPanelDevice:get_argument_value(1059), mainPanelDevice:get_argument_value(1060)) - local EIGff = ExportScript.dualTapeString("FF PPH x1000", mainPanelDevice:get_argument_value(1061), mainPanelDevice:get_argument_value(1062)) - ExportScript.Tools.SendData(51057, EIGrpm) -- Engine RPM - ExportScript.Tools.SendData(51059, EIGegt) -- Engine TIT (Exhaust Gas Temp) - ExportScript.Tools.SendData(51061, EIGff) -- Engine Fuel Flow -end - - -function ExportScript.engOilPressure(mainPanelDevice) - local rOilPress = mainPanelDevice:get_argument_value(1065) * 90 -- Right Engine Oil Pressure - local lOilPress = mainPanelDevice:get_argument_value(1066) * 90 -- Left Engine Oil Pressure - ExportScript.Tools.SendData(51065, "L " .. string.format("%d", lOilPress) .. " psi\nEng. Oil\n" .. "R " .. string.format("%d", rOilPress) .. " psi") -end - - -function ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge (tape) ------------------------------------------------ - local lNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1068) * 5)) - local rNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1067) * 5)) - local a = 5 - local b = 0 - local buildDisplay = "Exh. Nozz.\n" - repeat - b = a - 0.5 - buildDisplay = buildDisplay .. (a - 1) - if lNoz >= a then buildDisplay = buildDisplay .. " â–ˆ " elseif lNoz >= b then buildDisplay = buildDisplay .. " â–„ " else buildDisplay = buildDisplay .. " _ " end - if rNoz >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rNoz >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end - buildDisplay = buildDisplay .. "\n" - a = a - 1 - until( a < 1 ) - ExportScript.Tools.SendData(51068, buildDisplay) -end - - -function ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic pressure indicator A3 ------------------------------------------------ - local hydComb = string.format("%d", (mainPanelDevice:get_argument_value(1063) * 4000)) - local hydFlt = string.format("%d", (mainPanelDevice:get_argument_value(1064) * 4000)) - local spoilFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1023)) - local hiFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1024)) - local lowFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1025)) - local hydPressGauge = "HYD PRESS\n" .. "C. " .. hydComb .. " psi\nF. " .. hydFlt .. " psi\n\n" .. spoilFlag .. "|" .. hiFlag .. "|" .. lowFlag - ExportScript.Tools.SendData(51063, hydPressGauge) - local hydPressFlags = "HYD PR. psi\nComb | Flight\n" .. hydComb .. " | " .. hydFlt .. "\n Spo / HI / LW\n" .. spoilFlag .. " | " .. hiFlag .. " | " .. lowFlag - ExportScript.Tools.SendData(51023, hydPressFlags) -end - - function ExportScript.clockAndTimer(mainPanelDevice) -- Clock and timer on panel A9 ---------------------------------------------------- local minutes = string.format("%d", mainPanelDevice:get_argument_value(1097) * 60) if string.len(minutes) < 2 then @@ -1395,7 +2248,6 @@ function ExportScript.displayAccel(mainPanelDevice) -- Accelerometer gauge forma accelGauge = "Accel.G\n+" .. string.format("%.1f", needlePos) .. " G\n-| " .. string.format("%.1f", needle) .. " G |-\n" .. string.format("%.1f", needleNeg) .. " G" ExportScript.Tools.SendData(50110, accelGauge) end - function ExportScript.displayAccelCheckValue(accelValue) -- Called from ExportScript.displayAccel() ------------------------------------ if accelValue >= 0 then return accelValue * 10 @@ -1404,6 +2256,39 @@ function ExportScript.displayAccelCheckValue(accelValue) -- Called from ExportSc end end +function ExportScript.dualTapeString(title, leftTape, rightTape) -- Creates a dual vertical bar tape for custom gauge + -- Receives title as string + -- Receives a value from 0.00 to 1.00 that represents a percentage from 0% to 100% of the tape, 0.25 is 1/4 up the tape etc.. + -- Returns a string that shows 2 tapes in a "somewhat" graphical format using extended ascii characters. + local a = 5 + local b = 0 + leftTape = tonumber(string.format("%.1f", (leftTape * 10) / 2 )) + rightTape = tonumber(string.format("%.1f", (rightTape * 10) / 2 )) + local buildDisplay = title .. "\n" + repeat + b = a - 0.5 + if leftTape >= a then buildDisplay = buildDisplay .. "â–ˆ " elseif leftTape >= b then buildDisplay = buildDisplay .. "â–„ " else buildDisplay = buildDisplay .. "_ " end + if rightTape >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rightTape >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end + buildDisplay = buildDisplay .. "\n" + a = a - 1 + until( a < 1 ) + return buildDisplay +end +function ExportScript.drawStationStatusFlags(flagValue) -- Takes a 0/1/0.45 and draws nothing/white/checker flag and returns + local returnString + if flagValue > 0.5 then returnString = "█████\n▀▀▀▀▀\n\n." elseif flagValue > 0.4 then returnString = "▀▄▀▄▀\nâ–€ â–€ â–€\n\n." else returnString = "" end + return returnString +end + +function ExportScript.stationStatusFlags(mainPanelDevice) -- Display Station status flags 1 to 8 on ACM panel + local b + local a = 9221 + repeat + b = "5" .. a + ExportScript.Tools.SendData(b, ExportScript.drawStationStatusFlags(mainPanelDevice:get_argument_value(a))) + a = a + 1 + until( a == 9229) +end function ExportScript.displayFuel(mainPanelDevice) -- Fuel Gauges and output on A9 and B7 ---------------------------------------------- --[[FUEL Exports Formatted @@ -1445,4 +2330,29 @@ function ExportScript.displayFuel(mainPanelDevice) -- Fuel Gauges and output on ExportScript.Tools.SendData(56010, "FUEL\n" .. totalFuel .. "\nQTY") -- Return Total Fuel Qty Formatted like F-14 Gauge ExportScript.Tools.SendData(56020, "BINGO\n" .. bingoFuel) -- Return Total Bingo Fuel Qty Formatted like F-14 Gauge ExportScript.Tools.SendData(56024, "BINGO " .. bingoFuel .. "\nTOTAL " .. totalFuel .. "\n" .. aftAndL .. " | " .. fwdAndR .. "\n L | R \n" .. leftFuel .. " | " .. rightFuel) -- Nice Multi Gauge +end + +----------------------- +-- General Functions -- +----------------------- + +function ExportScript.Linearize(current_value, raw_tab, final_tab) + -- (c) scoobie + if current_value <= raw_tab[1] then + return final_tab[1] + end + for index, value in pairs(raw_tab) do + if current_value <= value then + local ft = final_tab[index] + local rt = raw_tab[index] + return (current_value - rt) * (ft - final_tab[index - 1]) / (rt - raw_tab[index - 1]) + ft + end + end + -- we shouldn't be here, so something went wrong - return arbitrary max. final value, maybe the user will notice the problem: + return final_tab[#final_tab] +end + +function round(num, numDecimalPlaces) --http://lua-users.org/wiki/SimpleRound + local mult = 10^(numDecimalPlaces or 0) + return math.floor(num * mult + 0.5) / mult end \ No newline at end of file diff --git a/ExportsModules/F-14B_nosaMtrevoC.lua b/ExportsModules/F-14B_nosaMtrevoC.lua new file mode 100644 index 0000000..2996807 --- /dev/null +++ b/ExportsModules/F-14B_nosaMtrevoC.lua @@ -0,0 +1,1448 @@ +--[[ + ,d ,d + 88 88 +MM88MMM ,adPPYba, 88,dPYba,,adPYba, ,adPPYba, ,adPPYYba, MM88MMM + 88 a8" "8a 88P' "88" "8a a8" "" "" `Y8 88 + 88 8b d8 88 88 88 8b ,adPPPPP88 88 + 88, "8a, ,a8" 88 88 88 "8a, ,aa 88, ,88 88, + "Y888 `"YbbdP"' 88 88 88 `"Ybbd8"' `"8bbdP"Y8 "Y888 F-14B Tomcat Export Script DCS World +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ version: 0.11 █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Created by: nosaMtrevoC of ED Forums (dt1) + +If you find any errors/ommissions or have any questions in general and for updates, please see this thread on ED Forums: +https://forums.eagle.ru/showthread.php?p=4387597#post4387597 + +For use with DCS-ExportScripts plugin https://github.com/charlestytler/streamdeck-dcs-interface (Awesome work) +Special ID's for ctytler's Stream Deck plugin (requires ExportScripts) at https://github.com/charlestytler/streamdeck-dcs-interface (Also Awesome) + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ ŦЋÄnk ȲÅÅ« █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Thanks GunSlingerAUS & Phoenix FR of ED Forums for providing me with the F-14 Module to make this possible, it was a nice jester (sic). + +Testers (if you would like to help make this better, please see: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 for more info) + +[TESTER]____________________ [Description]_________________________________________________________________________________________________________ +Arbil Approach Indexer Lights, ACM Panel gauges and lights for full ACM +Chacal IX ACM Panel Testing + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Changelog █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Version 0.11 - Matched most of the missing ID's, fixed error in ACM Panel (Chacal IX) +Version 0.10 - Matched many more ID's (not tested) for panels: A6b/A6c/A7, Created All Graphic Icons for panel A6a ACM Panel, App. Indexer Icons + Custom Station Weap. Flags output for ACM, ACM Switch, Master Arm Switch, Gun Rate Code, code for SW Cool/MSL Prep/MODE stp switch + testing ACM Panel items on Stream deck and creating profiles, Triple Indicator code and icons, Master Caution Button/Light, + L & R Fire Lights, Slip/Ball Indicator Gauge, fill icons for stream deck, testing, A6a ACM Panel completed w/StmDeck Prof. & Icons +Version 0.09 - Created 298 conifg Arguments and documentation for all pilot panels Left: A1a/A1b/A2/A4/A5/A6a/A6b/A6c/A6d/A7/A8/A10/A11a/A11b/12 + Formatting, Matched most DCS ID's (not tested) for panels: A1a/A1b/A2/A6a +Version 0.08 - Formatting, Arresting Hook handle/emerg.Handle/Light, Gun Ammun. Counter knob, gun rounds counter +Version 0.07 - Create tape function for vertical tape displays, created engine RPM Tape and BG Icon, EIG Eng. Temp on A3, EIG Fuel Flow on A3 +Version 0.06 - 2 Hydraulic Press. Gauges on A3 (51023 & 51063), added Engine Nozzle Tape A3, engine oil press. gauge +Version 0.05 - Formatting, Added Bingo Knob, Accelerometer Reset, Clock Wind, Clock Start/Stop/Reset, fixed error in Timer, A9 Panel Complete +Version 0.04 - More formatting, added Aft&L/Fwd&R fuselage fuel info, added Accelerometer gauge, added clock and timer gauge, Added Cockpit Refs. +Version 0.03 - Organization of Cockpit and RIO areas in this file for organizational purposes (ease of use) +Version 0.02 - Added formatted fuel output for location A9 +Version 0.01 - Initial Layout and formatting of .lua file along with organization outside this file of all functions ID's calls etc.. + +[Currently working on]_____________________________________________________________________________________________________________________________ +Pilot Cockpit config arguments + +[To-Do] +Fuel Warning indicators (example low fuel / Bingo fuel) for multi-gauge and fuel gauges +Background images for EIG TIT and FF tapes +Problem with Title string not showing in ExportScript.dualTapeString() +Installation instructions + VS Code + copy .lua to proper directory + load and test script (with special id for testing) + how-to display a stream deck gauge (custom id) background image in folder and font size + how to setup a button or switch for a panel + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Formatted for Stream Deck █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Extra ID's created for nice formatted output on Stream Deck See ID Guide Below: + +[ID]______ [Ref]__ [Description]__________________________ [Status]_______ [Output e.g.]___________________________________________________________ + +51057 A3 EIG - Engine RPM L & R tape working NOTE: need "F-14B_A3_RPM.png" included as background (shows vert. tape) +51059 A3 EIG - Engine Exhaust Temperature working NOTE: need "F-14B_A3_TIT.png" included as background (shows vert. tape) +51061 A3 EIG - Fuel flow tape working NOTE: need "F-14B_A3_FF.png" included as background (shows vert. tape) +51023 A3 Hydraulic Pressure Gauge and Flags 1 working +51063 A3 Hydraulic Pressure Gauge and Flags 2 working +51065 A3 Engine Oil Pressure Gauges working L 42 psi | Eng. Oil | R 42 psi +51068 A3 Engine Nozzle position gauge (tape) working (shows a graphical vertical tape) +--------------------------------------------------------------------------------------------------------------------------------------------------- + A4 Radar Altimiter w/Bug & Flag & inHg â–ˆ In Development â–ˆ + A4 Servopneumatic Altimiter â–ˆ TODO â–ˆ +--------------------------------------------------------------------------------------------------------------------------------------------------- +51047 A6a Master Arm 3 way switch working outputs a graphical 3 way switch to be used with included icons (font9) +56501 A6a Slip/Ball Indicator working outputs slip and ball gauge +59201 A6a ACM seam/coll./hot trig light working outputs masks to show/hide triple warning light in one button +59204 A6a Gun Rate HIGH|LOW Light working outputs 1 or 0 to monitor HIGH|LOW Gun Rate light (usually two IDs) +59206 A6a SW Cool Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) +59208 A6a MSL Prep Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) +59210 A6a MSL Mode Light NORM|BRSIT working outputs 1 or 0 to monitor light (usually two IDs) +59221 A6a Station Status Flag 1A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59222 A6a Station Status Flag 1B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59223 A6a Station Status Flag 3 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59224 A6a Station Status Flag 4 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59225 A6a Station Status Flag 5 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59226 A6a Station Status Flag 6 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59227 A6a Station Status Flag 8B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59228 A6a Station Status Flag 8A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +--------------------------------------------------------------------------------------------------------------------------------------------------- +50110 A9 Accelerometer Gauge +/- G & current G working 5 G | 1 G | -2G +51096 A9 Clock and Timer Gauge working Clock | 10 15 | Timer | 4 23 21 +51054 A9 Aft & L-left feed & aft fuselage Thanks working AFT & L | 6500 | LBS +51055 A9 Fwd & R-right feed & fwd fuselage tanks working FWD & R | 6500 | LBS +56000 A9 Left Fuel Gauge in lbs working 4000 lbs +56004 A9 Right Fuel Gauge in lbs working 4000 lbs +56010 A9 Total Fuel Gauge in lbs working 15200 lbs +56020 A9 Bingo Fuel Guage in lbs working 04000 lbs +56024 A9 Multi Fuel Guage Custom working Shows all relevant fuel output totals in a single stream deck button +--------------------------------------------------------------------------------------------------------------------------------------------------- +54060 A10 Gun Rounds Ammunition Counter working ROUNDS | 670 +--------------------------------------------------------------------------------------------------------------------------------------------------- +52117 B7 RIO Total Fuel Gauge in lbs working 15000 lbs + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Stream Deck References █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +The following references (with a picture) can be found (as of June 15, 2020) in Chapter 2 (Cockpit Overview) first 2 pages (pg10 and pg11) of +the F-14B manual. This manual is located in the C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\F14\Docs Directory as a .pdf +Can also be found in the official thread for this script at: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 + +Anywhere the following Descriptors can be found, they refer to this table in that portion of the manual +e.g. [A9] Pilot-Right Knee Panel describes A as Pilot Cockpit (instead of B RIO Cockpit) and 9 in the table on pg 10 (also below) which is the Right +Knee Panel where the fuel and accelerometer and clock are. + + ________________________________________________________________________________________________________ + | | + | [Ref]_ [Position]_ [Description]__________________| [Ref]_ [Position]_ [Description]___________________| + | | | + | A1 Pilot Left Side Console | B1 RIO Left Side Console | + | A2 Pilot Left Vertical Console | B2 RIO Left Vertical Console | + | A3 Pilot Left Knee Panel | B3 RIO Left Instrument Panel | + | A4 Pilot Left Instrument Panel | B4 RIO Center Panel | + | A5 Pilot Left Windshield Frame | B5 RIO Center Console | + | A6 Pilot Center Panel | B6 RIO Left and Right Footwells | + | A7 Pilot Right Windshield Frame | B7 RIO Right Instrument Panel | + | A8 Pilot Right Instrument Panel | B8 RIO Right Knee Panel | + | A9 Pilot Right Knee Panel | B9 RIO Right Vertical Console | + | A10 Pilot Right Vertical Console | B10 RIO Right Side Console | + | A11 Pilot Right Side Console | B11 RIO Canopy Control Handle | + | A12 Pilot Canopy Control Handle | | + |___________________________________________________|____________________________________________________| + + +Description Guide:__________________________________________________________________________________________________________________________________ +[BUTTON ID: 3043 / DEVICE ID: 26] - Clock Timer Start/Stop/Reset Button - {28.1, 31.0}{0.0, 1.0} +Button ID: Used in Stream Deck "Button ID:" +Device ID: Used in Stream Deck "Device ID" Note: this is not DCS ID +- Description of button - +{min gauge value, max gauge value}{stored/variable min value, stored/variable max value} + + +]] +ExportScript.FoundDCSModule = true +ExportScript.Version.F14 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] +-- PILOT COCKPIT ------------------------------------------------------------------------------ + + -- [NEEDS TESTING] ------------------------------------------------------------------------ + + + -- [END NEEDS TESTING] -------------------------------------------------------------------- + + + -- [In Development / Testing] ------------------------------------------------------------- + +-- A1a + -- Volume/TACAN Command Panel + [2040] = "%.4f", -- ALR-67 Knob controls audio volume to pilot + [2039] = "%.4f", -- SW knob volume of sidewinder audio tone to pilot + [2038] = "%.4f", -- V/UHF 2 knob audio from AN/ARC-182 to pilot + [0] = "%.4f", -- TACAN CMD switch sets crew member in command of Tacan + + -- ICS Control Panel + [2048] = "%.4f", -- VOL knob from RIO to pilot + [2045] = "%.4f", -- AMP selection knob (B/U|NORM|EMER) + [2044] = "%.4f", -- ICS switch (RADIO OVERRIDE|HOT MIC|COLD MIC) + + -- AFCS Control Panel + [2106] = "%.4f", -- PITCH switch enables stability augmentation + [2107] = "%.4f", -- ROLL switch enables stability augmentation + [2108] = "%.4f", -- YAW switch enables stability augmentation + [2109] = "%.4f", -- VEC/PCD/ACL switch (VEC/PCD|OFF|ACL) + [2110] = "%.4f", -- ALT switch (ON|OFF) + [2111] = "%.4f", -- HDG switch (HDG|OFF|GT) + [2112] = "%.4f", -- ENGAGE switch (ENGAGE|OFF) + + -- ASYM Limiter/Engine Mode Select + [16006] = "%.4f", -- ASYM LIMITER switch (ON|OFF) + [16005] = "%.4f", -- ASYM LIMITER cover + [16007] = "%.4f", -- L ENG MODE SELECT (PRI|SEC) + [16008] = "%.4f", -- R ENG MODE SELECT (PRI|SEC) + + [0] = "%.4f", -- Target Designate swith to designate ground targ. on HUD (up/down/forward designate) + + -- Inlet Ramps/Throttle Control Panel + [2104] = "%.4f", -- THROTTLE MODE (AUTO|BOOST|MAN) + [2103] = "%.4f", -- THROTTLE TEMP (HOT|NORM|COLD) + [2100] = "%.4f", -- L INLET RAMP (STOW|AUTO) + [2101] = "%.4f", -- R INLET RAMP (STOW|AUTO) + [2102] = "%.4f", -- ENG CRANK (L|R) + [0] = "%.4f", -- BACK UP IGNITION (ON|NORM) + [0] = "%.4f", -- RUDDER TRIM (L|R) + + + + +-- A1b + -- Oxygen Vent Airflow Control Panel + [0] = "%.4f", -- VENT AIRFLOW dial + [8114] = "%.4f", -- OXYGEN switch (ON|OFF) + + -- TACAN Control Panel + [8888] = "%.4f", -- Dual rotary switch Outer Dial + [8889] = "%.4f", -- Dual rotary switch Inner Dial + [0] = "%.4f", -- TACAN channel 3 digit + [8050] = "%.4f", -- Status Go + [8051] = "%.4f", -- Status NO-GO + [2115] = "%.4f", -- BIT button initiating TACAN BIT + [2043] = "%.4f", -- NORMAL MODE switche (X|Y) + [2036] = "%.4f", -- VOL knob for TACAN audio to pilot + [2041] = "%.4f", -- MODE konb (OFF|REC|T/R|A/A|BCN) + [2042] = "%.4f", -- MODE (NORMAL|INVERSE) + + -- UHF 1 (AN/ARC-159) Radio + [2031] = "%.4f", -- VOL knob controls radio to pilot vol. + [2035] = "%.4f", -- SQL switch squelch (ON|OFF) + [2030] = "%.4f", -- Freq. Select Switch 1 + [2029] = "%.4f", -- Freq. Select Switch 2 + [2028] = "%.4f", -- Freq. Select Switch 3 + [2026] = "%.4f", -- Freq. Select Switch 4 + [0] = "%.4f", -- FREQ/(CHAN) display ??? (maybe the switch values above???) + [8115] = "%.4f", -- READ button + [2027] = "%.4f", -- BRT knob display brightness + [16009] = "%.4f", -- LOAD button + [2034] = "%.4f", -- Function selector knob (ADF|BOTH|MAIN|OFF) + [2032] = "%.4f", -- CHAN SEL knob selects preset channels + [2033] = "%.4f", -- Mode selector knob (GUARD|MANUAL|PRESET) + [16010] = "%.4f", -- TONE button transmits tone on freq. + + -- Throttle Buttons + [0] = "%.4f", -- Speed Brake switch (EXT|RET) + [0] = "%.4f", -- Wing Sweep switch (AUTO|FWD|AFT|BOMB) + [0] = "%.4f", -- PLM button lockon + [0] = "%.4f", -- CAGE/SEAM button lockon + [0] = "%.4f", -- Exterior Light switch (ON|OFF) + [0] = "%.4f", -- ICS PIT switch (ICS|BOTH|UHF1|UHF2) + + + + +-- A2 + -- Fuel Management Panel + [1076] = "%.4f", -- QTY SEL Switch (FEED|WING|EXT) + [1095] = "%.4f", -- Select Fuel Feed to engines (FWD|NORM|AFT) + [1094] = "%.4f", -- Fuel feed cover + [1001] = "%.4f", -- WING/EXT Transfer (ORIDE|AUTO|OFF) + [15002] = "%.4f", -- Refueling Probe Indicator Light + [1074] = "%.4f", -- Fuel Dump Switch (OFF|DUMP) + [1073] = "%.4f", -- Refuel Probe Switch (ALL EXTD|FUS EXTD|RET) + [1072] = "%.4f", -- Anti skid spoiler bk switch (BOTH|OFF|SPOILER BK) + [1071] = "%.4f", -- MASTER RESET button resets CADC failure + + -- Control surface position indicator + [0] = "%.4f", -- L SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing 8315-8322 + [0] = "%.4f", -- C SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing + [0] = "%.4f", -- R SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing + [1092] = "%.4f", -- RUDDER position indicators Left + [1093] = "%.4f", -- RUDDER position indicators Right + [1090] = "%.4f", -- HORIZ. STAB. Position indicator Left + [1091] = "%.4f", -- HORIZ. STAB. Position indicator Right + + -- Landing Gear Control Panel + [326] = "%.4f", -- Landing Gear Handle (UP|DOWN) + [16015] = "%.4f", -- Landing Gear Emer. Extension + [631] = "%.4f", -- HYD ISOL (FLT|T.O.LDG) + [999] = "%.4f", -- Transition Light + [0] = "%.4f", -- EMERG STORES button (illuminates when pressed) + [0] = "%.4f", -- EMERG STORES light ??? + [1075] = "%.4f", -- NOSE STRUT switch (EXTD|OFF|KNEEL) + [237] = "%.4f", -- Brake Pull Handle + [2049] = "%.4f", -- EJECT CMD Indicator (PILOT|MCO) + + -- Wheels-Flaps Pisition Indicator + [8302] = "%.4f", -- Left Landing Gear Indicator + [8305] = "%.4f", -- Right Landing Gear Indicator + [8301] = "%.4f", -- Nose Landing Gear Indicator + [0] = "%.4f", -- SPD BK Indicator + [8310] = "%.4f", -- Slats Indicator + [8311] = "%.4f", -- Flaps Indicator + + + + + +-- A4 + -- Radar Altimiter + [103] = "%.4f", -- Radar Altimeter needle + [308] = "%.4f", -- Radar Altimeter Control Knob + [2123] = "%.4f", -- Radar Altimeter Bug + [2124] = "%.4f", -- Radar Altimeter OFF Flag + [4154] = "%.4f", -- Radar Altimeter Bug + [16020] = "%.4f", -- Radar Altimeter Knob Push + [19108] = "%.4f", -- Radar Altimeter Test Light + + -- Servopneumatic Altimeter + [0] = "%.4f", -- Altimeter readout 112/262/300-304 + [104] = "%.4f", -- Altimeter Baro readout + [306] = "%.4f", -- Baroset knob sets local press. in in.Hg + [0] = "%.4f", -- Local barometric pressure (Kollsman Window) + [307] = "%.4f", -- Mode switch + + -- Airspeed Mach Indicator + [0] = "%.4f", -- Airspeed dial ??? + [0] = "%.4f", -- Indicated airspeed scale (outer) ??? + [0] = "%.4f", -- Indicated airspeed scale (inner) ??? + [0] = "%.4f", -- Mach number scale ??? + [0] = "%.4f", -- Indicated airspeed index pointer ??? + [0] = "%.4f", -- Mach Number index pointer ??? + [0] = "%.4f", -- Safe Mach number index pointer ??? + [0] = "%.4f", -- Index knob pushed in ??? + [0] = "%.4f", -- Index knob pulled out ??? + + [0] = "%.4f", -- Vertical Velocity Indicator + [0] = "%.4f", -- Left Engine Fuel Shutoff Handle + [0] = "%.4f", -- Angle of Attack Indicator + + + + + +-- A5 + [9356] = "%.4f", -- LEFT Eng. Stall Indicator + + [9350] = "%.4f", -- WHEELS warning + [9351] = "%.4f", -- BRAKES warning - antiskid or brake fail / parking break + [9352] = "%.4f", -- ACLS/AP - ACLS or AP disengaged + [9353] = "%.4f", -- NWS ENGA - nosewheel steering engaged + [9354] = "%.4f", -- AUTO THROT - disengagement of auto throttle + + + + + + +-- 6b + -- Vertical Display Indicator (VDI) + [1037] = "%.4f", -- HUD Brightness Control + [1036] = "%.4f", -- VDI Brightness Control + [1038] = "%.4f", -- VDI Contrast Control + [1033] = "%.4f", -- FILTER Handle when pulled inserts filter for night ops + [1034] = "%.4f", -- HUD Trim control for pitch lines + [1035] = "%.4f", -- VDI Trim adjustment of pitch lines on VDI + + -- VDI Caution Lights (also check 2222 id range if below not working) + [9360] = "%.4f", -- ADJ A/C Advisory light indicating other aircraft close to own traffic pattern. + [9361] = "%.4f", -- LANDING CHK Advisory light indicating carrier has a channel + [9362] = "%.4f", -- ACL READY indicating CATCC has aquired aircraft + [9363] = "%.4f", -- A/P CPLR indicating CATCC is ready to control aircraft. + [9364] = "%.4f", -- CMD CONTROL aircraft is under data link control for landing. + [9365] = "%.4f", -- 10 SECONDS waypoint and carrier motion info + [9366] = "%.4f", -- TILT no data link command received for the last 2 sec + [9367] = "%.4f", -- VOICE - CATCC not ready for ACL + [9368] = "%.4f", -- AUTO Throttle + [9369] = "%.4f", -- A/P REF autopilot selected but not engaged. + [15070] = "%.4f", -- WAVEOFF Warning light indicating waveoff commanded. 2222/15070 + [15071] = "%.4f", -- WING SWEEP failure in both wing-sweep channels + [15072] = "%.4f", -- REDUCE SPEED flap retraction failure + [15073] = "%.4f", -- ALT LOW Non functional, light on radar altimeter is used instead + + + + +-- 6c + -- Horizontal Situation Display Indicator (HSD) + [1043] = "%.4f", -- BRT controls HSD Brightness + [1039] = "%.4f", -- HDG controls heading reference bug in TACAN mode + [1040] = "%.4f", -- CRS controls cour in MAN and TACAN mode + [1041] = "%.4f", -- TEST allows reset of HSD + + [0] = "%.4f", -- BIT indicator failure in HSD (shows flags ???) + [0] = "%.4f", -- Bit Indicator knob ??? + + + + +-- 6d + -- Center Panel at bottom + [0] = "%.4f", -- Cabin Pressure Altimeter in 1,000 foot increments (0-50,000') 935|2210 + [0] = "%.4f", -- Emerg. Brake Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 999|9260 + [0] = "%.4f", -- Emerg. Aux Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 9261 + + + + +-- A7 + [9355] = "%.4f", -- Right Eng. STALL + + -- ECM Warning Lights + [9357] = "%.4f", -- SAM - steady when lock from SAM / Flashes when missle launch + [9358] = "%.4f", -- AAA - steady when lock from AAA / Flashes on missle launch + [9359] = "%.4f", -- AI - steady when lock from airborne radar + + [15097] = "%.4f", -- Standby Compass + + + + +-- A8 + [0] = "%.4f", -- Wing Sweep Indicator 404|405|507|508|2001|2002 flags: 15091-15095 + [0] = "%.4f", -- Right Engine Fuel Shutoff Handle + [0] = "%.4f", -- Standby Attitude Indicator ?? + + -- UHF/VHF Remote Indicators + [0] = "%.4f", -- UHF 1 frequency display + [0] = "%.4f", -- UHF 1 TEST button displays 888.888 if good + [0] = "%.4f", -- UHF 1 DIM controls display brightness + [0] = "%.4f", -- V/UHF 2 frequency display + [0] = "%.4f", -- V/UHF 2 TEST button displays 888.888 if good + [0] = "%.4f", -- V/UHF 2 BRT controls display brightness + + [353] = "%0.1f", -- VHF/UHF ARC-182 Freq Mode (UHF GUARD|V/UHF|V/UHF GUARD|PRESET|V/UHF|LOAD?) -- Bailey + + -- Bearing Distance Heading Indicator BDHI + [0] = "%.4f", -- No. 2 Bearing Pointer magnetic course to TACAN station + [0] = "%.4f", -- Compass Rose magnetic heading + [0] = "%.4f", -- No. 1 bearing pointer magnetic course to UHF/ADF station + [0] = "%.4f", -- Distance Counter in nautical miles + + -- ALR-67 Indicator + [0] = "%.4f", -- INT knob intensity brightness + + [224] = "%.4f", -- Canopy Jettison Handle + + + + + +-- A10 + -- Displays Control Panel + -- Steering Commands Selectors + [1002] = "%.4f", -- TACAN - Selects TACAN as steering command source + [1003] = "%.4f", -- DEST - Selects RIO set waypoint as steering command source + [1004] = "%.4f", -- AWL/PCD - All weather landing/prec. course direction + [1005] = "%.4f", -- VEC - Vector, selects data link deviation steering as source + [1006] = "%.4f", -- MAN - Manual, selects manually selected course and heading + + -- Mode Selectors + [1015] = "%.4f", -- T.O. Takeoff mode + [1014] = "%.4f", -- CRUISE mode + [1013] = "%.4f", -- A/A Air-to-Air mode + [1012] = "%.4f", -- A/G Air-to-Ground mode + [1011] = "%.4f", -- LDG Landing Mode + + -- HUD + [1021] = "%.4f", -- DeClutter Mode for HUD (ON|OFF) + [1020] = "%.4f", -- Which AWL to display on HUD Switch (ILS|ACL) + + -- VDI + [1019] = "%.4f", -- TV Displays video from TCS or LANTIRN or NORM (TV|NORM) + [1018] = "%.4f", -- Which AWL to display on VDI (ILS|ACL) + + -- HSD + [1016] = "%.4f", -- HSD Mode (NAV|TID) nav display or TID repeats RIO TID Info + [1017] = "%.4f", -- ECM (ORIDE|OFF) [NOT USED/MODELED] + + -- Power Switches + [1010] = "%.4f", -- VDI (ON|OFF) + [1009] = "%.4f", -- HUD (ON|OFF) + [1008] = "%.4f", -- HSD/ECMD (ON|OFF) + + -- Pitch LAD BRT Knob + [1007] = "%.4f", -- Controls brightness of pitch ladder on HUD + -- END Displays Control Panel + + -- gun elevation lead in mils + [2270] = "%.4f", -- Hundreds Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2271] = "%.4f", -- Tens Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2272] = "%.4f", -- Ones Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2273] = "%.4f", -- Knob adjust counter + + + + +-- 11a + -- Spoiler Failure Override + [902] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) COVER + [903] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) COVER + [908] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) + [907] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) + + -- Caution Advisory Indicator + [15037] = "%.1f", -- PITCH STAB 1 - inoperative pitch channel + [15040] = "%.1f", -- PITCH STAB 2 - inoperative pitch channel + [15039] = "%.1f", -- ROLL STAB 1 - inoperative roll channel + [15056] = "%.1f", -- ROLL STAB 2 - inoperative roll channel + [15025] = "%.1f", -- YAW STAB OP - one inoperative yaw channel + [15026] = "%.1f", -- YAW STAB OUT - two inoperative yaw channels + [15031] = "%.1f", -- EMERG JETT - caution activation of emerg stores jett button + [15050] = "%.1f", -- LADDER - boarding ladder not correctly stowed + [15052] = "%.1f", -- INLET ICE - accumulation of ice on ice detector in L eng. + [15046] = "%.1f", -- FLAP - failure in flap system or flaps down & speed > 225k + [15047] = "%.1f", -- HZ TAIL AUTH - failure of lateral tail auth. actuator + [15053] = "%.1f", -- RUDDER AUTH - failure of rudder auth. actuator + [15057] = "%.1f", -- SPOILERS - spoiler sys failure + [15041] = "%.1f", -- AUTO PILOT - A/P failure + [15054] = "%.1f", -- Left INLET - AICS programmer and/or system failure + [15051] = "%.1f", -- Right INLET - AICS programmer and/or system failure + [15048] = "%.1f", -- OIL PRESS - left or right engine oil press. < 11psi + [15038] = "%.1f", -- BLEED DUCT - high temp air leak in engine comp. + [15049] = "%.1f", -- LEFT RAMPS - ramps not locked in pos. + [15044] = "%.1f", -- RIGHT RAMPS - ramps not locked in pos. + [15063] = "%.1f", -- START VALVE - starter solenoid air valve is open + [15061] = "%.1f", -- LEFT ENG SEC - engin AFTC is in secondary mode + [15064] = "%.1f", -- RIGHT ENG SEC - engin AFTC is in secondary mode + [15016] = "%.1f", -- LEFT GEN - respective engine generator inoperative + [15020] = "%.1f", -- RIGHT GEN - respective engine generator inoperative + [15027] = "%.1f", -- CANOPY - canopy is not own and locked + [15033] = "%.1f", -- BINGO - aircraft fuel qty at or below set bingo + [15017] = "%.1f", -- LEFT OIL HOT - respective eng. oil is too hot + [15022] = "%.1f", -- RIGHT OIL HOT - respective eng. oil is too hot + [15028] = "%.1f", -- CADC - air data computer failure + [15034] = "%.1f", -- HYD PRESS - press. in either engine hyd. < 2,100 psi + [15018] = "%.1f", -- LEFT FUEL PRESS - press. < 9 psi in respective fuel pump + [15021] = "%.1f", -- RIGHT FUEL PRESS - press. < 9 psi in respective fuel pump + [15029] = "%.1f", -- LEFT FUEL LOW - fuel < 1000 lbs in aft and left tank + [15035] = "%.1f", -- RIGHT FUEL LOW - fuel < 1000 lbs in fwd and righ tank + [15023] = "%.1f", -- WING SWEEP - failure of a single channel in wing sweep + [15062] = "%.1f", -- RATS - RATS enabled + [15058] = "%.1f", -- TRANS/RECT - transformer rectifier failure + [15036] = "%.1f", -- MACH TRIM - failure in Mach trim actuator + [15030] = "%.1f", -- WSHLD HOT - central windshield overheat + [15045] = "%.1f", -- LAUNCH BAR - weight on wheels + [15060] = "%.1f", -- INTEG TRIM - trim failure + [15055] = "%.1f", -- AHRS - unreliable attitude or hdg info from AHRS + [15019] = "%.1f", -- ENG FIRE EXT - low press. in fire extenguisher + [15024] = "%.1f", -- AUX FIRE EXT - low press. in Aux. fire ext. + + -- Master Generator Control Panel + [937] = "%.4f", -- LEFT MASTER GEN switch (NORM|OFF/RESET|TEST) + [936] = "%.4f", -- RIGHT MASTER GEN switch (NORM|OFF/RESET|TEST) + [927] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) COVER + [926] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) + + -- Air Condition Control Panel + [940] = "%.4f", -- TEMP switch (AUTO|MAN) + [939] = "%.4f", -- CABIN PRESS switch (NORM|DUMP) + [938] = "%.4f", -- RAM AIR switch (INCR|DECR) + [929] = "%.4f", -- AIR SOURCE selection (RAM) + [930] = "%.4f", -- AIR SOURCE selection (L ENG.) + [931] = "%.4f", -- AIR SOURCE selection (R ENG.) + [932] = "%.4f", -- AIR SOURCE selection BOTH ENG.) + [933] = "%.4f", -- AIR SOURCE selection (OFF) + [950] = "%.4f", -- TEMP thumbwheel (1-14 COOL-WARM) + + -- External Environmental Control Panel + [942] = "%.4f", -- WIND SHIELD switch (AIR|OFF) + [941] = "%.4f", -- ANTI-ICE switch (ORIDE|AUTO|OFF) + + -- Hydraulic Transfer Pump Switch + [630] = "%.4f", -- Transfer Pump switch cover + [629] = "%.4f", -- HYD TRANSFER PUMP switch (NORMAL|SHUTOFF) + + + + + +-- 11b + -- Compass Control Panel + [0] = "%.4f", -- SYNC Indicator 2221? + [906] = "%.4f", -- N-S Switch hemisphere (N|S) + [909] = "%.4f", -- Lat Knob (0-90) + [1026] = "%.4f", -- Lat Knob (0-90) + [905] = "%.4f", -- Mode Switch AHRS Hdg Info (COMP|SLAVED|DG) + [904] = "%.4f", -- HDG Knob + [16014] = "%.4f", -- HDG Button + + -- ARA-63 Control Panel + [912] = "%.4f", -- Channel Selector (1 of 20 available ICLS channels) + [911] = "%.4f", -- BIT button + [910] = "%.4f", -- Power Switch (ON|OFF) + [910] = "%.4f", -- Power ON Light for ARA-63 (taken from power on/off switch) + + -- Master Light Control Panel + [923] = "%.4f", -- ANTI COLLISION switch (ON|OFF) + [919] = "%.4f", -- POSITION switch (FLASH|STEADY) + [916] = "%.4f", -- TAIL POSITION switch (DIM|OFF|BRT) + [913] = "%.4f", -- WING POSITION switch (DIM|OFF|BRT) + [15005] = "%.4f", -- ACM thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15006] = "%.4f", -- INDEXER thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15007] = "%.4f", -- INSTRUMENT thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15008] = "%.4f", -- CONSOLE thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15009] = "%.4f", -- FORMATION thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [915] = "%.4f", -- HOOK BYPASS (FIELD|CARRIER) + [918] = "%.4f", -- TAXI lights switch (ON|OFF) + [921] = "%.4f", -- WHITE FLOOD switch (OFF|DIM|BRT) + [924] = "%.4f", -- RED FLOOD switch (DIM|MED|BRT) + + -- Master Test Panel + [934] = "%.4f", -- MASTER TEST SELECTOR (OFF|LTS|FIRE DET/EXT|INST|OBC|EMERG GEN|MACH LEV|WG SWP|FLT GR DN|FLT GR UP|D/L RAD|STICK SW) + [15098] = "%.4f", -- MASTER TEST SELECTOR Knob Push + [15010] = "%.4f", -- GO light - light used in test to indicate go/no-go conditions of that system + [15011] = "%.4f", -- NO-GO light - light used in test to indicate go/no-go conditions of that system + [928] = "%.4f", -- EMERG FLT HYD (HIGH|LOW|AUTO(LOW)) + [615] = "%.4f", -- EMERG FLT HYD switch cover + + -- Canopy Defog/Cabin Air Lever + [0] = "%.4f", -- CABIN AIR + [0] = "%.4f", -- CANOPY DEFOG + + + + +-- 12 + [0] = "%.4f", -- Canopy Control Handle (BOOST|CLOSE|HOLD|OPEN|AUX OPEN) + + + -- [END In Development] ------------------------------------------------------------------- + -- ################################################################################################################################################################### + -- ################################################################################################################################################################### + + + + + + + + + + + + + -- [A1 Pilot - Left Side Console] --------------------------------------------------------- + -- [END A1] ------------------------------------------------------------------------------- + + -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- + -- [END A2] ------------------------------------------------------------------------------- + + -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- + + -- Electronic Instrument Group + [1057] = "%.4f", -- Engine RPM Left [STREAM DECK FORMAT: 51057] + [1058] = "%.4f", -- Engine RPM Right [STREAM DECK FORMAT: 51057] + [1059] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Left [STREAM DECK FORMAT: 51059] + [1060] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Right [STREAM DECK FORMAT: 51059] + [1061] = "%.4f", -- Engine Fuel Flow Left [STREAM DECK FORMAT: 51061] + [1062] = "%.4f", -- Engine Fuel Flow Right [STREAM DECK FORMAT: 51061] + + -- Hydraulic Pressure Indicator + [1063] = "%.4f", -- HYD_FlightHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] + [1064] = "%.4f", -- HYD_CombinedHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] + + -- Engine Oil Pressure Gauges + [1065] = "%.4f", -- Right Engine Oil Pressure [STREAM DECK FORMAT: 51065] + [1066] = "%.4f", -- Left Engine Oil Pressure [STREAM DECK FORMAT: 51065] + + -- Engine Exhaust Nozzle Position + [1067] = "%.1f", -- Right Nozzle [STREAM DECK FORMAT: 51068] + [1068] = "%.1f", -- Left Nozzle [STREAM DECK FORMAT: 51068] + + -- [END A3] ------------------------------------------------------------------------------- + + -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- + + -- [END A4] ------------------------------------------------------------------------------- + + -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- + + -- Approach Indexer + [3760] = "%d", -- Approach Indexer AOA Slow green light - {0, 1}{0, 1} + [3761] = "%d", -- Approach Indexer AOA optimum yellow light - {0, 1}{0, 1} + [3762] = "%d", -- Approach Indexer AOA fast red light - {0, 1}{0, 1} + + -- [END A5] ------------------------------------------------------------------------------- + + -- [A6a Pilot - Center Panel] ------------------------------------------------------------- + + -- ACM Switch + [1049] = "%d", -- ACM Switch Cover actives the ACM mode - {0, 1}{0, 1} [BUTTON ID:3133 / DEVICE ID:55 ] + [1048] = "%d", -- ACM JETT button jettison stores - {0, 1}{0, 1} [BUTTON ID:3138 / DEVICE ID:55 ] + + -- Master Arm Switch + [1046] = "%d", -- MASTER ARM cover - {0, 1}{0, 1} [BUTTON ID:3135 / DEVICE ID:55 ] + [1047] = "%d", -- MASTER ARM switch (OFF|ON|TNG) - {-1, 1}{-1, 1} [BUTTON ID:3136 / DEVICE ID:55 ] + + -- Turn and Slip Indicator 6a (Not sure how to do this at the moment) + [6500] = "%.4f", -- Slip Ball + [6501] = "%.4f", -- Turn Indicator + + -- Master Caution light + [9200] = "%d", -- MASTER CAUTION Light - flashes - {0, 1}{0, 1} + + -- [END A6a] ------------------------------------------------------------------------------ + + -- [A6b Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6b] ------------------------------------------------------------------------------ + + -- [A6c Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6c] ------------------------------------------------------------------------------ + + -- [A6d Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6d] ------------------------------------------------------------------------------ + + -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- + -- [END A7] ------------------------------------------------------------------------------- + + -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- + -- [END A8] ------------------------------------------------------------------------------- + + -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- + + -- FUS & FEED tapes Shows fuel qty in fuselage tanks + [1054] = "%.4f", -- Left feed and aft fuselage tanks [STREAM DECK FORMAT: 51054] + [1055] = "%.4f", -- Right feed and forward fuselage tanks [STREAM DECK FORMAT: 51055] + + -- Total Left Fuel Qty (main fuel guage at bottom left) + [6000] = "%.1f", -- FUEL_LFuelDial1k [STREAM DECK FORMAT: 56000] + [6001] = "%.1f", -- FUEL_LFuelDial100 [STREAM DECK FORMAT: 56000] + [6002] = "%.1f", -- FUEL_LFuelDial10 [STREAM DECK FORMAT: 56000] + [6003] = "%.1f", -- FUEL_LFuelDial1 [STREAM DECK FORMAT: 56000] + + -- Total Right Fuel Qty (main fuel guage at bottom right) + [6004] = "%.1f", -- FUEL_RFuelDial1k [STREAM DECK FORMAT: 56004] + [6005] = "%.1f", -- FUEL_RFuelDial100 [STREAM DECK FORMAT: 56004] + [6006] = "%.1f", -- FUEL_RFuelDial10 [STREAM DECK FORMAT: 56004] + [6007] = "%.1f", -- FUEL_RFuelDial1 [STREAM DECK FORMAT: 56004] + + -- Total Fuel Qty in all aircraft tanks (main fuel guage in center shows "Fuel 15000 Qty") + [6010] = "%.1f", -- FUEL_TotalFuel10k [STREAM DECK FORMAT: 56010] + [6011] = "%.1f", -- FUEL_TotalFuel1k [STREAM DECK FORMAT: 56010] + [6012] = "%.1f", -- FUEL_TotalFuel100 [STREAM DECK FORMAT: 56010] + [6013] = "%.1f", -- FUEL_TotalFuel10 [STREAM DECK FORMAT: 56010] + [6014] = "%.1f", -- FUEL_TotalFuel1 [STREAM DECK FORMAT: 56010] + + -- Currently set BINGO fuel quantity (main fuel guage in center at top shows "Bingo 4000") + [6020] = "%.1f", -- FUEL_BingoFuel10k [STREAM DECK FORMAT: 56020] + [6021] = "%.1f", -- FUEL_BingoFuel1k [STREAM DECK FORMAT: 56020] + [6022] = "%.1f", -- FUEL_BingoFuel100 [STREAM DECK FORMAT: 56020] + [6023] = "%.1f", -- FUEL_BingoFuel10 [STREAM DECK FORMAT: 56020] + [6024] = "%.1f", -- FUEL_BingoFuel1 [STREAM DECK FORMAT: 56020] + + -- Accelerometer (3 needles) + [110] = "%.4f", -- Needle - Current G (+10 to -6) [STREAM DECK FORMAT: 50110] + [15076] = "%.4f", -- Needle 2 - Max Postive G pulled (max 10) [STREAM DECK FORMAT: 50110] + [15077] = "%.4f", -- Needle 3 - Max Negative G Pulled (max -6) [STREAM DECK FORMAT: 50110] + + -- [END A9] ------------------------------------------------------------------------------- + + -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- + + -- Gun Ammunition Rounds Counter + [4060] = "%.1f", -- Gun Ammunition Rounds Counter Hundreds [STREAM DECK FORMAT: 54060] + [4061] = "%.1f", -- Gun Ammunition Rounds Counter Tens [STREAM DECK FORMAT: 54060] + [4062] = "%.1f", -- Gun Ammunition Rounds Counter Ones [F-14 DOESN'T DISPLAY] + + -- [END A10] ------------------------------------------------------------------------------ + + -- [A11 Pilot - Right Side Console] ------------------------------------------------------- + -- [END A11] ------------------------------------------------------------------------------ + + -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- + -- [END A12] ------------------------------------------------------------------------------ +-- END PILOT COCKPIT -------------------------------------------------------------------------- + + +-- RIO OFFICER COCKPIT ------------------------------------------------------------------------ + -- [B1 RIO - Left Side Console] ----------------------------------------------------------- + -- [END B1] ------------------------------------------------------------------------------- + + -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- + -- [END B2] ------------------------------------------------------------------------------- + + -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B4 RIO - Center Panel] ---------------------------------------------------------------- + -- [END B4] ------------------------------------------------------------------------------- + + -- [B5 RIO - Center Console] -------------------------------------------------------------- + -- [END B5] ------------------------------------------------------------------------------- + + -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- + -- [END B6] ------------------------------------------------------------------------------- + + -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ + + -- Total RIO Fuel Qty (Radar Officer Fuel Dial) + [2117] = "%.1f", -- FUEL_TotalFuelRIO10k (10's of thousands in decimal 0.1 = 10,000 lbs) [STREAM DECK FORMAT: 56010] + [2118] = "%.1f", -- FUEL_TotalFuelRIO1k (thousands of lbs in decimal 0.4 = 1,000 lbs) [STREAM DECK FORMAT: 56010] + [2119] = "%.1f", -- FUEL_TotalFuelRIO100 (hundreds of lbs in decimal 0.3 = 300 lbs) [STREAM DECK FORMAT: 56010] + [2120] = "%.1f", -- FUEL_TotalFuelRIO10 (ten lbs of fuel in decimal 0.7 = 70 lbs) [F-14 DOESN'T DISPLAY TENS OF LBS] + [2135] = "%.1f", -- FUEL_TotalFuelRIO1 (lbs of fuel in decimal 0.2 = 2 lbs) [F-14 DOESN'T DISPLAY] + + -- [END B7] ------------------------------------------------------------------------------- + + -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ + -- [END B1] ------------------------------------------------------------------------------- + + -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ + -- [END B2] ------------------------------------------------------------------------------- + + -- [B10 RIO - Right Side Console] --------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ + -- [END B4] ------------------------------------------------------------------------------- +-- END RIO OFFICER COCKPIT -------------------------------------------------------------------- +} + + +ExportScript.ConfigArguments = +{ + -- arguments for export in low tick interval + +-- PILOT COCKPIT ------------------------------------------------------------------------------ + -- [A1 Pilot - Left Side Console] --------------------------------------------------------- + -- [END A1] ------------------------------------------------------------------------------- + + -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- + -- [END A2] ------------------------------------------------------------------------------- + + -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- + + -- Hydraulic Pressure Indicator Flags + [1023] = "%d", -- Pressure availability to the spoilers flag - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + [1024] = "%d", -- Emer. Flight hyd. pump operating on High - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + [1025] = "%d", -- Emer. Flight hyd. pump operating on LOW - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + + -- [END A3] ------------------------------------------------------------------------------- + + -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- + -- [END A4] ------------------------------------------------------------------------------- + + -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- + -- [END A5] ------------------------------------------------------------------------------- + + -- [A6a Pilot - Center Panel] ------------------------------------------------------------- + + -- Master Caution Button (light in high tik) + [9199] = "%d", -- MASTER CAUTION Button - press to reset - {0, 1}{0, 1} [BUTTON ID:3056 / DEVICE ID:34 ] + + -- Triple Indicator Lights + [9203] = "%d", -- SEAM LOCK light - sidewinder acquisition in progress.. + [9202] = "%d", -- COLLISION light - collision steering has been selected + [9201] = "%d", -- HOT TRIG light - when lit trigger will release a weapon + + -- Gun Rate Switch and Lights + [9204] = "%d", -- GUN RATE light HIGH (HIGH|LOW) - {0, 1}{0, 1} + [9205] = "%d", -- GUN RATE light LOW (HIGH|LOW) - {0, 1}{0, 1} + [16000] = "%d", -- GUN RATE switch (HIGH|LOW) - {0, 1}{0, 1} [BUTTON ID:3130 / DEVICE ID:55 ] + + -- Sidewinder Cooling + [9206] = "%d", -- SW COOL Switch light On - {0, 1}{0, 1} + [9207] = "%d", -- SW COOL Switch light Off - {0, 1}{0, 1} + [16001] = "%d", -- SW COOL switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3139 / DEVICE ID:55 ] + + -- MSL Preperation Switch + [9208] = "%d", -- MSL PREP switch light On - {0, 1}{0, 1} + [9209] = "%d", -- MSL PREP switch light Off - {0, 1}{0, 1} + [16002] = "%d", -- MSL PREP switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3140 / DEVICE ID:55 ] + + -- MSL Mode Switch + [9210] = "%d", -- MSL Mode switch light Norm - {0, 1}{0, 1} + [9211] = "%d", -- MSL Mode switch light Boresight - {0, 1}{0, 1} + [16003] = "%d", -- MSL Mode switch (NORM|BRSIT) - {0, 1}{0, 1} [BUTTON ID:3141 / DEVICE ID:55 ] + + -- Weapon Station Status Flags + [9221] = "%.2f", -- Station Status Flag 1A (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9222] = "%.2f", -- Station Status Flag 1B (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9223] = "%.2f", -- Station Status Flag 3 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9224] = "%.2f", -- Station Status Flag 4 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9225] = "%.2f", -- Station Status Flag 5 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9226] = "%.2f", -- Station Status Flag 6 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9227] = "%.2f", -- Station Status Flag 8B (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9228] = "%.2f", -- Station Status Flag 8A (OFF|WHITE|CHECK) - {0, 1}{0, 1} + + -- Engine Fire Lights + [15014] = "%d", -- Left Engine FIRE Light - {0, 1}{0, 1} + [15015] = "%d", -- Right Engine FIRE Light - {0, 1}{0, 1} + + -- [END A6a] ------------------------------------------------------------------------------ + + -- [A6b Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6b] ------------------------------------------------------------------------------ + + -- [A6c Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6c] ------------------------------------------------------------------------------ + + -- [A6d Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6d] ------------------------------------------------------------------------------ + + -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- + -- [END A7] ------------------------------------------------------------------------------- + + -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- + -- [END A8] ------------------------------------------------------------------------------- + + -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- + + -- Accelerometer + [228] = "%.4f", -- Accelerometer Reset knob - {0, 1}{0, 1} [BUTTON ID: 3488 / DEVICE ID: 24] + + -- Bingo Set Knob + [1050] = "%.4f", -- Knob used to set BINGO fuel Qty - +/- 1 per step is 100 lbs of fuel [BUTTON ID: 3069 / DEVICE ID: 20] + + -- Clock and Timer + [1051] = "%.4f", -- Clock Timer wind - +/- 0.06 per step is 1 Minute [BUTTON ID: 3042 / DEVICE ID: 26] + [1096] = "%.4f", -- Clock Hours - {0, 12}{0.0000, 1.0000} e.g. 0.5000 * 12 = 6pm [STREAM DECK FORMAT: 51096] + [1097] = "%.4f", -- Clock Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] + [1098] = "%.4f", -- Clock Timer Seconds - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Seconds [STREAM DECK FORMAT: 51096] + [1099] = "%d", -- Clock Timer Start/Stop/Reset Button - {0, 1}{0, 1} [BUTTON ID: 3043 / DEVICE ID: 26] + [2000] = "%.4f", -- Clock Timer Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] + + -- [END A9] ------------------------------------------------------------------------------- + + -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- + + -- Arresting Hook + [238] = "%d", -- HOOK_Handle Arresting hook handle down/up - {0, 1}{0, 1} [BUTTON ID: 3021 / DEVICE ID: 17] + [15078] = "%d", -- HOOK_EmergencyDown Emergency release - {0, 1}{0, 1} [BUTTON ID: 3022 / DEVICE ID: 17] + [15090] = "%d", -- Hook_Light Arresting Hook Light - {0, 1}{0, 1} [LIGHT/LAMP] + + -- Gun Rounds and Knob + [1022] = "%.4f", -- Gun Ammunition Counter Adj. Knob - {0, 1}{increase or decrease by 0.1 to inc/dec. by 10 rounds} [BUTTON ID: 3132 / DEVICE ID: 55] + + -- [END A10] ------------------------------------------------------------------------------ + + -- [A11a Pilot - Right Side Console] ------------------------------------------------------ + -- [END A11a] ----------------------------------------------------------------------------- + + -- [A11b Pilot - Right Side Console] ------------------------------------------------------ + + -- HUD Video Control Panel (Not Implemented in DCS) + --[0] = "%.4f", -- HUD CAM(E)RA switch (TRG|NORMAL|OFF|RUN) + --[0] = "%.4f", -- VTR Power (ON|OFF) + --[0] = "%.4f", -- VTR (RECORD|STANDBY) + + -- [END A11b] ----------------------------------------------------------------------------- + + + -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- + -- [END A12] ------------------------------------------------------------------------------ +-- END PILOT COCKPIT -------------------------------------------------------------------------- + + + + +-- RIO OFFICER COCKPIT ------------------------------------------------------------------------ + -- [B1 RIO - Left Side Console] ----------------------------------------------------------- + -- [END B1] ------------------------------------------------------------------------------- + + -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- + -- [END B2] ------------------------------------------------------------------------------- + + -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B4 RIO - Center Panel] ---------------------------------------------------------------- + -- [END B4] ------------------------------------------------------------------------------- + + -- [B5 RIO - Center Console] -------------------------------------------------------------- + -- [END B5] ------------------------------------------------------------------------------- + + -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- + -- [END B6] ------------------------------------------------------------------------------- + + -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ + -- [END B7] ------------------------------------------------------------------------------- + + -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ + -- [END B1] ------------------------------------------------------------------------------- + + -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ + -- [END B2] ------------------------------------------------------------------------------- + + -- [B10 RIO - Right Side Console] --------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ + -- [END B4] ------------------------------------------------------------------------------- +-- END RIO OFFICER COCKPIT -------------------------------------------------------------------- + +} + + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + -- every frame export to Ikarus + + -- A3 - Pilot Cockpit Left Knee Panel + ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic Pressure Indicator Gauges and Flags + ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge + ExportScript.engOilPressure(mainPanelDevice) -- Engine Oil Pressure gauges + ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group + -- end A3 + + -- A6a - ACM Panel + ExportScript.stationStatusFlags(mainPanelDevice) -- Air Combat Maneuver Panel + ExportScript.ACMButtons(mainPanelDevice) -- 4 different ACM Buttons + ExportScript.masterArmSwitch(mainPanelDevice) -- Master Arm Switch + ExportScript.ACMTriple(mainPanelDevice) -- ACM Triple Indicator + ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge + -- end A6a + + -- A9 - Pilot Cockpit Right Knee Panel + ExportScript.displayFuel(mainPanelDevice) -- Set of 5 different fuel gauges and a nice multi-gauge (ID's 52117 / 56000 / 56004 / 56010 / 56020 / 56024) Cus. Func. + ExportScript.displayAccel(mainPanelDevice) -- Accellerometer Gauge Custom Function + ExportScript.clockAndTimer(mainPanelDevice) -- Clock and Timer in digital format on same gauge Custom Function + -- end A9 + + -- A10 - Pilot Right Vertical Console + ExportScript.gunCounter(mainPanelDevice) -- Gun Ammunition Counter / Rounds left + -- end A10 + + ----------------------------------- + -----Get F14 Radio Frequencies----- Bailey + ----------------------------------- + + -----UHF----- + + --[[ + 1. Get the state of the switch to determine if presets or freqs are being used + 2. Get the channel or freq + 3. Using the above logic, present the Channel or Freq + 4. Preceede channels with "CH ". + 5. Dont preceede freqs with anything. + ]] + + --[[ + [2033] = "%.4f", -- Mode selector knob (GUARD|MANUAL|PRESET) + 0.0000 = preset + 0.5000 = MANUAL + 1.0000 = GUARD + ]] + + local UHF_ARC159_infoBase = ExportScript.Tools.split(list_indication(8), "%c")--this contains the formated table of the base radio + local UHF_ARC159_readoutBase = UHF_ARC159_infoBase[10] -- so far it has always been 10 in both channel and freq modes + local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) + + if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then + ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60001, string.format(UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) + elseif UHF_ARC159_FreqMode == "0.0" then + ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60001, string.format("CH " .. UHF_ARC159_readoutBase:sub(4,6))) + end + + + local UHF_ARC159_infoPilot = ExportScript.Tools.split(list_indication(9), "%c")--this contains the formated table of the Pilot radio + local UHF_ARC159_readoutPilot = UHF_ARC159_infoPilot[16] -- so far it has always been 10 in both channel and freq modes + local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) + + if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then + ExportScript.Tools.SendData(60002, string.format("ARC-159\n" .. UHF_ARC159_readoutPilot:sub(1,3) .. "." .. UHF_ARC159_readoutPilot:sub(4,6))) + ExportScript.Tools.SendData(60003, string.format(UHF_ARC159_readoutPilot:sub(1,3) .. "." .. UHF_ARC159_readoutPilot:sub(4,6))) + elseif UHF_ARC159_FreqMode == "0.0" then + ExportScript.Tools.SendData(60002, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutPilot:sub(4,6))) + ExportScript.Tools.SendData(60003, string.format("CH " .. UHF_ARC159_readoutPilot:sub(4,6))) + end + + + local UHF_ARC159_infoRio = ExportScript.Tools.split(list_indication(9), "%c")--this contains the formated table of the Rio radio + local UHF_ARC159_readoutRio = UHF_ARC159_infoRio[16] -- so far it has always been 10 in both channel and freq modes + local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) + + if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then + ExportScript.Tools.SendData(60004, string.format("ARC-159\n" .. UHF_ARC159_readoutRio:sub(1,3) .. "." .. UHF_ARC159_readoutRio:sub(4,6))) + ExportScript.Tools.SendData(60005, string.format(UHF_ARC159_readoutRio:sub(1,3) .. "." .. UHF_ARC159_readoutRio:sub(4,6))) + elseif UHF_ARC159_FreqMode == "0.0" then + ExportScript.Tools.SendData(60004, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutRio:sub(4,6))) + ExportScript.Tools.SendData(60005, string.format("CH " .. UHF_ARC159_readoutRio:sub(4,6))) + end + + -----V/UHF ARC182----- + + --[[ + [353] = "%0.1f", -- VHF/UHF ARC-182 Freq Mode (UHF GUARD|V/UHF|V/UHF GUARD|PRESET|V/UHF|LOAD?) + 0.0 = UHF GUARD + 0.2 = V/UHF + 0.4 = V/UHF GUARD + 0.6 = PRESET + 0.8 = V/UHF + 1.0 = LOAD? + ]] + + local VHF_ARC182_infoBase = ExportScript.Tools.split(list_indication(12), "%c")--this contains the formated table of the base radio + local VHF_ARC182_readoutBase = VHF_ARC182_infoBase[10] -- so far it has always been 10 in both channel and freq modes + local VHF_ARC182_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(353)) + + if VHF_ARC182_FreqMode == "0.0" or VHF_ARC182_FreqMode == "0.2" then + ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + elseif VHF_ARC182_FreqMode == "0.4" or VHF_ARC182_FreqMode == "0.8" then + ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + elseif VHF_ARC182_FreqMode == "1.0" then + ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60007, string.format(VHF_ARC182_readoutBase:sub(1,3) .. "." .. VHF_ARC182_readoutBase:sub(4,6))) + elseif VHF_ARC182_FreqMode == "0.6" then + ExportScript.Tools.SendData(60006, string.format("ARC-182\n" .. "CH " .. VHF_ARC182_readoutBase:sub(4,6))) + ExportScript.Tools.SendData(60007, string.format("CH " .. VHF_ARC182_readoutBase:sub(4,6))) + end + +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + -- every frame export to DAC +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + -- export in low tick interval to Ikarus +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + -- export in low tick interval to DAC +end --[[ + + + + + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Custom functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + â–ˆ ExportScript.onff(switch) - Receives a binary and returns string OFF|ON + â–ˆ ExportScript.dualTapeString(leftTape, rightTape) - Receives two values (percent of tape) and returns a string tape display (e.g. RPM) + â–ˆ ExportScript.rotaryCounter(fp) - receives a fp like 0.1 and returns a string 1 (third charachter), handles negatives and 0 gracefully + â–ˆ ExportScript.drawStationStatusFlags(flagValue) - Draws Station Flags for Weapons on ACM A6a]] + +function ExportScript.dualTapeString(title, leftTape, rightTape) -- Creates a dual vertical bar tape for custom gauge + -- Receives title as string + -- Receives a value from 0.00 to 1.00 that represents a percentage from 0% to 100% of the tape, 0.25 is 1/4 up the tape etc.. + -- Returns a string that shows 2 tapes in a "somewhat" graphical format using extended ascii characters. + local a = 5 + local b = 0 + leftTape = tonumber(string.format("%.1f", (leftTape * 10) / 2 )) + rightTape = tonumber(string.format("%.1f", (rightTape * 10) / 2 )) + local buildDisplay = title .. "\n" + repeat + b = a - 0.5 + if leftTape >= a then buildDisplay = buildDisplay .. "â–ˆ " elseif leftTape >= b then buildDisplay = buildDisplay .. "â–„ " else buildDisplay = buildDisplay .. "_ " end + if rightTape >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rightTape >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end + buildDisplay = buildDisplay .. "\n" + a = a - 1 + until( a < 1 ) + return buildDisplay +end + + +function ExportScript.onff(switch) -- Takes a binary 1(on) or 0(off) and returns string "ON" or "OFF" + if switch == 1 then returnString = "ON" elseif switch == 0 then returnString = "OFF" end + return returnString +end + + +function ExportScript.rotaryCounter(fp) -- Takes a value as floating point like 0.1324 and returns 1 as a string or 0.4 as 4 as a string (3'rd character including decimal) + local returnString + if fp == 1 or fp <= 0 then returnString = "0" else returnString = string.sub(string.format("%.1f", fp), 3, 3) end + return returnString +end + + +function ExportScript.drawStationStatusFlags(flagValue) -- Takes a 0/1/0.45 and draws nothing/white/checker flag and returns + local returnString + if flagValue > 0.5 then returnString = "█████\n▀▀▀▀▀\n\n." elseif flagValue > 0.4 then returnString = "▀▄▀▄▀\nâ–€ â–€ â–€\n\n." else returnString = "" end + return returnString +end +--[[ + + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Custom Gauges functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀]] + +function ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge + local turn + local turnL + local turnR + local turnIndicator = mainPanelDevice:get_argument_value(6501) + local turnLString = "" + local turnRString = "" + local ball + local ballL + local ballR + local ballIndicator = mainPanelDevice:get_argument_value(6500) + local ballLString = "" + local ballRString = "" + local stringOutput = "" + if turnIndicator < 0 then -- negative 12 on left and right + if turnIndicator < -0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 4, 4)) end + turnL = 12 - turn + turnR = 12 + turn + repeat + turnLString = turnLString .. " " + turnL = turnL - 1 + until( turnL == 1) + repeat + turnRString = turnRString .. " " + turnR = turnR - 1 + until( turnR == 1) + stringOutput = stringOutput .. turnLString + stringOutput = stringOutput .. "â–ˆ" + stringOutput = stringOutput .. turnRString + elseif turnIndicator > 0 then -- positive + if turnIndicator > 0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 3, 3)) end + turnL = 12 + turn + turnR = 12 - turn + repeat + turnLString = turnLString .. " " + turnL = turnL - 1 + until( turnL == 1) + repeat + turnRString = turnRString .. " " + turnR = turnR - 1 + until( turnR == 1) + stringOutput = stringOutput .. turnLString + stringOutput = stringOutput .. "â–ˆ" + stringOutput = stringOutput .. turnRString + else + turn = 0 + stringOutput = " â–ˆ " + end + + stringOutput = stringOutput .. "\n â–  â–ˆ â–  \n" + + if ballIndicator < 0 then -- negative 12 on left and right + if ballIndicator < -0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 4, 4)) end + ballL = 12 - ball + ballR = 12 + ball + repeat + ballLString = ballLString .. " " + ballL = ballL - 1 + until( ballL == 1) + repeat + ballRString = ballRString .. " " + ballR = ballR - 1 + until( ballR == 1) + stringOutput = stringOutput .. ballLString + stringOutput = stringOutput .. "O" + stringOutput = stringOutput .. ballRString + elseif ballIndicator > 0 then -- positive + if ballIndicator > 0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 3, 3)) end + ballL = 12 + ball + ballR = 12 - ball + repeat + ballLString = ballLString .. " " + ballL = ballL - 1 + until( ballL == 1) + repeat + ballRString = ballRString .. " " + ballR = ballR - 1 + until( ballR == 1) + stringOutput = stringOutput .. ballLString + stringOutput = stringOutput .. "O" + stringOutput = stringOutput .. ballRString + else + ball = 0 + stringOutput = " O " + end + ExportScript.Tools.SendData(56501, stringOutput) +end + + +function ExportScript.ACMTriple(mainPanelDevice) -- Triple indicator lights for ACM (Seam/Collision/Hot Trig) + local stringOutput = "" + if mainPanelDevice:get_argument_value(9203) == 1 then stringOutput = stringOutput .. "\n\n" else stringOutput = stringOutput .. "██████████\n\n" end + if mainPanelDevice:get_argument_value(9202) == 1 then stringOutput = stringOutput .. "\n\n\n" else stringOutput = stringOutput .. "â–„â–„â–„â–„â–„â–„â–„â–„â–„â–„\n▀▀▀▀▀▀▀▀▀▀\n\n" end + if mainPanelDevice:get_argument_value(9201) == 1 then stringOutput = stringOutput .. "." else stringOutput = stringOutput .. "██████████" end + ExportScript.Tools.SendData(59201, stringOutput) +end + + +function ExportScript.masterArmSwitch(mainPanelDevice) -- Output Master Arm Position + if mainPanelDevice:get_argument_value(1047) == -1 then stringOutput = " ███\n |\n |\n\n ." + elseif mainPanelDevice:get_argument_value(1047) == 0 then stringOutput = " |\n ███\n |\n\n ." + else stringOutput = " |\n |\n ███\n\n ." + end + ExportScript.Tools.SendData(51047, stringOutput) +end + + +function ExportScript.ACMButtons(mainPanelDevice) -- Monitors two lights on diff. id's and outputs 1 or 0 to one id for (gun rate/SW cool/MSL prep/Mode stp) + if mainPanelDevice:get_argument_value(9204) == 1 then ExportScript.Tools.SendData(59204, 1) else ExportScript.Tools.SendData(59204, 0) end -- gun rate light + if mainPanelDevice:get_argument_value(9206) == 1 then ExportScript.Tools.SendData(59206, 1) else ExportScript.Tools.SendData(59206, 0) end -- sw cool light + if mainPanelDevice:get_argument_value(9208) == 1 then ExportScript.Tools.SendData(59208, 1) else ExportScript.Tools.SendData(59208, 0) end -- msl prep light + if mainPanelDevice:get_argument_value(9210) == 1 then ExportScript.Tools.SendData(59210, 1) else ExportScript.Tools.SendData(59210, 0) end -- msl mode stp light +end + + +function ExportScript.stationStatusFlags(mainPanelDevice) -- Display Station status flags 1 to 8 on ACM panel + local b + local a = 9221 + repeat + b = "5" .. a + ExportScript.Tools.SendData(b, ExportScript.drawStationStatusFlags(mainPanelDevice:get_argument_value(a))) + a = a + 1 + until( a > 9228) +end + + +function ExportScript.gunCounter(mainPanelDevice) -- Gun Counter + local gunCounter = ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4060)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4061)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4062)) + ExportScript.Tools.SendData(54060, "ROUNDS\n" .. gunCounter) +end + + +function ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group EIG + local EIGrpm = ExportScript.dualTapeString("RPM % x10", mainPanelDevice:get_argument_value(1057), mainPanelDevice:get_argument_value(1058)) + local EIGegt = ExportScript.dualTapeString("TIT C x100", mainPanelDevice:get_argument_value(1059), mainPanelDevice:get_argument_value(1060)) + local EIGff = ExportScript.dualTapeString("FF PPH x1000", mainPanelDevice:get_argument_value(1061), mainPanelDevice:get_argument_value(1062)) + ExportScript.Tools.SendData(51057, EIGrpm) -- Engine RPM + ExportScript.Tools.SendData(51059, EIGegt) -- Engine TIT (Exhaust Gas Temp) + ExportScript.Tools.SendData(51061, EIGff) -- Engine Fuel Flow +end + + +function ExportScript.engOilPressure(mainPanelDevice) + local rOilPress = mainPanelDevice:get_argument_value(1065) * 90 -- Right Engine Oil Pressure + local lOilPress = mainPanelDevice:get_argument_value(1066) * 90 -- Left Engine Oil Pressure + ExportScript.Tools.SendData(51065, "L " .. string.format("%d", lOilPress) .. " psi\nEng. Oil\n" .. "R " .. string.format("%d", rOilPress) .. " psi") +end + + +function ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge (tape) ------------------------------------------------ + local lNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1068) * 5)) + local rNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1067) * 5)) + local a = 5 + local b = 0 + local buildDisplay = "Exh. Nozz.\n" + repeat + b = a - 0.5 + buildDisplay = buildDisplay .. (a - 1) + if lNoz >= a then buildDisplay = buildDisplay .. " â–ˆ " elseif lNoz >= b then buildDisplay = buildDisplay .. " â–„ " else buildDisplay = buildDisplay .. " _ " end + if rNoz >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rNoz >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end + buildDisplay = buildDisplay .. "\n" + a = a - 1 + until( a < 1 ) + ExportScript.Tools.SendData(51068, buildDisplay) +end + + +function ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic pressure indicator A3 ------------------------------------------------ + local hydComb = string.format("%d", (mainPanelDevice:get_argument_value(1063) * 4000)) + local hydFlt = string.format("%d", (mainPanelDevice:get_argument_value(1064) * 4000)) + local spoilFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1023)) + local hiFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1024)) + local lowFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1025)) + local hydPressGauge = "HYD PRESS\n" .. "C. " .. hydComb .. " psi\nF. " .. hydFlt .. " psi\n\n" .. spoilFlag .. "|" .. hiFlag .. "|" .. lowFlag + ExportScript.Tools.SendData(51063, hydPressGauge) + local hydPressFlags = "HYD PR. psi\nComb | Flight\n" .. hydComb .. " | " .. hydFlt .. "\n Spo / HI / LW\n" .. spoilFlag .. " | " .. hiFlag .. " | " .. lowFlag + ExportScript.Tools.SendData(51023, hydPressFlags) +end + + +function ExportScript.clockAndTimer(mainPanelDevice) -- Clock and timer on panel A9 ---------------------------------------------------- + local minutes = string.format("%d", mainPanelDevice:get_argument_value(1097) * 60) + if string.len(minutes) < 2 then + minutes = "0" .. minutes + end + local timerMinutes = string.format("%d", mainPanelDevice:get_argument_value(2000) * 60) + local timerSeconds = string.format("%d", mainPanelDevice:get_argument_value(1098) * 60) + local clockNTimer = "Clock\n" .. string.format("%d", mainPanelDevice:get_argument_value(1096) * 12) .. string.char(32) .. minutes .. "\nTimer\n" .. timerMinutes .. "m " .. timerSeconds .. "s" + ExportScript.Tools.SendData(51096, clockNTimer) +end + + +function ExportScript.displayAccel(mainPanelDevice) -- Accelerometer gauge formatted --------------------------------------------------- + -- Accelerometer Gauge A9 + local needle = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(110)) + local needlePos = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(15076)) + local needleNeg = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(15077)) + accelGauge = "Accel.G\n+" .. string.format("%.1f", needlePos) .. " G\n-| " .. string.format("%.1f", needle) .. " G |-\n" .. string.format("%.1f", needleNeg) .. " G" + ExportScript.Tools.SendData(50110, accelGauge) +end + +function ExportScript.displayAccelCheckValue(accelValue) -- Called from ExportScript.displayAccel() ------------------------------------ + if accelValue >= 0 then + return accelValue * 10 + elseif accelValue < 0 then + return accelValue * 5 + end +end + + +function ExportScript.displayFuel(mainPanelDevice) -- Fuel Gauges and output on A9 and B7 ---------------------------------------------- +--[[FUEL Exports Formatted + + NOTE: In case you are wondering to the weird methodology used below to derive fuel totals, I'll try to explain. + A combination of how the f-14 module is using this fuel data (e.g. 0.9 might mean 900 lbs, 0.0 would mean 000 lbs and 1.0 would mean 000 lbs + also which effects the total if you use math to add them all together, so we can't use a simple method) + Essentially DCS gives you the fuel dial position rather than the actual fuel available. Although this sounds like the same value, it is not. + And also playing into this is the non-existance of certain math functions in lua language like concatenation or rounding. You need to convert + to string and back which is slow + + Because of this (not fully explained) it will create strange output for the total fuel when it rolls between whole values e.g. 15000 to 14900. + So instead we convert them to strings right away and extract the portion of the string (3'rd charachter) that is always correct + (e.g. 1.0 is always 0 and 0.0 is also 0 and 0.4 is 4 etc...) + + we then take the 10k, 1k, 100's etc.. 3'rd charachter and combine them like 15000 + There is still a strange behaviour at first site that is exhibited, that is not so strange once explained: + When rolling over from 15000 to 14900, it will show 15000, then 15900 for a second or two, and then 14900. The reason is that the hundreds dial + on the f-14 rolls quicker than the thousands dial therefore getting updated first instead of at the same time. + the above strange behaviour cannot be corrected unless there is a variable that stores the total fuel value instead of the fuel cockpit dial + value which are two different things. (In my experience most dcs mods only give you access to the latter) + Therefore, we first concatenate the number to 0.X by converting it to a string and formatting it as such, and then extract the 3'rd character + (I get it, nasty work around, If you have a better solution I'd love to hear it.) + +]] + local aftAndL = string.format("%d", mainPanelDevice:get_argument_value(1054) * 7000) + local fwdAndR = string.format("%d", mainPanelDevice:get_argument_value(1055) * 7000) + local RIOFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2117)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2118)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2119)), 3, 3) .. "00" + local leftFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6000)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6001)), 3, 3) .. "00" + local rightFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6004)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6005)), 3, 3) .. "00" + local totalFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6010)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6011)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6012)), 3, 3) .. "00" + local bingoFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6020)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6021)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6022)), 3, 3) .. "00" + + ExportScript.Tools.SendData(51054, "AFT & L\n" .. aftAndL .. "\nLBS") + ExportScript.Tools.SendData(51055, "FWD & R\n" .. fwdAndR .. "\nLBS") + ExportScript.Tools.SendData(52117, "TOTAL\nFUEL QTY\n" .. RIOFuel .. "\nLBS") -- Return Total RIO Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56000, "L\n" .. leftFuel) -- Return Total Left Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56004, "R\n" .. rightFuel) -- Return Total Right Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56010, "FUEL\n" .. totalFuel .. "\nQTY") -- Return Total Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56020, "BINGO\n" .. bingoFuel) -- Return Total Bingo Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56024, "BINGO " .. bingoFuel .. "\nTOTAL " .. totalFuel .. "\n" .. aftAndL .. " | " .. fwdAndR .. "\n L | R \n" .. leftFuel .. " | " .. rightFuel) -- Nice Multi Gauge +end \ No newline at end of file diff --git a/ExportsModules/F-15C.lua b/ExportsModules/F-15C.lua new file mode 100644 index 0000000..61f52b0 --- /dev/null +++ b/ExportsModules/F-15C.lua @@ -0,0 +1,1408 @@ +-- F-15C + +ExportScript.FoundFCModule = true +ExportScript.Version.F15C = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / F-15C -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lEngineFuelConsumptionLeft = LoGetEngineInfo().FuelConsumption.left + local lEngineFuelConsumptionRight = LoGetEngineInfo().FuelConsumption.right + local lEngineHydraulicPressureLeft = LoGetEngineInfo().HydraulicPressure.left + local lEngineHydraulicPressureRight = LoGetEngineInfo().HydraulicPressure.right + + --[[ + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- ADI + ExportScript.AF.FC_US_ADI() -- ID 1 to 10 + + -- HSI + ExportScript.AF.FC_US_HSI(lDistanceToWay) -- ID 11 to 23 + + -- VVI + ExportScript.AF.FC_US_VVI() -- ID 24 + + -- G-LOAD + ExportScript.AF.FC_US_GLOAD() -- ID 25 to 27 + + -- Clock + ExportScript.AF.FC_US_Clock() -- ID 28 to 30 + + -- Standby Compass + ExportScript.AF.FC_US_Compass() -- ID 31 to 33 + + -- Standby ADI + ExportScript.AF.FC_US_stbyADI() -- ID 34, 35 + + -- Barometrisic Altimeter + --local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + local lAltCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + --local lAltBarTmp2 = string.format("%03d", ((lAltBar * 3.28084) / 100)) -- meter to feeds + lAltBar = lAltBar - (9.5 * (760 - lBasicAtmospherePressure)) -- 9.5 m per 1mmHg difference + --lAltBar = lAltBar + (9.5 * (760 - lBasicAtmospherePressure)) -- 9.5 m per 1mmHg difference + local lAltBarTmp = lAltBar * 3.28084 -- meter to feeds + local lAltBarTmp2 = ((lAltBar * 3.28084) / 100) -- meter to feeds + + lAltBarTmp = lAltBarTmp / 1000 + lAltBarTmp = lAltBarTmp - ExportScript.Tools.round(lAltBarTmp, 0, "floor") + + local lAltCounter1 = 0 + local lAltCounter2 = 0 + local lAltCounter3 = 0 + local lAltCounter4 = 0 + local lAltBarTmp3 = string.format("%03d", lAltBarTmp2) + + lAltCounter4 = lAltBarTmp * 10 + if lAltCounter4 > 1.0 then + lAltCounter4 = lAltCounter4 - ExportScript.Tools.round(lAltCounter4, 0, "floor") + end + + -- AltBar {0.0,1.0} + -- AltBar_10000 {0.0,1.0} + -- AltBar_1000 {0.0,1.0} + -- AltBar_100 {0.0,1.0} + -- AltBar_10 {0.0,1.0} + ExportScript.Tools.SendData(36, lAltBarTmp) + ExportScript.Tools.SendData(37, lAltCounter[tonumber(string.sub(lAltBarTmp3, 1, 1))]) + ExportScript.Tools.SendData(38, lAltCounter[tonumber(string.sub(lAltBarTmp3, 2, 2))]) + ExportScript.Tools.SendData(39, lAltCounter[tonumber(string.sub(lAltBarTmp3, 3, 3))]) + ExportScript.Tools.SendData(40, lAltCounter4) + -- Barometrisic Altimeter end + + -- Air Speed Indicator (IAS, Mach) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 514,44444443999953012349519517095 -- maximaler Eingangswert + x = 257.0 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 514,44444443999953012349519517095 -- Delta Eingangswerte (x_max - x_min) + m = 0.0019438444924574 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.4995680345615518 -- Ergebnis (m * x + n) + ]] + lIAS = 0.0019438444924574 * lIAS + + if lMachNumber < 1.01 then + --[[ + y_min = 0.0 0.1 -- minimaler Ausgabewert + y_max = 0.1 1.0 -- maximaler Ausgabewert + x_min = 0.0 1.0 -- minimaler Eingangswert + x_max = 1.0 3.6 -- maximaler Eingangswert + x = 0.5 2.0 -- aktueller Eingangswert + + d_y = 0.1 0.9 -- Delta Ausgabewerte (y_max - y_min) + d_x = 1.0 2.6 -- Delta Eingangswerte (x_max - x_min) + m = 0.1 0.34615384615384615384615384615385 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -0.24615384615384615384615384615385 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.05 0.44615384615384615384615384615384 -- Ergebnis (m * x + n) + ]] + + lMachNumber = 0.1 * lMachNumber + else + lMachNumber = 0.34615384615384615384615384615385 * lMachNumber + -0.24615384615384615384615384615385 + end + -- IAS {0.0,1.0} + -- MachNumber + --SendData(2, string.format("%.4f;%.4f", lIAS, lMachNumber)) + ExportScript.Tools.SendData(44, string.format("%.4f", lIAS)) + ExportScript.Tools.SendData(45, string.format("%.4f", lMachNumber)) + -- Air Speed Indicator End + + -- RPM Engine Left + ExportScript.AF.FC_OneNeedleGauge(lEngineRPMleft, 110, 46) + + -- RPM Engine Right + ExportScript.AF.FC_OneNeedleGauge(lEngineRPMright, 110, 47) + + -- Oil Pressure Left, no value but similar to Engine RPM + --[[ + y_min = 0.0 0.76 -- minimaler Ausgabewert + y_max = 0.76 1.0 -- maximaler Ausgabewert + x_min = 0.0 74.0 -- minimaler Eingangswert + x_max = 74.0 95.0 -- maximaler Eingangswert + x = 74.0 90.0 -- aktueller Eingangswert + + d_y = 0.76 0.24 -- Delta Ausgabewerte (y_max - y_min) + d_x = 74.0 21.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.01027027027027027027027027027027 0.01142857142857142857142857142857 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -0.08571428571428571428571428571415 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.7599999 0.943-- Ergebnis (m * x + n) + ]] + if lEngineRPMleft < 74 then + ExportScript.AF.FC_OneNeedleGauge(1.027027027027027027027027027027 * lEngineRPMleft, 100, 48) + else + ExportScript.AF.FC_OneNeedleGauge(1.142857142857142857142857142857 * lEngineRPMleft + -8.571428571428571428571428571415, 100, 48) + end + + -- Oil Pressure Right, no value but similar to Engine RPM + if lEngineRPMright < 74 then + ExportScript.AF.FC_OneNeedleGauge(1.027027027027027027027027027027 * lEngineRPMright, 100, 49) + else + ExportScript.AF.FC_OneNeedleGauge(1.142857142857142857142857142857 * lEngineRPMright + -8.571428571428571428571428571415, 100, 49) + end + + -- Engine Exhaust Nozzle Position Indicator Left, very imprecise + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.76 -- maximaler Ausgabewert + x_min = 95.0 -- minimaler Eingangswert + x_max = 96.0 -- maximaler Eingangswert + x = 95.5 -- aktueller Eingangswert + + d_y = 0.76 -- Delta Ausgabewerte (y_max - y_min) + d_x = 1.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.76 -- Steigung der linearen Funktion (d_y / d_x) + n = -72.2 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.5 -- Ergebnis (m * x + n) + ]] + if lEngineRPMleft > 95.0 then + ExportScript.AF.FC_OneNeedleGauge((0.76 * lEngineRPMleft + -72.2) * 100, 100, 50) + else + ExportScript.AF.FC_OneNeedleGauge(0, 100, 50) + end + + -- Engine Exhaust Nozzle Position Indicator Right, very imprecise + if lEngineRPMright > 95.0 then + ExportScript.AF.FC_OneNeedleGauge((0.76 * lEngineRPMright + -72.2) * 100, 100, 51) + else + ExportScript.AF.FC_OneNeedleGauge(0, 100, 51) + end + + -- Exaust Gas Temperature Left + ExportScript.AF.FC_F15C_ExaustGasTemp(lEngineTempLeft - 1.4, 52, 53, 54, 55) + + -- Exaust Gas Temperature Right + ExportScript.AF.FC_F15C_ExaustGasTemp(lEngineTempRight - 1.4, 56, 57, 58, 59) + + -- Fuel Flow Left + ExportScript.AF.FC_OneNeedleGauge3Digits(((lEngineFuelConsumptionLeft * 2.2046223302272) * 3600), 10000, 2, 60, 61, 62, 63) + + -- Fuel Flow Right + ExportScript.AF.FC_OneNeedleGauge3Digits(((lEngineFuelConsumptionRight * 2.2046223302272) * 3600), 10000, 2, 64, 65, 66, 67) + + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineHydraulicPressureLeft, 100, 68) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineHydraulicPressureRight, 100, 69) + + -- AOA + --FC_US_AOA(16) + --ExportScript.Tools.WriteToLog('lAoA 1: '..ExportScript.Tools.dump(lAoA)) + --local lAoATmp = math.deg(lAoA) + 10 + --ExportScript.Tools.WriteToLog('lAoA 2: '..ExportScript.Tools.dump(lAoATmp)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 45.0 -- maximaler Eingangswert + x = 12.6 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 45.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.02222222222222222222222222222222 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000001 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.2800000000000000000000000000001 -- Ergebnis (m * x + n) + ]] + --lAoATmp = 0.02222222222222222222222222222222 * lAoATmp + 0.0000000000000000000000000000001 + --SendData(16, string.format("%.4f;%d", lAoATmp, 0) ) + + if lAoA > 0.0 then -- positive AOA + --[[ + y_min = 0.33 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 30.0 -- maximaler Eingangswert + x = 12.6 -- aktueller Eingangswert + + d_y = 0.67 -- Delta Ausgabewerte (y_max - y_min) + d_x = 30.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.02233333333333333333333333333333 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.33 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.6114 -- Ergebnis (m * x + n) + ]] + lAoA = 0.02228571428571428571428571428571 * lAoA + 0.33 + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.33 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -10.0 -- maximaler Eingangswert + x = -2.6 -- aktueller Eingangswert + + d_y = 0.33 -- Delta Ausgabewerte (y_max - y_min) + d_x = -10.0 -- Delta Eingangswerte (x_max - x_min) + m = -0.033 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.2442 -- Ergebnis 0.33 - (m * x + n) + ]] + --lAoA = 0.22 - (-0.022 * lAoA) + lAoA = 0.33 - (-0.033 * lAoA) + end + ExportScript.Tools.SendData(70, string.format("%.4f", lAoA)) + ExportScript.Tools.SendData(0, 0) -- AOA Off Flag off + -- AOA End + + -- Hydraulic Pressure Util, no value but similar to Engine Hydraulic Pressure (left or right) + local lEngineHydraulicPressure = lEngineHydraulicPressureLeft + lEngineHydraulicPressure = lEngineHydraulicPressureRight > lEngineHydraulicPressureLeft and lEngineHydraulicPressureRight or lEngineHydraulicPressureLeft + ExportScript.AF.FC_OneNeedleGauge(lEngineHydraulicPressure, 100, 71) + + -- Standby Air Speed Indicator (IAS, Mach) + -- value has been calculated (from top) + -- IAS {0.0,1.0} + ExportScript.Tools.SendData(72, string.format("%.4f", lIAS)) + -- Standby Air Speed Indicator End + + -- AccelerationUnits + --ExportScript.Tools.WriteToLog("lAccelerationUnits: "..ExportScript.Tools.dump(lAccelerationUnits)) + if lAccelerationUnits > 0.0 then -- positive AccelerationUnits + --[[ + y_min = 0.333 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 10.0 -- maximaler Eingangswert + x = 2.6 -- aktueller Eingangswert + + d_y = 0.667 -- Delta Ausgabewerte (y_max - y_min) + d_x = 10.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.0667 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.333 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.50642 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.0667 * lAccelerationUnits + 0.333 + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.333 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -5.0 -- maximaler Eingangswert + x = -2.6 -- aktueller Eingangswert + + d_y = 0.333 -- Delta Ausgabewerte (y_max - y_min) + d_x = -5.0 -- Delta Eingangswerte (x_max - x_min) + m = -0.0666 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.666 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.17316 -- Ergebnis 0.666 - (m * x + n) + ]] + lAccelerationUnits = 0.666 - (-0.0666 * lAccelerationUnits + 0.666) + end + ExportScript.Tools.SendData(73, string.format("%.4f", lAccelerationUnits)) + -- AccelerationUnits End + + -- Standby Barometrisic Altimeter + --lAltBarTmp = lAltBar - (9.5 * (760 - lBasicAtmospherePressure)) -- 9.5 m per 1mmHg difference, has been calculated + lAltBarTmp = lAltBar * 3.28084 -- meter to feeds + + local AltBar_kilofeet_needle = 0 + local AltBar_hektofeet_needle = 0 + local AltBar_dafeet_needle = 0 + + if lAltBarTmp > 1000 then + AltBar_kilofeet_needle = lAltBarTmp / 10000 + end + if lAltBarTmp > 10000 then + AltBar_hektofeet_needle = (lAltBarTmp - (ExportScript.Tools.round(lAltBarTmp / 10000, 0, "floor") * 10000)) / 1000 + else + AltBar_hektofeet_needle = lAltBarTmp / 1000 + end + if lAltBarTmp > 1000 then + AltBar_dafeet_needle = (lAltBarTmp - (ExportScript.Tools.round(lAltBarTmp / 1000, 0, "floor") * 1000)) / 100 + else + AltBar_dafeet_needle = lAltBarTmp / 100 + end + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 10.0 -- maximaler Eingangswert + x = 2.5 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 10.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.1 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.25 -- Ergebnis (m * x + n) + ]] + AltBar_kilofeet_needle = 0.1 * AltBar_kilofeet_needle + AltBar_hektofeet_needle = 0.1 * AltBar_hektofeet_needle + AltBar_dafeet_needle = 0.1 * AltBar_dafeet_needle + -- AltBar_kilofeet_needle {0.0,1.0} + -- AltBar_hektofeet_needle {0.0,1.0} + -- AltBar_dafeet_needle {0.0,1.0} + ExportScript.Tools.SendData(41, string.format("%.4f", AltBar_kilofeet_needle)) + ExportScript.Tools.SendData(42, string.format("%.4f", AltBar_hektofeet_needle)) + ExportScript.Tools.SendData(43, string.format("%.4f", AltBar_dafeet_needle)) + -- Standby Barometrisic Altimeter end + + ExportScript.AF.FlareChaff(lFunctionTyp) + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + ExportScript.AF.FlareChaff(lFunctionTyp) +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + -- Gear Lamps + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + ExportScript.AF.SightingSystem(lFunctionTyp) + ExportScript.AF.StatusLamp(lFunctionTyp) + ExportScript.AF.RWRlite(lFunctionTyp) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + ExportScript.AF.SightingSystem(lFunctionTyp) + ExportScript.AF.StatusLamp(lFunctionTyp) + ExportScript.AF.WeaponStatusPanel(lFunctionTyp) + ExportScript.AF.RWRlite(lFunctionTyp) +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem(FunctionTyp) + local lSightingSystemInfo = LoGetSightingSystemInfo() + local lFunctionTyp = FunctionTyp or "Ikarus" + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(600, lSightingSystemInfo.ECM_on == true and 1 or 0 ) + --ExportScript.Tools.SendData(601, lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendData(602, lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendData(603, lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendData(604, lSightingSystemInfo.radar_on == true and 1 or 0 ) + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(600, lSightingSystemInfo.ECM_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC(601, lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC(602, lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC(603, lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC(604, lSightingSystemInfo.radar_on == true and 1 or 0 ) + end +end + +function ExportScript.AF.FuelQuantityIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + local lEngineFuelTotal = (lEngineInfo.fuel_internal + lEngineInfo.fuel_external) * 2.2046223302272 -- kg to lbs + local lFuelNeedle = lEngineFuelTotal / 12000 -- 12000 = scala + lFuelNeedle = (lFuelNeedle > 1.0 and 1.0 or lFuelNeedle) + + local lFuelCounterLeft = 1200 + local lFuelCounterRight = 1500 + + if lEngineInfo.RPM.left > 0 then + if lEngineInfo.RPM.right > 0 then + if lEngineFuelTotal < 2700 then + lFuelCounterLeft = lEngineFuelTotal * 0.44444444444444444444444444444444 + end + else + if lEngineFuelTotal < 1200 then + lFuelCounterLeft = lEngineFuelTotal + end + end + end + if lEngineInfo.RPM.right > 0 then + if lEngineInfo.RPM.left > 0 then + if lEngineFuelTotal < 2700 then + lFuelCounterRight = lEngineFuelTotal * 0.55555555555555555555555555555556 + end + else + if lEngineFuelTotal < 1500 then + lFuelCounterRight = lEngineFuelTotal + end + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(300, string.format("%d", lFuelCounterLeft)) -- Left Fuel + ExportScript.Tools.SendData(301, string.format("%d", lFuelCounterRight)) -- Right Fuel + ExportScript.Tools.SendData(302, string.format("%d", lEngineFuelTotal)) -- Total Fuel + ExportScript.Tools.SendData(303, string.format("%.4f", lFuelNeedle)) -- Needle + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(300, string.format("%d", lFuelCounterLeft)) -- Left Fuel + ExportScript.Tools.SendDataDAC(301, string.format("%d", lFuelCounterRight)) -- Right Fuel + ExportScript.Tools.SendDataDAC(302, string.format("%d", lEngineFuelTotal)) -- Total Fuel + end +end + +function ExportScript.AF.StatusLamp(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(700, lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(701, lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(702, lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendData(703, lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(704, lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(705, lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(706, lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(707, lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(708, lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(709, lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(710, lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(711, lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(712, lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(713, lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(714, lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(715, lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(716, lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(717, lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(718, lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(719, lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(720, lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(721, lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(722, lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(723, lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendData(724, lMCPState.FuelTankDamage == true and 1 or 0 ) + --ExportScript.Tools.SendData(725, lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendData(726, lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendData(727, lMCPState.AutopilotOn == true and 1 or 0 ) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + + ExportScript.Tools.SendData(728, lEngineInfo.EngineStart.left ) -- lamp start left engine 1 (0|1) + ExportScript.Tools.SendData(729, lEngineInfo.EngineStart.right ) -- lamp start right engine 1 (0|1) + + ExportScript.Tools.SendData(730, lEngineInfo.RPM.left < 45 and 1 or 0 ) -- lamp generator left engine 1 (0|1) + ExportScript.Tools.SendData(731, lEngineInfo.RPM.right < 45 and 1 or 0 ) -- lamp generator right engine 1 (0|1) + end + + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine 1 (0|1) + ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine 1 (0|1) + + ExportScript.Tools.SendDataDAC("730", lEngineInfo.RPM.left < 45 and 1 or 0 ) -- lamp generator left engine 1 (0|1) + ExportScript.Tools.SendDataDAC("731", lEngineInfo.RPM.right < 45 and 1 or 0 ) -- lamp generator right engine 1 (0|1) + end + end +end + +function ExportScript.AF.FlareChaff(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "30" + --[flare] = number: "30" + + if ExportScript.AF.maxChaff == nil then + ExportScript.AF.maxChaff = lSnares.chaff + ExportScript.AF.tmpChaff = ExportScript.AF.maxChaff + end + if ExportScript.AF.maxFlare == nil then + ExportScript.AF.maxFlare = lSnares.flare + ExportScript.AF.tmpFlare = ExportScript.AF.maxFlare + end + if ExportScript.AF.timerChaff == nil then + ExportScript.AF.timerChaff = 0 + ExportScript.AF.timerChaffCounter = 3 + end + if ExportScript.AF.timerFlare == nil then + ExportScript.AF.timerFlare = 0 + ExportScript.AF.timerFlareCounter = 3 + end + local lblinkChaff = 0 + local lblinkFlare = 0 + local ltmp = 0 + + if ExportScript.AF.tmpChaff == 0 then + lblinkChaff = 1 + end + if ExportScript.AF.tmpFlare == 0 then + lblinkFlare = 1 + end + + if lSnares.chaff < ExportScript.AF.tmpChaff then + --ExportScript.Tools.WriteToLog('Chaff: '..ExportScript.Tools.dump(lSnares.chaff)..', ExportScript.AF.tmpChaff:'..ExportScript.Tools.dump(ExportScript.AF.tmpChaff)) + ExportScript.AF.tmpChaff = lSnares.chaff + --ExportScript.AF.timerChaff = os.time() + ExportScript.AF.timerChaff = os.clock() + ExportScript.Tools.WriteToLog('Chaff ausgeworfen, Zeit: '..ExportScript.Tools.dump(ExportScript.AF.timerChaff)) + ExportScript.AF.timerChaffCounter = 3 + end + if lSnares.flare < ExportScript.AF.tmpFlare then + --ExportScript.Tools.WriteToLog('Flare: '..ExportScript.Tools.dump(lSnares.flare)..', ExportScript.AF.tmpFlare:'..ExportScript.Tools.dump(ExportScript.AF.tmpFlare)) + ExportScript.AF.tmpFlare = lSnares.flare + --ExportScript.AF.timerFlare = os.time() + ExportScript.AF.timerFlare = os.clock() + ExportScript.Tools.WriteToLog('Flare ausgeworfen, Zeit: '..ExportScript.Tools.dump(ExportScript.AF.timerFlare)) + ExportScript.AF.timerFlareCounter = 3 + end + + if lblinkChaff == 0 and ExportScript.AF.timerChaff > 0.0 and ExportScript.AF.timerChaffCounter > 0 then + --local ldiffTimer = os.difftime (os.time(), ExportScript.AF.timerChaff) + local ldiffTimer = os.clock() - ExportScript.AF.timerChaff + ltmp, ldiffTimer = math.modf(ldiffTimer) + --ExportScript.Tools.WriteToLog('Zeit: '..ExportScript.AF.timerChaff..', Counter: '..ExportScript.AF.timerChaffCounter) + --ExportScript.Tools.WriteToLog('Zeit Diff: '..ldiffTimer) + if ExportScript.AF.timerChaffCounter == 1 and ldiffTimer > 0.9 then + --ExportScript.Tools.WriteToLog('0') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = 3 + ExportScript.AF.timerChaff = 0.0 + elseif ExportScript.AF.timerChaffCounter == 1 and ldiffTimer > 0.8 then + --ExportScript.Tools.WriteToLog('1') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer > 0.6 then + --ExportScript.Tools.WriteToLog('2') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer > 0.4 then + --ExportScript.Tools.WriteToLog('3') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 3 and ldiffTimer > 0.2 then + --ExportScript.Tools.WriteToLog('4') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 3 and ldiffTimer > 0.0 then + --ExportScript.Tools.WriteToLog('5') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ldiffTimer > 0.95 then + --ExportScript.Tools.WriteToLog('else') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = 3 + ExportScript.AF.timerChaff = 0.0 + end + + --[[ + if ExportScript.AF.timerChaffCounter == 3 and ldiffTimer < 0.5 then + ExportScript.Tools.WriteToLog('0') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 3 and ldiffTimer < 1.0 then + ExportScript.Tools.WriteToLog('1') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer < 1.5 then + ExportScript.Tools.WriteToLog('2') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer < 2.0 then + ExportScript.Tools.WriteToLog('3') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 1 and ldiffTimer < 2.5 then + ExportScript.Tools.WriteToLog('4') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 1 and ldiffTimer < 3.0 then + ExportScript.Tools.WriteToLog('5') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 0 or ldiffTimer > 3.0 then + ExportScript.Tools.WriteToLog('else') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = 3 + ExportScript.AF.timerChaff = 0 + end]] + --[[ + if ExportScript.AF.timerChaffCounter == 1 and ldiffTimer == 5 then + ExportScript.Tools.WriteToLog('0') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 1 and ldiffTimer == 4 then + ExportScript.Tools.WriteToLog('1') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer == 3 then + ExportScript.Tools.WriteToLog('2') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 2 and ldiffTimer == 2 then + ExportScript.Tools.WriteToLog('3') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 3 and ldiffTimer == 1 then + ExportScript.Tools.WriteToLog('4') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 3 and ldiffTimer == 0 then + ExportScript.Tools.WriteToLog('5') + lblinkChaff = 1 + --ExportScript.AF.timerChaffCounter = ExportScript.AF.timerChaffCounter - 1 + elseif ExportScript.AF.timerChaffCounter == 0 or ldiffTimer > 5 then + ExportScript.Tools.WriteToLog('else') + lblinkChaff = 0 + ExportScript.AF.timerChaffCounter = 3 + ExportScript.AF.timerChaff = 0 + end]] + end + + if lblinkFlare == 0 and ExportScript.AF.timerFlare > 0.0 and ExportScript.AF.timerFlareCounter > 0 then + --local ldiffTimer = os.difftime (os.time(), ExportScript.AF.timerFlare) + local ldiffTimer = os.clock() - ExportScript.AF.timerFlare + ltmp, ldiffTimer = math.modf(ldiffTimer) + --ExportScript.Tools.WriteToLog('Zeit: '..ExportScript.AF.timerFlare..', Counter: '..ExportScript.AF.timerFlareCounter) + --ExportScript.Tools.WriteToLog('Zeit Diff: '..ldiffTimer) + if ExportScript.AF.timerFlareCounter == 1 and ldiffTimer > 0.9 then + --ExportScript.Tools.WriteToLog('0') + lblinkFlare = 0 + ExportScript.AF.timerFlareCounter = 3 + ExportScript.AF.timerFlare = 0.0 + elseif ExportScript.AF.timerFlareCounter == 1 and ldiffTimer > 0.8 then + --ExportScript.Tools.WriteToLog('1') + lblinkFlare = 1 + --ExportScript.AF.timerFlareCounter = ExportScript.AF.timerFlareCounter - 1 + elseif ExportScript.AF.timerFlareCounter == 2 and ldiffTimer > 0.6 then + --ExportScript.Tools.WriteToLog('2') + lblinkFlare = 0 + ExportScript.AF.timerFlareCounter = ExportScript.AF.timerFlareCounter - 1 + elseif ExportScript.AF.timerFlareCounter == 2 and ldiffTimer > 0.4 then + --ExportScript.Tools.WriteToLog('3') + lblinkFlare = 1 + --ExportScript.AF.timerFlareCounter = ExportScript.AF.timerFlareCounter - 1 + elseif ExportScript.AF.timerFlareCounter == 3 and ldiffTimer > 0.2 then + --ExportScript.Tools.WriteToLog('4') + lblinkFlare = 0 + ExportScript.AF.timerFlareCounter = ExportScript.AF.timerFlareCounter - 1 + elseif ExportScript.AF.timerFlareCounter == 3 and ldiffTimer > 0.0 then + --ExportScript.Tools.WriteToLog('5') + lblinkFlare = 1 + --ExportScript.AF.timerFlareCounter = ExportScript.AF.timerFlareCounter - 1 + elseif ldiffTimer > 0.95 then + --ExportScript.Tools.WriteToLog('else') + lblinkFlare = 0 + ExportScript.AF.timerFlareCounter = 3 + ExportScript.AF.timerFlare = 0.0 + end + end + + --ExportScript.Tools.WriteToLog('lblinkChaff: '..lblinkChaff) + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(800, lSnares.chaff ) -- display chaff + ExportScript.Tools.SendData(801, lSnares.flare ) -- display flare + ExportScript.Tools.SendData(802, lblinkChaff ) -- blink chaff active/aktive empty chaff + ExportScript.Tools.SendData(803, lblinkFlare ) -- blink flare active/aktive empty flare + ExportScript.Tools.SendData(804, ExportScript.AF.tmpChaff < 20 and 1 or 0 ) -- minimum chaff lamp + ExportScript.Tools.SendData(805, ExportScript.AF.tmpFlare < 10 and 1 or 0 ) -- minimum flare lamp + end + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(800, lSnares.chaff ) -- display chaff + ExportScript.Tools.SendDataDAC(801, lSnares.flare ) -- display flare + ExportScript.Tools.SendDataDAC(802, lblinkChaff ) -- blink chaff active/aktive empty chaff + ExportScript.Tools.SendDataDAC(803, lblinkFlare ) -- blink flare active/aktive empty flare + ExportScript.Tools.SendDataDAC(804, ExportScript.AF.tmpChaff < 20 and 1 or 0 ) -- minimum chaff lamp + ExportScript.Tools.SendDataDAC(805, ExportScript.AF.tmpFlare < 10 and 1 or 0 ) -- minimum flare lamp + end +end + +function ExportScript.AF.MechanicalDevicesIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo == nil then + return + end + local lTrueAirSpeed = LoGetTrueAirSpeed() + if lTrueAirSpeed == nil then + lTrueAirSpeed = 0 + end + --ExportScript.Tools.WriteToLog('ExportScript.AF.MechanicalDevicesIndicator: '..ExportScript.Tools.dump(lMechInfo)) + --[[ + [hook] = { + [status] = number: "0" + [value] = number: "0" + } + [parachute] = { + [status] = number: "0" + [value] = number: "0" + } + [controlsurfaces] = { + [eleron] = { + [left] = number: "0" + [right] = number: "-0.21084336936474" + } + [elevator] = { + [left] = number: "-0" + [right] = number: "-0" + } + [rudder] = { + [left] = number: "0" + [right] = number: "0" + } + } + [airintake] = { + [status] = number: "0" + [value] = number: "0" + } + [canopy] = { + [status] = number: "0" + [value] = number: "0" + } + [refuelingboom] = { + [status] = number: "0" + [value] = number: "0" + } + [wing] = { + [status] = number: "0" + [value] = number: "0" + } + [noseflap] = { + [status] = number: "0" + [value] = number: "0" + } + [gear] = { + [value] = number: "0" + [nose] = { + [rod] = number: "0" + } + [main] = { + [left] = { + [rod] = number: "0" + } + [right] = { + [rod] = number: "0" + } + } + [status] = number: "0" + } + [speedbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [wheelbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [flaps] = { + [status] = number: "0" + [value] = number: "0" + }]] + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + ExportScript.Tools.SendData(531, ((lMechInfo.flaps.value > 0.25 and lMechInfo.flaps.value < 0.93) and 1 or 0) ) -- flap 1. position + ExportScript.Tools.SendData(532, (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap 2. position + ExportScript.Tools.SendData(533, ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1 or 0) ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + ExportScript.Tools.SendData(534, (lMechInfo.gear.value > 0.5 and 1 or 0) ) -- Intake FOD shields + + ExportScript.Tools.SendData(725, (lMechInfo.canopy.value == 1 and 1 or 0) ) -- CanopyOpen + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(501, (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC(502, (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC(503, (lMechInfo.gear.value == 1 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendDataDAC(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + ExportScript.Tools.SendDataDAC(531, ((lMechInfo.flaps.value > 0.25 and lMechInfo.flaps.value < 0.93) and 1 or 0) ) -- flap 1. position + ExportScript.Tools.SendDataDAC(532, (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap 2. position + ExportScript.Tools.SendDataDAC(533, ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1 or 0) ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + ExportScript.Tools.SendDataDAC(534, (lMechInfo.gear.value > 0.5 and 1 or 0) ) -- Intake FOD shields + + ExportScript.Tools.SendDataDAC(725, (lMechInfo.canopy.value == 1 and 1 or 0) ) -- CanopyOpen + end +end + +function ExportScript.AF.WeaponStatusPanel(FunctionTyp) +-- The weapon status panel, quantity and readiness of the currently selected weapon and the remaining gun ammunition are indicated. + local lFunctionTyp = FunctionTyp or "Ikarus" + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('ExportScript.AF.PayloadInfo: '..ExportScript.Tools.dump(ExportScript.AF.PayloadInfo)) + --[[ exsample + [Stations] = { + [1] = { + [CLSID] = string: "{6D21ECEA-F85B-4E8D-9D51-31DC9B8AA4EF}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "45" + [level1] = number: "4" + [level4] = number: "25" + [level2] = number: "15" + } + } + [2] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "117" + [level2] = number: "7" + } + [count] = number: "7" + [CLSID] = string: "{69926055-0DA8-4530-9F2F-C86B157EA9F6}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "33" + [level1] = number: "4" + [level4] = number: "147" + [level2] = number: "7" + } + } + [3] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "135" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "LAU_88_AGM_65H_2_L" + [adapter] = { + [level3] = number: "47" + [level1] = number: "4" + [level4] = number: "4" + [level2] = number: "15" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "8" + [level1] = number: "4" + [level4] = number: "138" + [level2] = number: "4" + } + } + [4] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "114" + [level2] = number: "5" + } + [count] = number: "3" + [CLSID] = string: "BRU-42_3*BDU-33" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "9" + [level1] = number: "4" + [level4] = number: "69" + [level2] = number: "5" + } + } + [5] = { + [CLSID] = string: "{5335D97A-35A5-4643-9D9B-026C75961E52}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "38" + [level1] = number: "4" + [level4] = number: "35" + [level2] = number: "5" + } + } + [6] = { + [CLSID] = string: "Fuel_Tank_FT600" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "43" + [level1] = number: "1" + [level4] = number: "103" + [level2] = number: "3" + } + } + [7] = { + [CLSID] = string: "{5335D97A-35A5-4643-9D9B-026C75961E52}" + [container] = boolean: "false" + [count] = number: "1" + [weapon] = { + [level3] = number: "38" + [level1] = number: "4" + [level4] = number: "35" + [level2] = number: "5" + } + } + [8] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "114" + [level2] = number: "5" + } + [count] = number: "3" + [CLSID] = string: "BRU-42_3*BDU-33" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "9" + [level1] = number: "4" + [level4] = number: "69" + [level2] = number: "5" + } + } + [9] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "106" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "{E6A6262A-CA08-4B3D-B030-E1A993B98453}" + [adapter] = { + [level3] = number: "47" + [level1] = number: "4" + [level4] = number: "4" + [level2] = number: "15" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "8" + [level1] = number: "4" + [level4] = number: "77" + [level2] = number: "4" + } + } + [10] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "117" + [level2] = number: "7" + } + [count] = number: "7" + [CLSID] = string: "{69926055-0DA8-4530-9F2F-C86B157EA9F6}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "33" + [level1] = number: "4" + [level4] = number: "147" + [level2] = number: "7" + } + } + [11] = { + [wstype] = { + [level3] = number: "32" + [level1] = number: "4" + [level4] = number: "50" + [level2] = number: "4" + } + [count] = number: "2" + [CLSID] = string: "{DB434044-F5D0-4F1F-9BA9-B73027E18DD3}" + [adapter] = { + [level3] = number: "0" + [level1] = number: "0" + [level4] = number: "0" + [level2] = number: "0" + } + [container] = boolean: "true" + [weapon] = { + [level3] = number: "7" + [level1] = number: "4" + [level4] = number: "22" + [level2] = number: "4" + } + } + } + [CurrentStation] = number: "0" + [Cannon] = { + [shells] = number: "1150" + } + ]] + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 6 7 8 9 10 11 + ]] + -- Payload Info + -- weapon stations (panel) 1 (left) - 11 (right) reserved + + --ExportScript.Tools.SendDataDAC("CurrentStation", ExportScript.AF.PayloadInfo.CurrentStation ) + -- air-to-air missils panel 1 and 11, air combat modus, CurrentStation = 1, panel 1 and 11 on + -- wenn die Waffenstationen gleichmässig belegt sind, hat bei Auswahl CurrentStation immer den Wert der linken Station + -- bei ungleichmäßiger Belegung, hat CurrentStation immer den Wert der jeweiligen Station + -- Waffenbezeichnung als UUID, ExportScript.AF.PayloadInfo.Stations[X].CLSID + ExportScript.Tools.SendDataDAC("100", ExportScript.AF.PayloadInfo.Cannon.shells ) -- count cannon shells + ExportScript.Tools.SendDataDAC("101", (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 1) + ExportScript.Tools.SendDataDAC("102", (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 2) + ExportScript.Tools.SendDataDAC("103", (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 3) + ExportScript.Tools.SendDataDAC("104", (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 4) + ExportScript.Tools.SendDataDAC("105", (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 5) + ExportScript.Tools.SendDataDAC("106", (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 6, center station) + ExportScript.Tools.SendDataDAC("107", (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 7) + ExportScript.Tools.SendDataDAC("108", (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 8) + ExportScript.Tools.SendDataDAC("109", (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 9) + ExportScript.Tools.SendDataDAC("110", (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 10) + ExportScript.Tools.SendDataDAC("111", (ExportScript.AF.PayloadInfo.Stations[11].count > 0 and 1 or 0) ) -- weapon presend > 0 (panel 11) + -- weapon stations (panel) 1 (left) - 11 (right) empty + ExportScript.Tools.SendDataDAC("121", (ExportScript.AF.PayloadInfo.Stations[1].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 1) + ExportScript.Tools.SendDataDAC("122", (ExportScript.AF.PayloadInfo.Stations[2].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 2) + ExportScript.Tools.SendDataDAC("123", (ExportScript.AF.PayloadInfo.Stations[3].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 3) + ExportScript.Tools.SendDataDAC("124", (ExportScript.AF.PayloadInfo.Stations[4].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 4) + ExportScript.Tools.SendDataDAC("125", (ExportScript.AF.PayloadInfo.Stations[5].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 5) + ExportScript.Tools.SendDataDAC("126", (ExportScript.AF.PayloadInfo.Stations[6].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 6, center station) + ExportScript.Tools.SendDataDAC("127", (ExportScript.AF.PayloadInfo.Stations[7].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 7) + ExportScript.Tools.SendDataDAC("128", (ExportScript.AF.PayloadInfo.Stations[8].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 8) + ExportScript.Tools.SendDataDAC("129", (ExportScript.AF.PayloadInfo.Stations[9].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 9) + ExportScript.Tools.SendDataDAC("130", (ExportScript.AF.PayloadInfo.Stations[10].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 10) + ExportScript.Tools.SendDataDAC("131", (ExportScript.AF.PayloadInfo.Stations[11].count == 0 and 1 or 0) ) -- weapon presend > 0 (panel 11) + + -- defination + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201, CurrentID2 = 221 } -- left + ExportScript.AF.TmpStationToPanel[2] = {Panel = 2, StationID = 102, CurrentID = 202, CurrentID2 = 222 } + ExportScript.AF.TmpStationToPanel[3] = {Panel = 3, StationID = 103, CurrentID = 203, CurrentID2 = 223 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 4, StationID = 104, CurrentID = 204, CurrentID2 = 224 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 5, StationID = 105, CurrentID = 205, CurrentID2 = 225 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 6, StationID = 106, CurrentID = 206, CurrentID2 = 226 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 7, StationID = 107, CurrentID = 207, CurrentID2 = 227 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 8, StationID = 108, CurrentID = 208, CurrentID2 = 228 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 9, StationID = 109, CurrentID = 209, CurrentID2 = 229 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 10, StationID = 110, CurrentID = 210, CurrentID2 = 230 } + ExportScript.AF.TmpStationToPanel[11] = {Panel = 11, StationID = 111, CurrentID = 211, CurrentID2 = 231 } -- right + + ExportScript.AF.WeaponStatusPanel_Reset(201, 211) + ExportScript.AF.WeaponStatusPanel_Reset(221, 231) + + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID, 1) -- eigentliche Auswahl + --ExportScript.Tools.WriteToLog('aktiv: '..ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].container then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].count > 1 then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID2, 1) -- eigentliche Auswahl + --ExportScript.Tools.WriteToLog('aktiv2: '..ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID2) + end + end + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation_F15C) -- zugehörige Stationen + elseif ExportScript.AF.PayloadInfo.CurrentStation == 0 and ExportScript.AF.CurrentStationTmp > 0 then + ExportScript.AF.WeaponStatusPanel_Reset(201, 211) + ExportScript.AF.WeaponStatusPanel_Reset(221, 231) + ExportScript.AF.CurrentStationTmp = -1 + end +end + +function ExportScript.AF.RWRlite(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + local lTWSInfo = LoGetTWSInfo() -- RWR Information + if lTWSInfo == nil then + return + end + + local lPriorityTmp = 0 + local lPrimaryThreatTmp = 0 + local lPrimaryAir = 0 + local lPrimarySAM = 0 + + if(#lTWSInfo.Emitters > 0) then + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + if(lTWSInfo.Emitters[EmitterIndex].Priority > lPriorityTmp) then + lPriorityTmp = lTWSInfo.Emitters[EmitterIndex].Priority + lPrimaryThreatTmp = EmitterIndex + end + end + + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + local lType = lTWSInfo.Emitters[EmitterIndex].Type + --ExportScript.Tools.WriteToLog('level: '..lType.level1..', '..lType.level2..', '..lType.level3..', '..lType.level4) + + local lAzimut = ExportScript.Tools.round(lTWSInfo.Emitters[EmitterIndex].Azimuth * 90, 1) + + if EmitterIndex == lPrimaryThreatTmp then + ExportScript.AF.RWRlite_FoundErmitter = true + lPrimaryAir = (lType.level1 == 1 and 1 or 0) + lPrimarySAM = ((lType.level1 == 2 and lType.level2 == 16) and 1 or 0) + end + end + else + if ExportScript.AF.RWRlite_FoundErmitter ~= nil and ExportScript.AF.RWRlite_FoundErmitter then + lPrimaryAir = 0 + lPrimarySAM = 0 + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(400, lPrimaryAir) -- primary Air + ExportScript.Tools.SendData(401, lPrimarySAM) -- primary SAM + end + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(400, lPrimaryAir) -- primary Air + ExportScript.Tools.SendDataDAC(401, lPrimarySAM) -- primary SAM + end +end + +-- Helper functions + +function ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation_F15C(_index) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].CLSID == ExportScript.AF.PayloadInfo.Stations[_index].CLSID and ExportScript.AF.PayloadInfo.CurrentStation ~= _index then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[_index].CurrentID, 1) + --ExportScript.Tools.WriteToLog('aktiv3: '..ExportScript.AF.TmpStationToPanel[_index].CurrentID) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].container then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].count > 1 then + ExportScript.Tools.SendDataDAC(ExportScript.AF.TmpStationToPanel[_index].CurrentID2, 1) + --ExportScript.Tools.WriteToLog('aktiv3: '..ExportScript.AF.TmpStationToPanel[_index].CurrentID2) + end + end + end +end \ No newline at end of file diff --git a/ExportsModules/F-5E-3.lua b/ExportsModules/F-5E-3.lua new file mode 100644 index 0000000..51fa4c6 --- /dev/null +++ b/ExportsModules/F-5E-3.lua @@ -0,0 +1,717 @@ +-- F-5E-3 + +ExportScript.FoundDCSModule = true +ExportScript.Version.F5E3 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Gear System + [97] = "%.4f", -- AlterReleaseRods + -- Cockpit mechanics + [712] = "%.4f", -- CanopyHandle + -- WEAPONS ---------------------------------------------------- + -- CMDS + [401] = "%.4f", -- ChaffDrumCounter_10 {0.0, 1.0} {0.0, 10.0} + [402] = "%.4f", -- ChaffDrumCounter_1 {0.0, 1.0} {0.0, 10.0} + [405] = "%.4f", -- FlareDrumCounter_10 {0.0, 1.0} {0.0, 10.0} + [406] = "%.4f", -- FlareDrumCounter_1 {0.0, 1.0} {0.0, 10.0} + -- AN/ASG-31 Sight + [43] = "%.4f", -- RetDepressionDrum_100 {0.0, 1.0} {0.0, 10.0} + [44] = "%.4f", -- RetDepressionDrum_10 {0.0, 1.0} {0.0, 10.0} + [45] = "%.4f", -- RetDepressionDrum_1 {0.0, 1.0} {0.0, 10.0} + -- Slipball + [3] = "%.4f", -- Slipball {-1.0, 1.0} + -- Sight Camera + [85] = "%.4f", -- MotorRunKnob {1.0, 0.0} + -- AN/APQ-159 Radar + -- Range scale lights + [155] = "%.4f", -- RangeScale_5 + [156] = "%.4f", -- RangeScale_10 + [157] = "%.4f", -- RangeScale_20 + [158] = "%.4f", -- RangeScale_40 + [159] = "%.f", -- InRangeLight + [160] = "%.f", -- FailLight + [161] = "%.f", -- LockOnLight + [162] = "%.f", -- ExcessGLight + [163] = "%.4f", -- ScaleBrightness + -- INSTRUMENTS ------------------------------------------------ + -- Angle-of-attack Indicator + [7] = "%.4f", -- AOA_Units {0.0, 1.0} {0.0, 30.0} + [704] = "%.f", -- AOA_poweroff_flag + -- Accelerometer + [6] = "%.4f", -- Accelerometer { 0.0, 0.323, 0.653, 1.0} {-5.0, 0.0, 5.0, 10.0} + [902] = "%.4f", -- AccelerometerMin { 0.0, 0.323, 0.653, 1.0} {-5.0, 0.0, 5.0, 10.0} + [903] = "%.4f", -- AccelerometerMax { 0.0, 0.323, 0.653, 1.0} {-5.0, 0.0, 5.0, 10.0} + -- AirSpeed/Mach Indicator + [8] = "%.4f", -- Airspeed {0.0, 0.0435, 0.1, 0.318, 0.3745, 0.397, 0.4495, 0.482, 0.54, 0.553, 0.6145, 0.658, 0.668, 0.761, 0.801, 0.877, 0.909, 0.942, 0.972, 1.0} {0.0, 80.0, 100.0, 170.0, 190.0, 200.0, 230.0, 250.0, 290.0, 300.0, 350.0, 390.0, 400.0, 500.0, 550.0, 650.0, 700.0, 750.0, 800.0, 850.0} + [178] = "%.4f", -- MaxAirspeed {0.0, 0.0435, 0.1, 0.318, 0.3745, 0.397, 0.4495, 0.482, 0.54, 0.553, 0.6145, 0.658, 0.668, 0.761, 0.801, 0.877, 0.909, 0.942, 0.972, 1.0} {0.0, 80.0, 100.0, 170.0, 190.0, 200.0, 230.0, 250.0, 290.0, 300.0, 350.0, 390.0, 400.0, 500.0, 550.0, 650.0, 700.0, 750.0, 800.0, 850.0} + [177] = "%.4f", -- SetAirspeed + [179] = "%.4f", -- MachIndicator {1.0, 0.957, 0.92, 0.631, 0.386} {0.0, 0.5, 1.0, 1.8, 2.5} + -- Vertical Velocity Indicator + [24] = "%.4f", -- Variometer {-1.0, -0.64, -0.5, -0.29, 0.0, 0.29, 0.5, 0.64, 1.0} {-6000.0, -3000.0, -2000.0, -1000.0, 0.0, 1000.0, 2000.0, 3000.0, 6000.0} + -- Altimeter AAU-34/A + [10] = "%.4f", -- Altimeter_100_footPtr {0.0, 1.0} {0.0, 1000.0} + [11] = "%.4f", -- Altimeter_10000_footCount {0.0, 1.0} {0.0, 10.0} + [520] = "%.4f", -- Altimeter_1000_footCount {0.0, 1.0} {0.0, 10.0} + [521] = "%.4f", -- Altimeter_100_footCount {0.0, 1.0} {0.0, 10.0} + [59] = "%.4f", -- pressure_setting_0 {0.0, 1.0} {0.0, 10.0} + [58] = "%.4f", -- pressure_setting_1 {0.0, 1.0} {0.0, 10.0} + [57] = "%.4f", -- pressure_setting_2 {0.0, 1.0} {0.0, 10.0} + [56] = "%.4f", -- pressure_setting_3 {0.0, 1.0} {0.0, 10.0} + [9] = "%.4f", -- AAU34_PNEU_flag {0.0, 1.0} {0.0, 0.4} + -- Attitude Indicator ARU-20 + [81] = "%.4f", -- AI_Pitch {-0.507, 0.0, 0.507} {-rad_(90.0), 0.0, rad_(90.0)} + [30] = "%.4f", -- AI_Bank {-1.0, 1.0} { 0.0, math.pi * 2.0} + [149] = "%.4f", -- AI_OFF_flag + -- Horizontal Situation Indicator + [32] = "%.4f", -- HSI_CompassCard + [139] = "%.4f", -- HSI_BearingPtr + [35] = "%.4f", -- HSI_CourseArrow + [36] = "%.4f", -- HSI_CourseDevInd {-1.0, 1.0} + [144] = "%.4f", -- HSI_HeadingMark + [268] = "%.4f", -- HSI_Range_100 {0.0, 1.0} {0.0, 10.0} + [269] = "%.4f", -- HSI_Range_10 {0.0, 1.0} {0.0, 10.0} + [270] = "%.4f", -- HSI_Range_1 {0.0, 1.0} {0.0, 10.0} + [142] = "%.4f", -- HSI_Range_flag + [275] = "%.4f", -- HSI_CourseSel_100 {0.0, 1.0} {0.0, 10.0} + [276] = "%.4f", -- HSI_CourseSel_10 {0.0, 1.0} {0.0, 10.0} + [277] = "%.4f", -- HSI_CourseSel_1 {0.0, 1.0} {0.0, 10.0} + [146] = "%.4f", -- HSI_ToFrom + [143] = "%.4f", -- HSI_OFF_flag + [141] = "%.4f", -- HSI_DevDF_Win + -- Standby Attitude Indicator + [438] = "%.4f", -- SAI_Pitch {-0.665, -0.581, -0.5, 0.0, 0.5, 0.581, 0.676, 0.735} {-rad_(78.0), -rad_(60.0), -rad_(42.0), 0.0, rad_(42.0), rad_(60.0), rad_(80.0), rad_(92.0)} + [439] = "%.4f", -- SAI_Bank {1.0, -1.0} {-math.pi, math.pi} + [440] = "%.4f", -- SAI_OFF_flag + --[443] = "%.4f", -- SAI_knob_arrow {-1.0, 1.0} {0.0, 1.0} + -- Clock + [19] = "%.4f", -- CLOCK_currtime_hours + [18] = "%.4f", -- CLOCK_currtime_minutes + [509] = "%.4f", -- CLOCK_elapsed_time_minutes + [37] = "%.4f", -- CLOCK_elapsed_time_seconds + -- Pitch Trim Indicator + [52] = "%.4f", -- Pitch_Trim {1.0, 0.0, -0.1} {-10.0, 0.0, 1.0} + -- Flap Indicator + [51] = "%.4f", -- Flap_Indicator {0.0, 0.4} {0.0, 4.0} + -- Hydraulic Pressure Indicators + [109] = "%.4f", -- Utility_Pressure {0.0, 1.0} {0.0, 4000.0} + [110] = "%.4f", -- Flight_Pressure {0.0, 1.0} {0.0, 4000.0} + -- Engine Tachometers + [16] = "%.4f", -- Tachometer_Left {0.008, 0.475, 0.84, 0.94, 1.0} {0.0, 50.0, 90.0, 100.0, 107.0} + [425] = "%.4f", -- Tachometer_percent_Left {0.0, 1.0} {0.0, 10.0} + [17] = "%.4f", -- Tachometer_Right {0.008, 0.475, 0.84, 0.94, 1.0} {0.0, 50.0, 90.0, 100.0, 107.0} + [426] = "%.4f", -- Tachometer_percent_Right {0.0, 1.0} {0.0, 10.0} + -- Exhaust Gas Temperature Indicators + [12] = "%.4f", -- EGT_Left {0.0, 0.03, 0.1, 0.274, 0.78, 1.0} {0.0, 140.0, 200.0, 500.0, 800.0, 1200.0} + [14] = "%.4f", -- EGT_Right {0.0, 0.03, 0.1, 0.274, 0.78, 1.0} {0.0, 140.0, 200.0, 500.0, 800.0, 1200.0} + -- Aux Intake Doors Indicator + [111] = "%.4f", -- AuxIntakeDoors {0.0, 0.2} {0.0, 2.0} + -- Oil Pressure Indicator (Dual) + [112] = "%.4f", -- OilPressure_Left {0.0, 1.0} {0.0, 100.0} + [113] = "%.4f", -- OilPressure_Right {0.0, 1.0} {0.0, 100.0} + -- Nozzle Position Indicators + [107] = "%.4f", -- NozzlePos_Left {0.0, 1.0} {0.0, 100.0} + [108] = "%.4f", -- NozzlePos_Right {0.0, 1.0} {0.0, 100.0} + -- Cabin Pressure Altimeter + [114] = "%.4f", -- CabinPressure {0.0, 1.0} {0.0, 50.0} + -- Fuel Flow Indicator (Dual) + [525] = "%.4f", -- FuelFlow_Left {0.0, 0.67, 0.75, 0.83, 1.0} {0.0, 4000.0, 7000.0, 10000.0, 15000.0} + [526] = "%.4f", -- FuelFlow_Right {0.0, 0.67, 0.75, 0.83, 1.0} {0.0, 4000.0, 7000.0, 10000.0, 15000.0} + -- Fuel Quantity Indicator (Dual) + [22] = "%.4f", -- FuelQuantity_Left {0.0, 1.0} {0.0, 2500.0} + [23] = "%.4f", -- FuelQuantity_Right {0.0, 1.0} {0.0, 2500.0} + -- Oxygen Quantity Indicator + [390] = "%.4f", -- OxygenQuantity {0.0, 1.0} {0.0, 5.0} + -- Oxygen Flow Pressure Indicator + [604] = "%.4f", -- FlowPressure {0.0, 0.5, 1.0} {0.0, 100.0, 500.0} + -- Oxygen Flow Indicator + [600] = "%.4f", -- FlowBlinker + -- RADIO ------------------------------------------------------ + -- UHF Radio AN/ARC-164 + [326] = "%.2f", -- UHFRadioChannel + [302] = "%.1f", -- UHFRadio100MHz + [303] = "%.1f", -- UHFRadio10MHz {1.0, 0.0} {0.0, 1.0} + [304] = "%.1f", -- UHFRadio1MHz {1.0, 0.0} {0.0, 1.0} + [305] = "%.1f", -- UHFRadio01MHz {1.0, 0.0} {0.0, 1.0} + [306] = "%.1f", -- UHFRadio0025MHz {1.0, 0.0} {0.0, 1.0} + -- IFF/SIF APX72 + [197] = "%.4f", -- IFF_Code4Sw_Pull + [198] = "%.4f", -- IFF_MasterSw_Pull + -- TACAN + [263] = "%.4f", -- TACAN_window_wheel.hundreds {0.0, 1.0} {0.0, 10.0} + [264] = "%.4f", -- TACAN_window_wheel.tens {0.0, 1.0} {0.0, 10.0} + [265] = "%.4f", -- TACAN_window_wheel.ones {0.0, 1.0} {0.0, 10.0} + --[266] = "%.4f", -- XYwheel + [260] = "%.f", -- TACAN_test_light + -- LAMPS + -- Engine Fire Lights + [167] = "%.f", -- lamp_LeftFire + [168] = "%.f", -- lamp_RightFire + -- AOA Indexer Lights + [48] = "%.f", -- lamp_AOA_Red + [49] = "%.f", -- lamp_AOA_Green + [50] = "%.f", -- lamp_AOA_Yellow + -- Landing Gear Lights + [96] = "%.f", -- lamp_GearWarning + [54] = "%.f", -- lamp_GearNose + [53] = "%.f", -- lamp_GearLeft + [55] = "%.f", -- lamp_GearRight + -- Hook Light + [90] = "%.f", -- lamp_Hook + -- Caution Lights panel + [530] = "%.f", -- lamp_LeftGenerator + [531] = "%.f", -- lamp_Canopy + [532] = "%.f", -- lamp_RightGenerator + [533] = "%.f", -- lamp_UtilityHyd + [534] = "%.f", -- lamp_Spare1 + [535] = "%.f", -- lamp_FlightHyd + [536] = "%.f", -- lamp_ExtTanksEmpty + [537] = "%.f", -- lamp_IFF + [538] = "%.f", -- lamp_Oxygen + [539] = "%.f", -- lamp_LeftFuelLow + [540] = "%.f", -- lamp_EngineAntiIce + [541] = "%.f", -- lamp_RightFuelLow + [542] = "%.f", -- lamp_LeftFuelPress + [543] = "%.f", -- lamp_INS + [544] = "%.f", -- lamp_RightFuelPress + [545] = "%.f", -- lamp_AOA_Flaps + [546] = "%.f", -- lamp_AirDataComputer + [547] = "%.f", -- lamp_DirGyro + [548] = "%.f", -- lamp_Spare2 + [549] = "%.f", -- lamp_DC_Overload + [550] = "%.f", -- lamp_Spare3 + -- Master Caution Light + [169] = "%.f", -- lamp_MasterCaution + --IFF Panel lamps + [216] = "%.f", -- IFF_reply_lamp + [218] = "%.f", -- IFF_test_lamp + -- Internal Lights + [801] = "%.f", -- light_Flight + [802] = "%.f", -- light_Engine + [803] = "%.f", -- light_Console + [804] = "%.f", -- light_Compass + [805] = "%.f", -- light_Flood + [806] = "%.f", -- light_Sight + [807] = "%.f", -- light_Armt + [810] = "%.f", -- light_Tstorm + -- RWR button lights + [576] = "%.f", -- rwr_Power + [572] = "%.f", -- rwr_Ship_unkn + [571] = "%.f", -- rwr_Ship_U + [568] = "%.f", -- rwr_Sys_On + [569] = "%.f", -- rwr_Sys + [565] = "%.f", -- rwr_Sep_Up + [566] = "%.f", -- rwr_Sep_Down + [563] = "%.f", -- rwr_Alt + [562] = "%.f", -- rwr_Alt_Low + [557] = "%.f", -- rwr_Hand_Up + [558] = "%.f", -- rwr_Hand_H + [555] = "%.f", -- rwr_Search + [553] = "%.f", -- rwr_Mode_Open + [552] = "%.f", -- rwr_Mode_Pri + -- Brightness regulation + [808] = "%.f", -- brtRadarScale + [815] = "%.f", -- brtRwrLights + [816] = "%.f", -- brtFireLights + [817] = "%.f", -- brtMainLights + [818] = "%.f", -- brtIFFLights + [819] = "%.f" -- brtRadarLights +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Control System + [323] = "%1d", -- Yaw Damper Switch, YAW/OFF + [322] = "%1d", -- Pitch Damper Switch, PITCH/OFF + [324] = "%.4f", -- Rudder Trim Knob (Axis) {-1.0, 1.0} in 0.15 Steps + [116] = "%1d", -- Flaps Lever, EMER UP/THUMB SW/FULL {-1.0, 0.0, 1.0} + [132] = "%1d", -- Pitch Damper Cutoff Switch - Push to cutoff + [101] = "%1d", -- Speed Brake Switch, OUT/OFF/IN {-1.0, 0.0, 1.0} + [115] = "%1d", -- Auto Flap System Thumb Switch, UP/FIXED/AUTO {-1.0, 0.0, 1.0} + --[125] = "%1d", -- Trimmer Switch, PUSH(DESCEND) {0.0, 1.0} + --[125] = "%1d", -- Trimmer Switch, PULL(CLIMB) {-1.0, 0.0} + --[126] = "%1d", -- Trimmer Switch, LEFT WING DOWN {0.0, 1.0} + --[126] = "%1d", -- Trimmer Switch, RIGHT WING DOWN {-1.0, 0.0} + [125] = "%1d", -- Trimmer Switch, PUSH(DESCEND)/PULL(CLIMB) {1.0, 0.0, -1.0} + [126] = "%1d", -- Trimmer Switch, LEFT WING DOWN/RIGHT WING DOWN {1.0, 0.0, -1.0} + [278] = "%1d", -- Rudder Pedal Adjust T-Handle, PULL/STOW + -- Electric system + [387] = "%1d", -- attery Switch, BATT/OFF + [388] = "%1d", -- Left Generator Switch, L GEN/OFF/RESET {-1.0, 0.0, 1.0} + [389] = "%1d", -- Right Generator Switch, R GEN/OFF/RESET {-1.0, 0.0, 1.0} + [375] = "%1d", -- Pitot Anti-Ice Switch, PITOT/OFF + [230] = "%1d", -- Fuel & Oxygen Switch, GAGE TEST/OFF/QTY CHECK {-1.0, 0.0, 1.0} + -- Fuel System + [360] = "%1d", -- Left Fuel Shutoff Switch, OPEN/CLOSED + [362] = "%1d", -- Right Fuel Shutoff Switch, OPEN/CLOSED + [377] = "%1d", -- Ext Fuel Cl Switch, ON/OFF + [378] = "%1d", -- Ext Fuel Pylons Switch, ON/OFF + [380] = "%1d", -- Left Boost Pump Switch, ON/OFF + [381] = "%1d", -- Crossfeed Switch, OPEN/CLOSED + [382] = "%1d", -- Right Boost Pump Switch, ON/OFF + [383] = "%1d", -- Autobalance Switch, LEFT/NEUT/RIGHT {-1.0, 0.0, 1.0} + -- Engines + [357] = "%1d", -- Left Engine Start Button - Push to start + [358] = "%1d", -- Right Engine Start Button - Push to start + [376] = "%1d", -- Engine Anti-Ice Switch, ENGINE/OFF {1.0, -1.0} + -- Gear System + [83] = "%1d", -- Landing Gear Lever, LG UP/LG DOWN + [95] = "%1d", -- Landing Gear Alternate Release Handle, Pull and Hold + [98] = "%1d", -- Gear Alternate Release Reset Control, OFF/RESET + [88] = "%1d", -- Landing Gear Downlock Override Button - Push and hold to override locking solenoid + [87] = "%1d", -- Landing Gear And Flap Warning Silence Button + [250] = "%1d", -- Nose Strut Switch, EXTEND/RETRACT {1.0, -1.0} + [131] = "%1d", -- Nosewheel Steering Button - Press and Hold to engage nosewheel control + [92] = "%1d", -- Left Landing Gear Lamp - Press to test(LMB) + [93] = "%1d", -- Nose Landing Gear Lamp - Press to test(LMB) + [94] = "%1d", -- Right Landing Gear Lamp - Press to test(LMB) + [89] = "%1d", -- Arresting Hook Button + -- Oxygen System + [603] = "%1d", -- Oxygen Supply Lever, ON/OFF {1.0, -1.0} + [602] = "%1d", -- Diluter Lever + [601] = "%1d", -- Emergency Lever, EMERGENCY/NORMAL/TEST MASK {-1.0, 0.0, 1.0} + -- EC System + [371] = "%1d", -- Cabin Press Switch, DEFOG ONLY/NORMAL/RAM DUMP {0.0, 0.5, 1.0} + [372] = "%1d", -- Cabin Temp Switch, AUTO/CENTER/MAN COLD/MAN HOT {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6} + [373] = "%.2f", -- Cabin Temp Knob (Axis) {-1.0, 1.0} in 0.15 Steps + [374] = "%.2f", -- Canopy Defog Knob (Axis) {0.0, 1.0} in 0.15 Steps + [386] = "%.2f", -- Cockpit Air Inlet (Horizontal) (Axis) {-1.0, 1.0} in 0.1 Steps + [385] = "%.2f", -- Cockpit Air Inlet (Vertical) (Axis) {-1.0, 1.0} in 0.1 Steps + -- Cockpit Mechanics + --[0] = "%1d", -- Canopy Handle, OPEN/CLOSE + [772] = "%1d", -- Seat Adjust Switch, DOWN/NEUTRAL/UP {-1.0, 0.0, 1.0} + [384] = "%1d", -- Canopy Jettison T-Handle, PULL/PUSH + [91] = "%.1f", -- Drag Chute T-Handle, PULL/PUSH {0.1, -0.1} + -- External Lights + [227] = "%.2f", -- Navigation Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [228] = "%.2d", -- Formation Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [229] = "%1d", -- Beacon Switch, BEACON/OFF + [353] = "%1d", -- Landing & Taxi Light Switch, ON/OFF + -- Internal Lights + [46] = "%1d", -- AN/ASG-31 Sight Panel Light Button, ON/OFF + [613] = "%1d", -- Magnetic Compass Light Switch, LIGHT/OFF + [221] = "%.2f", -- Flood Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [222] = "%.2f", -- Flight Instruments Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [223] = "%.2f", -- Engine Instruments Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [224] = "%.2f", -- Console Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [363] = "%.2f", -- Armament Panel Lights Knob (Axis) {0.0, 1.0} in 0.15 Steps + [172] = "%1d", -- Master Caution Button - Push to reset + [226] = "%1d", -- Warning Test Switch, Press to test + [225] = "%1d", -- Bright/Dim Switch, BRT/NEUT/DIM {-1.0, 0.0, 1.0} + -- Countermeasures Dispensing System + [400] = "%1d", -- Chaff Mode Selector, OFF/SINGLE/PRGM/MULT {0.0, 0.1, 0.2, 0.3} + [404] = "%1d", -- Flare Mode Selector, OFF/SINGLE/PRGM {0.0, 0.1, 0.2} + [409] = "%1d", -- Flare Jettison Switch, OFF/UP + [403] = "%1d", -- Chaff Counter Reset Button - Push to reset + [407] = "%1d", -- Flare Counter Reset Button - Push to reset + [117] = "%1d", -- Flare-Chaff Button - Push to dispense + -- IFF + [199] = "%1d", -- IFF MODE 4 CODE Selector, ZERO(use MW to pull switch)/B/A/HOLD + [197] = "%1d", -- IFF MODE 4 CODE Selector, ZERO(use MW to pull switch)/B/A/HOLD + [200] = "%1d", -- IFF MASTER Control Selector, EMER(use MW to pull switch)/NORM/LOW/STBY/OFF + [198] = "%1d", -- IFF MASTER Control Selector, EMER(use MW to pull switch)/NORM/LOW/STBY/OFF + [201] = "%1d", -- IFF MODE 4 Monitor Control Switch, AUDIO/OUT/LIGHT {-1.0, 0.0, 1.0} + [202] = "%1d", -- IFF Mode Select/TEST Switch, M-1 /ON/OUT {-1.0, 0.0, 1.0} + [203] = "%1d", -- IFF Mode Select/TEST Switch, M-2 /ON/OUT {-1.0, 0.0, 1.0} + [204] = "%1d", -- IFF Mode Select/TEST Switch, M-3/A /ON/OUT {-1.0, 0.0, 1.0} + [205] = "%1d", -- IFF Mode Select/TEST Switch, M-C /ON/OUT {-1.0, 0.0, 1.0} + [206] = "%1d", -- IFF RAD TEST/MON Switch, RAD TEST/OUT/MON {-1.0, 0.0, 1.0} + [207] = "%1d", -- IFF Identification of Position (IP) Switch, IDENT/OUT/MIC {-1.0, 0.0, 1.0} + [208] = "%1d", -- IFF MODE 4 Control Switch, ON/OUT + [209] = "%.1f", -- IFF MODE 1 Code Selector Wheel 1 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [210] = "%.1f", -- IFF MODE 1 Code Selector Wheel 2 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [211] = "%.1f", -- IFF MODE 3/A Code Selector Wheel 1 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [212] = "%.1f", -- IFF MODE 3/A Code Selector Wheel 2 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [213] = "%.1f", -- IFF MODE 3/A Code Selector Wheel 3 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [214] = "%.1f", -- IFF MODE 3/A Code Selector Wheel 4 {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7} + [217] = "%1d", -- MODE 4 REPLY Light - Press to test(LMB) + [215] = "%1d", -- Radiation TEST and Monitor Light - Press to test(LMB) + -- Jettison System + [365] = "%1d", -- Emergency All Jettison Button - Push to jettison + [367] = "%1d", -- Select Jettison Switch, SELECT POSITION/OFF/ALL PYLONS {-1.0, 0.0, 1.0} + [366] = "%1d", -- Select Jettison Button - Push to jettison + -- Weapons Control + [346] = "%1d", -- Armament Position Selector Switch - LEFT WINGTIP, ON/OFF + [347] = "%1d", -- Armament Position Selector Switch - LEFT OUTBD, ON/OFF + [348] = "%1d", -- Armament Position Selector Switch - LEFT INBD, ON/OFF + [349] = "%1d", -- Armament Position Selector Switch - CENTERLINE, ON/OFF + [350] = "%1d", -- Armament Position Selector Switch - RIGHT INBD, ON/OFF + [351] = "%1d", -- Armament Position Selector Switch - RIGHT OUTBD, ON/OFF + [352] = "%1d", -- Armament Position Selector Switch - RIGHT WINGTIP, ON/OFF + [340] = "%1d", -- Interval Switch [sec], .06/.10/.14 {-1.0, 0.0, 1.0} + [341] = "%1d", -- Bombs Arm Switch, SAFE/TAIL/NOSE & TAIL/NOSE {0.0, 0.1, 0.2, 0.3} + [343] = "%1d", -- Guns, Missile and Camera Switch, GUNS MSL & CAMR/OFF/CAMR ONLY {-1.0, 0.0, 1.0} + [344] = "%.1f", -- External Stores Selector, RIPL/BOMB/SAFE/RKT DISP {0.0,0.1,0.2,0.3} + [345] = "%.2f", -- Missile Volume Knob - Rotate to adjust volume (Axis) {0.0, 1.0} in 0.15 Steps + [128] = "%1d", -- Weapon Release Button - Press to release (Stick) + [137] = "%1d", -- Missile Uncage Switch - Press and hold to uncage missile seeker head + -- Trigger + [127] = "%1d", -- Trigger Button, FIRST DETENT(LMB) {0.0, 0.5} + [127] = "%1d", -- Trigger Button, SECOND DETENT(RMB) {0.0, 1.0} + -- AHRS + [166] = "%1d", -- Fast Erect Button - Push to erect + [220] = "%1d", -- Compass Switch, DIR GYRO/MAG/FAST SLAVE + [273] = "%.1f", -- Nav Mode Selector Switch, DF/TACAN {0.1,-0.1} + -- AN/APQ-159 Radar Control Panel + [65] = "%.2f", -- AN/APQ-159 Radar Scale Knob - Rotate to adjust scale brightness (Axis) {0.0, 1.0} in 0.15 Steps + [321] = "%.2f", -- AN/APQ-159 Radar Elevation Antenna Tilt Control Knob - Rotate to adjust antenna elevation (Axis) {-1.0, 1.0} in 0.15 Steps + [315] = "%.1f", -- AN/APQ-159 Radar Range Selector Switch [nm], 5/10/20/40 {0.0, 0.1, 0.2, 0.3} + [316] = "%.1f", -- AN/APQ-159 Radar Mode Selector Switch, OFF/STBY/OPER/TEST {0.0, 0.1, 0.2, 0.3} + [317] = "%1d", -- AN/APQ-159 Radar Acquisition Button + [70] = "%.2f", -- AN/APQ-159 Radar Bright Knob - Rotate to adjust brightness (Axis) {0.0, 1.0} in 0.15 Steps + [69] = "%.2f", -- AN/APQ-159 Radar Persistence Knob - Rotate to adjust persistence (Axis) {0.0, 1.0} in 0.15 Steps + [68] = "%.2f", -- AN/APQ-159 Radar Video Knob - Rotate to adjust video intensity (Axis) {0.0, 1.0} in 0.15 Steps + [67] = "%.2f", -- AN/APQ-159 Radar Cursor Knob - Rotate to adjust indication brightness (Axis) {0.0, 1.0} in 0.15 Steps + [66] = "%.2f", -- AN/APQ-159 Radar Pitch Knob - Rotate to adjust horizon bar (Axis) {-0.75, 0.75} in 0.1 Steps + -- AN/ASG-31 Sight + [40] = "%.1f", -- AN/ASG-31 Sight Mode Selector, OFF/MSL/A/A1 GUNS/A/A2 GUNS/MAN {0.0, 0.1, 0.2, 0.3, 0.4} + [42] = "%.2f", -- AN/ASG-31 Sight Reticle Depression Knob - Rotate to adjust manual mode depression angle (Axis) {0.0, 1.0} in 0.10 Steps + [41] = "%.2f", -- AN/ASG-31 Sight Reticle Intensity Knob - Rotate to adjust brightness (Axis) {0.0, 1.0} in 0.15 Steps + [136] = "%1d", -- AN/ASG-31 Sight Cage Switch - Press and hold to cage + -- RWR-IC + [551] = "%1d", -- RWR Indicator Control MODE Button + [554] = "%1d", -- RWR Indicator Control SEARCH Button + [556] = "%1d", -- RWR Indicator Control HANDOFF Button + [559] = "%1d", -- RWR Indicator Control LAUNCH Button + [561] = "%1d", -- RWR Indicator Control ALTITUDE Button + [564] = "%1d", -- RWR Indicator Control T Button + [567] = "%1d", -- RWR Indicator Control SYS TEST Button + [570] = "%1d", -- RWR Indicator Control UNKNOWN SHIP Button + [573] = "%1d", -- RWR Indicator Control ACT/PWR Button + [575] = "%1d", -- RWR Indicator Control POWER Button {1.0,0.0,-1.0} + [577] = "%.1f", -- RWR Indicator Control AUDIO Knob (Axis) {0.0, 1.0} in 0.1 Steps + [578] = "%.1f", -- RWR Indicator Control DIM Knob (Axis) {0.0, 1.0} in 0.1 Steps + -- AN/ALR-87 RWR + [140] = "%.2f", -- Adjust Display Brightness (Axis) {0.15, 0.85} in 0.1 Steps + -- Instruments -------------------------- + -- Accelerometer + [904] = "%1d", -- Accelerometer - Push to set + -- AirSpeed/Mach Indicator + [180] = "%.2f", -- Index Setting Pointer Knob (Axis) {0.0, 1.0} in 0.15 Steps + -- Altimeter AAU-34/A + [62] = "%.2f", -- Zero Setting Knob (Axis) {0.0, 1.0} in 0.04 Steps + [60] = "%1d", -- Altimeter Mode Control Lever, ELECT(rical)/PNEU(matic) {-1.0, 0.0, 1.0} + -- Attitude Indicator ARU-20 + [150] = "%.3f", -- AI Pitch Trim Knob (Axis) {0.0, 1.0} in 0.083 Steps + -- Horizontal Situation Indicator + [272] = "%.5f", -- HSI Course Set Knob (Axis) {0.0, 1.0} in 0.05818 Steps + [271] = "%.5f", -- HSI Heading Set Knob (Axis) {0.0, 1.0} in 0.05818 Steps + -- Standby Attitude Indicator + [441] = "%1d", -- Cage/Pitch Trim (Button) + [442] = "%.1f", -- Cage/Pitch Trim Knob (Axis) {0.0, 1.0} in 0.5 Steps + -- Clock + [511] = "%1d", -- ABU-11 Clock Winding and Setting knob (Button) + [510] = "%1d", -- ABU-11 Clock Winding and Setting Knob (Axis) {0.0, 1.0} in 0.6 Steps + [512] = "%1d", -- ABU-11 Clock Elapsed Time Knob + -- Electric system - CB Front Panel + [280] = "%1d", -- CB WPN PWR LEFT INBD, ON/OFF {1.0, 0.0} + [281] = "%1d", -- CB WPN PWR CENTER LINE, ON/OFF {1.0, 0.0} + [282] = "%1d", -- CB WPN PWR RIGHT INBD, ON/OFF {1.0, 0.0} + [283] = "%1d", -- CB WPN PWR LEFT OUTBD, ON/OFF {1.0, 0.0} + [284] = "%1d", -- CB WPN ARMING, ON/OFF {1.0, 0.0} + [285] = "%1d", -- CB WPN PWR RIGHT OUTBD, ON/OFF {1.0, 0.0} + [286] = "%1d", -- CB JETTISON CONTROL, ON/OFF {1.0, 0.0} + [287] = "%1d", -- CB WPN RELEASE, ON/OFF {1.0, 0.0} + [288] = "%1d", -- CB WPN MODE SEL & AIM-9-INTLK, ON/OFF {1.0, 0.0} + [289] = "%1d", -- CB EMERGENCY ALL JETTISON, ON/OFF {1.0, 0.0} + [290] = "%1d", -- CB LEFT AIM-9 CONT, ON/OFF {1.0, 0.0} + [291] = "%1d", -- CB RIGHT AIM-9 CONT, ON/OFF {1.0, 0.0} + -- Electric system - CB Left Panel + [450] = "%1d", -- CB LEFT AIM-9 POWER, ON/OFF {1.0, 0.0} + [451] = "%1d", -- CB LEFT GUN FIRING, ON/OFF {1.0, 0.0} + [453] = "%1d", -- CB 26 VOLT AC POWER, ON/OFF {1.0, 0.0} + [454] = "%1d", -- CB ATTD & HDG REF SYS A, ON/OFF {1.0, 0.0} + [455] = "%1d", -- CB CENTRAL AIR DATA COMPUTER, ON/OFF {1.0, 0.0} + [456] = "%1d", -- CB ENG IGN L ENG INST & HYD IND, ON/OFF {1.0, 0.0} + [457] = "%1d", -- CB RIGHT AIM-9 POWER, ON/OFF {1.0, 0.0} + [458] = "%1d", -- CB RIGHT GUN FIRING, ON/OFF {1.0, 0.0} + [460] = "%1d", -- CB TRIM CONTROL, ON/OFF {1.0, 0.0} + [461] = "%1d", -- CB ATTD & HDG REF SYS B, ON/OFF {1.0, 0.0} + [462] = "%1d", -- CB TOTAL TEMP PROBE HTR, ON/OFF {1.0, 0.0} + [463] = "%1d", -- CB L ENG AUX DOOR, ON/OFF {1.0, 0.0} + [464] = "%1d", -- CB CABIN COND, ON/OFF {1.0, 0.0} + [467] = "%1d", -- CB FUEL QTY PRIMARY, ON/OFF {1.0, 0.0} + [468] = "%1d", -- CB ATTD & HDG REF SYS C, ON/OFF {1.0, 0.0} + [469] = "%1d", -- CB TACAN, ON/OFF {1.0, 0.0} + [471] = "%1d", -- CB PYLON TANK FUEL CONT, ON/OFF {1.0, 0.0} + [472] = "%1d", -- CB L BOOST CL & TIP TANK FUEL CONT, ON/OFF {1.0, 0.0} + [473] = "%1d", -- CB IGNITION INVERTER POWER, ON/OFF {1.0, 0.0} + [474] = "%1d", -- CB L ENG START & AB CONT, ON/OFF {1.0, 0.0} + [475] = "%1d", -- CB R ENG START & AB CONT, ON/OFF {1.0, 0.0} + [476] = "%1d", -- CB UHF COMMAND RADIO, ON/OFF {1.0, 0.0} + [477] = "%1d", -- CB LEFT LE FLAP CONT, ON/OFF {1.0, 0.0} + [478] = "%1d", -- CB RIGHT LE FLAP CONT, ON/OFF {1.0, 0.0} + [479] = "%1d", -- CB LEFT TE FLAP CONT, ON/OFF {1.0, 0.0} + [480] = "%1d", -- CB RIGHT TE FLAP CONT & IND, ON/OFF {1.0, 0.0} + -- Electric system - CB Right Panel + [231] = "%1d", -- CB PITOT HEATER, ON/OFF {1.0, 0.0} + [233] = "%1d", -- CB R OIL & HYD IND FUEL QTY SEL, ON/OFF {1.0, 0.0} + [234] = "%1d", -- CB CABIN AIR VALVES, ON/OFF {1.0, 0.0} + [238] = "%1d", -- CB INST LIGHTS, ON/OFF {1.0, 0.0} + [239] = "%1d", -- CB R ENG AUX DOORS, ON/OFF {1.0, 0.0} + [244] = "%1d", -- CB CAUTION & WARN LIGHTS-DIM, ON/OFF {1.0, 0.0} + [245] = "%1d", -- CB OXY QTY & CANOPY SEAL, ON/OFF {1.0, 0.0} + [246] = "%1d", -- CB LDG-TAXI LAMP PWR, ON/OFF {1.0, 0.0} + --UHF Radio AN/ARC-164 + [300] = "%.2f", -- AN/ARC-164, UHF Radio Preset Channel Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, ... 0.15, 0.16, 0.17, 0.18, 0.19} + --[327] = "%.1f", -- AN/ARC-164, UHF Radio 100 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3} + --[328] = "%.1f", -- AN/ARC-164, UHF Radio 10 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[329] = "%.1f", -- AN/ARC-164, UHF Radio 1 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[330] = "%.1f", -- AN/ARC-164, UHF Radio 0.1 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[331] = "%.2f", -- AN/ARC-164, UHF Radio 0.025 MHz Frequency Selector Knob {0.0, 0.25, 0.5, 0.75} + [307] = "%.1f", -- AN/ARC-164, UHF Radio Frequency Mode Selector Switch, MANUAL/PRESET/GUARD {0.0, 0.1, 0.2} + [311] = "%.1f", -- AN/ARC-164, UHF Radio Function Selector Switch, OFF/MAIN/BOTH/ADF {0.0, 0.1, 0.2} + [310] = "%1d", -- AN/ARC-164, UHF Radio Tone Button + [308] = "%1d", -- AN/ARC-164, UHF Radio Squelch Switch, ON/OFF + [309] = "%.1f", -- AN/ARC-164, UHF Radio Volume Knob (Axis) {0.0, 1.0} in 0.1 Steps + [336] = "%.1f", -- AN/ARC-164, UHF Radio Antenna Selector Switch, UPPER/AUTO/LOWER {0.0, 0.5, 1.0} + [135] = "%1d", -- AN/ARC-164, UHF Radio Microphone Button + --TACAN + [256] = "%.1f", -- TACAN Channel Selector (Tens) - Rotate mouse wheel to select (Axis) {0.0, 1.0} in 0.1 Steps + [257] = "%.1f", -- TACAN Channel Selector (Ones) / X/Y Mode - Right mouse click to select X/Y. Rotate mouse wheel to make channel selection (Axis) {0.0, 1.0} in 0.1 Steps + [258] = "%.2f", -- TACAN Channel Selector (Ones) / X/Y Mode - Right mouse click to select X/Y. Rotate mouse wheel to make channel selection (Button) {0.87, 0.93} + [259] = "%1d", -- TACAN Signal on HSI Test Button + [261] = "%1d", -- TACAN Signal Volume Knob (Axis) {0.0, 1.0} in 0.1 Steps + [262] = "%.1f", -- TACAN Mode Selector Switch {0.0, 0.1, 0.2, 0.3, 0.4} + -- Sight Camera + [82] = "%.1f", -- Sight Camera Lens f-Stop Selector, 2.8(dull)..22(bright) (Axis) {0.0, 0.3} in 0.1 Steps + [80] = "%1d", -- Sight Camera FPS Select Switch, 24/48 + [84] = "%.1f", -- Sight Camera Overrun Selector, 0/3/10/20 {0.0, 0.1, 0.2, 0.3} + [79] = "%1d" -- Sight Camera Run (Test) Switch, ON/OFF +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --[443] = "%.4f", -- SAI_knob_arrow {-1.0, 1.0} {0.0, 1.0} + ExportScript.Tools.SendData(443, ExportScript.Tools.negate(mainPanelDevice:get_argument_value(443))) +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --AN/ARC-164 UHF + --------------------------------------------------- + local lUHFRadio = GetDevice(23) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendData(2000, string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy(lUHFRadio:get_frequency()/1000000)) + + local lUHFRadio_PRESET = {[0]="01",[0.05]="02",[0.1]="03",[0.15]="04",[0.2]="05",[0.25]="06",[0.3]="07",[0.35]="08",[0.4]="09",[0.45]="10",[0.5]="11",[0.55]="12",[0.6]="13",[0.65]="14",[0.7]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20"} + ExportScript.Tools.SendData(2001, lUHFRadio_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(300), 2)]) + end + + --[327] = "%.1f", -- AN/ARC-164, UHF Radio 100 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3} + --[328] = "%.1f", -- AN/ARC-164, UHF Radio 10 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[329] = "%.1f", -- AN/ARC-164, UHF Radio 1 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[330] = "%.1f", -- AN/ARC-164, UHF Radio 0.1 MHz Frequency Selector Knob {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9} + --[331] = "%.2f", -- AN/ARC-164, UHF Radio 0.025 MHz Frequency Selector Knob {0.0, 0.25, 0.5, 0.75} + --F5E_UHF + --327: 0.0=A, 0.1=3, 0.2=2, 0.3=T + --1: 0.0=A, 0.1=T, 0.2=2, 0.3=3 + + --328: 0.0=0, 0.1=9, 0.2=8, 0.3=7, 0.4=6, 0.5=5, 0.6=4, 0.7=3, 0.8=2, 0.9=1, 1.0=0 + --2: 0.0=0, 0.1=1, 0.2=2, 0.3=3, 0.4=4, 0.5=5, 0.6=6, 0.7=7, 0.8=8, 0.9=9, 1.0=0 + + --329: 0.0=0, 0.1=9, 0.2=8, 0.3=7, 0.4=6, 0.5=5, 0.6=4, 0.7=3, 0.8=2, 0.9=1, 1.0=0 + --3: 0.0=0, 0.1=1, 0.2=2, 0.3=3, 0.4=4, 0.5=5, 0.6=6, 0.7=7, 0.8=8, 0.9=9, 1.0=0 + + --330: 0.0=0, 0.1=9, 0.2=8, 0.3=7, 0.4=6, 0.5=5, 0.6=4, 0.7=3, 0.8=2, 0.9=1, 1.0=0 + --4: 0.0=0, 0.1=1, 0.2=2, 0.3=3, 0.4=4, 0.5=5, 0.6=6, 0.7=7, 0.8=8, 0.9=9, 1.0=0 + + --331: 0.0=00, 0.25=75, 0.5=50, 0.75=25, 1.0=00 + --5: 0.0=00, 0.25=25, 0.5=50, 0.75=75 + + local lTmp327 = tonumber(string.format("%0.1f", mainPanelDevice:get_argument_value(327))) + local lTmp327_2 = lTmp327 + if lTmp327 == 0.0 then lTmp327_2 = 0.0 + elseif lTmp327 == 0.1 then lTmp327_2 = 0.3 + elseif lTmp327 == 0.2 then lTmp327_2 = 0.2 + elseif lTmp327 == 0.3 then lTmp327_2 = 0.1 + else lTmp327_2 = lTmp327 end + + local lTmp328_2 = 1 - mainPanelDevice:get_argument_value(328) + local lTmp329_2 = 1 - mainPanelDevice:get_argument_value(329) + local lTmp330_2 = 1 - mainPanelDevice:get_argument_value(330) + + local lTmp331 = mainPanelDevice:get_argument_value(331) + local lTmp331_2 = 0 + if lTmp331 == 0.0 then lTmp331_2 = 0.0 + elseif lTmp331 == 0.25 then lTmp331_2 = 0.75 + elseif lTmp331 == 0.5 then lTmp331_2 = 0.5 + elseif lTmp331 == 0.75 then lTmp331_2 = 0.25 + else lTmp331_2 = lTmp331 end + + ExportScript.Tools.SendData(327, lTmp327_2) + ExportScript.Tools.SendData(328, lTmp328_2) + ExportScript.Tools.SendData(329, lTmp329_2) + ExportScript.Tools.SendData(330, lTmp330_2) + ExportScript.Tools.SendData(331, lTmp331_2) + + + -- TACAN Channel + ------------------------------------------------- + ExportScript.Tools.SendData(2002, (string.format("%0.2f", (mainPanelDevice:get_argument_value(263))) == "1.00" and "0" or "1")..ExportScript.Tools.round(mainPanelDevice:get_argument_value(264) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(265) * 10, 0)..(string.format("%1d", (mainPanelDevice:get_argument_value(266))) == "0" and "X" or "Y")) + --[266] = "%.4f", -- XYwheel + ExportScript.Tools.SendData(266, mainPanelDevice:get_argument_value(266) == 0 and 0 or 1) + +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --AN/ARC-164 UHF + --------------------------------------------------- + local lUHFRadio = GetDevice(23) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendDataDAC(2000, string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC(2000, ExportScript.Tools.RoundFreqeuncy(lUHFRadio:get_frequency()/1000000)) + + local lUHFRadio_PRESET = {[0]="01",[0.05]="02",[0.1]="03",[0.15]="04",[0.2]="05",[0.25]="06",[0.3]="07",[0.35]="08",[0.4]="09",[0.45]="10",[0.5]="11",[0.55]="12",[0.6]="13",[0.65]="14",[0.7]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20"} + ExportScript.Tools.SendDataDAC(2001, lUHFRadio_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(300), 2)]) + end + + -- TACAN Channel + ------------------------------------------------- + ExportScript.Tools.SendDataDAC(2002, (string.format("%0.2f", (mainPanelDevice:get_argument_value(263))) == "1.00" and "0" or "1")..ExportScript.Tools.round(mainPanelDevice:get_argument_value(264) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(265) * 10, 0)..(string.format("%1d", (mainPanelDevice:get_argument_value(266))) == "0" and "X" or "Y")) + + -- Fuel Quantity Indicator (Dual) + local lLeftFuel = ExportScript.Tools.round(mainPanelDevice:get_argument_value(22) * 2500, 0) + local lRightFuel = ExportScript.Tools.round(mainPanelDevice:get_argument_value(23) * 2500, 0) + + ExportScript.Tools.SendDataDAC(2003, lLeftFuel) + ExportScript.Tools.SendDataDAC(2004, lRightFuel) + ExportScript.Tools.SendDataDAC(2005, lLeftFuel + lRightFuel) + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 1 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "AN/ARC-164 UHF" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 23 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 220.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3008 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 300 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.1]="02",[0.2]="03",[0.3]="04",[0.4]="05",[0.5]="06",[0.6]="07",[0.7]="08",[0.8]="09",[0.9]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20"} + ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.1 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 308 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 307 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/F-86F Sabre.lua b/ExportsModules/F-86F Sabre.lua new file mode 100644 index 0000000..b9531aa --- /dev/null +++ b/ExportsModules/F-86F Sabre.lua @@ -0,0 +1,405 @@ +-- F-86 Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.F86 = "1.2.1" +--ExportScript.NoLuaExportBeforeNextFrame = true + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Mechanic clock + [19] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0} = {0.0, 1.0} + [18] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0} = {0.0, 1.0} + --[37] = "%.4f", -- CLOCK_currtime_seconds {0.0, 60.0} = {0.0, 1.0} + --[56] = "%.4f", -- CLOCK_flight_time_meter_status {0.0, 0.2} = {0.0, 1.0} + --[52] = "%.4f", -- CLOCK_flight_hours {0.0, 12.0} = {0.0, 1.0} + --[53] = "%.4f", -- CLOCK_flight_minutes {0.0, 60.0} = {0.0, 1.0} + [37] = "%.4f", -- CLOCK_seconds_meter_time_minutes {0.0, 60.0} = {0.0, 1.0} + [1006] = "%.4f", -- CLOCK_seconds_meter_time_seconds {0.0, 60.0} = {0.0, 1.0} + -- flight gauge + -- Airspeeed + [178] = "%.4f", -- Airspeeed {0.0, 25.7, 180.06, 334.4} = {0.0, 0.019, 0.494, 0.965} + [709] = "%.4f", -- AirspeeedDrum {0.0, 51.4444444} = {0.0, 1.0} + [8] = "%.4f", -- AirspeeedM1 {0.0, 25.7, 51.444, 308.67, 334.4} = {0.0, 0.02, 0.1, 0.6, 0.697} + -- Altimeter + [707] = "%.4f", -- Altimeter10000 {0 ,30480} = {0 ,1} + [523] = "%.4f", -- Altimeter1000 {0 ,3048} = {0 ,1} + [524] = "%.4f", -- Altimeter100 {0 ,304.8} = {0 ,1} + [700] = "%.4f", -- AltimeterHG {0 , 91.44} = {0 ,1} + -- Variometer + [24] = "%.4f", -- Variometer {-30.48, -10.16, -5.08, 0.0, 5.08, 10.16, 30.48} = {-1.0, -0.5, -0.29, 0.0, 0.29, 0.5, 1.0} + -- MachNumber + [179] = "%.4f", -- MachNumber {0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5} = {0.0515, 0.0855, 0.122, 0.161, 0.203, 0.248, 0.295, 0.342, 0.3915, 0.441, 0.493, 0.597, 0.699, 0.796, 0.883, 0.965} + -- TurnIndicator + [25] = "%.4f", -- TurnIndicator {-1.0, 1.0} + -- SlipIndicator + [31] = "%.4f", -- SlipIndicator {-1.0, 1.0} + -- Accelerometer + [6] = "%.4f", -- Accelerometer {-5.0, 0.0, 10.0} {0.0, 0.334, 1.0} + [1003] = "%.4f", -- AccelerometerMin {-5.0, 0.0, 10.0} {0.0, 0.334, 1.0} + [1002] = "%.4f", -- AccelerometerMax {-5.0, 0.0, 10.0} {0.0, 0.334, 1.0} + -- GyroCompass + [711] = "%.4f", -- GyroCompassNeedle {1.0, 0.0} + [712] = "%.4f", -- GyroCompassScale {0.0, 1.0} + -- AttitudeIndicator + [713] = "%.4f", -- AttitudeIndicatorOffFlag {0.0, 1.0} = {1.0, 0.0} + [605] = "%.4f", -- AttitudeIndicatorPitch {-0.27, 0.27} + [606] = "%.4f", -- AttitudeIndicatorBank {1.0, -1.0} + [81] = "%.4f", -- AttitudeIndicatorPitchSphere {-1.0, 1.0} + [1005] = "%.4f", -- AttitudeIndicatorBankNeedle {1.0, -1.0} + -- engine gauges + -- Tachometer + [16] = "%.4f", -- Tachometer {0.0, 0.5, 0.504, 1.1} = {0.012, 0.482, 0.5, 1.0} + -- ExhaustTemperature + [12] = "%.4f", -- ExhaustTemperature {0.0, 1000.0} = {0.0, 1.0} + -- OilPressure + [112] = "%.4f", -- OilPressure {0.0, 100.0} = {0.023, 1.0} + -- FuelFlow + [531] = "%.4f", -- FuelFlow {0.0, 1.2599} = {0.0, 1.0} + -- electric system + [601] = "%.4f", -- VoltageDC {0.0, 30.0} = {0.0, 0.3} + [602] = "%.4f", -- Loadmeter {0.0, 400.0} = {0.0, 1.0} + -- hydraulic system + [109] = "%.4f", -- HydPress {0.0, 1.0} = {0.0, 1.0} + -- fuel system + [22] = "%.4f", -- FuelQuantity {-500.0, 0.0, 45.36, 226.8, 453.6, 907.2, 1360.8, 1451.5} = {-1.0, 0.0, 0.012, 0.141, 0.31, 0.625, 0.938, 1.0} + -- oxygen system + [353] = "%.4f", -- OxygenPressure {0.0, 500.0} = {0, 1} + [705] = "%.1f", -- OxygenFlowBlinker {0.0, 1.0} + -- air system + [114] = "%.4f", -- CockpitAltimeter {0.0, 15240.0} = {0.0, 1.0} + -- radio compass + [804] = "%.4f", -- ARN6_Band {0.0, 3.0} = {0.0, 1.0} + [800] = "%.4f", -- ARN6_TuningMeter {0.0, 1.0} + [801] = "%.4f", -- ARN6_Tuning {0.0, 0.2} = {0.0, 1.0} + [600] = "%.4f", -- ARN6_Bearing {0.0, 1.0} + [814] = "%.4f", -- ARN6_Scale {1.0, 0.0} + [830] = "%.4f", -- ARN6_FreqScale {0.0, 1.0} + [219] = "%.4f", -- ARN6_ScaleLight {0.0, 1.0} + -- light system + [182] = "%.f", -- IlluminationLights {0.0, 1.0} + [825] = "%.f", -- StandByCompassLight {0.0, 1.0} + [180] = "%.f", -- PrimaryInstLights {0.0, 1.0} + [185] = "%.f", -- AuxiliaryInstrumentLights {0.0, 1.0} + [222] = "%.4f", -- LandingGearUnsafe {0.0, 1.0} + -- + [603] = "%.4f", -- LABS_roll_needle {-1.0, 1.0} + [604] = "%.4f", -- LABS_pitch_needle {-1.0, 1.0} + -- + [818] = "%.4f", -- EmergencyJettisonHandlePos {0.0, 1.0} + [221] = "%.4f", -- EmergencyJettisonHandleRot {0.0, 1.0} + -- LAMPS + -- electric system + [617] = "%.f", -- lamp_ELEC_GenOff {-1.0, 1.0} + [610] = "%.f", -- lamp_ELEC_MainInstInverterOffSelectAlt {-1.0, 1.0} + [611] = "%.f", -- lamp_ELEC_BothInstInvertersOff {-1.0, 1.0} + [612] = "%.f", -- lamp_ELEC_MainRadarInverterOff {-1.0, 1.0} + -- hydraulic system + [614] = "%.f", -- lamp_HYDRO_AltFltContSysOper {-1.0, 1.0} + [39] = "%.f", -- lamp_HYDRO_LeftGear {-1.0, 1.0} + [41] = "%.f", -- lamp_HYDRO_RightGear {-1.0, 1.0} + [40] = "%.f", -- lamp_HYDRO_NoseGear {-1.0, 1.0} + -- fuel system + [625] = "%.f", -- lamp_FUEL_OutbdTanksEmpty {-1.0, 1.0} + -- fire detection system + [615] = "%.f", -- lamp_FIRE_DETECTION_FwdFireWarning {-1.0, 1.0} + [616] = "%.f", -- lamp_FIRE_DETECTION_AftFireWarning {-1.0, 1.0} + -- control system + [613] = "%.f", -- lamp_CONTROL_TakeOffPosInd {-1.0, 1.0} + -- air system + [614] = "%.f" -- lamp_WindshieldAntiIceOverheatWarning {-1.0, 1.0} +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- cockpit mechanics + [718] = "%.1f", -- Canopy Switch, OPEN/OFF/CLOSE {-1.0, 0.0, 1.0} + [818] = "%.1f", -- Emergency Jettison Handle, IN/OUT {0.0, 1.0} + [817] = "%.1f", -- Canopy Alternate Emergency Jettison Handle, IN/OUT {0.0, 1.0} + [816] = "%.1f", -- Canopy Declutch Handle, IN/OUT {0.0, 1.0} + -- electric + [653] = "%1d", -- Battery-Starter Switch, BATTERY/OFF/STARTER {-1, 1} + [643] = "%.1f", -- Instrument Power Switch, ALTERNATE/NORMAL {-1.0, 1.0} + [664] = "%.1f", -- Stop-Starter Button (Push to de-energize starter in case of malfunction) {0.0, 1.0} + [652] = "%1d", -- Engine Master Switch, ON/OFF {1} + [670] = "%.1f", -- Generator Switch, ON/OFF/RESET {1} + [687] = "%1d", -- Generator Warning Light (Push To Test) {1} + [680] = "%1d", -- Main Instrument (Three-phase) Inverter Failure Warning Light (Push to test) {1} + [681] = "%1d", -- Both Instrument (Main and alternate three-phase) Inverter Failure Warning Light (Push to test) {1} + [682] = "%1d", -- Main Radar (Single-phase) Inverter Failure Warning Light (Push to test) {1} + -- Circuit Breaker (left panel) + [760] = "%1d", -- Bomb Rocket Tank Salvo {0, 1} + [761] = "%1d", -- Bomb Sel. {0, 1} + [762] = "%1d", -- Gyr'Syn Compass {0, 1} + [763] = "%1d", -- 3f Inverter {0, 1} + [764] = "%1d", -- Turn Bank Ind. {0, 1} + [765] = "%1d", -- Rudder Trim & Take-Off Ind. {0, 1} + [766] = "%1d", -- Alt Ail. Trim {0, 1} + [767] = "%1d", -- Ail & Horiz. Trim & Alt Horiz. Trim {0, 1} + [768] = "%1d", -- LDG Light Control {0, 1} + [769] = "%1d", -- LDG Lights {0, 1} + [770] = "%1d", -- Fire Warn. {0, 1} + [771] = "%1d", -- Bus Tie-In Control {0, 1} + [772] = "%1d", -- Speed Brake {0, 1} + [773] = "%1d", -- Free Air & Oil Temp & Air Sel. {0, 1} + [774] = "%1d", -- LDG Gear Warn. {0, 1} + [775] = "%1d", -- LDG Gear Control {0, 1} + [776] = "%1d", -- LDG Gear Pos Ind. {0, 1} + [777] = "%1d", -- Fuel Booster AFT {0, 1} + [778] = "%1d", -- Alt Emerg. Hyd. Cont. & Hyd. Press Ind. {0, 1} + [779] = "%1d", -- Sight Power {0, 1} + [780] = "%1d", -- Sight Heater {0, 1} + [781] = "%1d", -- Sight A.C. Power Unit {0, 1} + [782] = "%1d", -- AN/ARN-6 Radio Compass {0, 1} + -- Circuit Breaker (right panel) + [783] = "%1d", -- Eng. Master Fuel Shut-Off {0, 1} + [784] = "%1d", -- Eng. Ign. {0, 1} + [785] = "%1d", -- Fuel Level {0, 1} + [786] = "%1d", -- Inv Gen. Failure Overvolt LTS Test {0, 1} + [787] = "%1d", -- Light Post IndCode {0, 1} + [788] = "%1d", -- Console & Ped LTS {0, 1} + [789] = "%1d", -- Fuel Boost FWD {0, 1} + [790] = "%1d", -- Wing Flap LH. {0, 1} + [791] = "%1d", -- Wing Flap RH. {0, 1} + [792] = "%1d", -- Light Fluor {0, 1} + [793] = "%1d", -- Sight Control {0, 1} + [794] = "%1d", -- AN/APC 3 Radio {0, 1} + [795] = "%1d", -- AN/APX-6 Radio IFF {0, 1} + -- Hydraulic Interface + [599] = "%1d", -- Landing Gear Handle, UP/DOWN {1, 0} + [710] = "%1d", -- Landing Gear Emergency-up Button (Ground-use only! Hold in until gear retracts completely) {1} + [631] = "%1d", -- Hydraulic Pressure Gage and Selector Switch, UTILITY/NORMAL/ALTERNATE {1} + [641] = "%1d", -- Speed Brake Emergency Lever {1, 0} + [684] = "%1d", -- Alternate-on Warning Light (Push to test) {1} + [706] = "%1d", -- Alternate Hydraulic Emergency Override Handle, IN/OUT {1, -1} + [647] = "%1d", -- Flight Control Switch, ALTERNATE ON/NORMAL/RESET {1} + [815] = "%1d", -- Landing Gear Warning Horn Cutout Button (Push to silence horn) {1} + [819] = "%.4f", -- Landing Gear Emergency Release Handle (rotary) {0.0,1.0} in 0.1 steps + [211] = "%1d", -- Speed Brake Switch, OUT/HOLD/IN {-1.0,0.0,1.0} + [217] = "%1d", -- Parking Brake Handle, ON/OFF + -- Fuel Interface + [672] = "%1d", -- Fuel Densitometer Selection Switch, IN/OUT {2, -2} + [662] = "%.1f", -- Drop Tank Selector Switch {-0.1, 0.1} + [701] = "%1d", -- Drop Tank Jettison Button - Push to release drop tank(s) {1} + [695] = "%1d", -- Outboard Drop Tank Empty Indicator Light (Push to test) {1} + -- Oxygen Interface + [703] = "%1d", -- Oxygen Regulator Diluter Lever, NORMAL OXYGEN/100% OXYGEN {1, -1} + [704] = "%.4f", -- Oxygen Regulator Supply Lever (rotary) {0.0 to 1.0} in -0.5 steps + -- Fire Detection Interface + [635] = "%1d", -- Engine Fire Warning Light Test Button {1,- 1} + [685] = "%1d", -- Forward Engine Compartment Fire-warning Light (Push to test) {1} + [686] = "%1d", -- Aft Engine Compartment Fire-warning Light (Push to test) {1} + -- Air Interface + [650] = "%1d", -- Cockpit Pressure Control Switch, PRESS/RAM {2, -2} + [651] = "%1d", -- Cockpit Pressure Schedule Selector Switch, 5 PSI/2.75 PSI {2, -2} + [646] = "%1d", -- Pitot Heater Switch, ON/OFF {2, -2} + [740] = "%.4f", -- Cockpit Air Temperature Control Rheostat (rotary) {0.0, 1.0} in 0.3 steps + --[736] = "%1d", -- Cockpit Air Temperature Control Switch Cover {1, -1} + [737] = "%.1f", -- Cockpit Air Temperature Control Switch, AUTO/OFF/HOT/COLD {-1.0, 1.0} + [645] = "%.1f", -- Engine Anti-Ice & Screen Switch, EXTEND/RET./ANTI-ICE {-1.0, 1.0} + [741] = "%1d", -- Air Outlet Selector Lever, FLOOR/BOTH/DEFROST {-1, 1} + [691] = "%1d", -- Windshield Anti-Ice Overheat Warning Light + [202] = "%.4f", -- Windshield Anti-Icing Lever (rotary) {0.0,1.0} in 0.1 steps + -- Light Interface + [654] = "%1d", -- Compass Light Switch, ON/OFF {2, -2} + [813] = "%.1f", -- Instrument Panel Primary Light Rheostat (rotary) {0.0, 1.0} in 0.5 steps + [811] = "%.1f", -- Instrument Panel Auxiliary Light Rheostat (rotary) {0.0, 1.0} in 0.5 steps + [812] = "%.1f", -- Console and Panel Light Rheostat (rotary) {0.0, 1.0} in 0.5 steps + -- Nav Lights Interface + [661] = "%.1f", -- Landing & Taxi Lights Switch, EXTEND&ON/OFF/RETRACT {-1.0, 0.0, 1.0} + [656] = "%.1f", -- Position and Fuselage Light Selector Switch, STEADY/OFF/FLASH {-1.0, 0.0, 1.0} + [655] = "%1d", -- Exterior Lighting Dimmer Switch, BRIGHT/DIM {2, -2} + -- Engine Interface + [630] = "%1d", -- Emergency Fuel Switch, ON/OFF {2, -2} + --[732] = "%1d", -- Emergency (In-air) Ignition Switch Cover {1, -1} + [733] = "%.1f", -- Emergency (In-air) Ignition Switch, ON/OFF {1.0, 1.0} + -- Control Interface + [649] = "%.1f", -- Lateral Alternate Trim Switch, LEFT/RIGHT/NORMAL/OFF {0.3, 0.5, 0.1, 0.0} + [648] = "%.1f", -- Rudder Trim Switch, LEFT/OFF/RIGHT {1.0, -1.0} + --[738] = "%1d", -- Longitudinal Alternate Trim Switch Cover {1, -1} + [739] = "%.1f", -- Longitudinal Alternate Trim Switch, NORMAL GRIP CONT/NOSE UP/NOSE DOWN/OFF {0.5, 0.3, 0.1, 0.0} + [683] = "%1d", -- Take-off (Trim) Position Indicator Light (Push to test) {1} + [735] = "%1d", -- Wing Flaps Handle {-1, 1} + [209] = "%1d", -- Nose Wheel Steering Button + -- radio ARC-27 + [806] = "%.4f", -- AN/ARC-27 UHF Audio Volume Knob (rotary) {0.1, 0.9} in 0.5 steps + [807] = "%.1f", -- AN/ARC-27 UHF Preset Channel Selector {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8} + [805] = "%.1f", -- AN/ARC-27 UHF Power Switch, OFF/T/R/T/R + G REC/ADF {0.0, 0.1, 0.2, 0.3} + [213] = "%1d", -- Microphone Button + -- radio compass ARN-6 + [802] = "%.4f", -- AN/ARN-6 Audio Volume Control (rotary) {0.1, 0.9} in 0.5 steps + [803] = "%.1f", -- AN/ARN-6 Frequency Band Switch {0.0, 0.1, 0.2, 0.3} + [667] = "%.1f", -- AN/ARN-6 Function Selector Switch, OFF/COMP/ANT./LOOP/CONT. {0.0, 0.1, 0.2, 0.3, 0.4} + [666] = "%.1f", -- AN/ARN-6 LOOP L-R Switch {-1.0, 0.0, 1.0} + --[null] = "%.4f", -- AN/ARN-6 Tuning Crank {0.0, 1.0} in 0.01 steps + [657] = "%.1f", -- AN/ARN-6 Scale Light Switch, HI/OFF/LO {-0.1, 0.0, 0.1} + [826] = "%.4f", -- AN/ARN-6 East/West Variation Knob (rotary) {0.0, 1.0} in 0.05 steps + [658] = "%.1f", -- AN/ARN-6 CW-VOICE Switch, CW/VOICE {1.0, -1.0} + -- IFF APX-6 + [810] = "%.1f", -- AN/APX-6 IFF Master Switch, EMERGENCY/NORM/LOW/STDBY/OFF {0.0, 0.1, 0.2, 0.3, 0.4} + [659] = "%.1f", -- AN/APX-6 IFF Mode 2 Switch, MODE 2/OUT/I/P {-0.1, 0.0, 0.1} + [660] = "%.1f", -- AN/APX-6 IFF Mode 3 Switch, MODE 3/OUT {0.0, 0.1} + --[808] = "%1d", -- AN/APX-6 IFF Destruct Switch Cover {1, -1} + [809] = "%1d", -- AN/APX-6 IFF Destruct Switch, OFF/ON {0, -1} + -- baro altimeter + [218] = "%.4f", -- Altimeter reference pressure adjusting knob (rotary) {0.0, 1.0} in 0.1 steps + -- gyromag compass + --[null] = "%.4f", -- Compass Correction (rotary) {0.0, 1.0} in 0.05 steps + [598] = "%.1f", -- Directional Indicator Fast Slaving Button {0.0, 1.0} + -- attitude indicator + [714] = "%.1f", -- Pull to Cage Knob {0.0, 1.0} + -- accelerometer + [1004] = "%.1f", -- Accelerometer Reset Button {0.0, 1.0} + -- CLOCK + --[null] = "%1d", -- Set Clock Knob + [831] = "%1d", -- Elapsed Time Mechanism Button {0, 1} + -- A4 Gun Sight + [716] = "%.4f", -- A-4 Sight Wing Span Adjustment Knob (rotary) {0.0, 1.0} in 0.1 steps + [715] = "%.4f", -- A-4 Sight Radar Range Sweep Rheostat (rotary) {0.0, 1.0} in 0.1 steps + [734] = "%.4f", -- A-4 Sight Reticle Dimmer Control (rotary) {0, 0.74} in -0.2 steps + [755] = "%1d", -- A-4 Sight Mechanical Caging Lever, CAGE/UNCAGE {0, 1} + [755] = "%.4f", -- A-4 Sight Mechanical Caging Lever, CAGE/UNCAGE (rotary) {0.001, 0.999} in 0.1 steps + [212] = "%1d", -- A-4 Sight Electrical Caging Button + [642] = "%1d", -- A-4 Sight Filament Selector Switch, SECONDARY/PRIMARY {2, -2} + [210] = "%.4f", -- A-4 Sight Rotating Grip - Mouse Wheel for manual ranging {-1.0,1.0} in 0.2 steps + [210] = "%1d", -- A-4 Sight Rotating Grip - Right Click for return to CCW spring-loaded position {1.0} + [721] = "%.1f", -- Variable Sight Selector Unit - Sight Function Selector Lever, ROCKET/GUN/BOMB {0.0, 0.1, 0.2} + [720] = "%.1f", -- Variable Sight Selector Unit - Target Speed Switch, HI/LO {0.0,0.5,1.0} + [722] = "%.4f", -- Variable Sight Selector Unit - Rocket Depression Angle Selector (rotary) {0.0, 1.0} in 0.1 steps + [727] = "%.4f", -- Bomb-Target Wind Control Knob (rotary) {0.0, 1.0} in 0.6 steps + -- weapon system + [639] = "", -- Demolition Bomb Release Selector Switch, AUTO RELEASE/MANUAL RELEASE {2,-2} + [641] = "%.1f", -- Demolition Bomb Arming Switch (Fuze Selection), ARM NOSE&TAIL/OFF/TAIL ONLY {-1.0, 0.0, 1.0} + [752] = "%.1f", -- Demolition Bomb Sequence Selector Switch, ALL/OFF/LEFT/RIGHT {0.0, 0.1, 0.2, 0.3, 0.4, 0.5} + [638] = "%.1f", -- Rocket Fuze (Arming) Switch, DELAY/OFF/INSTANT {-1.0, 0.0, 1.0} + [637] = "%1d", -- Rocket Jettison Switch, READY/OFF {2, -2} + --[750] = "%1d", -- Rocket Release Selector Switch Cover {1, -1} + [751] = "%.1f", -- Rocket Release Selector Switch, SINGLE/OFF/AUTO {-1.0, 0.0, 1.0} + [668] = "%.1f", -- Gun Selector Switch {-0.2, 0.2} + [665] = "%.1f", -- Gun-Missile Selector Switch, OFF/SIGHT CAMERA & RADAR/GUNS/MISSILE {0, 0.3} + [636] = "%.1f", -- Gun Heater Switch, HEATER/OFF/(N/F) {-1.0, 1.0} + [663] = "%1d", -- Manual Pip Control Switch, BOMB/NORMAL {2, -2} + [796] = "%.1f", -- Manual Pip Control Change Calibrated Dials (Presets) {0.0, 0.3, 0.6, 0.9} + [797] = "%.4f", -- Manual Pip Control Knob (rotary) {0.0, 1.0} in 0.1 steps + [729] = "%.4f", -- A-4 Sight Bombing Altimeter Target Altitude Knob (rotary) {0.0, 1.0} in 0.015 steps + [731] = "%.4f", -- A-4 Sight Bombing Altimeter Index Altitude Handle (rotary) {0.0, 1.0} in -0.015 steps + [632] = "%1d", -- LABS Gyro Caging Switch, UNCAGE/CAGE {2,- 2} + [633] = "%1d", -- LABS Start Switch, ON/OFF {2, -2} + [634] = "%1d", -- LABS Change-over Switch, LABS/A-4 {2, -2} + [702] = "%1d", -- Bomb-Rocket-Tank Jettison Button {0.0, 1.0} + [820] = "%.1f", -- Missile Control Switch, LH & RH/RH/SALVO {-1.0, 0.0, 1.0} + [821] = "%.4f", -- Tone Volume (rotary) {0.0, 1.0} in 0.1 steps + [822] = "%.1f", -- Safe Launch Button {0.0, 1.0} + [225] = "%1d", -- G-Limit Light - Push to test + [226] = "%.4f", -- G-Limit Light - Rotate to adjust brightness(MW) (rotary) {0.0,0.5} in 0.02 steps + [1001] = "%.1f", -- Rocket Intervalometer {0.0, 1.0} + [208] = "%1d" -- A-4 Sight Radar Target Selector Button +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {654,813,811,812}) + -- Compass Light Switch, Instrument Panel Primary Light Rheostat, Instrument Panel Auxiliary Light Rheostat, Console and Panel Light Rheostat +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/FC_AuxiliaryFuntions.lua b/ExportsModules/FC_AuxiliaryFuntions.lua new file mode 100644 index 0000000..436a690 --- /dev/null +++ b/ExportsModules/FC_AuxiliaryFuntions.lua @@ -0,0 +1,3109 @@ +-- Flaming Cliffs Auxiliary Functons + +ExportScript.Version.FC_AuxiliaryFunctions = "1.2.1" + +-- Workaround for engine start-up +ExportScript.AF.LeftEngineOn = false +ExportScript.AF.RightEngineOn = false + +-- Weapon Panel for Su-25A and Su-25T +function ExportScript.AF.FC_WeaponPanel_SU25(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + if ExportScript.AF.TmpWeaponPanelPresend == nil then + ExportScript.AF.TmpWeaponPanelPresend = {[101] = 0, [102] = 0, [103] = 0, [104] = 0, [105] = 0, [106] = 0, [107] = 0, [108] = 0, [109] = 0, [110] = 0} + end + + if ExportScript.AF.TmpWeaponPanelActive == nil then + ExportScript.AF.TmpWeaponPanelActive = {[201] = 0, [202] = 0, [203] = 0, [204] = 0, [205] = 0, [206] = 0, [207] = 0, [208] = 0, [209] = 0, [210] = 0} + end + + if ExportScript.AF.TmpWeaponPanel == nil then + ExportScript.AF.TmpWeaponPanel = {[231] = 0, [232] = 0, [233] = 0, [234] = 0, [235] = 0} + end + + if ExportScript.AF.EventNumberFC_WeaponPanel == nil then + ExportScript.AF.EventNumberFC_WeaponPanel = 0 + end + + if(ExportScript.AF.EventNumberFC_WeaponPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_WeaponPanel = ExportScript.AF.EventNumber + -- defination + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo ~= nil then + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + if ExportScript.AF.CannonContainer == nil then -- Find Cannon-Containers, aka SPPU_22 + ExportScript.AF.CannonContainer = {} + ExportScript.AF.CannonContainer.counter = 0 + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_FindCannonContainer) + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201 } -- left + ExportScript.AF.TmpStationToPanel[2] = {Panel = 10, StationID = 110, CurrentID = 210 } -- right + ExportScript.AF.TmpStationToPanel[3] = {Panel = 2, StationID = 102, CurrentID = 202 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 9, StationID = 109, CurrentID = 209 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 3, StationID = 103, CurrentID = 203 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 8, StationID = 108, CurrentID = 208 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 4, StationID = 104, CurrentID = 204 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 7, StationID = 107, CurrentID = 207 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 5, StationID = 105, CurrentID = 205 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 6, StationID = 106, CurrentID = 206 } + + -- ExportScript.AF.TmpWeaponPanelActive reset + for i = 201, 210, 1 do + ExportScript.AF.TmpWeaponPanelActive[i] = 0 + end + + if ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation] ~= nil then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID] = 1 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation) -- corresponding station + end + + end + + local lMainGun = 1.0 -- Full max 250 Rounds "F" + local lReserve = 1.0 + if ExportScript.AF.PayloadInfo.Cannon.shells == 0 then + lMainGun = 0.0 -- transversely striped + lReserve = 0.0 -- transversely striped + elseif ExportScript.AF.PayloadInfo.Cannon.shells < 65 then + lMainGun = 0.1 -- "E" + elseif ExportScript.AF.PayloadInfo.Cannon.shells < 125 then + lMainGun = 0.3 -- "1/2" -- "3/4" + elseif ExportScript.AF.PayloadInfo.Cannon.shells < 187 then + lMainGun = 0.6 -- "1/4" + end + + local lWeaponType = 0.0 -- transversely striped + if ExportScript.AF.PayloadInfo.CurrentStation > 0 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level1 == 4 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 4 then -- Weapon type Missle + lWeaponType = 0.1 -- MSL + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 7 then -- Weapon type NURS with Container + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level3 == 33 then -- Weapon type Rocket + lWeaponType = 0.2 -- RCT + end + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 5 then -- Weapon type Bomb + lWeaponType = 0.3 -- BB + end + end + end + + local lOuterCannon = 0.0 -- transversely striped + local lInnerCannon = 0.0 -- transversely striped + if ExportScript.AF.CannonContainer.counter > 0 then + for i = 7, 10, 1 do + if ExportScript.AF.CannonContainer[i] == "{E92CBFE5-C153-11d8-9897-000476191836}" then -- SPPU_22 with 260 rounds + if i == 7 or i == 8 then + lOuterCannon = 1.0 -- Full max 260 Rounds "F" + if ExportScript.AF.PayloadInfo.Stations[i].count == 0 then + lOuterCannon = 0.0 -- transversely striped + ExportScript.AF.CannonContainer[i] = "empty" -- do not check + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 65 then + lOuterCannon = 0.1 -- "E" + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 130 then + lOuterCannon = 0.3 -- "3/4" -- "1/2" + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 195 then + lOuterCannon = 0.6 -- "1/4" + end + else + lInnerCannon = 1.0 -- Full max 260 Rounds "F" + if ExportScript.AF.PayloadInfo.Stations[i].count == 0 then + lInnerCannon = 0.0 -- transversely striped + ExportScript.AF.CannonContainer[i] = "empty" -- do not check + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 65 then + lInnerCannon = 0.1 -- "E" + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 130 then + lInnerCannon = 0.3 -- "3/4" -- "1/2" + elseif ExportScript.AF.PayloadInfo.Stations[i].count < 195 then + lInnerCannon = 0.6 -- "1/4" + end + end + end + end + end + + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 C 6 7 8 9 10 -- display + 1 3 5 7 9 10 8 6 4 2 -- Payload ID + ]] + -- Payload Info + -- weapon stations (panel) 1 (left) - 10 (right), no lamp for center station + + -- WeaponPresend1 {0, 1} + -- WeaponPresend2 {0, 1} + -- WeaponPresend3 {0, 1} + -- WeaponPresend4 {0, 1} + -- WeaponPresend5 {0, 1} + -- WeaponPresend6 {0, 1} + -- WeaponPresend7 {0, 1} + -- WeaponPresend8 {0, 1} + -- WeaponPresend9 {0, 1} + -- WeaponPresend10 {0, 1} + -- WeaponActive1 {0, 1} + -- WeaponActive2 {0, 1} + -- WeaponActive3 {0, 1} + -- WeaponActive4 {0, 1} + -- WeaponActive5 {0, 1} + -- WeaponActive6 {0, 1} + -- WeaponActive7 {0, 1} + -- WeaponActive8 {0, 1} + -- WeaponActive9 {0, 1} + -- WeaponActive10 {0, 1} + -- MainCannon {transversely striped = 0.0, 1/4 = 01, 1/2 = 03, 3/4 = 0.6, Full = 1.0} + -- WeaponType {transversely striped = 0.0, Missle = 0.1, Rocket = 0.2, Bomb = 0.3} + -- OuterCannon {transversely striped = 0.0, 1/4 = 01, 1/2 = 03, 3/4 = 0.6, Full = 1.0} + -- InnerCannon {transversely striped = 0.0, 1/4 = 01, 1/2 = 03, 3/4 = 0.6, Full = 1.0} + -- ReserveWeapon {transversely striped = 0.0, Gun = 1.0} + + ExportScript.AF.TmpWeaponPanel = {} + ExportScript.AF.TmpWeaponPanel[231] = lMainGun -- main cannon shells + ExportScript.AF.TmpWeaponPanelPresend[101] = (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) -- weapon presend panel 1 + ExportScript.AF.TmpWeaponPanelPresend[102] = (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) -- weapon presend panel 2 + ExportScript.AF.TmpWeaponPanelPresend[103] = (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) -- weapon presend panel 3 + ExportScript.AF.TmpWeaponPanelPresend[104] = (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) -- weapon presend panel 4 + ExportScript.AF.TmpWeaponPanelPresend[105] = (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) -- weapon presend panel 5 + ExportScript.AF.TmpWeaponPanelPresend[106] = (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) -- weapon presend panel 6 + ExportScript.AF.TmpWeaponPanelPresend[107] = (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) -- weapon presend panel 7 + ExportScript.AF.TmpWeaponPanelPresend[108] = (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) -- weapon presend panel 8 + ExportScript.AF.TmpWeaponPanelPresend[109] = (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) -- weapon presend panel 9 + ExportScript.AF.TmpWeaponPanelPresend[110] = (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) -- weapon presend panel 10 + --ExportScript.AF.TmpWeaponPanelActive[201] -- weapon active panel 1 + --ExportScript.AF.TmpWeaponPanelActive[202] -- weapon active panel 2 + --ExportScript.AF.TmpWeaponPanelActive[203] -- weapon active panel 3 + --ExportScript.AF.TmpWeaponPanelActive[204] -- weapon active panel 4 + --ExportScript.AF.TmpWeaponPanelActive[205] -- weapon active panel 5 + --ExportScript.AF.TmpWeaponPanelActive[206] -- weapon active panel 6 + --ExportScript.AF.TmpWeaponPanelActive[207] -- weapon active panel 7 + --ExportScript.AF.TmpWeaponPanelActive[208] -- weapon active panel 8 + --ExportScript.AF.TmpWeaponPanelActive[209] -- weapon active panel 9 + --ExportScript.AF.TmpWeaponPanelActive[210] -- weapon active panel 10 + ExportScript.AF.TmpWeaponPanel[232] = lWeaponType -- current weapon type + ExportScript.AF.TmpWeaponPanel[233] = lOuterCannon -- outer cannon shells + ExportScript.AF.TmpWeaponPanel[234] = lInnerCannon -- inner cannon shells + ExportScript.AF.TmpWeaponPanel[235] = lReserve -- reserve weapon + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanel) do + ExportScript.Tools.SendData(key, value) + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendDataDAC(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendDataDAC(key, value) + end + end +end + +-- Weapon Panel for MiG-29A and MiG-29S +function ExportScript.AF.FC_WeaponPanel_MiG29(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The weapon status panel, quantity and readiness of the currently selected weapon and the remaining gun ammunition are indicated. + if ExportScript.AF.TmpWeaponPanelPresend == nil then + ExportScript.AF.TmpWeaponPanelPresend = {[100] = 0, [101] = 0, [102] = 0, [103] = 0, [104] = 0, [105] = 0, [106] = 0} + end + + if ExportScript.AF.TmpWeaponPanelActive == nil then + ExportScript.AF.TmpWeaponPanelActive = {[201] = 0, [202] = 0, [203] = 0, [204] = 0, [205] = 0, [206] = 0} + end + + if ExportScript.AF.EventNumberFC_WeaponPanel == nil then + ExportScript.AF.EventNumberFC_WeaponPanel = 0 + end + + if(ExportScript.AF.EventNumberFC_WeaponPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_WeaponPanel = ExportScript.AF.EventNumber + + -- defination + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo ~= nil then + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201 } -- left + ExportScript.AF.TmpStationToPanel[3] = {Panel = 2, StationID = 102, CurrentID = 202 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 3, StationID = 103, CurrentID = 203 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 4, StationID = 104, CurrentID = 204 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 5, StationID = 105, CurrentID = 205 } + ExportScript.AF.TmpStationToPanel[2] = {Panel = 6, StationID = 106, CurrentID = 206 } -- right + + -- ExportScript.AF.TmpWeaponPanelActive reset + for i = 201, 206, 1 do + ExportScript.AF.TmpWeaponPanelActive[i] = 0 + end + + if ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation] ~= nil then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID] = 1 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation) -- corresponding station + end + end + --[[ + Weapon Panel + | + ------------------------------- + | | | | | | | + 1 2 3 C 4 5 6 + ]] + ExportScript.AF.TmpWeaponPanelPresend[100] = ExportScript.AF.PayloadInfo.Cannon.shells + ExportScript.AF.TmpWeaponPanelPresend[101] = (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) -- weapon presend panel 1 + ExportScript.AF.TmpWeaponPanelPresend[102] = (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) -- weapon presend panel 2 + ExportScript.AF.TmpWeaponPanelPresend[103] = (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) -- weapon presend panel 3 + ExportScript.AF.TmpWeaponPanelPresend[104] = (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) -- weapon presend panel 4 + ExportScript.AF.TmpWeaponPanelPresend[105] = (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) -- weapon presend panel 5 + ExportScript.AF.TmpWeaponPanelPresend[106] = (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) -- weapon presend panel 6 + --ExportScript.AF.TmpWeaponPanelActive[201] -- weapon active panel 1 + --ExportScript.AF.TmpWeaponPanelActive[202] -- weapon active panel 2 + --ExportScript.AF.TmpWeaponPanelActive[203] -- weapon active panel 3 + --ExportScript.AF.TmpWeaponPanelActive[204] -- weapon active panel 4 + --ExportScript.AF.TmpWeaponPanelActive[205] -- weapon active panel 5 + --ExportScript.AF.TmpWeaponPanelActive[206] -- weapon active panel 6 + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendData(key, value) + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendDataDAC(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendDataDAC(key, value) + end + end +end + +-- HSI for SU25T, SU-27, SU-33, MIG-29 +function ExportScript.AF.FC_Russian_HSI(distancetoway) + local lDistanceToWay = distancetoway or 999 + + local lDefaultOne = 1.0 + local lDefaultNull = 0.0 + local lRadToDCSunsignd = math.pi * 2 + local lPitch,lBank,lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Curse = LoGetControlPanel_HSI().Course -- HSI Course (Radian) + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lHeading = LoGetSelfData().Heading -- HEADING (Radian) + lPitch, lBank = nil +--[[ + [Course] = number: "0.76548692098835" + [CourseDeviation] = number: "0" + [ADF_raw] = number: "5.5811524391174" + [BearingPointer] = number: "0.80134677481978" + [RMI_raw] = number: "5.4092655181885" + [HeadingPointer] = number: "0.098191173578347" + [Heading_raw] = number: "6.2831854820251" + ]] + --[[ + Ka-50 HSI + [112] = "%.4f", -- HSI_heading {0.0, 1.0} + [118] = "%.4f", -- HSI_commanded_course_needle {0.0, 1.0} + [124] = "%.4f", -- HSI_commanded_heading_needle {0.0, 1.0} + [115] = "%.4f", -- HSI_bearing_needle {0.0, 1.0} + [119] = "%0.1f", -- HSI_heading_warning_flag{0.0,1.0} + [114] = "%0.1f", -- HSI_course_warning_flag{0.0, 1.0} + [125] = "%0.1f", -- HSI_glideslope_warning_flag{0.0, 1.0} + [117] = "%0.4f", -- HSI_range_counter_100 {0.0,1.0} + [527] = "%0.4f", -- HSI_range_counter_10 {0.0,1.0} + [528] = "%0.4f", -- HSI_range_counter_1 {0.0,1.0} + [127] = "%.4f", -- HSI_longitudinal_deviation{-1.0, 1.0} + [128] = "%.4f", -- HSI_lateral_deviation{-1.0, 1.0} + [116] = "%0.1f", -- HSI_range_unavailable_flag{0.0, 1.0} + [121] = "%0.1f", -- HSI_course_unavailable_flag{0.0, 1.0} + ]] + local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + lDistanceToWay = ExportScript.Tools.round(lDistanceToWay / 1000, 1) + local lDistanceToWayTmp = string.format("%03d", lDistanceToWay) + local lRangeCounter1 = 0 + local lRangeCounter2 = 0 + local lRangeCounter3 = 0 + if lDistanceToWay > 100 then + lRangeCounter1 = ExportScript.Tools.round((lDistanceToWay / 100), 0, "floor") * 0.11 + lRangeCounter1 = lRangeCounter1 - ExportScript.Tools.round(lRangeCounter1, 0, "floor") + end + if lDistanceToWay > 10 then + if lDistanceToWay > 100 then + lRangeCounter2 = (ExportScript.Tools.round((lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.11 + else + lRangeCounter2 = (lDistanceToWay / 10) * 0.11 + lRangeCounter2 = lRangeCounter2 - ExportScript.Tools.round(lRangeCounter2, 0, "floor") + end + end + if lDistanceToWay > 10 then + lRangeCounter3 = (lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 10, 0, "floor") * 10)) * 0.11 + else + lRangeCounter3 = lDistanceToWay * 0.11 + end + + lHeading = (lHeading / lRadToDCSunsignd) + -- HSI_heading {0.0, 1.0} + -- HSI_commanded_course_needle {0.0, 1.0} + -- HSI_commanded_heading_needle {0.0, 1.0} + -- HSI_bearing_needle {0.0, 1.0} + -- HSI_heading_warning_flag{0.0,1.0} + -- HSI_course_warning_flag{0.0, 1.0} + -- HSI_glideslope_warning_flag{0.0, 1.0} + -- HSI_range_counter_100 {0.0,1.0} + -- HSI_range_counter_10 {0.0,1.0} + -- HSI_range_counter_1 {0.0,1.0} + -- HSI_longitudinal_deviation{-1.0, 1.0} + -- HSI_lateral_deviation{-1.0, 1.0} + -- HSI_range_unavailable_flag{0.0, 1.0} + -- HSI_course_unavailable_flag{0.0, 1.0} + + ExportScript.Tools.SendData(11, string.format("%.4f", lHeading)) -- compass card + ExportScript.Tools.SendData(12, string.format("%.4f", ((lHeading + (lHSI_Curse / lRadToDCSunsignd)) - 1))) -- double arrow + ExportScript.Tools.SendData(13, string.format("%.4f", lHeading)) -- yellow triangle + ExportScript.Tools.SendData(14, string.format("%.4f", (0 - (lHeading + (lHSI_ADF / lRadToDCSunsignd))))) -- yellow arrow + ExportScript.Tools.SendData(15, lDefaultNull) -- KC Flag + ExportScript.Tools.SendData(16, lDefaultOne) -- K Flag + ExportScript.Tools.SendData(17, lDefaultOne) -- L Flag + ExportScript.Tools.SendData(18, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 1, 1))])) + ExportScript.Tools.SendData(19, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 2, 2))])) + ExportScript.Tools.SendData(20, string.format("%.4f", lRangeCounter3)) + ExportScript.Tools.SendData(21, string.format("%.4f", lGlide)) + ExportScript.Tools.SendData(22, string.format("%.4f", lSide)) + ExportScript.Tools.SendData(23, lDefaultNull) + ExportScript.Tools.SendData(24, lDefaultNull) +end + +-- HSI for SU25A +function ExportScript.AF.FC_Russian_HSI_old() + + local lDefaultOne = 1.0 + local lDefaultNull = 0.0 + local lRadToDCSsignd = math.pi + local lRadToDCSunsignd = math.pi * 2 + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Curse = LoGetControlPanel_HSI().Course -- HSI Course (Radian) + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lHeading = LoGetSelfData().Heading -- HEADING (Radian) + --ExportScript.Tools.WriteToLog('LoGetControlPanel_HSI: '..ExportScript.Tools.dump(LoGetControlPanel_HSI())) +--[[ + [Course] = number: "0.76548692098835" + [CourseDeviation] = number: "0" + [ADF_raw] = number: "5.5811524391174" + [BearingPointer] = number: "0.80134677481978" + [RMI_raw] = number: "5.4092655181885" + [HeadingPointer] = number: "0.098191173578347" + [Heading_raw] = number: "6.2831854820251" + ]] + + lHeading = (lHeading / lRadToDCSunsignd) + -- HSI_heading {0.0, 1.0} compass card + -- HSI_commanded_course_needle {0.0, 1.0} (Required heading) white needle + -- HSI_bearing_needle {0.0, 1.0} (RMI bearing) yellow needle + -- Flag Г (T){0.0,1.0} + -- Flag К (K){0.0,1.0} + -- ILS needle horizontal{-1.0, 1.0} + -- ILS needle vertical{-1.0, 1.0} + + ExportScript.Tools.SendData(11, string.format("%.4f", lHeading)) -- compass card + ExportScript.Tools.SendData(12, string.format("%.4f", ((lHeading + (lHSI_Curse / lRadToDCSunsignd)) - 0.5))) -- white needle + --ExportScript.Tools.SendData(12, string.format("%.4f", ((lHeading + (lHSI_Curse / lRadToDCSunsignd)) - 1))) -- white needle + --ExportScript.Tools.SendData(12, string.format("%.4f", (lHeading + (lHSI_Curse / lRadToDCSsignd)))) -- white needle + --ExportScript.Tools.SendData(13, string.format("%.4f", (0 - (lHeading + (lHSI_ADF / lRadToDCSunsignd))))) -- yellow needle + --ExportScript.Tools.SendData(13, string.format("%.4f", (0 - (lHeading + (lHSI_ADF / lRadToDCSsignd))))) -- yellow needle + ExportScript.Tools.SendData(13, string.format("%.4f", (0 - (lHSI_ADF / lRadToDCSunsignd)))) -- yellow needle + ExportScript.Tools.SendData(16, lDefaultOne) -- T Flag + ExportScript.Tools.SendData(17, lDefaultOne) -- K Flag + ExportScript.Tools.SendData(21, string.format("%.4f", lGlide)) + ExportScript.Tools.SendData(22, string.format("%.4f", lSide)) +end + +-- HSI-Distance for SU25A +function ExportScript.AF.FC_Russian_HSI_Distance_old(distancetoway) + local lDistanceToWay = distancetoway or 999 + + local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + lDistanceToWay = ExportScript.Tools.round(lDistanceToWay / 1000, 1) + local lDistanceToWayTmp = string.format("%03d", lDistanceToWay) + local lRangeCounter1 = 0 + local lRangeCounter2 = 0 + local lRangeCounter3 = 0 + if lDistanceToWay > 100 then + lRangeCounter1 = ExportScript.Tools.round((lDistanceToWay / 100), 0, "floor") * 0.11 + lRangeCounter1 = lRangeCounter1 - ExportScript.Tools.round(lRangeCounter1, 0, "floor") + end + if lDistanceToWay > 10 then + if lDistanceToWay > 100 then + lRangeCounter2 = (ExportScript.Tools.round((lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.11 + else + lRangeCounter2 = (lDistanceToWay / 10) * 0.11 + lRangeCounter2 = lRangeCounter2 - ExportScript.Tools.round(lRangeCounter2, 0, "floor") + end + end + if lDistanceToWay > 10 then + lRangeCounter3 = (lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 10, 0, "floor") * 10)) * 0.11 + else + lRangeCounter3 = lDistanceToWay * 0.11 + end + + ExportScript.Tools.SendData(18, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 1, 1))])) + ExportScript.Tools.SendData(19, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 2, 2))])) + ExportScript.Tools.SendData(20, string.format("%.4f", lRangeCounter3)) +end + +-- ADI for SU-25, SU-25T, SU-27, MIG-29A and MIG-29S +function ExportScript.AF.FC_Russian_ADI_Old() + + local lDefaultNull = 0.0 + local lRadToDCSsignd = math.pi + local lNavInfo = LoGetNavigationInfo() + local lNavInfoPitch = lNavInfo.Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = lNavInfo.Requirements.roll -- AP REQUIRED BANK (Radian) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lSteeringWarningFlag = 0 + local lAttitudeWarningFlag = 0 +-- ADI (IKP-81) + --------------------------------------------------- + --[[ + Bank + Pitch + Slip indicator + steering warning flag + attitude warnng flag + Required bank + Required pitch + Required heading + Required altitude + ]] + lNavInfoRoll = (lNavInfoRoll > 0.5625 and 0.5625 or lNavInfoRoll) + lNavInfoRoll = (lNavInfoRoll < -0.5625 and -0.5625 or lNavInfoRoll) + lPitch = lPitch / (lRadToDCSsignd / 2) + lBank = lBank / lRadToDCSsignd + + if lNavInfo.SystemMode.submode == "ROUTE" then + lNavInfoPitch = lNavInfoPitch * lRadToDCSsignd + elseif lNavInfo.SystemMode.submode == "ARRIVAL" then + lNavInfoPitch = lNavInfoPitch * 2 + elseif lNavInfo.SystemMode.submode == "LANDING" then + lNavInfoPitch = lNavInfoPitch * (lRadToDCSsignd * 0.75) + elseif lNavInfo.SystemMode.submode == "OFF" then + lSteeringWarningFlag = 1 + lAttitudeWarningFlag = 1 + end + + lNavInfoPitch = (lNavInfoPitch > 1.0 and 1 or lNavInfoPitch) + lNavInfoPitch = (lNavInfoPitch < -1.0 and -1 or lNavInfoPitch) + + ExportScript.Tools.SendData(1, string.format("%.4f", lBank)) + ExportScript.Tools.SendData(2, string.format("%.4f", lPitch)) + ExportScript.Tools.SendData(3, string.format("%.4f", ExportScript.Tools.negate(lSlipBallPosition))) -- negate + ExportScript.Tools.SendData(4, lSteeringWarningFlag) + ExportScript.Tools.SendData(5, lAttitudeWarningFlag) + ExportScript.Tools.SendData(6, string.format("%.4f", lNavInfoRoll)) + ExportScript.Tools.SendData(7, string.format("%.4f", lNavInfoPitch)) + ExportScript.Tools.SendData(8, lDefaultNull) + ExportScript.Tools.SendData(9, lDefaultNull) +end + +-- ADI for SU-33 +function ExportScript.AF.FC_Russian_ADI_New() + + local lDefaultNull = 0.0 + local lRadToDCSsignd = math.pi + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) +-- ADI + --------------------------------------------------- + --[[ + [100] = "%.4f", -- ADI_Roll {-1.0,1.0} + [101] = "%.4f", -- ADI_Pitch {-math.pi/2.0,math.pi/2.0}{1.0,-1.0} + [102] = "%0.1f", -- ADI_steering_warning_flag {0.0,1.0} + [109] = "%0.1f", -- ADI_attitude_warning_flag {0.0,1.0} + [107] = "%.4f", -- ADI_bank_steering {-1.0,1.0} + [106] = "%.4f", -- ADI_pitch_steering {-1.0,1.0} + [111] = "%.4f", -- ADI_airspeed_deviation {-1.0,1.0} + [103] = "%.4f", -- ADI_track_deviation {-1.0,1.0} + [526] = "%.4f", -- ADI_height_deviation {-1.0,1.0} + [108] = "%.4f", -- ADI_sideslip {-1.0,1.0} + ]] + lNavInfoPitch = lNavInfoPitch / lRadToDCSsignd + lNavInfoRoll = lNavInfoRoll / lRadToDCSsignd + lPitch = lPitch / (lRadToDCSsignd / 2) + lBank = lBank / lRadToDCSsignd + + ExportScript.Tools.SendData(1, string.format("%.4f", lBank)) + ExportScript.Tools.SendData(2, string.format("%.4f", ExportScript.Tools.negate(lPitch))) -- negate + ExportScript.Tools.SendData(3, lDefaultNull) + ExportScript.Tools.SendData(4, lDefaultNull) + ExportScript.Tools.SendData(5, string.format("%.4f", lNavInfoRoll)) + ExportScript.Tools.SendData(6, string.format("%.4f", lNavInfoPitch)) + ExportScript.Tools.SendData(7, lDefaultNull) + ExportScript.Tools.SendData(8, lDefaultNull) + ExportScript.Tools.SendData(9, lDefaultNull) + ExportScript.Tools.SendData(10, string.format("%.4f", lSlipBallPosition)) +end + +-- Radar Altimeter for SU-25A, SU-25T, SU-27, SU-33 +function ExportScript.AF.FC_Russian_RadarAltimeter_1500m(warningflag) + local lWarning_Flag = warningflag or 100 + + local lScaleValue = 1500 + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + + lAltRad = lAltRad / lScaleValue -- (1500 m ist die maximalhoehe des Messgeraetes) + lAltRad = (lAltRad > 1.0 and 1.0 or lAltRad) -- the result is limited to 1.0 + local lDangerRALT = lWarning_Flag / lScaleValue -- 0.14 -- 50m ((50 * 1) / 350) + local lWarning_Flag = (lAltRad == 1.0 and 1.0 or 0.0) -- (Flag an wenn Hoehe auf 1.0 ist) + local lDangerRALT_Lamp = (lAltRad < lDangerRALT and 1.0 or 0.0) -- (Flag an wenn Hoehe niedriger als 0.14) + -- AltRad {0.0,1.0} + -- DangerRALT {0.0,1.0} + -- Warning_Flag {0, 1} + -- DangerRALT_Lamp {0, 1} + + ExportScript.Tools.SendData(25, string.format("%.4f", lAltRad)) + ExportScript.Tools.SendData(26, string.format("%.4f", lDangerRALT)) + ExportScript.Tools.SendData(27, lWarning_Flag) + ExportScript.Tools.SendData(28, lDangerRALT_Lamp) +end + +-- Radar Altimeter for MiG-29A/G/S +function ExportScript.AF.FC_Russian_RadarAltimeter_1000m(warningflag) + local lWarning_Flag = warningflag or 100 + + local lScaleValue = 1000 + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + + lAltRad = lAltRad / lScaleValue -- (1000 m ist die maximalhoehe des Messgeraetes) + lAltRad = (lAltRad > 1.0 and 1.0 or lAltRad) -- the result is limited to 1.0 + local lDangerRALT = lWarning_Flag / lScaleValue -- 0.14 -- 50m ((50 * 1) / 350) + local lWarning_Flag = (lAltRad == 1.0 and 1.0 or 0.0) -- (Flag an wenn Hoehe auf 1.0 ist) + local lDangerRALT_Lamp = (lAltRad < lDangerRALT and 1.0 or 0.0) -- (Flag an wenn Hoehe niedriger als 0.14) + -- AltRad {0.0,1.0} + -- DangerRALT {0.0,1.0} + -- Warning_Flag {0, 1} + -- DangerRALT_Lamp {0, 1} + + ExportScript.Tools.SendData(25, string.format("%.4f", lAltRad)) + ExportScript.Tools.SendData(26, string.format("%.4f", lDangerRALT)) + ExportScript.Tools.SendData(27, lWarning_Flag) + ExportScript.Tools.SendData(28, lDangerRALT_Lamp) +end + +-- Barometric Altimeter for SU-33 +function ExportScript.AF.FC_Russian_BarometricAltimeter_late() + + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE (mm Hg) + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltBar_kilometer_needle = 0 + local lAltBar_meter_needle = 0 + + lAltBar = lAltBar - ((9.5 * (760 - lBasicAtmospherePressure)) / 2) -- 9.5 m per 1mmHg difference + + lBasicAtmospherePressure = lBasicAtmospherePressure * 1.33322 -- mmHg to hPa + +-- if lAltBar > 10000 then +-- lAltBar_kilometer_needle = lAltBar / 100000 +-- else + lAltBar_kilometer_needle = lAltBar / 10000 +-- end +-- if lAltBar > 1000 then +-- lAltBar_meter_needle = lAltBar / 1000 +-- lAltBar_meter_needle = lAltBar_meter_needle - ExportScript.Tools.round(lAltBar_meter_needle, 0, "floor") +-- else + lAltBar_meter_needle = lAltBar / 1000 +-- end + lAltBar = lAltBar / 1000 + + -- AltBar_kilometer_needle {0.0,1.0} + -- AltBar_meter_needle {0.0,1.0} + -- BasicAtmospherePressure {947, 1080} hPa + -- AltBar_kilometer {0, 99} km + + ExportScript.Tools.SendData(30, string.format("%.4f", lAltBar_kilometer_needle)) + ExportScript.Tools.SendData(31, string.format("%.4f", lAltBar_meter_needle)) + ExportScript.Tools.SendData(32, string.format("%04d", ExportScript.Tools.round(lBasicAtmospherePressure, 0, "floor"))) + ExportScript.Tools.SendData(33, string.format("%02d", ExportScript.Tools.round(lAltBar, 0, "floor"))) +end + +-- Barometric Altimeter for SU-25A, SU25-T +function ExportScript.AF.FC_Russian_BarometricAltimeter_late_special() + + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE (mm Hg) + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltBar_kilometer_needle = 0 + local lAltBar_meter_needle = 0 + + lAltBar = lAltBar - ((9.5 * (760 - lBasicAtmospherePressure)) / 2) -- 9.5 m per 1mmHg difference + +-- if lAltBar > 10000 then +-- lAltBar_kilometer_needle = lAltBar / 100000 +-- else + lAltBar_kilometer_needle = lAltBar / 10000 +-- end +-- if lAltBar > 1000 then +-- lAltBar_meter_needle = lAltBar / 1000 +-- lAltBar_meter_needle = lAltBar_meter_needle - ExportScript.Tools.round(lAltBar_meter_needle, 0, "floor") +-- else + lAltBar_meter_needle = lAltBar / 1000 +-- end + lAltBar = lAltBar / 1000 + + -- AltBar_kilometer_needle {0.0,1.0} + -- AltBar_meter_needle {0.0,1.0} + -- BasicAtmospherePressure {600, 780} mm Hg + -- AltBar_kilometer {0, 99} km + + ExportScript.Tools.SendData(30, string.format("%.4f", lAltBar_kilometer_needle)) + ExportScript.Tools.SendData(31, string.format("%.4f", lAltBar_meter_needle)) + ExportScript.Tools.SendData(32, string.format("%04d", ExportScript.Tools.round(lBasicAtmospherePressure, 0, "floor"))) + ExportScript.Tools.SendData(33, string.format("%02d", ExportScript.Tools.round(lAltBar, 0, "floor"))) +end + +-- Barometric Altimeter for SU-27 +function ExportScript.AF.FC_Russian_BarometricAltimeter_20000() + + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE (mm Hg) + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltBar_kilometer_needle = 0 + local lAltBar_meter_needle = 0 + + lAltBar = lAltBar - ((9.5 * (760 - lBasicAtmospherePressure)) / 2) -- 9.5 m per 1mmHg difference + +-- if lAltBar > 10000 then +-- lAltBar_kilometer_needle = lAltBar / 200000 +-- else + lAltBar_kilometer_needle = lAltBar / 20000 +-- end +-- if lAltBar > 1000 then +-- lAltBar_meter_needle = lAltBar / 1000 +-- lAltBar_meter_needle = lAltBar_meter_needle - ExportScript.Tools.round(lAltBar_meter_needle, 0, "floor") +-- else + lAltBar_meter_needle = lAltBar / 1000 +-- end + lBasicAtmospherePressure = (lBasicAtmospherePressure - 600) / 200 + + -- AltBar_kilometer_needle {0.0,1.0} + -- AltBar_meter_needle {0.0,1.0} + -- BasicAtmospherePressure {0.0, 1.0}={600.0, 800.0} + + ExportScript.Tools.SendData(30, string.format("%.4f", lAltBar_kilometer_needle)) + ExportScript.Tools.SendData(31, string.format("%.4f", lAltBar_meter_needle)) + ExportScript.Tools.SendData(32, string.format("%.4f", lBasicAtmospherePressure)) +end + +-- Barometric Altimeter for MiG-29A/G/S +function ExportScript.AF.FC_Russian_BarometricAltimeter_30000() + + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE (mm Hg) + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltBar_kilometer_needle = 0 + local lAltBar_meter_needle = 0 + + lAltBar = lAltBar - ((9.5 * (760 - lBasicAtmospherePressure)) / 2) -- 9.5 m per 1mmHg difference + + lAltBar_kilometer_needle = lAltBar / 30000 + + lAltBar_meter_needle = lAltBar / 1000 + + lBasicAtmospherePressure = (lBasicAtmospherePressure - 600) / 200 + + -- AltBar_kilometer_needle {0.0,1.0} + -- AltBar_meter_needle {0.0,1.0} + -- BasicAtmospherePressure {0.0, 1.0}={600.0, 800.0} + + ExportScript.Tools.SendData(30, string.format("%.4f", lAltBar_kilometer_needle)) + ExportScript.Tools.SendData(31, string.format("%.4f", lAltBar_meter_needle)) + ExportScript.Tools.SendData(32, string.format("%.4f", lBasicAtmospherePressure)) +end + +-- Air Speed Indicator for SU-25A, SU-25T +function ExportScript.AF.FC_Russian_AirSpeed_1100hkm() + + local lIAS = LoGetIndicatedAirSpeed() * 3.6 -- INDICATED AIRSPEED (Meter/Second to Km/h) + local lTAS = LoGetTrueAirSpeed() * 3.6 -- TRUE AIRSPEED (Meter/Second to Km/h) + + --[[ + y_min = 0.0 0.09 -- minimaler Ausgabewert + y_max = 0.09 1.0 -- maximaler Ausgabewert + x_min = 0 100 -- minimaler Eingangswert + x_max = 100 1100 -- maximaler Eingangswert + x = 50 700 -- aktueller Eingangswert + + d_y = 0.09 0.91 -- Delta Ausgabewerte (y_max - y_min) + d_x = 100 1000 -- Delta Eingangswerte (x_max - x_min) + m = 0.0009 0.00091 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -0.001 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,0171875 0,636 -- Ergebnis (m * x + n) + ]] + if lIAS > 100 then + lIAS = 0.00091 * lIAS + -0.001 + else + lIAS = 0.0009 * lIAS + end + + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 400 -- minimaler Eingangswert + x_max = 1100 -- maximaler Eingangswert + x = 800 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 700 -- Delta Eingangswerte (x_max - x_min) + m = 0.00142857142857142857142857142857 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.571428571428571428571428571427 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.571428571428571428571428571429 -- Ergebnis (m * x + n) + ]] + if lTAS > 400 then + lTAS = 0.00142857142857142857142857142857 * lTAS + -0.571428571428571428571428571427 + else + lTAS = 0.0 + end + + -- IAS {0.0,1.0} + -- TAS {0.0,1.0} + + ExportScript.Tools.SendData(35, string.format("%.4f", lIAS)) + ExportScript.Tools.SendData(36, string.format("%.4f", lTAS)) +end + +-- Air Speed Indicator for SU-27, SU-33 +function ExportScript.AF.FC_Russian_AirSpeed_1600hkm() + + local lScaleValueIAS = 1600 + local lScaleValueMach = 3.5 + local lIAS = LoGetIndicatedAirSpeed() * 3.6 -- INDICATED AIRSPEED (Meter/Second to Km/h) + local lMACH = LoGetMachNumber() -- MACH + local lMACHtmp = 0 + local lIAStmp = 0 + + if lIAS > 0 and lIAS <= 100 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.03125 -- maximaler Ausgabewert + x_min = 0 -- minimaler Eingangswert + x_max = 100 -- maximaler Eingangswert + x = 55 -- aktueller Eingangswert + + d_y = 0.03125 -- Delta Ausgabewerte (y_max - y_min) + d_x = 100 -- Delta Eingangswerte (x_max - x_min) + m = 0.0003125 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,0171875 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.0003125 * lIAS + elseif lIAS > 100 and lIAS <= 500 then + --[[ + y_min = 0.03125 -- minimaler Ausgabewert + y_max = 0.427 -- maximaler Ausgabewert + x_min = 100 -- minimaler Eingangswert + x_max = 500 -- maximaler Eingangswert + x = 250 -- aktueller Eingangswert + + d_y = 0.39575 -- Delta Ausgabewerte (y_max - y_min) + d_x = 400 -- Delta Eingangswerte (x_max - x_min) + m = 0.000989375 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.0676875 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,0171875 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.000989375 * lIAS + -0.0676875 + elseif lIAS > 500 and lIAS <= 600 then + --[[ + y_min = 0.427 -- minimaler Ausgabewert + y_max = 0.51 -- maximaler Ausgabewert + x_min = 500 -- minimaler Eingangswert + x_max = 600 -- maximaler Eingangswert + x = 550 -- aktueller Eingangswert + + d_y = 0.083 -- Delta Ausgabewerte (y_max - y_min) + d_x = 100 -- Delta Eingangswerte (x_max - x_min) + m = 0.00083 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.012 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.4685 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.00083 * lIAS + 0.012 + elseif lIAS > 600 and lIAS <= 1000 then + --[[ + y_min = 0.51 -- minimaler Ausgabewert + y_max = 0.753 -- maximaler Ausgabewert + x_min = 600 -- minimaler Eingangswert + x_max = 1000 -- maximaler Eingangswert + x = 800 -- aktueller Eingangswert + + d_y = 0.243 -- Delta Ausgabewerte (y_max - y_min) + d_x = 400 -- Delta Eingangswerte (x_max - x_min) + m = 0.0006075 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.1455 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.6315 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.0006075 * lIAS + 0.1455 + elseif lIAS > 1000 and lIAS <= 1200 then + --[[ + y_min = 0.753 -- minimaler Ausgabewert + y_max = 0.84375 -- maximaler Ausgabewert + x_min = 1000 -- minimaler Eingangswert + x_max = 1200 -- maximaler Eingangswert + x = 1100 -- aktueller Eingangswert + + d_y = 0.09075 -- Delta Ausgabewerte (y_max - y_min) + d_x = 200 -- Delta Eingangswerte (x_max - x_min) + m = 0.00045375 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.29925 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.798375 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.00045375 * lIAS + 0.29925 + elseif lIAS > 1200 and lIAS <= 1600 then + --[[ + y_min = 0.84375 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 1200 -- minimaler Eingangswert + x_max = 1600 -- maximaler Eingangswert + x = 1400 -- aktueller Eingangswert + + d_y = 0.15625 -- Delta Ausgabewerte (y_max - y_min) + d_x = 400 -- Delta Eingangswerte (x_max - x_min) + m = 0.000390625 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.375 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.921875 -- Ergebnis (m * x + n) + ]] + lIAStmp = 0.000390625 * lIAS + 0.375 + end + + if lMACH > 0.6 and lMACH <= 0.9 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.273 -- maximaler Ausgabewert + x_min = 0.6 -- minimaler Eingangswert + x_max = 0.9 -- maximaler Eingangswert + x = 0.75 -- aktueller Eingangswert + + d_y = 0.273 -- Delta Ausgabewerte (y_max - y_min) + d_x = 0.3 -- Delta Eingangswerte (x_max - x_min) + m = 0.91 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.546 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.1365 -- Ergebnis (m * x + n) + ]] + lMACHtmp = 0.91 * lMACH + -0.546 + elseif lMACH > 0.9 and lMACH <= 1.5 then + --[[ + y_min = 0.273 -- minimaler Ausgabewert + y_max = 0.545 -- maximaler Ausgabewert + x_min = 0.9 -- minimaler Eingangswert + x_max = 1.5 -- maximaler Eingangswert + x = 1.3 -- aktueller Eingangswert + + d_y = 0.272 -- Delta Ausgabewerte (y_max - y_min) + d_x = 0.6 -- Delta Eingangswerte (x_max - x_min) + m = 0.45333333333333333333333333333333 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.135 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.45433333333333333333333333333333 -- Ergebnis (m * x + n) + ]] + lMACHtmp = 0.45333333333333333333333333333333 * lMACH + -0.135 + elseif lMACH > 1.5 and lMACH <= 3.5 then + --[[ + y_min = 0.545 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 1.5 -- minimaler Eingangswert + x_max = 3.5 -- maximaler Eingangswert + x = 2.3 -- aktueller Eingangswert + + d_y = 0.455 -- Delta Ausgabewerte (y_max - y_min) + d_x = 2.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.2275 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.20375 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.727 -- Ergebnis (m * x + n) + ]] + lMACHtmp = 0.2275 * lMACH + 0.20375 + end + + -- IAS {0.0,1.0} + -- MACH {0.0,1.0} + + ExportScript.Tools.SendData(35, string.format("%.4f", lIAStmp)) + ExportScript.Tools.SendData(36, string.format("%.4f", lMACHtmp)) +end + +-- Air Speed Indicator for MiG-29A, MiG-29S +function ExportScript.AF.FC_Russian_AirSpeed_1000hkm() + + local lIAS = LoGetIndicatedAirSpeed() * 3.6 -- INDICATED AIRSPEED (Meter/Second to Km/h) + local lThousand = 0.0 + + if lIAS > 1000 then + lThousand = 1.0 + elseif lIAS > 950 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 950 -- minimaler Eingangswert + x_max = 1001 -- maximaler Eingangswert + x = 980 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 51.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.01960784313725490196078431372549 -- Steigung der linearen Funktion (d_y / d_x) + n = -18.627450980392156862745098039215 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.5882352941176470588235294117652 -- Ergebnis (m * x + n) + ]] + lThousand = 0.01960784313725490196078431372549 * lIAS + -18.627450980392156862745098039215 + end + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 1000 -- maximaler Eingangswert + x = 880 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 1000.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.001 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.88 -- Ergebnis (m * x + n) + ]] + lIAS = 0.001 * lIAS + lIAS = (lIAS > 1.0 and 1.0 or lIAS) -- the result is limited to 1.0 + + -- IAS {0.0,1.0} + -- Thousand {0.0,1.0} + + ExportScript.Tools.SendData(35, string.format("%.4f", lIAS)) + ExportScript.Tools.SendData(36, string.format("%.4f", lThousand)) +end + +-- Machmeter for MiG-29A, MiG-29S +function ExportScript.AF.FC_Russian_Mach_MiG29() + -- Mach {max, Mach} + local lMACH = LoGetMachNumber() -- MACH + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 3.0 -- maximaler Eingangswert + x = 1.65 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 3.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.33333333333333333333333333333333 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.00000000000000000000000000000001 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.55 -- Ergebnis (m * x + n) + ]] + lMACH = 0.33333333333333333333333333333333 * lMACH + 0.00000000000000000000000000000001 + + ExportScript.Tools.SendData(37, string.format("%0.4f", lMACH)) -- Mach + ExportScript.Tools.SendData(38, 0) -- Mach max +end + +-- Vertical Velocity Indicator (Old Style) for SU-25, SU-25T, SU-27, MIG-29A and MIG-29S +function ExportScript.AF.FC_Russian_VVI_Old() + + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + lBank = math.deg(lBank) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + --local lTAS = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + --local lTurn = 0 + + if lVVI > 0.0 then + lVVI = lVVI / 200 + lVVI = (lVVI > 1.0 and 1.0 or lVVI) + else + lVVI = lVVI / 200 + lVVI = (lVVI < -1.0 and -1.0 or lVVI) + end + + if lBank >= 0.0 then + lBank = lBank / 45 + lBank = (lBank > 1.0 and 1.0 or lBank) -- the result is limited to 1.0 + else + lBank = lBank / 45 + lBank = (lBank < -1.0 and -1.0 or lBank) -- the result is limited to -1.0 + end + + --lTurn = lTAS / 187.628865979 -- TRUE AIRSPEED (Meter/Second) / 187.628865979 m/s = Turn-Winkel or True Airspeed in Knots/min / 364 Knots + --ExportScript.Tools.WriteToLog('lTurn: '..ExportScript.Tools.dump(lTurn)) + --ExportScript.Tools.WriteToLog('lVVI: '..ExportScript.Tools.dump(lVVI)..', lBank :'..ExportScript.Tools.dump(lBank)) + -- lVVI {-1.0, 0.0, 1.0} {0.0=0, 0.05=10, 0.10=20, 0.24=50, 0.49=100, 0.74=150, 1.0=200} + -- lBank {-1.0, 0.0,1.0} + -- lSlipBallPosition {0.0,1.0} + + ExportScript.Tools.SendData(40, string.format("%.4f", lVVI)) + ExportScript.Tools.SendData(41, string.format("%.4f", lBank)) + ExportScript.Tools.SendData(42, string.format("%.4f", ExportScript.Tools.negate(lSlipBallPosition))) -- negate +end + +-- VVI for SU-33 +function ExportScript.AF.FC_Russian_VVI_New() + + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + + --[[ + y_min = 0.0 0.325 -- minimaler Ausgabewert + y_max = 0.325 1.0 -- maximaler Ausgabewert + x_min = 0.0 20.0 -- minimaler Eingangswert + x_max = 20.0 60.0 -- maximaler Eingangswert + x = 5.0 40.0 -- aktueller Eingangswert + + d_y = 0.325 0.675 -- Delta Ausgabewerte (y_max - y_min) + d_x = 20.0 40.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.01625 0.016875 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -0.0125 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.08125 0,6625 -- Ergebnis (m * x + n) + ]] + + if lVVI >= 0.0 then + if lVVI >= 0.0 and lVVI < 20.0 then + lVVI = 0.01625 * lVVI + else + lVVI = 0.016875 * lVVI + -0.0125 + end + lVVI = (lVVI > 1.0 and 1.0 or lVVI) + else + if lVVI <= 0.0 and lVVI < -20.0 then + lVVI = 0.01625 * lVVI + else + lVVI = 0.016875 * lVVI + -0.0125 + end + lVVI = (lVVI < -1.0 and -1.0 or lVVI) + end + + ExportScript.Tools.SendData(40, string.format("%.4f", lVVI)) +end + +-- Airintake for MiG-29A/S/G, SU-27 and SU-33 +function ExportScript.AF.FC_Russian_AirIntake() + + local lAirI = LoGetMechInfo().airintake.value + + ExportScript.Tools.SendData(45, string.format("%.4f", lAirI)) + ExportScript.Tools.SendData(46, string.format("%.4f", lAirI)) +end + +-- AOA Indicator and Accelerometer (AOA, GLoad) for SU-25A, SU25T +function ExportScript.AF.FC_Russian_AOA_Su25() + + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + + -- AOA Indicator and Accelerometer (AOA, GLoad) + if lTrueAirSpeed > 1.0 then + if lAoA > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 40.0 -- maximaler Eingangswert + x = 1.4 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 40.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.025 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.035 -- Ergebnis (m * x + n) + ]] + lAoA = 0.025 * lAoA + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.28 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -10.0 -- maximaler Eingangswert + x = -3.2 -- aktueller Eingangswert + + d_y = -0.28 -- Delta Ausgabewerte (y_max - y_min) + d_x = -10.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.028 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.0896 -- Ergebnis (m * x + n) + ]] --0.14 + lAoA = 0.028 * lAoA + end + else + lAoA = 0.06 + end + + if lAccelerationUnits > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 11.0 -- maximaler Eingangswert + x = 2.5 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 11.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.09090909090909090909090909090909 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,22727272727272727272727272727273 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.09090909090909090909090909090909 * lAccelerationUnits + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.40625 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -2.2125720977783 -- maximaler Eingangswert + x = -0.5 -- aktueller Eingangswert + + d_y = -0.40625 -- Delta Ausgabewerte (y_max - y_min) + d_x = -2.2125720977783 -- Delta Eingangswerte (x_max - x_min) + m = 0.18360983599491558834620754850374 -- Steigung der linearen Funktion (d_y / d_x) + n = 2.559143240842e-33 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.09180491799745779417310377425187 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.18360983599491558834620754850374 * lAccelerationUnits + 2.559143240842e-33 + end + + ExportScript.Tools.SendData(50, string.format("%.4f", lAoA)) + ExportScript.Tools.SendData(51, string.format("%.4f", lAccelerationUnits)) +end + +-- AOA Indicator and Accelerometer (AOA, GLoad) for SU-27, SU33 +function ExportScript.AF.FC_Russian_AOA_Su2733() + + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + + if lTrueAirSpeed > 1.0 then + if lAoA > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 40.0 -- maximaler Eingangswert + x = 1.4 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 40.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.025 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.035 -- Ergebnis (m * x + n) + ]] + lAoA = 0.025 * lAoA + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.28 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -10.0 -- maximaler Eingangswert + x = -3.2 -- aktueller Eingangswert + + d_y = -0.28 -- Delta Ausgabewerte (y_max - y_min) + d_x = -10.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.028 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.0896 -- Ergebnis (m * x + n) + ]] --0.14 + lAoA = 0.028 * lAoA + end + else + lAoA = 0.06 + end + + if lAccelerationUnits > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 11.0 -- maximaler Eingangswert + x = 2.5 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 11.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.09090909090909090909090909090909 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.22727272727272727272727272727273 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.09090909090909090909090909090909 * lAccelerationUnits + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.40625 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -4.2 -- maximaler Eingangswert + x = -0.5 -- aktueller Eingangswert + + d_y = -0.40625 -- Delta Ausgabewerte (y_max - y_min) + d_x = -4.2 -- Delta Eingangswerte (x_max - x_min) + m = 0.09672619047619047619047619047619 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.09180491799745779417310377425187 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.09672619047619047619047619047619 * lAccelerationUnits + end + + ExportScript.Tools.SendData(50, string.format("%.4f", lAoA)) + ExportScript.Tools.SendData(51, string.format("%.4f", lAccelerationUnits)) +end + +-- AOA Indicator and Accelerometer (AOA, GLoad) for MiG-29A, MiG-29S +function ExportScript.AF.FC_Russian_AOA_MiG29() + + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + if ExportScript.AF.TmpAOAMiG29GLoadMin == nil then + ExportScript.AF.TmpAOAMiG29GLoadMin = 0 + end + if ExportScript.AF.TmpAOAMiG29GLoadMax == nil then + ExportScript.AF.TmpAOAMiG29GLoadMax = 0 + end + + if lAoA > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.7812 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 30.0 -- maximaler Eingangswert + x = 5.4 -- aktueller Eingangswert + + d_y = 0.7812 -- Delta Ausgabewerte (y_max - y_min) + d_x = 30.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.02604 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.1406 -- Ergebnis (m * x + n) + ]] + lAoA = 0.03333333333333333333333333333333 * lAoA + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.28 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -5.5 -- maximaler Eingangswert + x = -2.1 -- aktueller Eingangswert + + d_y = -0.28 -- Delta Ausgabewerte (y_max - y_min) + d_x = -5.5 -- Delta Eingangswerte (x_max - x_min) + m = 0,05090909090909090909090909090909 -- Steigung der linearen Funktion (d_y / d_x) + n = 0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.10691 -- Ergebnis (m * x + n) + ]] + lAoA = 0.05090909090909090909090909090909 * lAoA + end + + if lAccelerationUnits > 0.0 then -- positive AOA + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 11.0 -- maximaler Eingangswert + x = 2.5 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 11.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.09090909090909090909090909090909 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.22727272727272727272727272727273 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.09090909090909090909090909090909 * lAccelerationUnits + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = -0.40625 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = -4.2 -- maximaler Eingangswert + x = -0.5 -- aktueller Eingangswert + + d_y = -0.40625 -- Delta Ausgabewerte (y_max - y_min) + d_x = -4.2 -- Delta Eingangswerte (x_max - x_min) + m = 0.09672619047619047619047619047619 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.09180491799745779417310377425187 -- Ergebnis (m * x + n) + ]] + lAccelerationUnits = 0.09672619047619047619047619047619 * lAccelerationUnits + end + + if lAccelerationUnits > ExportScript.AF.TmpAOAMiG29GLoadMax then + ExportScript.AF.TmpAOAMiG29GLoadMax = lAccelerationUnits + end + if lAccelerationUnits < ExportScript.AF.TmpAOAMiG29GLoadMin then + ExportScript.AF.TmpAOAMiG29GLoadMin = lAccelerationUnits + end + + ExportScript.Tools.SendData(50, string.format("%.4f", lAoA)) + ExportScript.Tools.SendData(51, string.format("%.4f", lAccelerationUnits)) + ExportScript.Tools.SendData(52, string.format("%.4f", ExportScript.AF.TmpAOAMiG29GLoadMin)) + ExportScript.Tools.SendData(53, string.format("%.4f", ExportScript.AF.TmpAOAMiG29GLoadMax)) +end + +-- Russian Clock ACS-1 for KA-50, SU-25A, MIG-29A , MIG-29S +function ExportScript.AF.FC_Russian_Clock_ACS1() + + local lDefaultOne = 1.0 + local lDefaultNull = 0.0 + + local lCurrentClock = LoGetMissionStartTime() + LoGetModelTime() -- in seconds + local lCurrentHours = lCurrentClock / 43200 -- (3600 * 12) + lCurrentHours = lCurrentHours - ExportScript.Tools.round(lCurrentHours, 0, "floor") + local lCurrentMinutes = lCurrentClock / 3600 -- (60 * 60) + lCurrentMinutes = lCurrentMinutes - ExportScript.Tools.round(lCurrentMinutes, 0, "floor") + local lCurrentSeconds = lCurrentClock / 60 + lCurrentSeconds = lCurrentSeconds - ExportScript.Tools.round(lCurrentSeconds, 0, "floor") + local lFlightTimeHours = LoGetModelTime() / 43200 + lFlightTimeHours = lFlightTimeHours - ExportScript.Tools.round(lFlightTimeHours, 0, "floor") + local lFlightTimeMinutes = LoGetModelTime() / 3600 + lFlightTimeMinutes = lFlightTimeMinutes - ExportScript.Tools.round(lFlightTimeMinutes, 0, "floor") + -- currtime_hours {0.0,1.0} + -- currtime_minutes {0.0,1.0} + -- currtime_seconds {0.0,1.0} + -- flight_time_meter_status{0.0,0.2} + -- flight_hours {0.0,1.0} + -- flight_minutes {0.0,1.0} + -- seconds_meter_time_minutes {0.0,1.0} + -- seconds_meter_time_seconds {0.0,1.0} + + ExportScript.Tools.SendData(55, string.format("%.4f", lCurrentHours)) + ExportScript.Tools.SendData(56, string.format("%.4f", lCurrentMinutes)) + ExportScript.Tools.SendData(57, string.format("%.4f", lCurrentSeconds)) + ExportScript.Tools.SendData(58, lDefaultNull) -- red/white flag + ExportScript.Tools.SendData(59, string.format("%.4f", lFlightTimeHours)) + ExportScript.Tools.SendData(60, string.format("%.4f", lFlightTimeMinutes)) + ExportScript.Tools.SendData(61, lDefaultNull) + ExportScript.Tools.SendData(62, lDefaultNull) +end + +-- Russian Clock (latest Model) for SU-25T, SU-27, SU-33 +function ExportScript.AF.FC_Russian_Clock_late() + local lDefaultOne = 1.0 + local lDefaultNull = 0.0 + + local lCurrentClock = LoGetMissionStartTime() + LoGetModelTime() -- in seconds + local lCurrentHours = lCurrentClock / 43200 -- (3600 * 12) + lCurrentHours = lCurrentHours - ExportScript.Tools.round(lCurrentHours, 0, "floor") + local lCurrentMinutes = lCurrentClock / 3600 -- (60 * 60) + lCurrentMinutes = lCurrentMinutes - ExportScript.Tools.round(lCurrentMinutes, 0, "floor") + local lCurrentSeconds = lCurrentClock / 60 + lCurrentSeconds = lCurrentSeconds - ExportScript.Tools.round(lCurrentSeconds, 0, "floor") + local lFlightTimeHours = LoGetModelTime() / 43200 + lFlightTimeHours = lFlightTimeHours - ExportScript.Tools.round(lFlightTimeHours, 0, "floor") + local lFlightTimeMinutes = LoGetModelTime() / 3600 + lFlightTimeMinutes = lFlightTimeMinutes - ExportScript.Tools.round(lFlightTimeMinutes, 0, "floor") + -- currtime_hours {0.0,1.0} + -- currtime_minutes {0.0,1.0} + -- currtime_seconds {0.0,1.0} + -- flight_time_meter_status{0.0,0.2} + -- flight_hours {0.0,1.0} + -- flight_minutes {0.0,1.0} + -- seconds_meter_time_seconds {0.0,1.0} + + ExportScript.Tools.SendData(55, string.format("%.4f", lCurrentHours)) + ExportScript.Tools.SendData(56, string.format("%.4f", lCurrentMinutes)) + ExportScript.Tools.SendData(57, string.format("%.4f", lCurrentSeconds)) + --ExportScript.Tools.SendData(58, lDefaultNull) -- red/white flag + ExportScript.Tools.SendData(59, string.format("%.4f", lFlightTimeHours)) + ExportScript.Tools.SendData(60, string.format("%.4f", lFlightTimeMinutes)) + ExportScript.Tools.SendData(61, string.format("%.4f", lCurrentSeconds)) +end + +-- Russian Enging RPM (Tachometer) for SU-25A+T, SU-27, SU-33, MIG-29 +function ExportScript.AF.FC_Russian_EngineRPM() + + local lScaleValue = 110 + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + lEngineRPMleft = lEngineRPMleft / lScaleValue + lEngineRPMleft = (lEngineRPMleft > 1.0 and 1.0 or lEngineRPMleft) -- the result is limited to 1.0 + lEngineRPMright = lEngineRPMright / lScaleValue + lEngineRPMright = (lEngineRPMright > 1.0 and 1.0 or lEngineRPMright) -- the result is limited to 1.0 + -- EngineRPMleft {0.0,1.0} + -- EngineRPMright {0.0,1.0} + + ExportScript.Tools.SendData(65, string.format("%.4f", lEngineRPMleft)) + ExportScript.Tools.SendData(66, string.format("%.4f", lEngineRPMright)) +end + +-- Russian Exthaus Gas Temperature 1.000GradC for SU-25A, SU-25T, MIG-29 +function ExportScript.AF.FC_Russian_EGT_1000gc(egttemp, exportid) + local lEGTtemp = egttemp or 1 + local lExportID = exportid or 70 + + --[[ + y_min = 0.0 0.068 -- minimaler Ausgabewert + y_max = 0.068 1.0 -- maximaler Ausgabewert + x_min = 0 200 -- minimaler Eingangswert + x_max = 200 1080 -- maximaler Eingangswert + x = 100 650 -- aktueller Eingangswert + + d_y = 0.068 0.932 -- Delta Ausgabewerte (y_max - y_min) + d_x = 200 880 -- Delta Eingangswerte (x_max - x_min) + m = 0.00034 0.00105909090909090909090909090909 -- Steigung der linearen Funktion (d_y / d_x) + n = 0 -0.1438181818181818181818181818172 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.034 0.5445909090909090909090909090913 -- Ergebnis (m * x + n) + ]] + + if lEGTtemp < 200 then + lEGTtemp = 0.00034 * lEGTtemp + else + lEGTtemp = 0.00105909090909090909090909090909 * lEGTtemp + -0.1438181818181818181818181818172 + end + + -- ExthausGasTemperature {0.0,1.0} + ExportScript.Tools.SendData(lExportID, string.format("%.4f", lEGTtemp)) +end + +-- US Standby Compass for MiG-29A/S/G +function ExportScript.AF.FC_Russian_Compass2() + local lDefaultNull = 0.0 + local lHeading = math.deg(LoGetSelfData().Heading) -- HEADING (Radian to Grad) + --local lHeading = math.deg(LoGetMagneticYaw()) -- HEADING (Radian to Grad) + --ExportScript.Tools.WriteToLog('lHeading: '..ExportScript.Tools.dump(lHeading)) + local lPitch = LoGetSelfData().Pitch -- Pitch + local lBank = LoGetSelfData().Bank -- Bank + + if lHeading <= 180 then + lHeading = lHeading / 180 + else + lHeading = (lHeading / 180) - 2 + end + + lPitch = lPitch / 1.31 -- korrektur der maximal Werte + lBank = lBank / 6.26 -- korrektur der maximal Werte + + ExportScript.Tools.SendData(67, string.format("%.4f", lHeading)) -- heading + ExportScript.Tools.SendData(68, string.format("%.4f", lPitch)) -- pitch + ExportScript.Tools.SendData(69, string.format("%.4f", lBank)) -- bank +end + +-- Russian Mechanical Device Indicator for SU-25A+T +function ExportScript.AF.FC_Russian_MDI_SU25(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + local lTrueAirSpeed = LoGetTrueAirSpeed() + if lTrueAirSpeed == nil then + return + end + + local lWarningLight = 0.0 + lWarningLight = ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1.0 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1.0 or lWarningLight ) -- gear warning light + -- WarningLight {0.0 = Off, 0.1 = blinking light, 0.2 = on} + -- WarningLight {0.0 = Off, no blinking light, 1.0 = on} + -- nose gear {0, 1} + -- left gear {0, 1} + -- right gear {0, 1} + -- speedbreakes on {0, 1} + -- flap 1. position {0, 1} + -- flap 2. position {0, 1} + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(500, string.format("%.1f", lWarningLight)) + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.25 and 1 or 0)) -- flap 1. position + ExportScript.Tools.SendData(532, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap 2. position + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(500, (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1 or 0 )) + ExportScript.Tools.SendDataDAC(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendDataDAC(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendDataDAC(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendDataDAC(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + ExportScript.Tools.SendDataDAC(531, (lMechInfo.flaps.value > 0.25 and 1 or 0)) -- flap 1. position + ExportScript.Tools.SendDataDAC(532, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap 2. position + ExportScript.Tools.SendDataDAC(533, ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1 or 0)) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + end +end + +-- Russian Mechanical Device Indicator for MiG-29A/G/S +function ExportScript.AF.FC_Russian_MDI_MiG29(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + + local lTrueAirSpeed = LoGetTrueAirSpeed() + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(500, (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1 or 0 ) ) -- gear warning light + ExportScript.Tools.SendDataDAC(501, (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC(502, (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC(503, (lMechInfo.gear.value > 0.97 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendDataDAC(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + --ExportScript.Tools.SendDataDAC(531, (lMechInfo.flaps.value > 0.25 and 1 or 0) ) -- flap 1. position + --ExportScript.Tools.SendDataDAC(532, (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap 2. position + --ExportScript.Tools.SendDataDAC(533, ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1 or 0) ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + ExportScript.Tools.SendDataDAC(531, (lMechInfo.flaps.value > 0.24 and 1 or 0) ) -- flap 1. position + ExportScript.Tools.SendDataDAC(532, (lMechInfo.flaps.value > 0.49 and 1 or 0) ) -- flap 2. position + ExportScript.Tools.SendDataDAC(533, ((lMechInfo.flaps.value > 0.49 and lTrueAirSpeed > 340) and 1 or 0) ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + --ExportScript.Tools.SendDataDAC(534, (lMechInfo.gear.value > 0.5 and 1 or 0) ) -- Intake FOD shields -- falscher Wert + + ExportScript.Tools.SendDataDAC(541, (lMechInfo.parachute.value < 0.5 and 1 or 0) ) + + ExportScript.Tools.SendDataDAC(551, (lMechInfo.noseflap.value > 20.0 and 1 or 0) ) + + ExportScript.Tools.SendDataDAC(560, lMechInfo.airintake.status ) + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lWarningLight = 0.0 + + if lTrueAirSpeed ~= nil then + --lWarningLight = ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1.0 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = ((lMechInfo.flaps.value > 0.49 and lTrueAirSpeed > 340) and 1.0 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1.0 or lWarningLight ) -- gear warning light + end + + ExportScript.Tools.SendData(500, string.format("%.1f", lWarningLight)) + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + --ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.25 and 1 or 0)) -- flap 1. position + --ExportScript.Tools.SendData(532, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap 2. position + ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.24 and 1 or 0)) -- flap 1. position + ExportScript.Tools.SendData(532, (lMechInfo.flaps.value > 0.49 and 1 or 0)) -- flap 2. position + --ExportScript.Tools.SendData(534, (lMechInfo.gear.value > 0.5 and 1 or 0)) -- Intake FOD shields -- falscher Wert + end +end + +-- Russian Mechanical Device Indicator for MiG-29A/G/S +function ExportScript.AF.FC_Russian_FlareChaff_MiG29(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + local lSnares = LoGetSnares() -- Flare and Chaff + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "30" + --[flare] = number: "30" + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(800, lSnares.chaff + lSnares.flare ) + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(800, lSnares.chaff + lSnares.flare ) + end +end + +-- Russian Fuel Quantity Indicator for MiG-29A/G/S +function ExportScript.AF.FuelQuantityIndicator_MiG29(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + + local lPayloadInfo = LoGetPayloadInfo() + local lRange = 0 + local lStation5Tank = false + local lStation6Tank = false + local lStation7Tank = false + + if lEngineInfo ~= nil then + lStation5Tank = (lPayloadInfo.Stations[5].CLSID == "{C0FF4842-FBAC-11d5-9190-00A0249B6F00}" and true or false) + lStation6Tank = (lPayloadInfo.Stations[6].CLSID == "{C0FF4842-FBAC-11d5-9190-00A0249B6F00}" and true or false) + lStation7Tank = (lPayloadInfo.Stations[7].CLSID == "{2BEC576B-CDF5-4B7F-961F-B0FA4312B841}" and true or false) + end + + --ExportScript.Tools.WriteToLog('lStation7Tank: '..ExportScript.Tools.dump(lStation7Tank)) + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[7].CLSID == 2BEC576B-CDF5-4B7F-961F-B0FA4312B841 -- ext 1500l Fuel Tank + ]] + + local lTotalFuel = lEngineInfo.fuel_internal + lEngineInfo.fuel_external + --ExportScript.Tools.WriteToLog('lTotalFuel: '..ExportScript.Tools.dump(lTotalFuel)) + + -- Internal Fuel: 3370 + -- max external Fuel: 2930 + -- max totak Fuel: 6300 + -- 1400 Liter center tank = 1163kg, station 7, CLSID {2BEC576B-CDF5-4B7F-961F-B0FA4312B841} + -- 1150 Liter tank = 891kg, station 5,6, CLSID {C0FF4842-FBAC-11d5-9190-00A0249B6F00} + --lEngineInfo.fuel_external < 1770 -- Tank warning 1 + --lEngineInfo.fuel_external == 0 -- Tank warning 2 + --lEngineInfo.fuel_internal < 2500 -- Tank warning 3 + --lEngineInfo.fuel_internal < 800 -- Tank warning 4 + --lEngineInfo.fuel_internal < 650 -- Tank warning 5 + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round(((lTotalFuel) / 10), 0, "ceil") * 10) ) -- total fuel in kg + + if lStation7Tank and (lStation5Tank or lStation6Tank) then + ExportScript.Tools.SendDataDAC("304", (lEngineInfo.fuel_external < 1770.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendDataDAC("305", (lEngineInfo.fuel_external < 1.0 and 1 or 0) ) -- Tank warning 2 + elseif lStation7Tank and not(lStation5Tank or lStation6Tank) then + ExportScript.Tools.SendDataDAC("304", (lEngineInfo.fuel_external < 1.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendDataDAC("305", 0 ) -- Tank warning 2 + end + ExportScript.Tools.SendDataDAC("306", (lEngineInfo.fuel_internal < 2500.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendDataDAC("307", (lEngineInfo.fuel_internal < 800.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendDataDAC("308", (lEngineInfo.fuel_internal < 650.0 and 1 or 0) ) -- Tank warning 5 + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lTotalFuel_7_5 = 0 + local lTotalFuel_5_0 = 0 + + if lTotalFuel > 5000 then -- internal and external + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 5000 -- minimaler Eingangswert + x_max = 7500 -- maximaler Eingangswert + + x = 6300 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 2500 -- Delta Eingangswerte (x_max - x_min) + m = 0.0004 -- Steigung der linearen Funktion (d_y / d_x) + n = -2.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.52 -- Ergebnis (m * x + n) + ]] + lTotalFuel_7_5 = 0.0004 * lTotalFuel + -2.0 + lTotalFuel_5_0 = 1 + else + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0 -- minimaler Eingangswert + x_max = 5000 -- maximaler Eingangswert + + x = 3500 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 5000 -- Delta Eingangswerte (x_max - x_min) + m = 0.0002 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.52 -- Ergebnis (m * x + n) + ]] + lTotalFuel_5_0 = 0.0002 * lTotalFuel + 0 + lTotalFuel_7_5 = 0 + end + + ExportScript.Tools.SendData(301, string.format("%0.4f", lTotalFuel_7_5) ) + ExportScript.Tools.SendData(302, string.format("%0.4f", lTotalFuel_5_0) ) + + if lStation7Tank and (lStation5Tank or lStation6Tank) then + ExportScript.Tools.SendData(304, (lEngineInfo.fuel_external < 1770.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendData(305, (lEngineInfo.fuel_external < 1.0 and 1 or 0) ) -- Tank warning 2 + elseif lStation7Tank and not(lStation5Tank or lStation6Tank) then + ExportScript.Tools.SendData(304, (lEngineInfo.fuel_external < 1.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendData(305, 0 ) -- Tank warning 2 + end + ExportScript.Tools.SendData(306, (lEngineInfo.fuel_internal < 2500.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendData(307, (lEngineInfo.fuel_internal < 800.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendData(308, (lEngineInfo.fuel_internal < 650.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendData(303, lRange ) -- Range in km + end +end + +-- Russian Sighting System for MiG-29A/G/S (DAC only) +function ExportScript.AF.SightingSystem_MiG29() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +-- Russian System Test EKRAN +function ExportScript.AF.FC_EKRAN() + + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + local lDisplayWindow = "" -- Message + local lFAILlight = "" -- FAILURE + local lMEMORYlight = "" -- MEMORY + local lTURNlight = "" -- TURN + if gDisplayWindow == nil then + gFC_EKRAN_active = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false} + gDisplayWindow = "" + end + + if lMCPState.LeftTailPlaneFailure and not gFC_EKRAN_active[1] then + lDisplayWindow = "LEFT\nTAIL\nPLANE\nFAILURE" + gFC_EKRAN_active[1] = true + elseif lMCPState.RightTailPlaneFailure and not gFC_EKRAN_active[2] then + lDisplayWindow = "RIGHT\nTAIL\nPLANE\nFAILURE" + gFC_EKRAN_active[2] = true + elseif lMCPState.MasterWarning and not gFC_EKRAN_active[3] then + ---lDisplayWindow = "MASTER\nWARNING" -- don't display + gFC_EKRAN_active[3] = true + elseif lMCPState.LeftEngineFailure and not gFC_EKRAN_active[4] then + lDisplayWindow = "LEFT\nENGINE\nFAILURE" + gFC_EKRAN_active[4] = true + elseif lMCPState.RightEngineFailure and not gFC_EKRAN_active[5] then + lDisplayWindow = "RIGHT\nENGINE\nFAILURE" + gFC_EKRAN_active[5] = true + elseif lMCPState.RightAileronFailure and not gFC_EKRAN_active[6] then + lDisplayWindow = "RIGHT\nAILERON\nFAILURE" + gFC_EKRAN_active[6] = true + elseif lMCPState.LeftMainPumpFailure and not gFC_EKRAN_active[7] then + lDisplayWindow = "LEFT\nMAIN\nPUMP\nFAILURE" + gFC_EKRAN_active[7] = true + elseif lMCPState.RightMainPumpFailure and not gFC_EKRAN_active[8] then + lDisplayWindow = "RIGHT\nMAIN\nPUMP\nFAILURE" + gFC_EKRAN_active[8] = true + elseif lMCPState.LeftWingPumpFailure and not gFC_EKRAN_active[9] then + lDisplayWindow = "LEFT\nWING\nPUMP\nFAILURE" + gFC_EKRAN_active[10] = true + elseif lMCPState.RightWingPumpFailure and not gFC_EKRAN_active[10] then + lDisplayWindow = "RIGHT\nWING\nPUMP\nFAILURE" + gFC_EKRAN_active[10] = true + elseif lMCPState.EOSFailure and not gFC_EKRAN_active[11] then + lDisplayWindow = "EOS\nFAILURE" + gFC_EKRAN_active[11] = true + elseif lMCPState.ECMFailure and not gFC_EKRAN_active[12] then + lDisplayWindow = "ECM\nFAILURE" + gFC_EKRAN_active[12] = true + elseif lMCPState.CannonFailure and not gFC_EKRAN_active[13] then + lDisplayWindow = "CANNON\nFAILURE" + gFC_EKRAN_active[13] = true + elseif lMCPState.MLWSFailure and not gFC_EKRAN_active[14] then + lDisplayWindow = "MLWS\nFAILURE" + gFC_EKRAN_active[14] = true + elseif lMCPState.ACSFailure and not gFC_EKRAN_active[15] then + lDisplayWindow = "ACS\nFAILURE" + gFC_EKRAN_active[15] = true + elseif lMCPState.RadarFailure and not gFC_EKRAN_active[16] then + lDisplayWindow = "RADAR\nFAILURE" + gFC_EKRAN_active[16] = true + elseif lMCPState.HelmetFailure and not gFC_EKRAN_active[17] then + lDisplayWindow = "HELMET\nFAILURE" + gFC_EKRAN_active[17] = true + elseif lMCPState.HUDFailure and not gFC_EKRAN_active[18] then + lDisplayWindow = "HUD\nFAILURE" + gFC_EKRAN_active[18] = true + elseif lMCPState.MFDFailure and not gFC_EKRAN_active[19] then + lDisplayWindow = "MFD\nFAILURE" + gFC_EKRAN_active[19] = true + elseif lMCPState.RWSFailure and not gFC_EKRAN_active[20] then + lDisplayWindow = "RWS\nFAILURE" + gFC_EKRAN_active[20] = true + elseif lMCPState.GearFailure and not gFC_EKRAN_active[21] then + lDisplayWindow = "GEAR\nFAILURE" + gFC_EKRAN_active[21] = true + elseif lMCPState.HydraulicsFailure and not gFC_EKRAN_active[22] then + lDisplayWindow = "HYDRAULICS\nFAILURE" + gFC_EKRAN_active[22] = true + elseif lMCPState.AutopilotFailure and not gFC_EKRAN_active[23] then + --lDisplayWindow = "AUTOPILOT\nFAILURE" -- bug in DCS, error is always active + gFC_EKRAN_active[23] = true + elseif lMCPState.FuelTankDamage and not gFC_EKRAN_active[24] then + lDisplayWindow = "FUEL\nTANK\nDAMAGE" + gFC_EKRAN_active[24] = true + end + + if lDisplayWindow ~= "" then + gDisplayWindow = lDisplayWindow + end + if gDisplayWindow ~= "" then + lFAILlight = " FAILURE" + end + -- DisplayWindow (main message) + -- FAILlight (failure text) + -- MEMORYlight (memmory text) + -- TURNlight (turn text) + + ExportScript.Tools.SendData(80, string.format("%s;", gDisplayWindow)) + ExportScript.Tools.SendData(81, string.format("%s;", lFAILlight)) + ExportScript.Tools.SendData(82, string.format("%s;", lMEMORYlight)) + ExportScript.Tools.SendData(83, string.format("%s;", lTURNlight)) +end + +-- ADI for A-10A, F-15C +function ExportScript.AF.FC_US_ADI() + local lDefaultNull = 0.0 + local lRadToDCSsignd = math.pi + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + --local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + --[[ ADI from A-10C + [17] = "%.4f", -- ADI Pitch + [18] = "%.4f", -- ADI Bank + [24] = "%.4f", -- ADI Slip Ball + [20] = "%.4f", -- ADI Bank Steering Bar + [21] = "%.4f", -- ADI Pitch Steering Bar + [23] = "%.4f", -- ADI Turn Needle + [27] = "%.4f", -- ADI Glide-Slope Indicator + [26] = "%0.1f", -- ADI Glide-Slope Warning Flag + [25] = "%0.1f", -- ADI Attitude Warning Flag + [19] = "%0.1f", -- ADI Course Warning Flag + ]] + lNavInfoPitch = lNavInfoPitch / (lRadToDCSsignd * -1) --lNavInfoPitch / lRadToDCSsignd + lNavInfoRoll = lNavInfoRoll / lRadToDCSsignd + lPitch = lPitch / (lRadToDCSsignd / 2) --lPitch / (lRadToDCSsignd / 1.5) + lBank = lBank / lRadToDCSsignd + + ExportScript.Tools.SendData(2, string.format("%.4f", ExportScript.Tools.negate(lPitch))) -- negate + ExportScript.Tools.SendData(1, string.format("%.4f", lBank)) + ExportScript.Tools.SendData(10, string.format("%.4f", lSlipBallPosition)) + ExportScript.Tools.SendData(5, string.format("%.4f", lNavInfoRoll)) + ExportScript.Tools.SendData(6, string.format("%.4f", ExportScript.Tools.negate(lNavInfoPitch))) -- negate + ExportScript.Tools.SendData(3, string.format("%.4f", lBank)) -- as Turn Needle + ExportScript.Tools.SendData(4, string.format("%.4f", lGlide)) + ExportScript.Tools.SendData(7, 0) + ExportScript.Tools.SendData(8, 0) + ExportScript.Tools.SendData(9, 0) +end + +-- Standby ADI for A-10A, F-15C +function ExportScript.AF.FC_US_stbyADI() + local lDefaultNull = 0.0 + local lRadToDCSsignd = math.pi + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + --local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + -- [63] = "%.4f", -- Standby Attitude Indicator pitch {-1.0, 1.0} + -- [64] = "%.4f", -- Standby Attitude Indicator bank {-1.0, 1.0} + -- [65] = "%0.1f", -- Standby Attitude Indicator warning flag {0.0, 1.0} + lPitch = lPitch / (lRadToDCSsignd / 1.5) + lBank = lBank / lRadToDCSsignd + + ExportScript.Tools.SendData(34, string.format("%.4f", lPitch)) + ExportScript.Tools.SendData(35, string.format("%.4f", ExportScript.Tools.negate(lBank))) -- negate + --ExportScript.Tools.SendData(0, 0) -- Warning Flag +end + +-- HSI for A-10A, F-15C +function ExportScript.AF.FC_US_HSI(distancetoway) + local lDistanceToWay = distancetoway or 999 + + local lDefaultOne = 1.0 + local lDefaultNull = 0.0 + local lRadToDCSunsignd = math.pi * 2 + local lPitch,lBank,lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Curse = LoGetControlPanel_HSI().Course -- HSI Course (Radian) + local lHeading = LoGetSelfData().Heading -- HEADING (Radian) + local lCourseDeviation = LoGetControlPanel_HSI().CourseDeviation + --ExportScript.Tools.WriteToLog('LoGetControlPanel_HSI() 1: '..ExportScript.Tools.dump(LoGetControlPanel_HSI())) + + lPitch, lBank = nil +--[[ + [Course] = number: "0.76548692098835" + [CourseDeviation] = number: "0" + [ADF_raw] = number: "5.5811524391174" + [BearingPointer] = number: "0.80134677481978" + [RMI_raw] = number: "5.4092655181885" + [HeadingPointer] = number: "0.098191173578347" + [Heading_raw] = number: "6.2831854820251" + ]] + --[[ HSI A-10C + [34] = "%.4f", -- HSI Heading + [33] = "%.4f", -- HSI Bearing #1 + [35] = "%.4f", -- HSI Bearing #2 + [36] = "%.4f", -- HSI Heading Marker + [47] = "%.4f", -- HSI Course Arrow + [41] = "%.4f", -- HSI Deviation + [29] = "%.2f", -- HSI range_counter_100 + [30] = "%.2f", -- HSI range_counter_10 + [31] = "%.2f", -- HSI range_counter_1 + [42] = "%0.1f", -- HSI Bearing to_from_1 + [43] = "%0.1f", -- HSI Bearing to_from_2 + [46] = "%0.1f", -- HSI Bearing Flag + [40] = "%0.1f", -- HSI Power Flag + [32] = "%0.1f", -- HSI Range Flag + ]] + lDistanceToWay = lDistanceToWay * 0.00062136994937697 -- meter to miles + --lDistanceToWay = ExportScript.Tools.round(lDistanceToWay / 1000, 1) + local lRangeCounter1 = 0 + local lRangeCounter2 = 0 + local lRangeCounter3 = 0 + if lDistanceToWay > 100 then + lRangeCounter1 = ExportScript.Tools.round((lDistanceToWay / 100), 0, "floor") * 0.11 + lRangeCounter1 = lRangeCounter1 - ExportScript.Tools.round(lRangeCounter1, 0, "floor") + end + if lDistanceToWay > 10 then + if lDistanceToWay > 100 then + lRangeCounter2 = (ExportScript.Tools.round((lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.11 + else + lRangeCounter2 = (lDistanceToWay / 10) * 0.11 + lRangeCounter2 = lRangeCounter2 - ExportScript.Tools.round(lRangeCounter2, 0, "floor") + end + end + if lDistanceToWay > 10 then + lRangeCounter3 = (lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 10, 0, "floor") * 10)) * 0.11 + else + lRangeCounter3 = lDistanceToWay * 0.11 + end + + lHeading = 1.0 - (lHeading / lRadToDCSunsignd) + lHSI_Curse = (lHSI_Curse / lRadToDCSunsignd) + lHSI_ADF = (lHSI_ADF / lRadToDCSunsignd) + lCourseDeviation = (lCourseDeviation > 1.0 and 1 or lCourseDeviation) + lCourseDeviation = (lCourseDeviation < -1.0 and -1 or lCourseDeviation) + -- HSI Heading {0.0, 1.0} + -- HSI Bearing #1 {0.0, 1.0} + -- HSI Bearing #2 {0.0, 1.0} + -- HSI Heading Marker {0.0, 1.0} + -- HSI Course Arrow {0.0, 1.0} + -- HSI Deviation {0.0, 1.0} + -- HSI range_counter_100 + -- HSI range_counter_10 + -- HSI range_counter_1 + -- HSI Bearing to_from_1 + -- HSI Bearing to_from_2 + -- HSI Bearing Flag + -- HSI Power Flag + -- HSI Range Flag + + ExportScript.Tools.SendData(11, string.format("%.4f", lHeading)) -- compass card + ExportScript.Tools.SendData(12, string.format("%.4f", lHSI_Curse)) -- Bearing #1 + ExportScript.Tools.SendData(13, string.format("%.4f", lHSI_Curse)) -- Bearing #2 + ExportScript.Tools.SendData(14, lDefaultNull) + ExportScript.Tools.SendData(15, string.format("%.4f", lHSI_Curse)) + ExportScript.Tools.SendData(16, string.format("%.4f", lCourseDeviation)) + ExportScript.Tools.SendData(17, string.format("%.4f", lRangeCounter1)) + ExportScript.Tools.SendData(18, string.format("%.4f", lRangeCounter2)) + ExportScript.Tools.SendData(19, string.format("%.4f", lRangeCounter3)) + ExportScript.Tools.SendData(20, lDefaultNull) + ExportScript.Tools.SendData(21, lDefaultNull) + ExportScript.Tools.SendData(22, lDefaultNull) + ExportScript.Tools.SendData(23, lDefaultNull) -- deaktiviert die Course Anzeige +end + +-- VVI for A-10A, F-15C +function ExportScript.AF.FC_US_VVI() + local lVVITmp = LoGetVerticalVelocity() * 196.8504 -- VERTICAL SPEED (Meter/Second to Foots/Minute) + -- {-1.0, -0.5, -0.29, 0.29, 0.5, 1.0} + --{-6000, -2000, -1000, 1000, 2000, 6000} + --ExportScript.Tools.WriteToLog('lVVITmp 1: '..ExportScript.Tools.dump(lVVITmp)) + if lVVITmp >= 0.0 then + --[[ + y_min = 0.0 0.29 0.503 0.765 -- minimaler Ausgabewert + y_max = 0.29 0.503 0.765 1.0 -- maximaler Ausgabewert + x_min = 0.0 1000.0 2000.0 4000.0 -- minimaler Eingangswert + x_max = 1000.0 2000.0 4000.0 6000.0 -- maximaler Eingangswert + x = 500.0 1600.0 2250.0 5500.0 -- aktueller Eingangswert + + d_y = 0.29 0.213 0.262 0.235 -- Delta Ausgabewerte (y_max - y_min) + d_x = 1000.0 1000.0 2000.0 2000.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.00029 0.000213 0.000131 0.0001175 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 0.077 0.241 0.295 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.145 0.4178 0.53575 0.94125 -- Ergebnis (m * x + n) + ]] + if lVVITmp >= 4000 then + lVVITmp = 0.0001175 * lVVITmp + 0.295 + elseif lVVITmp >= 2000 then + lVVITmp = 0.000131 * lVVITmp + 0.241 + elseif lVVITmp >= 1000 then + lVVITmp = 0.000213 * lVVITmp + 0.077 + else + lVVITmp = 0.00029 * lVVITmp + end + lVVITmp = (lVVITmp > 1.0 and 1.0 or lVVITmp) -- the result is limited to 1.0 + else + --[[ + y_min = -0.0 -0.29 -0.503 -0.765 -- minimaler Ausgabewert + y_max = -0.29 -0.503 -0.765 -1.0 -- maximaler Ausgabewert + x_min = -0.0 -1000.0 -2000.0 -4000.0 -- minimaler Eingangswert + x_max = -1000.0 -2000.0 -4000.0 -6000.0 -- maximaler Eingangswert + x = -500.0 -1600.0 -2250.0 -5500.0 -- aktueller Eingangswert + + d_y = -0.29 -0.213 -0.262 -0.235 -- Delta Ausgabewerte (y_max - y_min) + d_x = -1000.0 -1000.0 -2000.0 -2000.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.00029 0.000213 0.000131 0.0001175 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0 -0.077 -0.241 -0.295 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = -0.145 -0.4178 -0.53575 -0.94125 -- Ergebnis (m * x + n) + ]] + if lVVITmp <= 0 and lVVITmp > -1000 then + lVVITmp = 0.00029 * lVVITmp + elseif lVVITmp <= -1000 and lVVITmp > -2000 then + lVVITmp = 0.000213 * lVVITmp + -0.077 + elseif lVVITmp <= -2000 and lVVITmp > -4000 then + lVVITmp = 0.000131 * lVVITmp + -0.241 + else + lVVITmp = 0.0001175 * lVVITmp + -0.295 + end + + lVVITmp = (lVVITmp < -1.0 and -1.0 or lVVITmp) -- the result is limited to -1.0 + end + + ExportScript.Tools.SendData(24, string.format("%.4f", lVVITmp)) +end + +-- AOA Indicator (AOA) for A-10A, F-15C +function ExportScript.AF.FC_US_AOA() + local lRadToDCSsignd = math.pi + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) +--ExportScript.Tools.WriteToLog('lAoA 1: '..ExportScript.Tools.dump(lAoA)) + lAoA = (lAoA / 0.3) + 0.38 + --lAoA = ((lAoA / lRadToDCSsignd) * 10) + 0.38 + --[[ + lAoA = lAoA / (lRadToDCSsignd / 10) + if lAoA >= 0.0 then + lAoA = lAoA + 0.4 + lAoA = lAoA / 18 + else + lAoA = lAoA + 0.4 + lAoA = lAoA / 12 + end + ]] +--ExportScript.Tools.WriteToLog('lAoA 2: '..ExportScript.Tools.dump(lAoA)) + ExportScript.Tools.SendData(50, string.format("%.4f", lAoA) ) +end + +-- Accelerometer (GLoad) for A-10A, F-15C +function ExportScript.AF.FC_US_GLOAD() + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + lAccelerationUnits = (lAccelerationUnits / 15) + 0.33 + + ExportScript.Tools.SendData(25, string.format("%.4f", lAccelerationUnits)) + ExportScript.Tools.SendData(26, 0) + ExportScript.Tools.SendData(27, 0) +end + +-- US Clock for A-10A, F-15C +function ExportScript.AF.FC_US_Clock() + local lCurrentClock = LoGetMissionStartTime() + LoGetModelTime() -- in seconds + local lCurrentHours = lCurrentClock / 43200 -- (3600 * 12) + lCurrentHours = lCurrentHours - ExportScript.Tools.round(lCurrentHours, 0, "floor") + local lCurrentMinutes = lCurrentClock / 3600 -- (60 * 60) + lCurrentMinutes = lCurrentMinutes - ExportScript.Tools.round(lCurrentMinutes, 0, "floor") + local lCurrentSeconds = lCurrentClock / 60 + lCurrentSeconds = lCurrentSeconds - ExportScript.Tools.round(lCurrentSeconds, 0, "floor") + -- currtime_hours {0.0,1.0} + -- currtime_minutes {0.0,1.0} + -- currtime_seconds {0.0,1.0} + + ExportScript.Tools.SendData(28, string.format("%.4f", lCurrentHours)) + ExportScript.Tools.SendData(29, string.format("%.4f", lCurrentMinutes)) + ExportScript.Tools.SendData(30, string.format("%.4f", lCurrentSeconds)) +end + +-- US Standby Compass for A-10A, F-15C +function ExportScript.AF.FC_US_Compass() + local lDefaultNull = 0.0 + local lHeading = math.deg(LoGetSelfData().Heading) -- HEADING (Radian to Grad) + --local lHeading = math.deg(LoGetMagneticYaw()) -- HEADING (Radian to Grad) + --lHeading = 360 - lHeading -- muss umgerechnet werden?? + local lPitch = LoGetSelfData().Pitch -- Pitch + local lBank = LoGetSelfData().Bank -- Bank + + --[[ + y_min = 1.0 -- minimaler Ausgabewert + y_max = -1.0 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 360.00 -- maximaler Eingangswert + x = 185.5 -- aktueller Eingangswert + + d_y = -2.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 360.0 -- Delta Eingangswerte (x_max - x_min) + m = -0,00555555555555555555555555555556 -- Steigung der linearen Funktion (d_y / d_x) + n = 1.0 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.4995680345615518 -- Ergebnis (m * x + n) + ]] + lHeading = -0.00555555555555555555555555555556 * lHeading + 1.0 + + ExportScript.Tools.SendData(31, string.format("%.4f", lHeading)) -- heading + ExportScript.Tools.SendData(32, string.format("%.4f", lDefaultNull)) -- bank + ExportScript.Tools.SendData(33, string.format("%.4f", lDefaultNull)) -- pitch +end + +-- US F-15C Exaust Gas Temperature +function ExportScript.AF.FC_F15C_ExaustGasTemp(value, exportidNeedle, exportid100, exportid10, exportid1) + local lValue = value or 1 + local lExportIDNeedle = exportidNeedle or 0 + local lExportID100 = exportid100 or 0 + local lExportID10 = exportid10 or 0 + local lExportID1 = exportid1 or 0 + local lValueTmp = lValue + + local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + local lCounter3 = 0 + local lValueTmp2 = lValueTmp + + lValueTmp2 = lValueTmp2 / 100 + lValueTmp2 = string.format("%02d", lValueTmp2) + + if lValueTmp > 100 then + lCounter3 = (lValueTmp - (ExportScript.Tools.round(lValueTmp / 100, 0, "floor") * 100)) * 0.01 + else + lCounter3 = lValueTmp * 0.01 + end + + --[[ + y_min = 0.0 0.08 -- minimaler Ausgabewert + y_max = 0.08 1.0 -- maximaler Ausgabewert + x_min = 0 200 -- minimaler Eingangswert + x_max = 200 1400 -- maximaler Eingangswert + x = 100 650 -- aktueller Eingangswert + + d_y = 0.08 0.92 -- Delta Ausgabewerte (y_max - y_min) + d_x = 200 1200 -- Delta Eingangswerte (x_max - x_min) + m = 0.0004 7.6666666666666666666666666666667e-4 -- Steigung der linearen Funktion (d_y / d_x) + n = 0 -0.07333333333333333333333333333333 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.04 0,425 -- Ergebnis (m * x + n) + ]] + + if lValueTmp > 200 then + lValue = 7.6666666666666666666666666666667e-4 * lValueTmp + -0.07333333333333333333333333333333 + else + lValue = 0.0004 * lValueTmp + end + + ExportScript.Tools.SendData(lExportIDNeedle, string.format("%.4f", lValue)) + ExportScript.Tools.SendData(lExportID100, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 1, 1))])) + ExportScript.Tools.SendData(lExportID10, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 2, 2))])) + ExportScript.Tools.SendData(lExportID1, string.format("%.2f", lCounter3)) +end + +-- A-10A Exaust Gas Temperature +function ExportScript.AF.FC_A10A_ExaustGasTemp(value, exportidMain, exportidSecond) + local lValue = value or 1 + local lExportIDMain = exportidMain or 0 + local lExportIDSecond = exportidSecond or 0 + local lValueTmp = lValue + + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 100.0 -- minimaler Eingangswert + x_max = 1100.00 -- maximaler Eingangswert + x = 605.5 -- aktueller Eingangswert + + d_y = 1.0 -- Delta Ausgabewerte (y_max - y_min) + d_x = 1000.0 -- Delta Eingangswerte (x_max - x_min) + m = 0.001 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.1 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.5055 -- Ergebnis (m * x + n) + ]] + lValue = 0.001 * lValue + -0.1 + + local lv1, lValueTmp = math.modf(lValueTmp / 100) -- 100 = Secound Scala + + ExportScript.Tools.SendData(lExportIDMain, string.format("%.4f", lValue)) + ExportScript.Tools.SendData(lExportIDSecond, string.format("%.4f", lValueTmp)) +end + +-- Gauges with 2 needles (small and large), +-- for example: +-- A-10A RPM Engine +-- Su-27/33 Exthaus Gas Temperature 1.200GradC +function ExportScript.AF.FC_TwoNeedlesGauge(value, mainscala, secondscale, exportidMain, exportidSecond) + local lValue = value or 1 + local lMainScala = mainscala or 100 + local lSecondScale = secondscale or 10 + local lExportIDMain = exportidMain or 0 + local lExportIDSecond = exportidSecond or 0 + local lValueTmp = lValue + + lValue = lValue / lMainScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + --lValueTmp = lValueTmp - (ExportScript.Tools.round((lValueTmp / lSecondScale), 0, "floor") * lSecondScale) + --lValueTmp = lValueTmp / lSecondScale + --lValueTmp = (lValueTmp > 1.0 and 1.0 or lValueTmp) -- the result is limited to 1.0 + local lv1, lValueTmp = math.modf(lValueTmp / lSecondScale) + + ExportScript.Tools.SendData(lExportIDMain, string.format("%.4f", lValue)) + ExportScript.Tools.SendData(lExportIDSecond, string.format("%.4f", lValueTmp)) +end + +-- Gauges with 1 needle, +-- for example: +-- A-10A RPM FAN, RPM APU, Exaust Gas Temperature APU, Fuel Flow, Oil Pressure, Hydraulic Pressure +-- F-15C Oil Pressure, Hydraulic Pressure, Engine Exhaust Nozzle Position Indicator +-- Su-25A/T, Russian Hydraulic Pressure Gauges +function ExportScript.AF.FC_OneNeedleGauge(value, scala, exportid) + local lValue = value or 1 + local lScala = scala or 100 + local lExportID = exportid or 0 + + lValue = lValue / lScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + ExportScript.Tools.SendData(lExportID, string.format("%.4f", lValue)) +end + +-- Gauges with 1 needle and 2 digits display +-- for example: +-- +function ExportScript.AF.FC_OneNeedleGauge2Digits(value, scala, fixdigits, exportid) + local lValue = value or 1 + local lScala = scala or 100 + local lExportID = exportid or 1 + local lFixDigits = fixdigits or 0 + local lValueTmp = lValue + + --local lCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + + local lCounter1 = 0 + local lCounter2 = 0 + local lFormat = 2 - lFixDigits + lFormat = "%0"..lFormat.."d" + + local lValueTmp2 = string.format(lFormat, lValueTmp) + --[[ + if lValueTmp > 10 then + if lValueTmp > 100 then + lCounter1 = (ExportScript.Tools.round((lValueTmp - (ExportScript.Tools.round(lValueTmp / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.1 + else + lCounter1 = (lValueTmp / 10) * 0.1 + lCounter1 = lCounter2 - ExportScript.Tools.round(lCounter2, 0, "floor") + end + end]] + if lValueTmp > 10 then + lCounter2 = (lValueTmp - (ExportScript.Tools.round(lValueTmp / 10, 0, "floor") * 10)) * 0.1 + else + lCounter2 = lValueTmp * 0.1 + end + + + lValue = lValue / lScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + SendData(lExportID, string.format("%.4f;%.2f;%.2f", + lValue, + lCounter[tonumber(string.sub(lValueTmp2, 1, 1))], + lCounter2)) +end + +-- Gauges with 1 needle and 3 digits display +-- for example: +-- F-15C RPM, Fuel Flow +function ExportScript.AF.FC_OneNeedleGauge3Digits_alt(value, scala, fixdigits, exportidNeedle, exportid100, exportid10, exportid1) + local lValue = value or 1 + local lScala = scala or 100 + local lExportidNeedle = exportidNeedle or 0 + local lExportid100 = exportid100 or 0 + local lExportid10 = exportid10 or 0 + local lExportid1 = exportid1 or 0 + local lFixDigits = fixdigits or 0 + local lValueTmp = lValue + + local lCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + --local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + + local lCounter3 = 0 + local lValueTmp2 = lValueTmp + + if lFixDigits > 0 then + lValueTmp2 = lValueTmp2 / math.pow(10, lFixDigits) + end + + lValueTmp2 = string.format("%03d", lValueTmp2) + + if lValueTmp > 1000 then + lCounter3 = (lValueTmp - (ExportScript.Tools.round(lValueTmp / 1000, 0, "floor") * 1000)) * math.pow(0.1, lFixDigits + 1) --0.1 + else + lCounter3 = lValueTmp * math.pow(0.1, lFixDigits + 1) --0.1 + end + + lValue = lValue / lScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + ExportScript.Tools.SendData(lExportIDNeedle, string.format("%.4f", lValue)) + ExportScript.Tools.SendData(lExportID100, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 1, 1))])) + ExportScript.Tools.SendData(lExportID10, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 2, 2))])) + ExportScript.Tools.SendData(lExportID1, string.format("%.2f", lCounter3)) +end + +-- Gauges with 1 needle and 3 digits display +-- for example: +-- F-15C RPM, Fuel Flow +function ExportScript.AF.FC_OneNeedleGauge3Digits(value, scala, fixdigits, exportidNeedle, exportid100, exportid10, exportid1) + local lValue = value or 1 + local lScala = scala or 100 + local lFixDigits = fixdigits or 0 + --local lExportidNeedle = exportidNeedle or 0 + --local lExportid100 = exportid100 or 0 + --local lExportid10 = exportid10 or 0 + --local lExportid1 = exportid1 or 0 + + local lValueTmp = lValue + local lFactor = string.len(tostring(lScala)) - 2 + lFactor = math.pow(10, lFactor) + + local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + + local lValueTmp2 = lValueTmp + + if lFixDigits > 0 then + lValueTmp2 = lValueTmp2 / math.pow(10, lFixDigits) + end + + lValueTmp2 = string.format("%03d", lValueTmp2) + + local lv1, lCounter3 = math.modf(lValueTmp / lFactor) + + lValue = lValue / lScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + ExportScript.Tools.SendData(exportidNeedle, string.format("%.4f", lValue)) + ExportScript.Tools.SendData(exportid100, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 1, 1))])) + ExportScript.Tools.SendData(exportid10, string.format("%.2f", lCounter[tonumber(string.sub(lValueTmp2, 2, 2))])) + ExportScript.Tools.SendData(exportid1, string.format("%.2f", lCounter3)) +end + +-- Gauges with 1 needle and 4 digits display +-- for example: +-- +function ExportScript.AF.FC_OneNeedleGauge4Digits(value, scala, fixdigits, exportid) + local lValue = value or 1 + local lScala = scala or 100 + local lExportID = exportid or 1 + local lFixDigits = fixdigits or 0 + local lValueTmp = lValue + + --local lCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + local lCounter = {[0] = 0.0, [1] = 0.1, [2] = 0.2, [3] = 0.3, [4] = 0.4, [5] = 0.5, [6] = 0.6, [7] = 0.7, [8] = 0.8, [9] = 0.9} + + local lCounter1 = 0 + local lCounter2 = 0 + local lCounter3 = 0 + local lCounter4 = 0 + local lValueTmp2 = lValueTmp + if lFixDigits > 0 then + lValueTmp2 = lValueTmp2 / math.pow(10, lFixDigits) + end + lValueTmp2 = string.format("%04d", lValueTmp2) + --[[ + if lValueTmp > 10000 then + lCounter1 = ExportScript.Tools.round((lValueTmp / 1000), 0, "floor") * 0.1 + lCounter1 = lCounter1 - ExportScript.Tools.round(lCounter1, 0, "floor") + end + if lValueTmp > 1000 then + if lValueTmp > 100 then + lCounter2 = (ExportScript.Tools.round((lValueTmp - (ExportScript.Tools.round(lValueTmp / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.1 + else + lCounter2 = (lValueTmp / 10) * 0.1 + lCounter2 = lCounter2 - ExportScript.Tools.round(lCounter2, 0, "floor") + end + end + if lValueTmp > 100 then + if lValueTmp > 10 then + lCounter3 = (ExportScript.Tools.round((lValueTmp - (ExportScript.Tools.round(lValueTmp / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.1 + else + lCounter3 = (lValueTmp / 10) * 0.1 + lCounter3 = lCounter3 - ExportScript.Tools.round(lCounter3, 0, "floor") + end + end]] + if lValueTmp > 10 then + lCounter4 = (lValueTmp - (ExportScript.Tools.round(lValueTmp / 10, 0, "floor") * 10)) * 0.1 + else + lCounter4 = lValueTmp * 0.1 + end + + + lValue = lValue / lScala + lValue = (lValue > 1.0 and 1.0 or lValue) -- the result is limited to 1.0 + + SendData(lExportID, string.format("%.4f;%.2f;%.2f;%.2f;%.2f", + lValue, + lCounter[tonumber(string.sub(lValueTmp2, 1, 1))], + lCounter[tonumber(string.sub(lValueTmp2, 2, 2))], + lCounter[tonumber(string.sub(lValueTmp2, 3, 3))], + lCounter4)) +end + +-- Engine Lamps, Start and Afterburner +-- with Workaround for engine start-up on Su-27/33 + +function ExportScript.AF.FC_EngineLamps_SU2733(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + local lEngineInfo = LoGetEngineInfo() + local lLeftEngineStart = 0 + local lRightEngineStart = 0 + + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + + if ExportScript.AF.LeftEngineOn == false then + if (lEngineInfo.RPM.left > 0.1 and lEngineInfo.RPM.left < 49.0) then + lLeftEngineStart = 1 + end + if lEngineInfo.RPM.left > 49.0 then + ExportScript.AF.LeftEngineOn = true + end + elseif ExportScript.AF.LeftEngineOn == true then + if lEngineInfo.RPM.left < 0.1 then + ExportScript.AF.LeftEngineOn = false + end + end + + if ExportScript.AF.RightEngineOn == false then + if (lEngineInfo.RPM.right > 0.1 and lEngineInfo.RPM.right < 49.0) then + lRightEngineStart = 1 + end + if lEngineInfo.RPM.right > 49.0 then + ExportScript.AF.RightEngineOn = true + end + elseif ExportScript.AF.RightEngineOn == true then + if lEngineInfo.RPM.right < 0.1 then + ExportScript.AF.RightEngineOn = false + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + --ExportScript.Tools.SendData(728, lEngineInfo.EngineStart.left ) -- lamp start left engine (0|1) + --ExportScript.Tools.SendData(729, lEngineInfo.EngineStart.right ) -- lamp start right engine (0|1) + ExportScript.Tools.SendData(728, lLeftEngineStart ) -- lamp start left engine (0|1) + ExportScript.Tools.SendData(729, lRightEngineStart ) -- lamp start right engine (0|1) + + ExportScript.Tools.SendData(730, (lEngineInfo.RPM.left > 99.8 and 1 or 0) ) -- lamp after burner left engine + ExportScript.Tools.SendData(731, (lEngineInfo.RPM.right > 99.8 and 1 or 0) ) -- lam after burner right engine + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + --ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine (0|1) + --ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine (0|1) + ExportScript.Tools.SendDataDAC("728", lLeftEngineStart ) -- lamp start left engine (0|1) + ExportScript.Tools.SendDataDAC("729", lRightEngineStart ) -- lamp start right engine (0|1) + + ExportScript.Tools.SendDataDAC("730", (lEngineInfo.RPM.left > 99.8 and 1 or 0) ) -- lamp after burner left engine + ExportScript.Tools.SendDataDAC("731", (lEngineInfo.RPM.right > 99.8 and 1 or 0) ) -- lam after burner right engine + end +end + + +-- Engine Lamps, Start and Afterburner +-- MiG29A/G/S + +function ExportScript.AF.FC_EngineLamps_MiG29(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + local lEngineInfo = LoGetEngineInfo() + local lLeftEngineStart = 0 + local lRightEngineStart = 0 + + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(728, lEngineInfo.EngineStart.left ) -- lamp start left engine (0|1) + ExportScript.Tools.SendData(729, lEngineInfo.EngineStart.right ) -- lamp start right engine (0|1) + + ExportScript.Tools.SendData(730, (lEngineInfo.RPM.left > 100 and 1 or 0) ) -- lamp after burner left engine + ExportScript.Tools.SendData(731, (lEngineInfo.RPM.right > 100 and 1 or 0) ) -- lam after burner right engine + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine (0|1) + ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine (0|1) + + ExportScript.Tools.SendDataDAC("730", (lEngineInfo.RPM.left > 100 and 1 or 0) ) -- lamp after burner left engine + ExportScript.Tools.SendDataDAC("731", (lEngineInfo.RPM.right > 100 and 1 or 0) ) -- lam after burner right engine + end +end + +-- Auxiliary Functions for Hardware export + +function ExportScript.AF.FC_SPO15RWR(FunctionTyp) +-- The RWR display indicates any threat radars illuminating ("painting") the aircraft. +-- Information is presented as symbols representing the type and direction to the threat. +-- Six illuminated symbols at the bottom of the display notify the pilot of the threat radar type. +-- The system indicates both enemy and friendly radars +-- +--[[ +LoGetTWSInfo() -- return Threat Warning System status (result the table ) +result_of_LoGetTWSInfo = +{ + Mode = , -- current mode (0 - all ,1 - lock only,2 - launch only + Emitters = {table of emitters} +} +emitter_table = +{ + ID =, -- world ID + Type = {level1,level2,level3,level4}, -- world database classification of emitter + Power =, -- power of signal + Azimuth =, + Priority =,-- priority of emitter (int) + SignalType =, -- string with vlues: "scan" ,"lock", "missile_radio_guided","track_while_scan"; +}]] + + local lFunctionTyp = FunctionTyp or "Ikarus" + local lTWSInfo = LoGetTWSInfo() -- SPO15 Information + if lTWSInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + --[[ + [Emitters] = { + [1] = { + [Type] = { + [level3] = number: "105" + [level1] = number: "2" + [level4] = number: "46" + [level2] = number: "16" + } + [Azimuth] = number: "1.8300691843033" + [Power] = number: "0.92326503992081" + [ID] = number: "16777472" + [Priority] = number: "230.92445373535" + [SignalType] = string: "lock" + } + [2] = { + [Type] = { + [level3] = number: "101" + [level1] = number: "2" + [level4] = number: "39" + [level2] = number: "16" + } + [Azimuth] = number: "2.6759564876556" + [Power] = number: "0.90609884262085" + [ID] = number: "16777728" + [Priority] = number: "140.90609741211" + [SignalType] = string: "scan" + } + } + [Mode] = number: "0" + ]] + + if ExportScript.AF.EventNumberFC_SPO15RWR == nil then + ExportScript.AF.EventNumberFC_SPO15RWR = 0 + end + + if(ExportScript.AF.EventNumberFC_SPO15RWR < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_SPO15RWR = ExportScript.AF.EventNumber + + local lPriorityTmp = 0 + local lPrimaryThreatTmp = 0 + + if ExportScript.AF.SPO15RWRData == nil then + ExportScript.AF.SPO15RWRData = {} + + ExportScript.AF.SPO15RWRData[400] = 1 -- Power light + end + + -- 10 x for Secondary Thread direction + ExportScript.AF.SPO15RWRData[451]=0 + ExportScript.AF.SPO15RWRData[452]=0 + ExportScript.AF.SPO15RWRData[453]=0 + ExportScript.AF.SPO15RWRData[454]=0 + ExportScript.AF.SPO15RWRData[455]=0 + ExportScript.AF.SPO15RWRData[456]=0 + ExportScript.AF.SPO15RWRData[457]=0 + ExportScript.AF.SPO15RWRData[458]=0 + ExportScript.AF.SPO15RWRData[459]=0 + ExportScript.AF.SPO15RWRData[460]=0 + + if(#lTWSInfo.Emitters > 0) then + + ExportScript.AF.SPO15_FoundErmitter = true + + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + if(lTWSInfo.Emitters[EmitterIndex].Priority > lPriorityTmp) then + lPriorityTmp = lTWSInfo.Emitters[EmitterIndex].Priority + lPrimaryThreatTmp = EmitterIndex + end + end + + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + + local lAzimut = ExportScript.Tools.round(lTWSInfo.Emitters[EmitterIndex].Azimuth * 90, 1) + + if EmitterIndex == lPrimaryThreatTmp then + -- primary threat + -- direction to the threat + ExportScript.AF.SPO15RWRData[401] = (lAzimut <= -170.0 and 1 or 0) -- left back side + ExportScript.AF.SPO15RWRData[402] = ((lAzimut <= -90.0 and lAzimut >= -170.0 ) and 1 or 0) -- left 90 degree + ExportScript.AF.SPO15RWRData[403] = ((lAzimut <= -55.0 and lAzimut >= -125.0 ) and 1 or 0) -- left 50 degree + ExportScript.AF.SPO15RWRData[404] = ((lAzimut <= -30.0 and lAzimut >= -70.0 ) and 1 or 0) -- left 30 degree + ExportScript.AF.SPO15RWRData[405] = ((lAzimut <= 5.0 and lAzimut >= -40.0 ) and 1 or 0) -- left 10 degree + ExportScript.AF.SPO15RWRData[406] = ((lAzimut >= -5.0 and lAzimut <= 40.0 ) and 1 or 0) -- right 10 degree + ExportScript.AF.SPO15RWRData[407] = ((lAzimut >= 30.0 and lAzimut <= 70.0 ) and 1 or 0) -- right 30 degree + ExportScript.AF.SPO15RWRData[408] = ((lAzimut >= 55.0 and lAzimut <= 125.0 ) and 1 or 0) -- right 50 degree + ExportScript.AF.SPO15RWRData[409] = ((lAzimut >= 90.0 and lAzimut <= 170.0 ) and 1 or 0) -- right 90 degree + ExportScript.AF.SPO15RWRData[410] = (lAzimut >= 170.0 and 1 or 0) -- right back side + + -- power of the threat + local lPower = ExportScript.Tools.round(lTWSInfo.Emitters[EmitterIndex].Power * 15, 0, "ceil") + 1 + --WriteToLog("lPower: "..lPower) + ExportScript.AF.SPO15RWRData[411] = (lPower <= 1 and 0 or 1) -- 1. power lamp + ExportScript.AF.SPO15RWRData[412] = (lPower <= 2 and 0 or 1) -- 2. power lamp + ExportScript.AF.SPO15RWRData[413] = (lPower <= 3 and 0 or 1) -- 3. power lamp + ExportScript.AF.SPO15RWRData[414] = (lPower <= 4 and 0 or 1) -- 4. power lamp + ExportScript.AF.SPO15RWRData[415] = (lPower <= 5 and 0 or 1) -- 5. power lamp + ExportScript.AF.SPO15RWRData[416] = (lPower <= 6 and 0 or 1) -- 6. power lamp + ExportScript.AF.SPO15RWRData[417] = (lPower <= 7 and 0 or 1) -- 7. power lamp + ExportScript.AF.SPO15RWRData[418] = (lPower <= 8 and 0 or 1) -- 8. power lamp + ExportScript.AF.SPO15RWRData[419] = (lPower <= 9 and 0 or 1) -- 9. power lamp + ExportScript.AF.SPO15RWRData[420] = (lPower <= 10 and 0 or 1) -- 10. power lamp + ExportScript.AF.SPO15RWRData[421] = (lPower <= 11 and 0 or 1) -- 11. power lamp + ExportScript.AF.SPO15RWRData[422] = (lPower <= 12 and 0 or 1) -- 12. power lamp + ExportScript.AF.SPO15RWRData[423] = (lPower <= 13 and 0 or 1) -- 13. power lamp + ExportScript.AF.SPO15RWRData[424] = (lPower <= 14 and 0 or 1) -- 14. power lamp + ExportScript.AF.SPO15RWRData[425] = (lPower <= 15 and 0 or 1) -- 15. power lamp + + -- type of the threat + local lPrimaryTypeTmp = ExportScript.AF.FindRadarTypeForSPO15(lTWSInfo, lPrimaryThreatTmp) + ExportScript.AF.SPO15RWRData[430] = (lPrimaryTypeTmp.AIR == 1 and 1 or 0) -- primary Air or Weapon + ExportScript.AF.SPO15RWRData[431] = (lPrimaryTypeTmp.LRR == 1 and 1 or 0) -- long range radar + ExportScript.AF.SPO15RWRData[432] = (lPrimaryTypeTmp.MRR == 1 and 1 or 0) -- mid range radar + ExportScript.AF.SPO15RWRData[433] = (lPrimaryTypeTmp.SRR == 1 and 1 or 0) -- short range radar + ExportScript.AF.SPO15RWRData[434] = (lPrimaryTypeTmp.EWR == 1 and 1 or 0) -- EWR + ExportScript.AF.SPO15RWRData[435] = (lPrimaryTypeTmp.AWACS == 1 and 1 or 0) -- AWACS + + -- look or missil on air + if lPrimaryTypeTmp.Lock == 0.1 then + ExportScript.AF.SPO15RWRData[440] = 0 + ExportScript.AF.SPO15RWRData[441] = 1 -- blinking lights on + elseif lPrimaryTypeTmp.Lock == 0.2 then + ExportScript.AF.SPO15RWRData[440] = 1 + ExportScript.AF.SPO15RWRData[441] = 0 -- blinking lights off + end + -- hemisphere + ExportScript.AF.SPO15RWRData[442] = lPrimaryTypeTmp.TopHemisphere -- top hemisphere + ExportScript.AF.SPO15RWRData[443] = lPrimaryTypeTmp.BottomHemisphere -- bottom hemisphere + + lPrimaryTypeTmp = nil + end + + ExportScript.AF.SPO15RWR_SendData(451, lAzimut <= -170.0) -- left back side + ExportScript.AF.SPO15RWR_SendData(452, (lAzimut <= -90.0 and lAzimut >= -170.0 )) -- left 90 degree + ExportScript.AF.SPO15RWR_SendData(453, (lAzimut <= -55.0 and lAzimut >= -125.0 )) -- left 50 degree + ExportScript.AF.SPO15RWR_SendData(454, (lAzimut <= -30.0 and lAzimut >= -70.0 )) -- left 30 degree + ExportScript.AF.SPO15RWR_SendData(455, (lAzimut <= 5.0 and lAzimut >= -40.0 )) -- left 10 degree + ExportScript.AF.SPO15RWR_SendData(456, (lAzimut >= -5.0 and lAzimut <= 40.0 )) -- right 10 degree + ExportScript.AF.SPO15RWR_SendData(457, (lAzimut >= 30.0 and lAzimut <= 70.0 )) -- right 30 degree + ExportScript.AF.SPO15RWR_SendData(458, (lAzimut >= 55.0 and lAzimut <= 125.0 )) -- right 50 degree + ExportScript.AF.SPO15RWR_SendData(459, (lAzimut >= 90.0 and lAzimut <= 170.0 )) -- right 90 degree + ExportScript.AF.SPO15RWR_SendData(460, lAzimut >= 170.0) -- right back side + end + + -- type of the secondary threat + local lSecondaryTypeTmp = ExportScript.AF.FindRadarTypeForSPO15(lTWSInfo) + ExportScript.AF.SPO15RWRData[470] = (lSecondaryTypeTmp.AIR == 1 and 1 or 0) -- secondary Air or Weapon + ExportScript.AF.SPO15RWRData[471] = (lSecondaryTypeTmp.LRR == 1 and 1 or 0) -- long range radar + ExportScript.AF.SPO15RWRData[472] = (lSecondaryTypeTmp.MRR == 1 and 1 or 0) -- mid range radar + ExportScript.AF.SPO15RWRData[473] = (lSecondaryTypeTmp.SRR == 1 and 1 or 0) -- short range radar + ExportScript.AF.SPO15RWRData[474] = (lSecondaryTypeTmp.EWR == 1 and 1 or 0) -- EWR + ExportScript.AF.SPO15RWRData[475] = (lSecondaryTypeTmp.AWACS == 1 and 1 or 0) -- AWACS + lSecondaryTypeTmp = nil + + + if ExportScript.Config.IkarusExport then + -- Lock + ExportScript.AF.SPO15RWRData[444] = 0 -- off + if ExportScript.AF.SPO15RWRData[440] == 1 then + ExportScript.AF.SPO15RWRData[444] = 1 -- Lock + elseif ExportScript.AF.SPO15RWRData[441] == 1 then + ExportScript.AF.SPO15RWRData[444] = 0.5 -- Missle on air + end + + -- Ermitter Power Triangle + if ExportScript.AF.SPO15RWRData[411] == 1 then + ExportScript.AF.SPO15RWRData[426] = 1 + else + ExportScript.AF.SPO15RWRData[426] = 0 + end + end + + else + lPriorityTmp = 0 + lPrimaryThreatTmp = 0 + + if ExportScript.AF.SPO15_FoundErmitter == nil or ExportScript.AF.SPO15_FoundErmitter then + ExportScript.AF.SPO15RWR_Reset(401, 480) + end + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + if ExportScript.AF.SPO15RWRData ~= nil then + for key, value in pairs(ExportScript.AF.SPO15RWRData) do + ExportScript.Tools.SendData(key, value) + end + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + if ExportScript.AF.SPO15RWRData ~= nil then + for key, value in pairs(ExportScript.AF.SPO15RWRData) do + ExportScript.Tools.SendDataDAC(key, value) + end + end + end + + --[[ +level: 2, 16, 101, 39 +lNameByType: string: "hawk sr" + +alle Level -> wsTypes.lua +oder +Nummer 101 -> AN-MPQ-51 HAWK SR.lua +Nummer 39 -> TechnicsTable.sht + +lNameByType: string: "hawk sr" -> db_sensors.lua + + ]] +end + + +-- Auxiliary Functions + +function ExportScript.AF.FindRadarTypeForSPO15(lTWSInfo, PrimaryThreat) + local lPrimaryThreat = PrimaryThreat or 0 + local lReturn = {AIR = 0, LRR = 0, MRR = 0, SRR = 0, EWR = 0, AWACS = 0, Lock = 0, TopHemisphere = 0, BottomHemisphere = 0} + + for EmitterIndex = 1, #lTWSInfo.Emitters, 1 do + if lPrimaryThreat ~= 0 then + EmitterIndex = lPrimaryThreat + end + local lType = lTWSInfo.Emitters[EmitterIndex].Type + --ExportScript.Tools.WriteToLog('level: '..lType.level1..', '..lType.level2..', '..lType.level3..', '..lType.level4) + local lNameByType = LoGetNameByType(lType.level1, lType.level2, lType.level3, lType.level4) -- world database classification of emitter, args 4 (number : level1,level2,level3,level4), result string + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) + + -- threat type + if (lType.level1 == 1 or lType.level1 == 4) and + not(lType.level4 == 26 or -- level4 26: A-50 + lType.level4 == 27 or -- level4 27: E-3 + lType.level4 == 41) then -- level4 41: E-2C + lReturn.AIR = 1 -- primary Air or Weapon + end + + if lNameByType ~= nil then + if lType.level1 == 2 or lType.level1 == 3 then + -- ground or navy + if lType.level2 == 16 then + local lAn, lEn + -- Ground SAM + -- RU: s-300ps 64h6e sr,s-300ps 40b6m tr + -- US: patriot str + lAn, lEn = string.find("s-300ps 64h6e sr,s-300ps 40b6m tr,an/mpq-53,patriot str", lNameByType, 0, true) + -- long range radar + if lAn ~= nil then + lReturn.LRR = 1 + end + + -- US: hawk sr,hawk tr + -- Ru: s-300ps 40b6md sr,buk 9s18m1 sr,buk 9a310m1 ln,PATRIOT-RLS_P_1,MT-LB_P_1,kub 1s91 str + -- PATRIOT-RLS_P_1 = SA-3 S-125 SR + -- MT-LB_P_1 = SA-3-3 S-125 TR + lAn, lEn = string.find("s-300ps 40b6md sr,buk 9s18m1 sr,buk 9a310m1 ln,PATRIOT-RLS_P_1,MT-LB_P_1,kub 1s91 str,hawk sr,hawk tr", lNameByType, 0, true) + -- mid range radar + if lAn ~= nil then + lReturn.MRR = 1 + end + + -- US: M163 Vulcan,roland ads,roland radar,gepard + -- RU: Dog Ear Radar,tor 9a331,tunguska 2c6m,osa 9a33 ln,shilka zsu-23-4 + lAn, lEn = string.find("M163 Vulcan,gepard,roland ads,roland radar,Dog Ear Radar,tor 9a331,tunguska 2c6m,osa 9a33 ln,shilka zsu-23-4", lNameByType, 0, true) + -- short range radar + if lAn ~= nil then + lReturn.SRR = 1 + end + --[[ if lType.level4 == 27 or -- Dog Ear Radar + lType.level4 == 31 or -- roland ads + lType.level4 == 32 or -- roland radar + lType.level4 == 38 then -- gepard + lReturn.SRR = 1 + end + ]] + -- RU: 1l13 ewr station,55g6 ewr station + lAn, lEn = string.find("1l13 ewr station,55g6 ewr station", lNameByType, 0, true) + -- EWR + if lAn ~= nil then + lReturn.EWR = 1 + end + + elseif lType.level2 == 12 then + local lAn, lEn + -- Ship + -- RU Ships: Moscow,Piotr Velikiy,Rezky (Krivak-2) + -- US Ships: FFG-7 Oliver H. Perry class,SG-47 Ticonderoga class + lAn, lEn = string.find("Moscow,Piotr Velikiy,Rezky (Krivak-2),FFG-7 Oliver H. Perry class,SG-47 Ticonderoga class", lNameByType, 0, true) + -- long range radar + if lAn ~= nil then + lReturn.LRR = 1 + end + + -- RU Ships: Albatros (Grisha-5),TAKR Kuznetsov,Molniya (Tarantul-3),Neustrashimy + -- US Ships: CVN-70 Vinson + lAn, lEn = string.find("Albatros (Grisha-5),TAKR Kuznetsov,Molniya (Tarantul-3),Neustrashimy,CVN-70 Vinson", lNameByType, 0, true) + -- short range radar + if lAn ~= nil then + lReturn.SRR = 1 + end + end + elseif lType.level1 == 1 and lType.level2 == 1 and lType.level3 == 5 then + if lType.level4 == 26 or lType.level4 == 27 or lType.level4 == 41 then + -- AWACS + -- level4 26: a-50 + -- level4 27: e-3a + -- level4 41: e-2c hawkeye + lReturn.AWACS = 1 + end + end + else -- if lNameByType == nil + if lType.level1 == 2 or lType.level1 == 3 then + -- ground or navy + if lType.level2 == 16 then + -- Ground SAM + -- long range radar + + -- mid range radar + if lType.level4 == 42 then -- SAM Hawk CWAR /MPQ-55 + lReturn.MRR = 1 + end + + -- short range radar + --[[ if lType.level4 == 27 or -- Dog Ear Radar + lType.level4 == 31 or -- roland ads + lType.level4 == 32 or -- roland radar + lType.level4 == 38 then -- gepard + lReturn.SRR = 1 + end + ]] + + -- EWR + + elseif lType.level2 == 12 then + -- long range radar + + -- short range radar + end + elseif lType.level1 == 1 and lType.level2 == 1 and lType.level3 == 5 then + if lType.level4 == 26 or lType.level4 == 27 or lType.level4 == 41 then + -- AWACS + -- level4 26: a-50 + -- level4 27: e-3a + -- level4 41: e-2c hawkeye + lReturn.AWACS = 1 + end + end + end + -- primary threat handling only + if lPrimaryThreat ~= 0 then + if lTWSInfo.Emitters[lPrimaryThreat].SignalType == "lock" then + -- look + lReturn.Lock = 0.2 + + lReturn.TopHemisphere = 1 -- top hemisphere + lReturn.BottomHemisphere = 1 -- bottom hemisphere + elseif lTWSInfo.Emitters[lPrimaryThreat].SignalType == "missile_radio_guided" then + -- Rocket on air + lReturn.Lock = 0.1 + elseif lTWSInfo.Emitters[lPrimaryThreat].SignalType == "scan" then + -- beep + elseif lTWSInfo.Emitters[lPrimaryThreat].SignalType == "track_while_scan" then + -- ??? + else + lReturn.Lock = 0 + end + + local lErmitterObject = LoGetObjectById(lTWSInfo.Emitters[lPrimaryThreat].ID) + local lErmitterObjectAlt = 0 + + if lErmitterObject then + lErmitterObjectAlt = lErmitterObject.LatLongAlt.Alt + end + + local lSelfData = LoGetSelfData() + local lSelfDataAlt = ExportScript.Tools.round(lSelfData.LatLongAlt.Alt, 0) + + if lErmitterObjectAlt and lSelfDataAlt then + --ExportScript.Tools.WriteToLog('lErmitterObjectAlt: '..lErmitterObjectAlt..', lSelfDataAlt: '..lSelfDataAlt) + if lErmitterObjectAlt > (lSelfDataAlt + 400) then + lReturn.TopHemisphere = 1 -- top hemisphere + elseif lErmitterObjectAlt < (lSelfDataAlt - 400) then + lReturn.BottomHemisphere = 1 -- bottom hemisphere + else + lReturn.TopHemisphere = 1 -- top hemisphere + lReturn.BottomHemisphere = 1 -- bottom hemisphere + end + end + + lErmitterObject, lErmitterObjectAlt, lSelfData, lSelfDataAlt = nil + + break + end + end + + return lReturn +end + +function ExportScript.AF.SPO15RWR_Reset(lMinId, lMaxID) +--ExportScript.Tools.WriteToLog('SPO15RWR_Reset') + for lCounter = lMinId, lMaxID, 1 do + ExportScript.AF.SPO15RWRData[lCounter] = 0 + end + + ExportScript.AF.SPO15_FoundErmitter = false +end + +function ExportScript.AF.SPO15RWR_SendData(lKey, lValue) +--ExportScript.Tools.WriteToLog('SPO15RWR_SendData: '..ExportScript.Tools.dump(lKey)..', '..ExportScript.Tools.dump(lValue)) + if ExportScript.AF.SPO15RWRData[lKey] == 0 then + if lValue then + ExportScript.AF.SPO15RWRData[lKey] = 1 + end + end +end + +-- WeaponStatusPanel Reset for A-10A, F-15C +function ExportScript.AF.WeaponStatusPanel_Reset(lMinId, lMaxID) +--ExportScript.Tools.WriteToLog('WeaponStatusPanel_Reset') + for lCounter = lMinId, lMaxID, 1 do + ExportScript.Tools.SendDataDAC(lCounter, 0) + end +end + +function ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation(_index) + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].CLSID == ExportScript.AF.PayloadInfo.Stations[_index].CLSID and ExportScript.AF.PayloadInfo.CurrentStation ~= _index then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[_index].CurrentID] = 1 + end +end + +function ExportScript.AF.WeaponStatusPanel_FindCannonContainer(_index) + if ExportScript.AF.PayloadInfo.Stations[_index].weapon.level1 == 4 and -- weapon + ExportScript.AF.PayloadInfo.Stations[_index].weapon.level2 == 6 then -- Shell + ExportScript.AF.CannonContainer[_index] = ExportScript.AF.PayloadInfo.Stations[_index].CLSID + ExportScript.AF.CannonContainer.counter = ExportScript.AF.CannonContainer.counter + 1 + end +end diff --git a/ExportsModules/FW-190D9.lua b/ExportsModules/FW-190D9.lua new file mode 100644 index 0000000..0de8d3d --- /dev/null +++ b/ExportsModules/FW-190D9.lua @@ -0,0 +1,301 @@ +-- FW-190D9 Dora + +ExportScript.FoundDCSModule = true +ExportScript.Version.FW190D9 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Flight Instruments + [36] = "%.4f", -- AirspeedNeedle {0, 100, 150, 200, 250, 300, 350, 400, 500, 600, 700, 750, 800, 850, 900} = {0.0, 0.038, 0.088, 0.150, 0.216, 0.278, 0.333, 0.395, 0.530, 0.660, 0.777,0.836, 0.892, 0.938, 0.988} + [42] = "%.4f", -- Variometer {-30, -20, -10, -5, 5, 10, 20, 30} = {-1, -0.770, -0.558, -0.338,0.338,0.558, 0.770, 1.0} + --TrimmNeedle + [76] = "%.4f", -- TrimmNeedle {-1.0, 1.0} + --ADF + [29] = "%.4f", -- ADF_Vertical {-1.0, 1.0} + [30] = "%.4f", -- ADF_Horizont {-1.0, 1.0} + -- Altimeter + [35] = "%.4f", -- Altimeter_km {0.0, 10.0} = {0.0, 1.0} + [32] = "%.4f", -- Altimeter_m {0.0, 1000.0} = {0.0, 1.0} + [33] = "%.4f", -- Altimeter_Pressure {712.56, 780.07} = {0.0, 1.0} + -- Artificial horizon + [37] = "%.4f", -- AHorizon_Pitch {0.33, -0.33} + [38] = "%.4f", -- AHorizon_Bank {1.0, -1.0} + [40] = "%.4f", -- TurnNeedle {-1.0, 1.0} + [41] = "%.4f", -- Slipball {-1.0, 1.0} + --oxygen pressure indicator + [112] = "%.4f", -- Oxygen_Pressure {0.0, 250.0} = {0.0, 1.0} + --[113] = "%.4f", -- Oxygen_Flow_Blinker {0.0, 1.0} + --Remote compass + [45] = "%.4f", -- CompassHeading {0.0, 1.0} + [44] = "%.4f", -- CommandedCourse {0.0, 1.0} + -- Engine + [46] = "%.4f", -- Manifold_Pressure {0.5, 2.5} = {0.0, 1.0} + [47] = "%.4f", -- Engine_RPM {0.0, 500.0, 1000.0, 1500, 2000, 2500, 3000, 3500, 3600.0} = {0.0, 0.032, 0.082, 0.206, 0.390, 0.601, 0.789, 0.961, 0.983} + [96] = "%.4f", -- Coolant_Temperature {10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0} = {0.070, 0.131, 0.206, 0.289, 0.377, 0.468, 0.564, 0.655, 0.738, 0.811, 0.892, 0.946, 1.0} + [97] = "%.4f", -- Oil_Temperature {10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0} = {0.070, 0.131, 0.206, 0.289, 0.377, 0.468, 0.564, 0.655, 0.738, 0.811, 0.892, 0.946, 1.0} + [95] = "%.4f", -- Oil_Pressure {0.0, 15.0} -- at = {0, 1.0} + [106] = "%.4f", -- MW50_Pressure {0.0, 0.1, 0.2, 0.3, 0.7, 0.8, 0.9, 1.0} -- at = {0.0, 0.068, 0.169, 0.273, 0.680, 0.780, 0.880, 1.0} + -- Fuel + [94] = "%.4f", -- Fuel_Pressure {0.0, 3.0} -- at = {0.0, 1.0} + [98] = "%.4f", -- FuelScaleUpper {0.0, 50.0, 100.0, 150.0, 200.0, 250.0, 300.0} = {0.0, 0.130, 0.308, 0.50, 0.7, 0.87, 1.0} + --???[98] = "%.4f", -- FuelScaleLower {0.0, 50.0, 100.0, 150.0, 200.0, 230.0, 250.0} = {0.0, 0.098, 0.328, 0.576, 0.833, 0.950, 1.0} + [100] = "%.4f", -- Fuel_Low_Fwd {0.0, 1.0} + [101] = "%.4f", -- Fuel_Low_Rear {0.0, 1.0} + [195] = "%.4f", -- Fluor_Light {0.0, 1.0} + --Clock + [21] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0} = {0.0, 1.0} + [22] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0} = {0.0, 1.0} + [23] = "%.4f", -- CLOCK_currtime_seconds {0.0, 60.0} = {0.0, 1.0} + [27] = "%.4f", -- CLOCK_chrono_minutes {0.0, 15.0} = {0.0, 1.0} + --Ammon Counter + [52] = "%.4f", -- Ammo_Counter_1 {0.0, 500.0} = {0.0, 1.0} + [55] = "%.4f", -- Ammo_Counter_2 {0.0, 500.0} = {0.0, 1.0} + [58] = "%.4f", -- Ammo_Counter_3 {0.0, 500.0} = {0.0, 1.0} + [61] = "%.4f", -- Ammo_Counter_4 {0.0, 500.0} = {0.0, 1.0} + -- Gun_Fire + --[50] = "%.4f", -- Gun_Fire_1 {0.0, 1.0} + --[164] = "%.4f", -- Gun_Fire_2 {0.0, 1.0} + --[165] = "%.4f", -- Gun_Fire_3 {0.0, 1.0} + --[166] = "%.4f", -- Gun_Fire_4 {0.0, 1.0} + --Target System + [133] = "%.4f", -- TargetDist {0.0, 10.0, 100.0, 300.0, 600.0, 700.0, 800.0, 1000.0} = {0.0, 0.0, 0.323, 0.568, 0.709, 0.813, 0.917, 1.0} + --Bomb Lamps + [196] = "%.f", -- BombLamp_1 {0.0, 1.0} + [197] = "%.f", -- BombLamp_2 {0.0, 1.0} + [198] = "%.f", -- BombLamp_3 {0.0, 1.0} + [199] = "%.f", -- BombLamp_4 {0.0, 1.0} + [137] = "%.f", -- RocketEmCvr {0.0, 1.0} + --Gear Lamps + [68] = "%.f", -- L_GEAR_UP {0.0, 1.0} + [69] = "%.f", -- L_GEAR_DOWN {0.0, 1.0} + [70] = "%.f", -- R_GEAR_UP {0.0, 1.0} + [71] = "%.f", -- R_GEAR_DOWN {0.0, 1.0} + --Flaps Lamps + [72] = "%.f", -- FLAPS_UP {0.0, 1.0} + [73] = "%.f", -- FLAPS_START {0.0, 1.0} + [74] = "%1d" -- FLAPS_DOWN {0.0, 1.0} +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + [159] = "%.2f", -- Radiator Flaps Control (axis) 1.0 in 0.4 steps + [160] = "%1d", -- Cold Start/Wind Screen Washer {0, 1} + --Engine Control Panel + [75] = "%.1f", -- Magneto Switch (Off, M1, M2, M1+M2) {0.0, 0.3, 0.6, 0.9} + [104] = "%1d", -- Starter Switch Cover {0, 1} + [105] = "%.1f", -- Starter Switch. Left Button - Starter Power. Right Button - Magnetic Clutch {0.0, 0.5, 1.0} + [91] = "%1d", -- MBG Emergency Mode Handle {0, 1} + [85] = "%1d", -- MW-50 Switch {0, 1} + --Fuel system + [90] = "%.1f", -- Fuel Tank Selector Valve (CLOSE/FORWARD/AFT/BOTH) {0.0, 0.1, 0.2, 0.3} + [99] = "%.1f", -- Fuel Gauge Selector (FORWARD/NONE/AFT) {0.0, 0.5, 1.0} + [161] = "%1d", -- MW-B4 Selector (Not Functional) + [162] = "%1d", -- Primer Pump {0, 1} + --electric system + [79] = "%1d", -- Electric Kill-switch + [163] = "%1d", -- Emergency Equipment Destruction {0, 1} + --Circuit Breakers + [138] = "%1d", -- Circuit Breakers Cover {0, 1} + [141] = "%1d", -- Flaps, Trimmer, Artificial Horizon Power On {0, 1} + [142] = "%1d", -- Flaps, Trimmer, Artificial Horizon Power Off {0, 1} + [143] = "%1d", -- Landing Gear Power On {0, 1} + [144] = "%1d", -- Landing Gear Power Off {0, 1} + [145] = "%1d", -- Pitot and Heating Cover On {0, 1} + [146] = "%1d", -- Pitot and Heating Cover Off {0, 1} + [147] = "%1d", -- FuG25a On {0, 1} + [148] = "%1d", -- FuG25a Off {0, 1} + [149] = "%1d", -- FuG16ZY On {0, 1} + [150] = "%1d", -- FuG16ZY Off {0, 1} + [151] = "%1d", -- Instrument Lights, Gun-sight, Indicators, Compass, Starter On {0, 1} + [152] = "%1d", -- Instrument Lights, Gun-sight, Indicators, Compass, Starter Off {0, 1} + [153] = "%1d", -- Generator On {0, 1} + [154] = "%1d", -- Generator Off {0, 1} + [155] = "%1d", -- Battery On {0, 1} + [156] = "%1d", -- Battery Off {0, 1} + --Circuit Breakers of additional panel + [121] = "%1d", -- Navigation Lights On {0, 1} + [120] = "%1d", -- Navigation Lights Off {0, 1} + [123] = "%1d", -- Forward Tank Pump On {0, 1} + [122] = "%1d", -- Forward Tank Pump Off {0, 1} + [125] = "%1d", -- Rear Tank Pump On {0, 1} + [124] = "%1d", -- Rear Tank Pump Off {0, 1} + [127] = "%1d", -- Auxiliary Tank Pump On {0, 1} + [126] = "%1d", -- Auxiliary Tank Pump Off {0, 1} + [129] = "%1d", -- MW-50 On {0, 1} + [128] = "%1d", -- MW-50 Off {0, 1} + --canopy + [115] = "%1d", -- Canopy Emergency Release Handle {0, 1} + [114] = "%.2f", -- Canopy Hand Crank (axis) + -- Throttle + [200] = "", -- Throttle Lock {0, 1} + --gauges + [34] = "%.2f", -- Altimeter Pressure Set (axis) + [39] = "%.2f", -- Horizon Cage (axis) {0.0 - 0.511 in 0.04 steps} + [43] = "%.2f", -- Course Set (axis) + --flaps + [62] = "%1d", -- Flaps Up {0, 1} + [63] = "%1d", -- Flaps Take Off {0, 1} + [64] = "%1d", -- Flaps Landing {0, 1} + --Landing Gears Retraction + [65] = "%1d", -- Landing Gears Retraction {0, 1} + [66] = "%1d", -- Landing Gears Retraction Cover {0, 1} + [67] = "%1d", -- Landing Gears Extending {0, 1} + [89] = "%1d", -- Landing Gear Emergency Release Handle {0, 1} + --Trimmer + [77] = "%1d", -- Stabilizer Trimmer Up/Down {-1, 0, 1} + --Clock + [24] = "%.4f", -- Turnable Bezel (axis) in 0.2 steps + [25] = "%.2f", -- Wind/Set Knob (axis) in 0.1 steps + [26] = "%1d", -- Start - Stop Button {0, 1} + [28] = "%1d", -- Stopwatch Button {0, 1} + --weapons + [48] = "%.2f", -- Master Arm + [51] = "%.2f", -- Set Gun 1 Ammunition Count (axis) in 0.4 steps + [54] = "%.2f", -- Set Gun 2 Ammunition Count (axis) in 0.4 steps + [57] = "%.2f", -- Set Gun 3 Ammunition Count (axis) in 0.4 steps + [60] = "%.2f", -- Set Gun 4 Ammunition Count (axis) in 0.4 steps + [107] = "%1d", -- Main Rocket Switch {0, 1} + [108] = "%1d", -- Rocket Emergency Release {0, 1} + [109] = "%.2f", -- Bomb Fusing Selector {0.0, 0.1, 0.2, 0.3, 0.4} + [92] = "%1d", -- Jettison Fuselage Stores {0, 1} + --Gunsight + [132] = "%1d", -- EZ42 Power Switch {0, 1} + [131] = "%.2f", -- Target Wingspan (axis) in 0.1 steps + [134] = "%1d", -- Gunsight Night Filter {0, 1} + [4] = "%.2f", -- Target Distance (axis) in 0.1 steps + [135] = "%.2f", -- Gunsight Brightness (axis) in 0.1 steps + [191] = "%.2f", -- Aiming correction 1 (axis) in 0.1 steps + --Instrument Lights Brightness + [78] = "", -- Instrument Lights Brightness (axis) in 0.4 steps + --Radio + [81] = "%.1f", -- Radio Channel Selector {0.0, 0.1, 0.2, 0.3} + [83] = "%.2f", -- Radio Volume (axis) in 0.04 steps + [84] = "%1d", -- FT FT / Y ZF Mode Switch {0, 1} + [82] = "%.2f", -- Radio Tuning (+/-30 kHz) (axis) in 0.04 steps + --Oxygen + [110] = "%.2f", -- Oxygen Flow Valve (axis) in 0.04 steps + [190] = "%1d", -- Oxygen Emergency Knob {0, 1} + --IFF + [86] = "%1d", -- IFF Channel Selector {-1, 0, 1} + [88] = "%1d" -- IFF Check {0, 1} +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --[50] = "%.4f", -- Gun_Fire_1 {0.0, 1.0} + --[164] = "%.4f", -- Gun_Fire_2 {0.0, 1.0} + --[165] = "%.4f", -- Gun_Fire_3 {0.0, 1.0} + --[166] = "%.4f", -- Gun_Fire_4 {0.0, 1.0} + --[113] = "%.4f", -- Oxygen_Flow_Blinker {0.0, 1.0} + ExportScript.Tools.SendData(50, string.format("%.4f", mainPanelDevice:get_argument_value(50))) -- Gun_Fire_1 {0.0, 1.0} + ExportScript.Tools.SendData(164, string.format("%.4f", mainPanelDevice:get_argument_value(164))) -- Gun_Fire_2 {0.0, 1.0} + ExportScript.Tools.SendData(165, string.format("%.4f", mainPanelDevice:get_argument_value(165))) -- Gun_Fire_3 {0.0, 1.0} + ExportScript.Tools.SendData(166, string.format("%.4f", mainPanelDevice:get_argument_value(166))) -- Gun_Fire_4 {0.0, 1.0} + ExportScript.Tools.SendData(113, string.format("%.4f", mainPanelDevice:get_argument_value(113))) -- Oxygen_Flow_Blinker {0.0, 1.0} +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + ExportScript.Tools.SendData(50, mainPanelDevice:get_argument_value(50) > 0.3 and 1 or 0) -- Gun_Fire_1 {0.0, 1.0} + ExportScript.Tools.SendData(164, mainPanelDevice:get_argument_value(164) > 0.3 and 1 or 0) -- Gun_Fire_2 {0.0, 1.0} + ExportScript.Tools.SendData(165, mainPanelDevice:get_argument_value(165) > 0.3 and 1 or 0) -- Gun_Fire_3 {0.0, 1.0} + ExportScript.Tools.SendData(166, mainPanelDevice:get_argument_value(166) > 0.3 and 1 or 0) -- Gun_Fire_4 {0.0, 1.0} + ExportScript.Tools.SendData(113, mainPanelDevice:get_argument_value(113) > 0.3 and 1 or 0) -- Oxygen_Flow_Blinker {0.0, 1.0} +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/J-11A.lua b/ExportsModules/J-11A.lua new file mode 100644 index 0000000..4e1c450 --- /dev/null +++ b/ExportsModules/J-11A.lua @@ -0,0 +1,727 @@ +-- J-11A Export + +ExportScript.FoundFCModule = true +ExportScript.Version.J11A = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / J-11A -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-MACH Indicator + ExportScript.AF.FC_Russian_AirSpeed_1600hkm() + + -- AOA Indicator and Accelerometer (AOA, GLoad) + ExportScript.AF.FC_Russian_AOA_Su2733() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1500m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_20000() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempLeft, 1200, 100, 70, 71) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempRight, 1200, 100, 72, 73) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU27(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + + -- Mechanical Configuration Indicator + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 87) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 88) + + --ExportScript.Tools.WriteToLog('lMechInfo.noseflap.value: '..ExportScript.Tools.dump(lMechInfo.noseflap.value)) -- Vorfluegel, Balkenanzeige neben dem Radarhoehenmesser (0=oben bis 30=unten) + end + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake() + + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU27(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem() + ExportScript.AF.PPDSPPanel() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.PPDSPPanel() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "96" + --[flare] = number: "96" + + local lChaffLED = ExportScript.Tools.round(lSnares.chaff / 12, 0, "ceil") + 1 + local lFlareLED = ExportScript.Tools.round(lSnares.flare / 12, 0, "ceil") + 1 + + ExportScript.Tools.SendDataDAC("800", (lChaffLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("801", (lChaffLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("802", (lChaffLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("803", (lChaffLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("804", (lChaffLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("805", (lChaffLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("806", (lChaffLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("807", (lChaffLED <= 8 and 0 or 1) ) + + ExportScript.Tools.SendDataDAC("810", (lFlareLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("811", (lFlareLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("812", (lFlareLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("813", (lFlareLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("814", (lFlareLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("815", (lFlareLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("816", (lFlareLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("817", (lFlareLED <= 8 and 0 or 1) ) +end + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end + +function ExportScript.AF.FuelQuantityIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10) ) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("301", string.format("%d", lEngineInfo.fuel_internal)) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("302", string.format("%d", lEngineInfo.fuel_external)) -- external fuel in kg + + ExportScript.Tools.SendDataDAC("304", (lEngineInfo.fuel_internal < 5600.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendDataDAC("305", (lEngineInfo.fuel_internal < 4500.0 and 1 or 0) ) -- Tank warning 2 + ExportScript.Tools.SendDataDAC("306", (lEngineInfo.fuel_internal < 1500.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendDataDAC("307", (lEngineInfo.fuel_internal < 800.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendDataDAC("308", (lEngineInfo.fuel_internal < 600.0 and 1 or 0) ) -- Bingo Fuel + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lTotalFuel_9_3 = 0 + local lTotalFuel_5_0 = 0 + local lTotalFuel = lEngineInfo.fuel_internal + + if lTotalFuel < 9000 then + if lTotalFuel > 3000 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 3000 -- minimaler Eingangswert + x_max = 9000 -- maximaler Eingangswert + x = 8000 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 6000 -- Delta Eingangswerte (x_max - x_min) + m = 1.66666666666666666666666666667e-4 -- Steigung der linearen Funktion (d_y / d_x) + n = -0,5 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.83333 -- Ergebnis (m * x + n) + ]] + lTotalFuel_9_3 = 1.6666666666666666666666666666667e-4 * lTotalFuel + -0.5 + else + lTotalFuel_9_3 = 0.0 + end + else + lTotalFuel_9_3 = 1.0 + end + if lTotalFuel < 5000 then + lTotalFuel_5_0 = lTotalFuel / 5000 + else + lTotalFuel_5_0 = 1.0 + end + + -- TotalFuel_5_0 + -- TotalFuel_9_3 + -- Light1 + -- Light2 + -- Light3 + -- Light4 + -- BingoLight + ExportScript.Tools.SendData(300, lTotalFuel_5_0) + ExportScript.Tools.SendData(301, lTotalFuel_9_3) + ExportScript.Tools.SendData(302, (lEngineInfo.fuel_internal < 5600.0 and 1 or 0)) -- Tank warning 1 + ExportScript.Tools.SendData(303, (lEngineInfo.fuel_internal < 4500.0 and 1 or 0)) -- Tank warning 2 + ExportScript.Tools.SendData(304, (lEngineInfo.fuel_internal < 1500.0 and 1 or 0)) -- Tank warning 3 + ExportScript.Tools.SendData(305, (lEngineInfo.fuel_internal < 800.0 and 1 or 0)) -- Tank warning 4 + ExportScript.Tools.SendData(306, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end +end + +function ExportScript.AF.MechanicalDevicesIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + --[[ + [hook] = { + [status] = number: "0" + [value] = number: "0" + } + [parachute] = { + [status] = number: "0" + [value] = number: "0" + } + [controlsurfaces] = { + [eleron] = { + [left] = number: "0" + [right] = number: "-0.21084336936474" + } + [elevator] = { + [left] = number: "-0" + [right] = number: "-0" + } + [rudder] = { + [left] = number: "0" + [right] = number: "0" + } + } + [airintake] = { + [status] = number: "0" + [value] = number: "0" + } + [canopy] = { + [status] = number: "0" + [value] = number: "0" + } + [refuelingboom] = { + [status] = number: "0" + [value] = number: "0" + } + [wing] = { + [status] = number: "0" + [value] = number: "0" + } + [noseflap] = { + [status] = number: "0" + [value] = number: "0" + } + [gear] = { + [value] = number: "0" + [nose] = { + [rod] = number: "0" + } + [main] = { + [left] = { + [rod] = number: "0" + } + [right] = { + [rod] = number: "0" + } + } + [status] = number: "0" + } + [speedbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [wheelbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [flaps] = { + [status] = number: "0" + [value] = number: "0" + }]] + --local lTrueAirSpeed = LoGetTrueAirSpeed() + --ExportScript.Tools.WriteToLog('lTrueAirSpeed: '..ExportScript.Tools.dump(lTrueAirSpeed)) + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("500", (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1 or 0 ) ) -- gear warning light + ExportScript.Tools.SendDataDAC("501", (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC("502", (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC("503", (lMechInfo.gear.value > 0.97 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendDataDAC("510", (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + ExportScript.Tools.SendDataDAC("531", (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap + ExportScript.Tools.SendDataDAC("532", ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0) ) -- Intake FOD shields + ExportScript.Tools.SendDataDAC("533", ((lMechInfo.gear.status == 0 and lMechInfo.flaps.value > 0.93) and 1 or 0) ) -- Flaps Warning, same light as gear warning light, but blinking light + + ExportScript.Tools.SendDataDAC("541", (lMechInfo.parachute.value < 0.5 and 1 or 0) ) -- Parachute + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lWarningLight = 0.0 + + --lWarningLight = ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 0.5 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = ((lMechInfo.gear.status == 0 and lMechInfo.flaps.value > 0.93) and 1.0 or lWarningLight ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1.0 or lWarningLight ) -- gear warning light + + ExportScript.Tools.SendData(500, string.format("%.1f", lWarningLight)) + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap + ExportScript.Tools.SendData(532, ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0)) -- Intake FOD shields + end +end + +function ExportScript.AF.FC_WeaponPanel_SU27(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + if ExportScript.AF.TmpWeaponPanelPresend == nil then + ExportScript.AF.TmpWeaponPanelPresend = {[101] = 0, [102] = 0, [103] = 0, [104] = 0, [105] = 0, [106] = 0, [107] = 0, [108] = 0, [109] = 0, [110] = 0} + end + + if ExportScript.AF.TmpWeaponPanelActive == nil then + ExportScript.AF.TmpWeaponPanelActive = {[201] = 0, [202] = 0, [203] = 0, [204] = 0, [205] = 0, [206] = 0, [207] = 0, [208] = 0, [209] = 0, [210] = 0} + end + + if ExportScript.AF.TmpWeaponPanel == nil then + ExportScript.AF.TmpWeaponPanel = {[231] = 0, [232] = 0, [233] = 0, [234] = 0, [235] = 0} + end + + if ExportScript.AF.EventNumberFC_WeaponPanel == nil then + ExportScript.AF.EventNumberFC_WeaponPanel = 0 + end + + if(ExportScript.AF.EventNumberFC_WeaponPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_WeaponPanel = ExportScript.AF.EventNumber + + -- defination + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo ~= nil then + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201 } -- left + ExportScript.AF.TmpStationToPanel[2] = {Panel = 10, StationID = 110, CurrentID = 210 } -- right + ExportScript.AF.TmpStationToPanel[3] = {Panel = 2, StationID = 102, CurrentID = 202 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 9, StationID = 109, CurrentID = 209 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 3, StationID = 103, CurrentID = 203 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 8, StationID = 108, CurrentID = 208 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 4, StationID = 104, CurrentID = 204 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 7, StationID = 107, CurrentID = 207 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 5, StationID = 105, CurrentID = 205 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 6, StationID = 106, CurrentID = 206 } + + -- ExportScript.AF.TmpWeaponPanelActive reset + for i = 201, 210, 1 do + ExportScript.AF.TmpWeaponPanelActive[i] = 0 + end + + if ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation] ~= nil then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID] = 1 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation) -- corresponding station + end + end + + local lWeaponType = 0.0 -- transversely striped + if ExportScript.AF.PayloadInfo.CurrentStation > 0 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level1 == 4 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 4 then -- Weapon type Missle + lWeaponType = 0.1 -- MSL + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 7 then -- Weapon type NURS with Container + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level3 == 33 then -- Weapon type Rocket + lWeaponType = 0.2 -- RCT + end + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 5 then -- Weapon type Bomb + lWeaponType = 0.3 -- BB + end + end + end + + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 C 6 7 8 9 10 -- display + 1 3 5 7 9 10 8 6 4 2 -- Paylod ID + ]] + -- Payload Info + -- weapon stations (panel) 1 (left) - 10 (right), no lamp for center station + + -- WeaponPresend1 {0, 1} + -- WeaponPresend2 {0, 1} + -- WeaponPresend3 {0, 1} + -- WeaponPresend4 {0, 1} + -- WeaponPresend5 {0, 1} + -- WeaponPresend6 {0, 1} + -- WeaponPresend7 {0, 1} + -- WeaponPresend8 {0, 1} + -- WeaponPresend9 {0, 1} + -- WeaponPresend10 {0, 1} + -- WeaponActive1 {0, 1} + -- WeaponActive2 {0, 1} + -- WeaponActive3 {0, 1} + -- WeaponActive4 {0, 1} + -- WeaponActive5 {0, 1} + -- WeaponActive6 {0, 1} + -- WeaponActive7 {0, 1} + -- WeaponActive8 {0, 1} + -- WeaponActive9 {0, 1} + -- WeaponActive10 {0, 1} + + ExportScript.AF.TmpWeaponPanelPresend[101] = (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) -- weapon presend panel 1 + ExportScript.AF.TmpWeaponPanelPresend[102] = (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) -- weapon presend panel 2 + ExportScript.AF.TmpWeaponPanelPresend[103] = (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) -- weapon presend panel 3 + ExportScript.AF.TmpWeaponPanelPresend[104] = (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) -- weapon presend panel 4 + ExportScript.AF.TmpWeaponPanelPresend[105] = (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) -- weapon presend panel 5 + ExportScript.AF.TmpWeaponPanelPresend[106] = (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) -- weapon presend panel 6 + ExportScript.AF.TmpWeaponPanelPresend[107] = (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) -- weapon presend panel 7 + ExportScript.AF.TmpWeaponPanelPresend[108] = (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) -- weapon presend panel 8 + ExportScript.AF.TmpWeaponPanelPresend[109] = (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) -- weapon presend panel 9 + ExportScript.AF.TmpWeaponPanelPresend[110] = (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) -- weapon presend panel 10 + --ExportScript.AF.TmpWeaponPanelActive[201] -- weapon active panel 1 + --ExportScript.AF.TmpWeaponPanelActive[202] -- weapon active panel 2 + --ExportScript.AF.TmpWeaponPanelActive[203] -- weapon active panel 3 + --ExportScript.AF.TmpWeaponPanelActive[204] -- weapon active panel 4 + --ExportScript.AF.TmpWeaponPanelActive[205] -- weapon active panel 5 + --ExportScript.AF.TmpWeaponPanelActive[206] -- weapon active panel 6 + --ExportScript.AF.TmpWeaponPanelActive[207] -- weapon active panel 7 + --ExportScript.AF.TmpWeaponPanelActive[208] -- weapon active panel 8 + --ExportScript.AF.TmpWeaponPanelActive[209] -- weapon active panel 9 + --ExportScript.AF.TmpWeaponPanelActive[210] -- weapon active panel 10 + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendData(key, value) + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendDataDAC(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendDataDAC(key, value) + end + end +end \ No newline at end of file diff --git a/ExportsModules/Ka-50.lua b/ExportsModules/Ka-50.lua new file mode 100644 index 0000000..884eacb --- /dev/null +++ b/ExportsModules/Ka-50.lua @@ -0,0 +1,1346 @@ +-- Ka-50 Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.Ka50 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- LAMPS + --------------------------------------------------- + --[44] = "%.1f", -- lamp_MasterWarning {0.0,0.3} + --[46] = "%.1f", -- lamp_RotorRPM {0.0,1.0} + [47] = "%.f", -- lamp_UNDERFIREwarning {0.0,1.0} + [48] = "%.f", -- lamp_LowerGear {0.0,1.0} + [78] = "%.f", -- lamp_RPM_leftEngineMax {0.0,1.0} + [79] = "%.f", -- lamp_RPM_rightEngineMax {0.0,1.0} + [80] = "%.f", -- lamp_NyMax {0.0,1.0} + [81] = "%.f", -- lamp_vibr_leftEngine {0.0,1.0} + [82] = "%.f", -- lamp_vibr_rightEngine {0.0,1.0} + [83] = "%.f", -- lamp_IAS_max {0.0,1.0} + [84] = "%.f", -- lamp_mainTransmission {0.0,1.0} + [85] = "%.f", -- lamp_Fire {0.0,1.0} + [86] = "%.f", -- lamp_IFFfailure {0.0,1.0} + -- VVI + --------------------------------------------------- + [24] = "%.4f", -- vy (Vertical Velocity Indicator) {-1.0,1.0} + -- ADI (IKP-81) + --------------------------------------------------- + [100] = "%.4f", -- ADI_Roll {-1.0,1.0} + [101] = "%.4f", -- ADI_Pitch {-math.pi/2.0,math.pi/2.0}{1.0,-1.0} + [102] = "%0.1f", -- ADI_steering_warning_flag {0.0,1.0} + [109] = "%0.1f", -- ADI_attitude_warning_flag {0.0,1.0} + [107] = "%.4f", -- ADI_bank_steering {-1.0,1.0} + [106] = "%.4f", -- ADI_pitch_steering {-1.0,1.0} + [111] = "%.4f", -- ADI_airspeed_deviation {-1.0,1.0} + [103] = "%.4f", -- ADI_track_deviation {-1.0,1.0} + [526] = "%.4f", -- ADI_height_deviation {-1.0,1.0} + [108] = "%.4f", -- ADI_sideslip {-1.0,1.0} + -- Barometric Altimeter (VM_15PV) + -------------------------------------------------- + [87] = "%.4f", -- VM_15PV_BALT_thousands {0.0,1.0} + [573] = "%.4f", -- VM_15PV_BALT_tenths {0.0,1.0} + [88] = "%0.2f", -- VM_15PV_BaroPressure {0.0,1.0} + [89] = "%.4f", -- VM_15PV_BALT_CommandedAlt {0.0,1.0} + -- HSI (PNP-72-16) + --------------------------------------------------- + [112] = "%.4f", -- HSI_heading {0.0, 1.0} + [118] = "%.4f", -- HSI_commanded_course_needle {0.0, 1.0} + [124] = "%.4f", -- HSI_commanded_heading_needle {0.0, 1.0} + [115] = "%.4f", -- HSI_bearing_needle {0.0, 1.0} + [119] = "%0.1f", -- HSI_heading_warning_flag{0.0,1.0} + [114] = "%0.1f", -- HSI_course_warning_flag{0.0, 1.0} + [125] = "%0.1f", -- HSI_glideslope_warning_flag{0.0, 1.0} + [117] = "%0.4f", -- HSI_range_counter_100 {0.0,1.0} + [527] = "%0.4f", -- HSI_range_counter_10 {0.0,1.0} + [528] = "%0.4f", -- HSI_range_counter_1 {0.0,1.0} + [127] = "%.4f", -- HSI_longitudinal_deviation{-1.0, 1.0} + [128] = "%.4f", -- HSI_lateral_deviation{-1.0, 1.0} + [116] = "%0.1f", -- HSI_range_unavailable_flag{0.0, 1.0} + [121] = "%0.1f", -- HSI_course_unavailable_flag{0.0, 1.0} + -- Rotor Pitch + --------------------------------------------------- + [53] = "%.4f", -- RotorPitch {0.0,1.0} + -- Rotor RPM + --------------------------------------------------- + [52] = "%.4f", -- RotorRPM {0.0,1.0} + -- Radar Altimeter ( A_036) + --------------------------------------------------- + [94] = "%.4f", -- A_036_RALT {0.0,1.0} + [93] = "%.4f", -- A_036_DangerRALT {0.0,1.0} + [95] = "%0.1f", -- A_036_warning_flag {0.0,1.0} + [92] = "%.f", -- A_036_DangerRALT_lamp {0.0,1.0} + -- Indicated Airspeed + --------------------------------------------------- + [51] = "%.4f", -- IAS {0.0,1.0} + -- Accelerometer (ADP_4) + --------------------------------------------------- + [97] = "%0.4f", -- ADP_4_acceleration {0.0,1.0} + [98] = "%0.2f", -- ADP_4_max_achieved_acc {0.0,1.0} + [99] = "%0.2f", -- ADP_4_min_achieved_acc {0.0,1.0} + -- Mechanic Clock + --------------------------------------------------- + [68] = "%.4f", -- CLOCK_currtime_hours {0.0,1.0} + [69] = "%.4f", -- CLOCK_currtime_minutes {0.0,1.0} + [70] = "%.4f", -- CLOCK_currtime_seconds {0.0,1.0} + --[75] = "%0.1f", -- CLOCK_flight_time_meter_status{0.0,0.1,0.2} + [72] = "%.4f", -- CLOCK_flight_hours {0.0,1.0} + [531] = "%.4f", -- CLOCK_flight_minutes {0.0,1.0} + [73] = "%.4f", -- CLOCK_seconds_meter_time_minutes {0.0,1.0} + [532] = "%.4f", -- CLOCK_seconds_meter_time_seconds {0.0,1.0} + -- backup ADI (AGR-81) + --------------------------------------------------- + [142] = "%.4f", -- AGR_81_Roll {1.0, -1.0} + [143] = "%.4f", -- AGR_81_Pitch {-1.0, 1.0} + [144] = "%.4f", -- AGR_81_sideslip {-1.0, 1.0} + [145] = "%0.1f", -- AGR_81_failure_flag{0.0, 1.0} + -- Engines temperature + --------------------------------------------------- + [133] = "%.4f", -- LeftEngineTemperatureHund {0.0,1.0} + [566] = "%.4f", -- LeftEngineTemperatureTenth {0.0,1.0} + [134] = "%.4f", -- RightEngineTemperatureHund {0.0,1.0} + [567] = "%.4f", -- RightEngineTemperatureHund {0.0,1.0} + -- Engine RPM + --------------------------------------------------- + [135] = "%.4f", -- LeftEngineRPM {0.0,1.0} + [136] = "%.4f", -- RightEngineRPM {0.0,1.0} + -- Fuel tanks + --------------------------------------------------- + [138] = "%.4f", -- RearTankAmount {0.0,1.0} + [137] = "%.4f", -- ForwardTankAmount {0.0,1.0} + [139] = "%0.1f", -- lamp_ForwardTankTest {0.0,1.0} + [140] = "%0.1f", -- lamp_RearTankTest {0.0,1.0} + -- PUI-800 Weapon panel + --------------------------------------------------- + [392] = "%.f", -- lamp_PUI800_Sta1_WeapIsPresent{0.0, 1.0} + [393] = "%.f", -- lamp_PUI800_Sta2_WeapIsPresent{0.0, 1.0} + [394] = "%.f", -- lamp_PUI800_Sta3_WeapIsPresent{0.0, 1.0} + [395] = "%.f", -- lamp_PUI800_Sta4_WeapIsPresent{0.0, 1.0} + [388] = "%.f", -- lamp_PUI800_Sta1_WeapIsReady{0.0, 1.0} + [389] = "%.f", -- lamp_PUI800_Sta2_WeapIsReady{0.0, 1.0} + [390] = "%.f", -- lamp_PUI800_Sta3_WeapIsReady{0.0, 1.0} + [391] = "%.f", -- lamp_PUI800_Sta4_WeapIsReady{0.0, 1.0} + -- LGCP - Landing gear control panel + --------------------------------------------------- + [63] = "%.f", -- LGCP_Lamp_NoseGearUp {0.0,1.0} + [64] = "%.f", -- LGCP_Lamp_NoseGearDown {0.0,1.0} + [61] = "%.f", -- LGCP_Lamp_RightMainGearUp {0.0,1.0} + [62] = "%.f", -- LGCP_Lamp_RightMainGearDown {0.0,1.0} + [59] = "%.f", -- LGCP_Lamp_LeftMainGearUp {0.0,1.0} + [60] = "%.f", -- LGCP_Lamp_LeftMainGearDown{0.0, 1.0} + -- LAMPS + --------------------------------------------------- + [170] = "%.f", -- lamp_H_RALT_stab {0.0,1.0} + [175] = "%.f", -- lamp_Hover {0.0,1.0} + [172] = "%.f", -- lamp_Descent {0.0,1.0} + [165] = "%.f", -- lamp_RouteHeadingSteering {0.0,1.0} + [171] = "%.f", -- lamp_RouteCourseSteering {0.0,1.0} + [176] = "%.f", -- lamp_Waypoint {0.0,1.0} + [166] = "%.f", -- lamp_EndOfRoute {0.0,1.0} + [164] = "%.f", -- lamp_RoughNAVcalc {0.0,1.0} + [178] = "%.f", -- lamp_Burst {0.0,1.0} + [173] = "%.f", -- lamp_CannonMovingBarr {0.0,1.0} + [177] = "%.f", -- lamp_CannonMovingBarr2 {0.0,1.0} + [211] = "%.f", -- lamp_FuelCrossfeedOn {0.0,1.0} + [187] = "%.f", -- lamp_CouplerOff {0.0,1.0} + [204] = "%.f", -- lamp_ActuatorsOilPress {0.0,1.0} + [213] = "%.f", -- lamp_LockOff {0.0,1.0} + -- Magnetic Compass (KI-13) + --------------------------------------------------- + [11] = "%.4f", -- KI_13_course {-1,1} + [12] = "%.4f", -- KI_13_pitch {-1,1} + [14] = "%.4f", -- KI_13_bank {-1,1} + -- LAMPS + --------------------------------------------------- + [167] = "%.f", -- lamp_WeapSysBUS_ON {0.0,1.0} + [180] = "%.f", -- lamp_TrainingMode {0.0,1.0} + [179] = "%.f", -- lamp_OBZOR_800 {0.0,1.0} + [188] = "%.f", -- lamp_RANET {0.0,1.0} + [189] = "%.f", -- lamp_CC_test {0.0,1.0} + [206] = "%.f", -- lamp_CC_failure {0.0,1.0} + [212] = "%.f", -- lamp_DC_AC_Inverter {0.0,1.0} + [205] = "%.f", -- lamp_I_251V {0.0,1.0} + [181] = "%.f", -- lamp_AntiIceLeftEngine {0.0,1.0} + [190] = "%.f", -- lamp_DustProtectLeftEngine {0.0,1.0} + [207] = "%.f", -- lamp_BackupModeLeftEngine {0.0,1.0} + [183] = "%.f", -- lamp_AntiIceRotors {0.0,1.0} + [182] = "%.f", -- lamp_AntiIceRightEngine {0.0,1.0} + [191] = "%.f", -- lamp_DustProtectRightEngine {0.0,1.0} + [208] = "%.f", -- lamp_BackupModeRightEngine {0.0,1.0} + [184] = "%.f", -- lamp_VUO_Heat {0.0,1.0} + [200] = "%.f", -- lamp_ForwardTank {0.0,1.0} + [209] = "%.f", -- lamp_LeftValveClosed {0.0,1.0} + [185] = "%.f", -- lamp_LeftOuterTank {0.0,1.0} + [202] = "%.f", -- lamp_LeftInnerTank {0.0,1.0} + [201] = "%.f", -- lamp_RearTank {0.0,1.0} + [210] = "%.f", -- lamp_RightValveClosed {0.0,1.0} + [186] = "%.f", -- lamp_RightOuterTank {0.0,1.0} + [203] = "%.f", -- lamp_RightInnerTank {0.0,1.0} + -- DATALINK + --------------------------------------------------- + --[159] = "%.1f", -- PRC_button_SEND {0.0,0.3} + --[150] = "%.1f", -- PRC_button_ESCAPE {0.0,0.3} + --[161] = "%.1f", -- PRC_button_ERASE {0.0,0.3} + --[15] = "%.1f", -- PRC_button_CLEAN {0.0,0.3} + --[16] = "%.1f", -- PRC_button_WINGMAN_ALL {0.0,0.3} + --[17] = "%.1f", -- PRC_button_WINGMAN_1 {0.0,0.3} + --[18] = "%.1f", -- PRC_button_WINGMAN_2 {0.0,0.3} + --[19] = "%.1f", -- PRC_button_WINGMAN_3 {0.0,0.3} + --[20] = "%.1f", -- PRC_button_WINGMAN_4 {0.0,0.3} + --[21] = "%.1f", -- PRC_button_TARGET_1 {0.0,0.3} + --[22] = "%.1f", -- PRC_button_TARGET_2 {0.0,0.3} + --[23] = "%.1f", -- PRC_button_TARGET_3 {0.0,0.3} + --[50] = "%.1f", -- PRC_button_TARGET_POINT {0.0,0.3} + -- Laser warning system + --------------------------------------------------- + [25] = "%.f", -- LWS_LampAzimuth_0 {0.0,1.0} + [28] = "%.f", -- LWS_LampAzimuth_90 {0.0,1.0} + [26] = "%.f", -- LWS_LampAzimuth_180 {0.0,1.0} + [27] = "%.f", -- LWS_LampAzimuth_270 {0.0,1.0} + [31] = "%.f", -- LWS_LampAzimuth_UpperHemisphere {0.0,1.0} + [32] = "%.f", -- LWS_LampAzimuth_LowerHemisphere {0.0,1.0} + [33] = "%.f", -- LWS_LampAzimuth_LaserRangefinder {0.0,1.0} + [34] = "%.f", -- LWS_LampAzimuth_LaserTargetingSystem {0.0,1.0} + [582] = "%.f", -- LWS_LampReady {0.0,1.0} + -- UV-26 + --------------------------------------------------- + [541] = "%.f", -- UV26_lampLeftBoard {0.0,1.0} + [542] = "%.f", -- UV26_lampRightBoard {0.0,1.0} + -- PVI (Nav Control Panel) + --------------------------------------------------- + [315] = "%0.1f", -- PVI_button_WPT{0.0, 0.3} + [519] = "%0.1f", -- PVI_button_INSREALN{0.0, 0.3} + [316] = "%0.1f", -- PVI_button_FIXPT{0.0, 0.3} + [520] = "%0.1f", -- PVI_button_PRECALN{0.0, 0.3} + [317] = "%0.1f", -- PVI_button_AERDR{0.0, 0.3} + [521] = "%0.1f", -- PVI_button_NORMALN{0.0, 0.3} + [318] = "%0.1f", -- PVI_button_TGT{0.0, 0.3} + [313] = "%0.1f", -- PVI_button_ENTER{0.0, 0.3} + [314] = "%0.1f", -- PVI_button_CANCEL{0.0, 0.3} + [522] = "%0.1f", -- PVI_button_INITCOORD{0.0, 0.3} + [319] = "%0.1f", -- PVI_button_FILAMBDA{0.0, 0.3} + [320] = "%0.1f", -- PVI_button_FIZ{0.0, 0.3} + [321] = "%0.1f", -- PVI_button_DU{0.0, 0.3} + [322] = "%0.1f", -- PVI_button_FII{0.0, 0.3} + [323] = "%0.1f", -- PVI_button_BRGRNG{0.0, 0.3} + [330] = "%0.1f", -- PPR_button_K{0.0, 0.3} + [332] = "%0.1f", -- PPR_button_H{0.0, 0.3} + [331] = "%0.1f", -- PPR_button_T{0.0, 0.3} + [333] = "%0.1f", -- PPR_button_B{0.0, 0.3} + [334] = "%0.1f", -- PPR_button_DIR{0.0, 0.3} + -- RadioCommunicator R-828 + --------------------------------------------------- + [375] = "%0.1f", -- Radio_ASU_lamp{0.0,1.0} + -- RadioCommunicator R-800 + --------------------------------------------------- + [419] = "%0.1f", -- Radio_Test_lamp {0.0,1.0} + [577] = "%.3f", -- R800Rotary1 {0.0,1.0} + [574] = "%.2f", -- R800Rotary2 {0.0,1.0} + [575] = "%.2f", -- R800Rotary3 {0.0,1.0} + [576] = "%.2f", -- R800Rotary4 {0.0,1.0} + -- WEAPON INTERFACE + --------------------------------------------------- + --[437] = "%.1f", -- PRC_button_AUTO_TURN {0.0,0.3} + --[438] = "%.1f", -- PRC_button_AIRBORNE_TARGET {0.0,0.3} + --[439] = "%.1f", -- PRC_button_FORWARD_HEMISPHERE {0.0,0.3} + --[440] = "%.1f", -- PRC_button_GROUND_MOVING_TARGET {0.0,0.3} + --[441] = "%.1f", -- PRC_button_CLEAR {0.0,0.3} + -- Engines start panel + --------------------------------------------------- + [163] = "%.f", -- lamp_EnginesStartValve{0.0, 1.0} + -- APU control panel + --------------------------------------------------- + [162] = "%.f", -- lamp_APUValveOpen{0.0, 1.0}{0.0, 1.0} + [168] = "%.f", -- lamp_APUOilPres{0.0, 1.0}{0.0, 1.0} + [169] = "%.f", -- lamp_APUStoppedByRPM{0.0, 1.0} + [174] = "%.f", -- lamp_APU_IsON{0.0, 1.0} + -- APU Temperature + --------------------------------------------------- + [6] = "%.4f", -- APUTemperature {0.0, 900.0} = {0.0, 1.0} + -- Right Side Panel + --------------------------------------------------- + [586] = "%.f", -- lamp_AC_Ground_Power{0.0, 1.0} + [261] = "%.f", -- lamp_DC_Ground_Power{0.0, 1.0} + -- Eject system + --------------------------------------------------- + [461] = "%0.1f", -- EjectSystemTestLamp{0.0, 1.0} + -- Fire Extinguishers panel + --------------------------------------------------- + [237] = "%.f", -- lamp_Exting_LeftEngineFire{0.0, 1.0} + [239] = "%.f", -- lamp_Exting_APU_Fire{0.0, 1.0} + [568] = "%.f", -- lamp_Exting_HydraulicsFire{0.0, 1.0} + [241] = "%.f", -- lamp_Exting_RightEngineFire{0.0, 1.0} + [243] = "%.f", -- lamp_Exting_VentilatorFire{0.0, 1.0} + [244] = "%.f", -- lamp_Exting_Lamp1{0.0, 1.0} + [245] = "%.f", -- lamp_Exting_Lamp2{0.0, 1.0} + -- Engines mode indicator + --------------------------------------------------- + [592] = "%.4f", -- EnginesMode {0.0,1.0} + [234] = "%0.2f", -- LeftEngineMode{0.0,1.0} + [235] = "%0.2f", -- RightEngineMode {0.0,1.0} + -- Oil pressure and temperature indicators group (Right Panel) + --------------------------------------------------- + [252] = "%.4f", -- NeedleOilPressureEngineLeft {0.0,1.0} + [253] = "%.4f", -- NeedleOilPressureEngineRight {0.0, 1.0} + [254] = "%.4f", -- NeedleOilPressureGearBox {0.0,1.0} + [255] = "%.4f", -- NeedleOilTemperatureEngineLeft {0.0,1.0} + [256] = "%.4f", -- NeedleOilTemperatureEngineRight {0.0,1.0} + [257] = "%.4f", -- NeedleOilTemperatureGearBox {0.0,1.0} + -- Right Back Panel + --------------------------------------------------- + [469] = "%.f", -- lamp_flap_hydro_1{0.0, 1.0} + [470] = "%.f", -- lamp_flap_hydro_2{0.0, 1.0} + -- Hydraulics Gauges (Back Panel) + --------------------------------------------------- + [471] = "%.4f", -- hydro_common_pressure {0.0,1.0} + [472] = "%.4f", -- hydro_main_pressure {0.0,1.0} + [473] = "%.4f", -- hydro_acc_brake_pressure {0.0,1.0} + [474] = "%.4f", -- hydro_gear_brake_pressure {0.0,1.0} + [475] = "%.4f", -- hydro_common_temperature {0.0,1.0} + [476] = "%.4f", -- hydro_main_temperature {0.0,1.0} + -- Latitude Entry Panel (PShK_7) + --------------------------------------------------- + [342] = "%.f", -- PShK7_LampAuto {0.0,1.0} + [339] = "%0.4f", -- PShK7_Latitude_counter_tenth {0.0,10.0} + [594] = "%0.4f", -- PShK7_Latitude_counter_units {0.0,10.0} + -- Magnetic Variation Entry Panel (ZMS_3) + --------------------------------------------------- + [337] = "%0.4f", -- ZMS3_MagVar_counter_hundreds_tenth {-1.0,1.0} + [596] = "%0.4f", -- ZMS3_MagVar_counter_units {0.0,1.0} + -- Ambient Temperature + --------------------------------------------------- + [587] = "%0.4f" -- Ambient Temperature {-60, 50} = {-0.946, 0.788} +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- ADI + --------------------------------------------------- + [110] = "%.1f", -- TEST-IKP-PTR (ADI Test Button) {0.0,1.0} + -- HSI + --------------------------------------------------- + [113] = "%.1f", -- TEST-PNP-PTR03 (HSI test Button) + [54] = "%1d", -- ZPU-ZK-PTR (HSI Desired track angle - Desired heading, Auto - Manual) {0,1} + --laser ranger + --------------------------------------------------- + [56] = "%1d", -- LDP-LD-PTR (Laser rangefinder / designator - mode switch) + [57] = "%1d", -- LD-LDP-COVER-PTR (Laser rangefinder Cover) + [55] = "%.1f", -- CHOP-LDP-PTR (Laser designator reset) + -- RADIOALTIMETER + --------------------------------------------------- + [96] = "%.1f", -- TEST-RADIO-HIGHT-PTR (Radar altimeter test) + -- CPT MECH + --------------------------------------------------- + [572] = "%.1f", -- G--PTR (Accelerometer reset) + -- SYSTEM CONTROLLER + --------------------------------------------------- + [45] = "%.1f", -- CONTROL-ALARM-PTR (Lamps test) + -- STANDBY ADI (AGR-81) + --------------------------------------------------- + [230] = "%1d", -- RES-AG-PTR (Standby Attitude Indicator power switch) + -- Engines Start-Up Control Panel + --------------------------------------------------- + [131] = "%.1f", -- CONTROL-TEMP-WORK-PTR (Running engines exhaust gas temperature indicator test button) + [132] = "%.1f", -- CONTROL-TEMP-NOTWORK-PTR (Stopped engines exhaust gas temperature indicator test button) + -- FUEL SYSTEM + --------------------------------------------------- + [616] = "%.1f", -- CONTROL-OIL-PTR (Fuel quantity indicator self test button) + -- ABRIS Display + --------------------------------------------------- + [512] = "%.1f", -- PTR_BTN-ABRIS-01 (ABRIS Pushbutton 1) {start value 0.01 the same index for -2,-3,-4,-5,-6,-7,-8,-9,-RCL,-ENTR with increment 0.01} + [513] = "%.1f", -- PTR_BTN-ABRIS-02 (ABRIS Pushbutton 2) + [514] = "%.1f", -- PTR_BTN-ABRIS-03 (ABRIS Pushbutton 3) + [515] = "%.1f", -- PTR_BTN-ABRIS-04 (ABRIS Pushbutton 4) + [516] = "%.1f", -- PTR_BTN-ABRIS-05 (ABRIS Pushbutton 5) + [518] = "%.1f", -- ABRIS_SHUNT_PTR (ABRIS Cursor Control (rotary)){0.0,1.0} (0.04) + [523] = "%.1f", -- ABRIS_SHUNT_PTR (ABRIS Cursor Control (push)) + [517] = "%.3f", -- ABRIS_BRIGHTNESS_PTR (ABRIS Brightness) {0.0,1.0} (0.05) + [130] = "%0.1f", -- ABRIS-POWER_PTR (ABRIS Power) + -- HUD + --------------------------------------------------- + [8] = "%.3f", -- PTR_HUD-BRIGHTNESS (HUD Brightness) + [9] = "%1d", -- PTR_HUD-TMB-SETKA02 (HUD Modes Reticle/Night/Day) + [7] = "%.1f", -- PTR-HUD-TEST (HUD Test) + [510] = "%0.1f", -- PTR_HUD-FILTER (HUD Filter) + -- PUI-800 Weapons Control Panel + --------------------------------------------------- + [387] = "%1d", -- MASTER-ARM-PTR (Master Arm) + [402] = "%.1f", -- UI800-AVARCHOP-PTR (External stores jettison) + [396] = "%1d", -- MASTER-EXPLODE-PTR (Jettison arm mode - arm fuse/disarm fuse) + [403] = "%1d", -- PUI800-AUTO-PTR (Manual/Auto weapon system control switch) + [399] = "%1d", -- PUI800-OFBR-PTR (Cannon round selector switch HE/AP) + [400] = "%.1f", -- SR-PTR (Weapon mode switch - Burst Length) {0.0,0.1,0.2} + [398] = "%1d", -- MT-PTR (Cannon rate of fire setting) + [397] = "%.1f", -- MASTER-UNLOAD-PTR (Expedite emergency ATGM launch) + -- PUR Weapons Aux Panel + -- SHKVAL + --------------------------------------------------- + [404] = "%1d", -- PUR-BACKGROUND-PTR (IT-23 Black-White indication switch) + [406] = "%.3f", -- PUR-LIGHTIT-PTR (IT-23 display brightness) + [407] = "%.3f", -- PUR-CONTRAST-PTR (IT-23 display contrast) + -- SHKVAL windscreen wiper + [224] = "%.1f", -- WIPER-PTR (SHKVAL windscreen wiper) + -- HELMET + [405] = "%.3f", -- PUR-LIGHTNVU-PTR (Helmet device brightness) + -- WEAPON SYSTEM + [408] = "%0.1f", -- PUR-LIT-PTR (Laser code selector) + [409] = "%1d", -- PUR-OGR-INF-PTR (HUD/TV declutter switch) + -- Outside illumination + --------------------------------------------------- + [382] = "%0.1f", -- LANDING LIGHTS-DIR-LIGHT-PTR (Light landing-search. On/Retraction/Off) + [383] = "%1d", -- LANDING LIGHTS-BASE-RESERV-PTR (Lights landing-search change. Main/Reserved) + -- ALMAZ system + --------------------------------------------------- + [384] = "%.1f", -- SPEECH-INFO-OFF-PTR01 (Voice message system messages off) + [385] = "%.1f", -- SPEECH-INFO-RETRY-PTR (Voice message system messages repeat) + [386] = "%0.1f", -- SPEECH-INFO-AVAR-PTR (Voice message system emergency on) + [442] = "%.1f", -- SPEECH-BIT-PTR (Voice message system check) + -- CPT MECH + --------------------------------------------------- + [65] = "%1d", -- GEAR-PTR (Gear lever) + [66] = "%1d", -- AVAR-GEAR-PTR (Main/Common hydraulics for emergency gear) + [67] = "%1d", -- AVAR-GEAR-COVER-PTR (Main/Common hydraulics for emergency gear Cover) + -- OVERHEAD PANEL + --------------------------------------------------- + [146] = "%0.1f", -- ANO-PTR (Navigation Lights 10\% / 30\% / 100\% / Off) + [147] = "%0.1f", -- WINDSCREEN-WIPER-PTR (Windshield wiper switch) + [539] = "%1d", -- PPD-DUAS-PTR (Pitot static port and AoA sensors heat switch) + [151] = "%1d", -- PVD-CLOCK-PTR (Pitot ram air and clock heat switch) + [153] = "%1d", -- POS-ROTORS-PTR (Rotor de-icing system switch) + [154] = "%0.1f", -- POS-ENGINE-PZU-PTR (Engines de-icing / dust-protection systems switch) + [156] = "%.1f", -- KONTR-PVD-PTR (Pitot heat system test) + -- Laser Warning System + --------------------------------------------------- + [35] = "%.1f", -- L-140-RESET-PTR (LWS Reset button) + [583] = "%1d", -- L140-SWITCH (LWS Power switch) + [584] = "%.1f", -- L140-CNOB (LWS self-test button) + -- UV-26 CMD Control Panel + --------------------------------------------------- + [36] = "%0.1f", -- UV26-BOARD-PTR (CMD Select Left/Both/Right board flares dispensers) + [37] = "%0.1f", -- UV26-PROGR-PTR (CMD Amount flares counter/Programming) + [38] = "%.1f", -- UV26-SERIES-PTR (CMD Num of sequences) + [39] = "%.1f", -- UV26-BURST-PTR (CMD Num in sequence) + [41] = "%.1f", -- UV26-INTERVAL-PTR (CMD Dispense interval) + [43] = "%.1f", -- UV26-START-PTR (CMD Start dispense) + [42] = "%.1f", -- UV26-CANCELPRG-PTR (CMD Reset to default program) + [40] = "%.1f", -- UV26-STOP-PTR (CMD Stop dispense) + -- UV-26 related (REAR PANEL) + [496] = "%1d", -- UV26-POWER-PTR (CMD Power) + [497] = "%1d", -- UV26-POWER-COVER-PTR (CMD Power Cover) + [498] = "%1d", -- UV26-TEST-PTR (CMD BIT) + [499] = "%1d", -- UV26-TEST-COVER-PTR (CMD BIT Cover) + -- PVI NAV Panel + --------------------------------------------------- + [312] = "%0.1f", -- PVI-0-PTR (NAV '0' Btn) + [303] = "%0.1f", -- PVI-1-PTR (NAV '1' Btn) + [304] = "%0.1f", -- PVI-2-PTR (NAV '2' Btn) + [305] = "%0.1f", -- PVI-3-PTR (NAV '3' Btn) + [306] = "%0.1f", -- PVI-4-PTR (NAV '4' Btn) + [307] = "%0.1f", -- PVI-5-PTR (NAV '5' Btn) + [308] = "%0.1f", -- PVI-6-PTR (NAV '6' Btn) + [309] = "%0.1f", -- PVI-7-PTR (NAV '7' Btn) + [310] = "%0.1f", -- PVI-8-PTR (NAV '8' Btn) + [311] = "%0.1f", -- PVI-9-PTR (NAV '9' Btn) + [324] = "%0.1f", -- PVI-SWITCH-PTR (NAV Master modes) + [325] = "%1d", -- PVI_I251V_PTR (NAV INU fixtaking method) + [326] = "%1d", -- PVI_VCU_PTR (NAV Datalink power) + [327] = "%.3f", -- PVI-BRIGHTNESS-PTR (NAV Brightness) + -- DATALINK + --------------------------------------------------- + -- Datalink Mode Controls + [328] = "%0.1f", -- DTLK-SELF-ID-PTR (Datalink self ID) + [329] = "%0.1f", -- DTLK-MASTER-MODES-PTR (Datalink Master mode) + -- PPR - Autopilot Control Panel + -- AUTOPILOT + --------------------------------------------------- + [335] = "%0.1f", -- BAR-RV-PTR (Autopilot BARO/RALT altitude hold mode) + -- NAV SYSTEM + [336] = "%0.1f", -- ZK-LZP-PTR (Autopilot Desired heading - Desired track) + --ARK-22 + --------------------------------------------------- + [381] = "%0.2f", -- IANDING LIGHTS-DIR-LIGHT-PTR01 (ADF Inner-Auto-Outer NDB switch) + [355] = "%.1f", -- ARK-CONTROL-PTR (ADF Test) + [354] = "%1d", -- TLF-TLG-PTR (TLF-TLG modes) + [353] = "%.3f", -- VARK-VOLUME-PTR (ADF Volume) + [356] = "%1d", -- TLF-TLG-PTR01 (COMPASS-ANTENNA modes) + [357] = "%0.1f", -- VARK-VOLUME-PTR01 (ADF channel switch) + --R-828 + --------------------------------------------------- + [371] = "%0.1f", -- CHANNEL-PTR (R-828 (VHF-1) Radio channel selector) + [372] = "%.3f", -- RADIO-VOLUME-PTR (R-828 (VHF-1) Radio Volume) + [373] = "%.1f", -- ASU-PTR (R-828 (VHF-1) Tuner button) + [374] = "%1d", -- RADIO-PSH-SWITCH-PTR (R-828 (VHF-1) Squelch) + -- Signal Flares + --------------------------------------------------- + [376] = "%.1f", -- SIGNAL-FLARE-1-PTR (Signal flare red) + [377] = "%.1f", -- SIGNAL-FLARE-2-PTR (Signal flare green) + [378] = "%.1f", -- SIGNAL-FLARE-3-PTR (Signal flare white) + [379] = "%.1f", -- SIGNAL-FLARE-4-PTR (Signal flare yellow) + [380] = "%1d", -- SIGNAL-FLARE-SWITCH-PTR (Signal flare system power) + --R-800 + --------------------------------------------------- + [418] = "%.1f", -- START-PANEL-CONTROL-PTR (R-800 (VHF-2) BIT button) + [417] = "%1d", -- CONTR-RADIO-CHM-AM-PTR (R-800 (VHF-2) AM-FM toggle switch) + [421] = "%1d", -- CONTR-RADIO-AP-PTR (R-800 (VHF-2) Emergency receiver) + [422] = "%1d", -- CONTR-RADIO-ARK-PTR (R-800 (VHF-2) ADF switch) + [420] = "%1d", -- CONTR-RADIO-50-100-PTR01 (R-800 (VHF-2) Data transfer rate switch) + [423] = "%1d", -- CONTR-RADIO-PSH-PTR (R-800 (VHF-2) Squelch) + -- PVR + --------------------------------------------------- + -- WEAPONS + [432] = "%1d", -- PVR-DRILL-PTR (Training mode) + [431] = "%0.1f", -- PVR-MODE-PTR (Weapon system mode selector) + [436] = "%1d", -- PVR-AS-PM-PTR (Automatic Tracking / gun sight) + -- K041 + [433] = "%1d", -- K-041-PTR (K-041 Targeting-navigation system power switch) + -- LASERRANGER + [435] = "%1d", -- PVR-IZL-PTR (Laser standby ON/OFF switch) + -- HELMET + [434] = "%1d", -- PVR-OBZ-PTR (Helmet-mounted sight system power switch) + -- SHKVAL + [301] = "%0.1f", -- V-SCAN-PTR (Shkval scan rate) + -- Engines Start-Up Control Panel + --------------------------------------------------- + [412] = "%.1f", -- START-PANEL-START-PTR (Start-up selected engine button) + [413] = "%.1f", -- START-PANEL-STOP-START-PTR ("Interrupt start-up button) + [414] = "%.1f", -- START-PANEL-STOP-START-PTR01 (Stop APU button) + [415] = "%0.1f", -- START-PANEL-ROLLING-PTR (Engine Startup/Crank/False Start selector) + [416] = "%0.1f", -- START-ENGINE-SELECTOR-PTR (Engine selector) + [554] = "%1d", -- EMERGENCY-BRAKE ENGINE-LEFT-PTR (Left engine cut-off valve) + [555] = "%1d", -- EMERGENCY-BRAKE ENGINE-RIGHT-PTR (Right engine cut-off valve) + [556] = "%1d", -- BRAKE-ROTOR-LOW-PTR01 (Rotor brake) + --Radio switcher + --------------------------------------------------- + [428] = "%0.2f", -- RADIO-RATE-PTR (SPU-9 Radio communicator selector) + -- Right Side Panel + --------------------------------------------------- + -- ELECTRICS POWER + [262] = "%1d", -- ENERG-AER-RIT-PTR (DC ground power) + [263] = "%1d", -- ENERG-COVER-AER-RIT-PTR (DC ground power Cover) + [543] = "%1d", -- ENERG-AKK2-PTR (Battery 2) + [544] = "%1d", -- ENERG-COVER-AKK2-PTR (Battery 2 Cover) + [264] = "%1d", -- ENERG-AKK1-PTR (Battery 1) + [265] = "%1d", -- ENERG-COVER-AKK1-PTR (Battery 1 Cover) + [267] = "%1d", -- RAMP-POWER-PTR (AC ground power) + [268] = "%1d", -- GEN-LEFT-PTR (AC left generator) + [269] = "%1d", -- GEN-RIGHT-PTR (AC right generator) + [270] = "%01.f", -- CONVERTER-PTR (DC/AC inverter) {0.0, 0.2} + -- FUEL SYSTEM + [271] = "%1d", -- FUEL-PUMP-FRONT-PTR (Forward fuel tank pumps) + [272] = "%1d", -- FUEL-PUMP-BACK-PTR (Rear fuel tank pumps) + [273] = "%1d", -- FUEL-PUMP-INNER-PTR (Inner external fuel tanks pumps) + [274] = "%1d", -- FUEL-PUMP-OUTER-PTR (Outer external fuel tanks pumps) + [275] = "%1d", -- FUEL-METER-PTR (Fuelmeter power) + [276] = "%1d", -- PAV-CRANE-ENGINE-LEFT-PTR (Left engine fuel shutoff valve) + [277] = "%1d", -- PAV-CRANE-COVER-ENGINE-LEFT-PTR (Left engine fuel shutoff valve) + [278] = "%1d", -- PAV-CRANE-ENGINE-RIGHT-PTR (Right engine fuel shutoff valve) + [279] = "%1d", -- PAV-CRANE-COVER-ENGINE-RIGHT-PTR (Right engine fuel shutoff valve) + [280] = "%1d", -- PAV-CRANE-VSU-PTR (APU fuel shutoff valve) + [281] = "%1d", -- PAV-CRANE-COVER-VSU-PTR (APU fuel shutoff valve Cover) + [282] = "%1d", -- PAV-CRANE-CYKLIZATION-PTR (Fuel crossfeed valve) + [283] = "%1d", -- PAV-CRANE-COVER-CYKLIZATION-PTR (Fuel crossfeed valve Cover) + -- COMMS POWER + [284] = "%1d", -- COMM-PWR-AVSK-PTR (Intercom) + [285] = "%1d", -- COMM-PWR-UKV-1-PTR (VHF-1 (R828) power switch) + [286] = "%1d", -- COMM-PWR-UKV-2-PTR (VHF-2 (R-800) power switch) + [287] = "%1d", -- COMM-PWR-TLK-PTR (Radio equipment datalink TLK power switch) + [288] = "%1d", -- COMM-PWR-UKV-TLK-PTR (Radio equipment datalink UHF TLK power switch) + [289] = "%1d", -- COMM-PWR-SA-TLF-PTR (Radio equipment datalink SA-TLF power switch) + -- WEAPON SYS + [547] = "%1d", -- SUO-PTR (Weapons Control system) + [548] = "%1d", -- SUO-COVER-PTR (Weapons Control system Cover) + -- EJECT SYSTEM + [214] = "%1d", -- RIGHT-EMERG-SW1-PTR (Ejecting system power 1) + [215] = "%1d", -- RIGHT-EMERG-SW2-PTR (Ejecting system power 2) + [216] = "%1d", -- RIGHT-EMERG-SW3-PTR (Ejecting system power 3) + [217] = "%1d", -- RIGHT-COVER-EMERG-VACATION-PTR (Ejecting system power Cover) + [462] = "%0.1f", -- CONTR-SAPROTATE-PTR (Ejecting system circuit selector) + [460] = "%.1f", -- CONTR-SAP-PTR (Ejecting system circuit test) + -- HYDRAULICS + [220] = "%1d", -- HYDRO-PTR (Main hydraulics) + [221] = "%1d", -- HYDRO-COVER-PTR02 (Main hydraulics Cover) + -- IFF + [218] = "%1d", -- SRO-PTR (IFF power) + [219] = "%1d", -- COVER-SRO-PTR (IFF power Cover) + -- NAV SYSTEM + [222] = "%1d", -- PNK-PTR (Navigation system power) + [229] = "%0.1f", -- GYRO-MAG-MAN-HEADING-PTR (Gyro/Mag/Manual heading) + -- Outside illumination + [228] = "%1d", -- FLASHER-PTR (Anticollision Light) + [296] = "%1d", -- CONTUR-LIGHT-PTR (Tip Lights) + [297] = "%0.1f", -- FORMATION-PTR (Formation Lights) + -- ENGINES + [290] = "%1d", -- ERD-LEFT-PTR (EEG Left engine Electronic Engine Governor) + [291] = "%1d", -- ERD-LEFT-COVER-PTR (EEG Left engine Electronic Engine Governor Cover) + [292] = "%1d", -- ERD-RIGHT-PTR (EEG Right engine Electronic Engine Governor) + [293] = "%1d", -- ERD-RIGHT-COVER-PTR (EEG Right engine Electronic Engine Governor Cover) + [294] = "%1d", -- PAV-CRANE-VSU-PTR01 (EEG gas generator test Operate switch) + [569] = "%1d", -- PAV-CRANE-COVER-VSU-PTR01 (EEG gas generator test Operate switch Cover) + [295] = "%0.1f", -- PAV-CRANE-VSU-PTR02 (EEG power turbine channel 1 test Operate EEG power turbine channel 2 test, three-switch contactor) + [570] = "%0.1f", -- PAV-CRANE-COVER-VSU-PTR02 (EEG power turbine channel 1 test Operate EEG power turbine channel 2 test, three-switch contactor Cover) + [457] = "%.1f", -- RT-12-6-LEFT-PTR (Left EGT control threshold governor button) + [458] = "%.1f", -- RT-12-6-RIGHT-PTR (Right EGT control threshold governor button) + [459] = "%.1f", -- RT-12-6-IV-PTR (Engines vibrations monitoring system control button) + -- Lighting + [300] = "%1d", -- DESK-PTR (Lighting cockpit panel switch) + [299] = "%1d", -- DEVICES-PTR (Lighting night vision cockpit switch) + [298] = "%1d", -- AGR-PKP-PTR (Lighting ADI and SAI switch) + -- Fire Extinguishers Control Panel + [236] = "%.1f", -- PUI800-AVARCHOP-PTR01 (Left engine extinguisher) + [238] = "%.1f", -- PUI800-AVARCHOP-PTR02 (APU extinguisher) + [240] = "%.1f", -- PUI800-AVARCHOP-PTR03 (Right engine extinguisher) + [242] = "%.1f", -- PUI800-AVARCHOP-PTR04 (Ventilator extinguisher) + [248] = "%0.1f", -- FIREEXT-PTR (Fire extinguisher Work Off Test switch) + [249] = "%0.1f", -- FIREEXT-COVER-PTR (Fire extinguisher Work Off Test switch Cover) + [250] = "%1d", -- FIREEXT-INDICATION-PTR (Fire signaling) + [246] = "%1d", -- BALOONS-PTR (Fire extinguisher First (Auto) / Second (Manual) selector) + [247] = "%1d", -- BALOONS-COVER-PTR (Fire extinguisher First (Auto) / Second (Manual) selector Cover) + -- Misc. systems + [258] = "%0.1f", -- REDUCTOR-PTR (Reducing gear box oil pressure indication selector) + [259] = "%1d", -- HANGER-PTR (Sling load Auto/Manual) + -- Auxiliary panel + --------------------------------------------------- + -- Preflight Set and Check Panel + [483] = "%0.1f", -- PPK-BBTZ-PTR (ATGM Temperature selector) + [484] = "%0.1f", -- PPK-NRAKS-PTR (Unguided rocket and gun pods ballistics data settings selector) + [485] = "%1d", -- PPK-RNP-PTR (Systems BIT selector) + [486] = "%1d", -- KCVM-PTR (Control computers BIT switch) + [489] = "%.1f", -- AKS-PTR (Self test system push-button) + [490] = "%1d", -- VnK-PTR (Emergency INU alignment switch) + [491] = "%1d", -- ROPE-PTR (Stabilisation and indication of hanger cable switch) + [492] = "%1d", -- FKP-PTR (Video Tape Recorder switch) + [487] = "%1d", -- IKV-PTR (INU Power switch) + [488] = "%1d", -- HEAT_IKV-PTR (INU Heater switch) + [452] = "%1d", -- P-CONTR-VMG-HYDRO-PTR (Power plant, hydraulics, EKRAN self-test systems switch) + [453] = "%1d", -- P-CONTR-VMG-HYDRO-COVER-PTR (Power plant, hydraulics, EKRAN self-test systems switch Cover) + -- PShK_7 (Latitude Entry Panel) + [340] = "%.3f", -- LATITUDE-PTR (Latitude selection rotaty) + [341] = "%1d", -- N-S-PTR (North/South latitude selection) + -- ZMS_3 (Magnetic Variation Entry Panel) + [338] = "%.3f" -- DCLIN-PTR (Magnetic variation selection rotaty) +} + +-- Lookup tables for weapons store type display +ExportScript.AF.Ka50StationTypes = +{ + ["9A4172"] = "NC", + ["S-8KOM"] = "HP", + ["S-13"] = "HP", + ["UPK-23-250"] = "NN", + ["AO-2.5RT"] = "A6", + ["PTAB-2.5KO"] = "A6", + ["FAB-250"] = "A6", + ["FAB-500"] = "A6" +} + +-- State data +ExportScript.AF.Ka50Trigger = 0 + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- function for Ikarus + + local lWeaponSystem = GetDevice(12) + local lCannonAmmoCount = " " + local lStationNumbers = lWeaponSystem:get_selected_weapon_stations() + local lStationCount = " " + local lStationType = " " + local lTargetingPower = mainPanelDevice:get_argument_value(433) + local lTrigger = mainPanelDevice:get_argument_value(615) + if lTrigger == 0 then + ExportScript.AF.Ka50Trigger = 1 + end + if lTrigger == -1 then + ExportScript.AF.Ka50Trigger = 0 + end + + if lTargetingPower == 1 then + lCannonAmmoCount = string.format("%02d",string.match(lWeaponSystem:get_selected_gun_ammo_count() / 10,"(%d+)")) + + if #lStationNumbers ~= 0 and ExportScript.AF.Ka50Trigger == 0 then + lStationCount = 0 + for i=1,#lStationNumbers do + lStationCount = lStationCount + lWeaponSystem:get_weapon_count_on_station(lStationNumbers[i]) + end + + lStationCount = string.format("%02d", lStationCount); + + lStationType = ExportScript.AF.Ka50StationTypes[lWeaponSystem:get_weapon_type_on_station(lStationNumbers[1])] + if lStationType == nil then + lStationType = "" + end + end + end + + -- PUI-800 Weapon panel + --------------------------------------------------- + ExportScript.Tools.SendData(2004, string.format("%s", lStationType)) + ExportScript.Tools.SendData(2005, string.format("%s", lStationCount)) + ExportScript.Tools.SendData(2006, string.format("%s", lCannonAmmoCount)) + + -- UV-26 + local lUV26 = ExportScript.Tools.getListIndicatorValue(7) + + if lUV26 ~= nil and lUV26.txt_digits ~= nil then + ExportScript.Tools.SendData(2007, string.format("%s", lUV26.txt_digits)) + else + ExportScript.Tools.SendData(2007, " ") + end + + -- EKRAN + --------------------------------------------------- + + local lEKRAN = GetDevice(10) + local lEkranSendString = "" + local lEkranText = lEKRAN:get_actual_text_frame() + --ExportScript.Tools.WriteToLog('lEkranText: '..ExportScript.Tools.dump(lEkranText)) + --if lEkranText ~= "" then + if ExportScript.utf8.len(lEkranText) > 0 then + --lEkranSendString = string.sub(lEkranText,1,8).."\n"..string.sub(lEkranText,12,19).."\n"..string.sub(lEkranText,23,30).."\n"..string.sub(lEkranText,34,41) + --ExportScript.Tools.SendData(2010, string.format("%s", string.sub(lEkranText,1,9))) + --ExportScript.Tools.SendData(2011, string.format("%s", string.sub(lEkranText,12,20))) + --ExportScript.Tools.SendData(2012, string.format("%s", string.sub(lEkranText,23,31))) + --ExportScript.Tools.SendData(2013, string.format("%s", string.sub(lEkranText,34,42))) + --ExportScript.Tools.WriteToLog('2011: '..ExportScript.Tools.dump(string.format("%s", ExportScript.utf8.sub(lEkranText,12,20)))) + ExportScript.Tools.SendData(2010, string.format("%s", ExportScript.utf8.sub(lEkranText,1,9))) + ExportScript.Tools.SendData(2011, string.format("%s", ExportScript.utf8.sub(lEkranText,12,20))) + ExportScript.Tools.SendData(2012, string.format("%s", ExportScript.utf8.sub(lEkranText,23,31))) + ExportScript.Tools.SendData(2013, string.format("%s", ExportScript.utf8.sub(lEkranText,34,42))) + else + ExportScript.Tools.SendData(2010, " ") + ExportScript.Tools.SendData(2011, " ") + ExportScript.Tools.SendData(2012, " ") + ExportScript.Tools.SendData(2013, " ") + end + + --[75] = "%0.1f", -- CLOCK_flight_time_meter_status{0.0,0.1,0.2} + -- Ikarus WPClock Ka-50 Clock + -- White = 0.2 0.0 + -- Red = 0.0 0.1 + -- White/Red = 0.6 0.2 + local lClock = string.format("%0.1f", mainPanelDevice:get_argument_value(75)) + if lClock == "0.0" then + ExportScript.Tools.SendData(75, "0.2") + elseif lClock == "0.1" then + ExportScript.Tools.SendData(75, "0.0") + elseif lClock == "0.2" then + ExportScript.Tools.SendData(75, "0.6") + end + + --[[ + local lFAILlight = "" -- FAILURE + local lMEMORYlight = "" -- MEMORY + local lTURNlight = "" -- TURN + if lEkranSendString ~= "" then + lFAILlight = "FAILURE" + end + -- DisplayWindow (main message) + -- FAILlight (failure text) + -- MEMORYlight (memmory text) + -- TURNlight (turn text) + --ExportScript.Tools.SendData(2001, string.format("%s", lEkranSendString)) + --ExportScript.Tools.SendData(2002, string.format("%s", lFAILlight)) + --ExportScript.Tools.SendData(2003, string.format("%s", lMEMORYlight)) + --ExportScript.Tools.SendData(2004, string.format("%s", lTURNlight)) + --ExportScript.Tools.WriteToLog('lEkranSendString: '..ExportScript.Tools.dump(lEkranSendString)) + --ExportScript.Tools.WriteToLog('lFAILlight: '..ExportScript.Tools.dump(lFAILlight)) + --ExportScript.Tools.WriteToLog('lMEMORYlight: '..ExportScript.Tools.dump(lMEMORYlight)) + --ExportScript.Tools.WriteToLog('lTURNlight: '..ExportScript.Tools.dump(lTURNlight)) + ]] + --[[ + --ExportScript.Tools.WriteToLog('EKRAN: '..ExportScript.Tools.dump(list_indication(4))) + local lEKRAN = list_indication(4) + lEKRAN = lEKRAN:gsub("-----------------------------------------", "") + lEKRAN = lEKRAN:gsub("\n", "") -- oder %c + + + local to1, to2, from1, from2, lEKRANframe, lEKRANtxtqueue, lEKRANtxt1, lEKRANtxt2, lEkranSendString = nil, nil, nil, nil, "", "", "", "", "" + to1, to2 = lEKRAN:find("txt_queue") + if (to1 == nil) then + from1, from2 = 1,5 -- lEKRAN:find("frame") + to1, to2 = lEKRAN:find("txt_1") + if (to1 ~= nil) then + lEKRANframe = lEKRAN:sub(from2+1, to1-1) + end + else + from1, from2 = 1,5 -- lEKRAN:find("frame") + --to1, to2 = lEKRAN:find("txt_queue") + lEKRANframe = lEKRAN:sub(from2+1, to1-1) + + from1, from2 = lEKRAN:find("txt_queue") + to1, to2 = lEKRAN:find("txt_1") + if (to1 ~= nil and from2 ~= nil) then + lEKRANtxtqueue = lEKRAN:sub(from2+1, to1-1) + end + end + from1, from2 = lEKRAN:find("txt_1") + to1, to2 = lEKRAN:find("txt_2") + if (to1 ~= nil and from2 ~= nil) then + lEKRANtxtqueue = lEKRAN:sub(from2+1, to1-1) + end + from1, from2 = lEKRAN:find("txt_2") + --to1, to2 = lEKRAN:find("txt_2") + if (from2 ~= nil) then + lEKRANtxt2 = lEKRAN:sub(from2+1, -1) + end + + --ExportScript.Tools.WriteToLog('lEKRANframe: '..ExportScript.Tools.dump(lEKRANframe)) + --ExportScript.Tools.WriteToLog('lEKRANtxtqueue: '..ExportScript.Tools.dump(lEKRANtxtqueue)) + --ExportScript.Tools.WriteToLog('lEKRANtxt1: '..ExportScript.Tools.dump(lEKRANtxt1)) + --ExportScript.Tools.WriteToLog('lEKRANtxt2: '..ExportScript.Tools.dump(lEKRANtxt2)) + + --lEkranSendString = string.sub(lEKRANtxt2,1,9).."\n"..string.sub(lEKRANtxt2,11,19).."\n"..string.sub(lEKRANtxt2,21,29).."\n"..string.sub(lEKRANtxt2,31,39) + ExportScript.Tools.SendData(2010, string.format("%s", string.sub(lEKRANtxt2,1,9))) + ExportScript.Tools.SendData(2011, string.format("%s", string.sub(lEKRANtxt2,11,19))) + ExportScript.Tools.SendData(2012, string.format("%s", string.sub(lEKRANtxt2,21,29))) + ExportScript.Tools.SendData(2013, string.format("%s", string.sub(lEKRANtxt2,31,39))) + ]] + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {300, 299, 298}) + -- Lighting cockpit panel switch, Lighting night vision cockpit switch, Lighting ADI and SAI switch + + -- Datalink Lamps + ExportScript.Tools.SendData(159, string.format("%.1f", mainPanelDevice:get_argument_value(159))) -- PRC_button_SEND {0.0,0.3} + ExportScript.Tools.SendData(150, string.format("%.1f", mainPanelDevice:get_argument_value(150))) -- PRC_button_ESCAPE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(161, string.format("%.1f", mainPanelDevice:get_argument_value(161))) -- PRC_button_ERASE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(15, string.format("%.1f", mainPanelDevice:get_argument_value(15))) -- PRC_button_CLEAN {0.0,0.3} {0,1} + ExportScript.Tools.SendData(16, string.format("%.1f", mainPanelDevice:get_argument_value(16))) -- PRC_button_WINGMAN_ALL {0.0,0.3} {0,1} + ExportScript.Tools.SendData(17, string.format("%.1f", mainPanelDevice:get_argument_value(17))) -- PRC_button_WINGMAN_1 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(18, string.format("%.1f", mainPanelDevice:get_argument_value(18))) -- PRC_button_WINGMAN_2 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(19, string.format("%.1f", mainPanelDevice:get_argument_value(19))) -- PRC_button_WINGMAN_3 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(20, string.format("%.1f", mainPanelDevice:get_argument_value(20))) -- PRC_button_WINGMAN_4 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(21, string.format("%.1f", mainPanelDevice:get_argument_value(21))) -- PRC_button_TARGET_1 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(22, string.format("%.1f", mainPanelDevice:get_argument_value(22))) -- PRC_button_TARGET_2 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(23, string.format("%.1f", mainPanelDevice:get_argument_value(23))) -- PRC_button_TARGET_3 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(50, string.format("%.1f", mainPanelDevice:get_argument_value(50))) -- PRC_button_TARGET_POINT {0.0,0.3} {0,1} + + -- WEAPON INTERFACE + ExportScript.Tools.SendData(437, string.format("%.1f", mainPanelDevice:get_argument_value(437))) -- PRC_button_AUTO_TURN {0.0,0.3} {0,1} + ExportScript.Tools.SendData(438, string.format("%.1f", mainPanelDevice:get_argument_value(438))) -- PRC_button_AIRBORNE_TARGET {0.0,0.3} {0,1} + ExportScript.Tools.SendData(439, string.format("%.1f", mainPanelDevice:get_argument_value(439))) -- PRC_button_FORWARD_HEMISPHERE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(440, string.format("%.1f", mainPanelDevice:get_argument_value(440))) -- PRC_button_GROUND_MOVING_TARGET {0.0,0.3} {0,1} + ExportScript.Tools.SendData(441, string.format("%.1f", mainPanelDevice:get_argument_value(441))) -- PRC_button_CLEAR {0.0,0.3} {0,1} +end + +-- Pointed to by ProcessDACLowImportance, if the player aircraft is a Ka-50 +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- Radio comunication + -- ARK_22 (ADF) Frequncy + local lARK_22 = GetDevice(46) + ExportScript.Tools.SendDataDAC("2000", string.format("%1d", lARK_22:get_channel())) + + -- R_800 + local lR_800 = GetDevice(48) + --ExportScript.Tools.SendDataDAC("2001", string.format("%7.3f", lR_800:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2001",ExportScript.Tools.RoundFreqeuncy(lR_800:get_frequency()/1000000)) + + -- R_828 Channel + local lR_828 = {[0.0]="1",[0.1]="2",[0.2]="3",[0.3]="4",[0.4]="5",[0.5]="6",[0.6]="7",[0.7]="8",[0.8]="9",[0.9]="10"} + ExportScript.Tools.SendDataDAC("2002", lR_828[ExportScript.Tools.round(mainPanelDevice:get_argument_value(371), 1)]) + + -- R_828 Frequency + local lR_828_F = GetDevice(49) + if lR_828_F:is_on() then + --ExportScript.Tools.SendDataDAC("2003", string.format("%7.3f", lR_828_F:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2003", ExportScript.Tools.RoundFreqeuncy(lR_828_F:get_frequency()/1000000)) + else + ExportScript.Tools.SendDataDAC("2003", "-") + end + + -- Weapon + local lWeaponSystem = GetDevice(12) + local lCannonAmmoCount = " " + local lStationNumbers = lWeaponSystem:get_selected_weapon_stations() + local lStationCount = " " + local lStationType = " " + local lTargetingPower = mainPanelDevice:get_argument_value(433) + local lTrigger = mainPanelDevice:get_argument_value(615) + if lTrigger == 0 then + ExportScript.AF.Ka50Trigger = 1 + end + if lTrigger == -1 then + ExportScript.AF.Ka50Trigger = 0 + end + + if lTargetingPower == 1 then + lCannonAmmoCount = string.format("%02d",string.match(lWeaponSystem:get_selected_gun_ammo_count() / 10,"(%d+)")) + + if #lStationNumbers ~= 0 and ExportScript.AF.Ka50Trigger == 0 then + lStationCount = 0 + for i=1,#lStationNumbers do + lStationCount = lStationCount + lWeaponSystem:get_weapon_count_on_station(lStationNumbers[i]) + end + + lStationCount = string.format("%02d", lStationCount); + + lStationType = ExportScript.AF.Ka50StationTypes[lWeaponSystem:get_weapon_type_on_station(lStationNumbers[1])] + if lStationType == nil then + lStationType = " " + end + end + end + + --ExportScript.Tools.SendDataDAC("2004",lStationType) + ExportScript.Tools.SendDataDAC("2005",lStationCount) + ExportScript.Tools.SendDataDAC("2006",lCannonAmmoCount) + + -- UV-26 + local lUV26 = ExportScript.Tools.getListIndicatorValue(7) + + if lUV26 ~= nil and lUV26.txt_digits ~= nil then + ExportScript.Tools.SendDataDAC("2007", string.format("%s", lUV26.txt_digits)) + else + ExportScript.Tools.SendDataDAC("2007", "-") + end + + local lPVI800 = list_indication(5) + --[[ + txt_VIT Inhalt obere Zeile + txt_NIT Inhalt untere Zeile + txt_OIT_PPM Punkt obere Zeile + txt_OIT_NOT Punkt untere Zeile + txt_VIT_apostrophe1 1. Apostroph obere Zeile 3. Ziffer + txt_VIT_apostrophe2 2. Apostroph obere Zeile 5. Ziffer + txt_NIT_apostrophe1 1. Apostroph untere Zeile 3. Ziffer + txt_NIT_apostrophe2 2. Apostroph untere Zeile 5. Ziffer + ]] + local ltxt_upper_row, ltxt_lower_row = "" + local lpos1, pos2, lpos3, pos4, ltxt_VIT, ltxt_NIT, ltxt_OIT_PPM, ltxt_OIT_NOT + local ltxt_VIT_apostrophe1, ltxt_VIT_apostrophe2, ltxt_NIT_apostrophe1, ltxt_NIT_apostrophe2 = false + lpos1, pos2 = lPVI800:find("txt_VIT%c", 1) + if pos2 ~= nil then + lpos3, pos4 = lPVI800:find("-----------------------------------------", pos2) + if lpos3 ~= nil then + ltxt_VIT = lPVI800:sub(pos2 + 1, lpos3 - 2) + else + ltxt_VIT = lPVI800:sub(pos2 + 1) + end + end + lpos1, pos2 = lPVI800:find("txt_NIT%c", 1) + if pos2 ~= nil then + lpos3, pos4 = lPVI800:find("-----------------------------------------", pos2) + if lpos3 ~= nil then + ltxt_NIT = lPVI800:sub(pos2 + 1, lpos3 - 2) + else + ltxt_NIT = lPVI800:sub(pos2 + 1) + end + end + lpos1, pos2 = lPVI800:find("txt_OIT_PPM%c", 1) + if pos2 ~= nil then + lpos3, pos4 = lPVI800:find("-----------------------------------------", pos2) + if lpos3 ~= nil then + ltxt_OIT_PPM = lPVI800:sub(pos2 + 1, lpos3 - 2) + else + ltxt_OIT_PPM = lPVI800:sub(pos2 + 1) + end + end + lpos1, pos2 = lPVI800:find("txt_OIT_NOT%c", 1) + if pos2 ~= nil then + lpos3, pos4 = lPVI800:find("-----------------------------------------", pos2) + if lpos3 ~= nil then + ltxt_OIT_NOT = lPVI800:sub(pos2 + 1, lpos3 - 2) + else + ltxt_OIT_NOT = lPVI800:sub(pos2 + 1) + end + end + lpos1, pos2 = lPVI800:find("txt_VIT_apostrophe1", 1) + if pos2 ~= nil then + ltxt_VIT_apostrophe1 = true + end + lpos1, pos2 = lPVI800:find("txt_VIT_apostrophe2", 1) + if pos2 ~= nil then + ltxt_VIT_apostrophe2 = true + end + lpos1, pos2 = lPVI800:find("txt_NIT_apostrophe1", 1) + if pos2 ~= nil then + ltxt_NIT_apostrophe1 = true + end + lpos1, pos2 = lPVI800:find("txt_NIT_apostrophe2", 1) + if pos2 ~= nil then + ltxt_NIT_apostrophe2 = true + end + + if ltxt_VIT ~= nil then + ltxt_VIT = ltxt_VIT:gsub("%c", "") + ltxt_upper_row = ltxt_VIT:sub(1, 3) + if ltxt_VIT_apostrophe1 then + ltxt_upper_row = ltxt_upper_row.."." + end + ltxt_upper_row = ltxt_upper_row..ltxt_VIT:sub(4, 5) + if ltxt_VIT_apostrophe2 then + ltxt_upper_row = ltxt_upper_row.."." + end + ltxt_upper_row = ltxt_upper_row..ltxt_VIT:sub(6) + end + + if ltxt_NIT ~= nil then + ltxt_NIT = ltxt_NIT:gsub("%c", "") + ltxt_lower_row = ltxt_NIT:sub(1, 3) + if ltxt_NIT_apostrophe1 then + ltxt_lower_row = ltxt_lower_row.."." + end + ltxt_lower_row = ltxt_lower_row..ltxt_NIT:sub(4, 5) + if ltxt_NIT_apostrophe2 then + ltxt_lower_row = ltxt_lower_row.."." + end + ltxt_lower_row = ltxt_lower_row..ltxt_NIT:sub(6) + end + + if ltxt_VIT ~= nil then + ltxt_upper_row = ltxt_upper_row..string.rep(" ", 7 - ltxt_VIT:len()) + else + ltxt_upper_row = string.rep(" ", 7) + end + + if ltxt_OIT_PPM ~= nil then + ltxt_OIT_PPM = ltxt_OIT_PPM:gsub("%c", "") + ltxt_upper_row = ltxt_upper_row..ltxt_OIT_PPM + else + ltxt_upper_row = ltxt_upper_row.." " + end + + if ltxt_NIT ~= nil then + ltxt_lower_row = ltxt_lower_row..string.rep(" ", 7 - ltxt_NIT:len()) + else + ltxt_lower_row = string.rep(" ", 7) + end + + if ltxt_OIT_NOT ~= nil then + ltxt_OIT_NOT = ltxt_OIT_NOT:gsub("%c", "") + ltxt_lower_row = ltxt_lower_row..ltxt_OIT_NOT + else + ltxt_lower_row = ltxt_lower_row.." " + end + + ExportScript.Tools.SendDataDAC("2008", string.format("%s", ltxt_upper_row)) + ExportScript.Tools.SendDataDAC("2009", string.format("%s", ltxt_lower_row)) + + -- Datalink Lamps + ExportScript.Tools.SendData(159, (mainPanelDevice:get_argument_value(159) > 0 and 1 or 0)) -- PRC_button_SEND {0.0,0.3} {0,1} + ExportScript.Tools.SendData(150, (mainPanelDevice:get_argument_value(150) > 0 and 1 or 0)) -- PRC_button_ESCAPE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(161, (mainPanelDevice:get_argument_value(161) > 0 and 1 or 0)) -- PRC_button_ERASE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(15, (mainPanelDevice:get_argument_value(15) > 0 and 1 or 0)) -- PRC_button_CLEAN {0.0,0.3} {0,1} + ExportScript.Tools.SendData(16, (mainPanelDevice:get_argument_value(16) > 0 and 1 or 0)) -- PRC_button_WINGMAN_ALL {0.0,0.3} {0,1} + ExportScript.Tools.SendData(17, (mainPanelDevice:get_argument_value(17) > 0 and 1 or 0)) -- PRC_button_WINGMAN_1 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(18, (mainPanelDevice:get_argument_value(18) > 0 and 1 or 0)) -- PRC_button_WINGMAN_2 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(19, (mainPanelDevice:get_argument_value(19) > 0 and 1 or 0)) -- PRC_button_WINGMAN_3 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(20, (mainPanelDevice:get_argument_value(20) > 0 and 1 or 0)) -- PRC_button_WINGMAN_4 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(21, (mainPanelDevice:get_argument_value(21) > 0 and 1 or 0)) -- PRC_button_TARGET_1 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(22, (mainPanelDevice:get_argument_value(22) > 0 and 1 or 0)) -- PRC_button_TARGET_2 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(23, (mainPanelDevice:get_argument_value(23) > 0 and 1 or 0)) -- PRC_button_TARGET_3 {0.0,0.3} {0,1} + ExportScript.Tools.SendData(50, (mainPanelDevice:get_argument_value(50) > 0 and 1 or 0)) -- PRC_button_TARGET_POINT {0.0,0.3} {0,1} + + -- WEAPON INTERFACE + ExportScript.Tools.SendData(437, (mainPanelDevice:get_argument_value(437) > 0 and 1 or 0)) -- PRC_button_AUTO_TURN {0.0,0.3} {0,1} + ExportScript.Tools.SendData(438, (mainPanelDevice:get_argument_value(438) > 0 and 1 or 0)) -- PRC_button_AIRBORNE_TARGET {0.0,0.3} {0,1} + ExportScript.Tools.SendData(439, (mainPanelDevice:get_argument_value(439) > 0 and 1 or 0)) -- PRC_button_FORWARD_HEMISPHERE {0.0,0.3} {0,1} + ExportScript.Tools.SendData(440, (mainPanelDevice:get_argument_value(440) > 0 and 1 or 0)) -- PRC_button_GROUND_MOVING_TARGET {0.0,0.3} {0,1} + ExportScript.Tools.SendData(441, (mainPanelDevice:get_argument_value(441) > 0 and 1 or 0)) -- PRC_button_CLEAR {0.0,0.3} {0,1} + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 2 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "R_800 FM/AM" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 48 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 100.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3011 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 1.0 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua +-- ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active +-- ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active +-- ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua +-- ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} +-- ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3006 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 1.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua +-- ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset +-- ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua + -- ManualPreset is AM FM modus switch Manual=AM, Preset=FM + ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3002 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 1.0-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.0-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "R_828 VHF" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 49 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = false -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style +-- ExportScript.genericRadioConf[2]['FrequencyStep'] = 25 -- minimal step for frequency change +-- ExportScript.genericRadioConf[2]['minFrequency'] = 116.000 -- lowest frequency +-- ExportScript.genericRadioConf[2]['maxFrequency'] = 151.975 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3003 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3002 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 371 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="1",[0.1]="2",[0.2]="3",[0.3]="4",[0.4]="5",[0.5]="6",[0.6]="7",[0.7]="8",[0.8]="9",[0.9]="10"} + ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.1 -- minimal step for preset change + ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3004 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 1.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua + -- Load Button is Autotune + ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3003 -- load button id from cklickable.lua + ExportScript.genericRadioConf[2]['Load']['ArgumentID'] = 375 -- load argument id for autotune lamp on Ka-50 +-- ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active +-- ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 0 -- ManualPreset button id from cklickable.lua +-- ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua +-- ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.0-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + +end + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + ExportScript.Tools.SendData(44, string.format("%.1f", mainPanelDevice:get_argument_value(44))) -- lamp_MasterWarning {0.0,0.3} {0,1} + ExportScript.Tools.SendData(46, string.format("%.1f", mainPanelDevice:get_argument_value(46))) -- lamp_RotorRPM {0.0,0.1} {0,1} +end + +-- Pointed to by ProcessDACHighImportance, if the player aircraft is a Ka-50 +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + ExportScript.Tools.SendDataDAC("44", mainPanelDevice:get_argument_value(44) > 0.0 and 1 or 0) -- lamp_MasterWarning {0.0,0.3} + ExportScript.Tools.SendDataDAC("46", mainPanelDevice:get_argument_value(46) > 0.0 and 1 or 0) -- lamp_RotorRPM {0.0,0.1} + +--[[ + -- ENGINE_INTERFACE + local lENGINE_INTERFACE = GetDevice(4) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_left_engine_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_left_engine_temp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_left_engine_rpm '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_left_engine_rpm())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_right_engine_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_right_engine_temp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_right_engine_rpm '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_right_engine_rpm())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_apu_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_apu_temp())) + + -- ABRIS + local lABRIS = GetDevice(9) + ExportScript.Tools.WriteToLog('lABRIS:get_active_route '..ExportScript.Tools.dump(lABRIS:get_active_route())) + ExportScript.Tools.WriteToLog('lABRIS:get_edited_route '..ExportScript.Tools.dump(lABRIS:get_edited_route())) + ExportScript.Tools.WriteToLog('lABRIS:get_sns_mode '..ExportScript.Tools.dump(lABRIS:get_sns_mode())) + ExportScript.Tools.WriteToLog('lABRIS:get_current_route '..ExportScript.Tools.dump(lABRIS:get_current_route())) + --ExportScript.Tools.WriteToLog('lABRIS:get_current_route_segment_info '..ExportScript.Tools.dump(lABRIS:get_current_route_segment_info())) -- DCS Error + ExportScript.Tools.WriteToLog('lABRIS:get_mode '..ExportScript.Tools.dump(lABRIS:get_mode())) + ExportScript.Tools.WriteToLog('lABRIS:print_to_console '..ExportScript.Tools.dump(lABRIS:print_to_console())) + --ExportScript.Tools.WriteToLog('lABRIS:replace_last_console_line '..ExportScript.Tools.dump(lABRIS:replace_last_console_line())) -- DCS Error + + -- EKRAN + local lEKRAN = GetDevice(10) + ExportScript.Tools.WriteToLog('lEKRAN:get_actual_text_frame '..ExportScript.Tools.dump(lEKRAN:get_actual_text_frame())) + + -- WEAP_INTERFACE + local lWEAP_INTERFACE = GetDevice(12) + ExportScript.Tools.WriteToLog('lWEAP_INTERFACE:get_weapon_type_on_station '..ExportScript.Tools.dump(lWEAP_INTERFACE:get_weapon_type_on_station())) + ExportScript.Tools.WriteToLog('lWEAP_INTERFACE:get_selected_weapon_stations '..ExportScript.Tools.dump(lWEAP_INTERFACE:get_selected_weapon_stations())) + ExportScript.Tools.WriteToLog('lWEAP_INTERFACE:get_selected_gun_ammo '..ExportScript.Tools.dump(lWEAP_INTERFACE:get_selected_gun_ammo())) + ExportScript.Tools.WriteToLog('lWEAP_INTERFACE:get_selected_gun_ammo_count '..ExportScript.Tools.dump(lWEAP_INTERFACE:get_selected_gun_ammo_count())) + ExportScript.Tools.WriteToLog('lWEAP_INTERFACE:get_weapon_count_on_station '..ExportScript.Tools.dump(lWEAP_INTERFACE:get_weapon_count_on_station())) + + -- DISS + local lDISS = GetDevice(16) + ExportScript.Tools.WriteToLog('lDISS:get_w_vector '..ExportScript.Tools.dump(lDISS:get_w_vector())) + ExportScript.Tools.WriteToLog('lDISS:get_drift_angle '..ExportScript.Tools.dump(lDISS:get_drift_angle())) + + -- NAV_INTERFACE + local lNAV_INTERFACE = GetDevice(28) + ExportScript.Tools.WriteToLog('lNAV_INTERFACE:get_indicated_air_speed '..ExportScript.Tools.dump(lNAV_INTERFACE:get_indicated_air_speed())) + ExportScript.Tools.WriteToLog('lNAV_INTERFACE:get_vertical_velocity '..ExportScript.Tools.dump(lNAV_INTERFACE:get_vertical_velocity())) + + -- HSI + local lHSI = GetDevice(30) + ExportScript.Tools.WriteToLog('lHSI:get_course '..ExportScript.Tools.dump(lHSI:get_course())) + ExportScript.Tools.WriteToLog('lHSI:get_course_dev_warning_flag '..ExportScript.Tools.dump(lHSI:get_course_dev_warning_flag())) + ExportScript.Tools.WriteToLog('lHSI:get_heading '..ExportScript.Tools.dump(lHSI:get_heading())) + ExportScript.Tools.WriteToLog('lHSI:get_heading_warning_flag '..ExportScript.Tools.dump(lHSI:get_heading_warning_flag())) + ExportScript.Tools.WriteToLog('lHSI:get_glideslope_dev_warning_flag '..ExportScript.Tools.dump(lHSI:get_glideslope_dev_warning_flag())) + ExportScript.Tools.WriteToLog('lHSI:get_range '..ExportScript.Tools.dump(lHSI:get_range())) + ExportScript.Tools.WriteToLog('lHSI:get_commanded_course '..ExportScript.Tools.dump(lHSI:get_commanded_course())) + ExportScript.Tools.WriteToLog('lHSI:get_bearing '..ExportScript.Tools.dump(lHSI:get_bearing())) + ExportScript.Tools.WriteToLog('lHSI:get_commanded_heading '..ExportScript.Tools.dump(lHSI:get_commanded_heading())) + + -- ADI + local lADI = GetDevice(31) + ExportScript.Tools.WriteToLog('lADI:get_sideslip '..ExportScript.Tools.dump(lADI:get_sideslip())) + ExportScript.Tools.WriteToLog('lADI:get_attitude_warn_flag_val '..ExportScript.Tools.dump(lADI:get_attitude_warn_flag_val())) + ExportScript.Tools.WriteToLog('lADI:get_pitch_steering '..ExportScript.Tools.dump(lADI:get_pitch_steering())) + ExportScript.Tools.WriteToLog('lADI:get_track_deviation '..ExportScript.Tools.dump(lADI:get_track_deviation())) + ExportScript.Tools.WriteToLog('lADI:get_airspeed_deviation '..ExportScript.Tools.dump(lADI:get_airspeed_deviation())) + ExportScript.Tools.WriteToLog('lADI:get_height_deviation '..ExportScript.Tools.dump(lADI:get_height_deviation())) + ExportScript.Tools.WriteToLog('lADI:get_bank_steering '..ExportScript.Tools.dump(lADI:get_bank_steering())) + ExportScript.Tools.WriteToLog('lADI:get_pitch '..ExportScript.Tools.dump(lADI:get_pitch())) + ExportScript.Tools.WriteToLog('lADI:get_steering_warn_flag_val '..ExportScript.Tools.dump(lADI:get_steering_warn_flag_val())) + ExportScript.Tools.WriteToLog('lADI:get_bank '..ExportScript.Tools.dump(lADI:get_bank())) + + -- AUTOPILOT + local lAUTOPILOT = GetDevice(33) + ExportScript.Tools.WriteToLog('lAUTOPILOT:get_channel_status_Bank '..ExportScript.Tools.dump(lAUTOPILOT:get_channel_status_Bank())) + ExportScript.Tools.WriteToLog('lAUTOPILOT:get_directional_mode '..ExportScript.Tools.dump(lAUTOPILOT:get_directional_mode())) + ExportScript.Tools.WriteToLog('lAUTOPILOT:get_channel_status_Yaw '..ExportScript.Tools.dump(lAUTOPILOT:get_channel_status_Yaw())) + ExportScript.Tools.WriteToLog('lAUTOPILOT:get_channel_status_Pitch '..ExportScript.Tools.dump(lAUTOPILOT:get_channel_status_Pitch())) + ExportScript.Tools.WriteToLog('lAUTOPILOT:get_channel_status_Height '..ExportScript.Tools.dump(lAUTOPILOT:get_channel_status_Height())) + + -- RADAR_ALTIMETER + local lRADAR_ALTIMETER = GetDevice(38) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_altitude '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_altitude())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_dangerous_height_flag '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_dangerous_height_flag())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_distance_limit '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_distance_limit())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_dangerous_height '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_dangerous_height())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_warning_flag '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_warning_flag())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_mode '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_mode())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_aperture_size '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_aperture_size())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_needle_value '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_needle_value())) + + -- MISC_SYSTEMS_INTERFACE + local lMISC_SYSTEMS_INTERFACE = GetDevice(41) + ExportScript.Tools.WriteToLog('lMISC_SYSTEMS_INTERFACE:get_rotor_blades_pitch '..ExportScript.Tools.dump(lMISC_SYSTEMS_INTERFACE:get_rotor_blades_pitch())) + ExportScript.Tools.WriteToLog('lMISC_SYSTEMS_INTERFACE:get_main_rotor_rpm '..ExportScript.Tools.dump(lMISC_SYSTEMS_INTERFACE:get_main_rotor_rpm())) + + -- ARK_22 + local lARK_22 = GetDevice(46) + ExportScript.Tools.WriteToLog('lARK_22:get_channel '..ExportScript.Tools.dump(lARK_22:get_channel())) + ExportScript.Tools.WriteToLog('lARK_22:get_mode '..ExportScript.Tools.dump(lARK_22:get_mode())) + ExportScript.Tools.WriteToLog('lARK_22:get_homer_selector_pos '..ExportScript.Tools.dump(lARK_22:get_homer_selector_pos())) + + -- R_800 + local lR_800 = GetDevice(48) + ExportScript.Tools.WriteToLog('lR_800:is_on '..ExportScript.Tools.dump(lR_800:is_on())) + ExportScript.Tools.WriteToLog('lR_800:get_frequency '..ExportScript.Tools.dump(lR_800:get_frequency())) + --ExportScript.Tools.WriteToLog('lR_800:set_modulation '..ExportScript.Tools.dump(lR_800:set_modulation())) -- test the parameters + --ExportScript.Tools.WriteToLog('lR_800:set_frequency '..ExportScript.Tools.dump(lR_800:(set_frequency))) -- test the parameters + + -- R_828 + local R_828 = GetDevice(49) + ExportScript.Tools.WriteToLog('R_828:is_on '..ExportScript.Tools.dump(R_828:is_on())) + ExportScript.Tools.WriteToLog('R_828:get_frequency '..ExportScript.Tools.dump(R_828:get_frequency())) + --ExportScript.Tools.WriteToLog('R_828:set_modulation '..ExportScript.Tools.dump(R_828:set_modulation())) -- test the parameters + --ExportScript.Tools.WriteToLog('R_828:set_frequency '..ExportScript.Tools.dump(R_828:(set_frequency))) -- test the parameters + --ExportScript.Tools.WriteToLog('R_828:set_channel '..ExportScript.Tools.dump(R_828:(set_channel))) -- test the parameters + + -- SPU_9 + local lSPU_9 = GetDevice(50) + ExportScript.Tools.WriteToLog('lSPU_9:get_is_on '..ExportScript.Tools.dump(lSPU_9:get_is_on())) + ExportScript.Tools.WriteToLog('lSPU_9:is_communicator_available '..ExportScript.Tools.dump(lSPU_9:is_communicator_available())) + ExportScript.Tools.WriteToLog('lSPU_9:get_selector_pos '..ExportScript.Tools.dump(lSPU_9:get_selector_pos())) + ExportScript.Tools.WriteToLog('lSPU_9:get_noise_level '..ExportScript.Tools.dump(lSPU_9:get_noise_level())) + ExportScript.Tools.WriteToLog('lSPU_9:get_signal_level '..ExportScript.Tools.dump(lSPU_9:get_signal_level())) + --ExportScript.Tools.WriteToLog('lSPU_9:set_communicator '..ExportScript.Tools.dump(lSPU_9:set_communicator())) -- test the parameters + --ExportScript.Tools.WriteToLog('lSPU_9:set_voip_mode '..ExportScript.Tools.dump(lSPU_9:set_voip_mode())) -- test the parameters + + -- STBY_ADI + local lSTBY_ADI = GetDevice(55) + ExportScript.Tools.WriteToLog('lSTBY_ADI:get_sideslip '..ExportScript.Tools.dump(lSTBY_ADI:get_sideslip())) + ExportScript.Tools.WriteToLog('lSTBY_ADI:get_bank '..ExportScript.Tools.dump(lSTBY_ADI:get_bank())) + ExportScript.Tools.WriteToLog('lSTBY_ADI:get_pitch '..ExportScript.Tools.dump(lSTBY_ADI:get_pitch())) + ]] + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end diff --git a/ExportsModules/L-39C.lua b/ExportsModules/L-39C.lua new file mode 100644 index 0000000..47e58e9 --- /dev/null +++ b/ExportsModules/L-39C.lua @@ -0,0 +1,852 @@ +-- L-39C + +ExportScript.FoundDCSModule = true +ExportScript.Version.L39C = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + -- Front Seat + -- Mechanic clock + [67] = "%.4f", -- CLOCK currtime hours + [68] = "%.4f", -- CLOCK currtime minutes + [70] = "%.4f", -- CLOCK seconds meter time seconds + [73] = "%.4f", -- CLOCK flight time meter status + [71] = "%.4f", -- CLOCK flight hours + [72] = "%.4f", -- CLOCK flight minutes + [69] = "%.4f", -- CLOCK seconds meter time minutes + -- Radar altimeter RV-5 + [58] = "%.4f", -- RV-5 RALT {0.0, 0.086, 0.439, 0.878, 0.955}{0.0, 20.0, 100.0, 700.0, 800.0} + [59] = "%.4f", -- RV-5 DangerRALT index {0.0, 0.094, 0.48, 0.998}{0.0, 20.0, 100.0, 700.0} + [62] = "%.4f", -- RV-5 warning flag + [63] = "%.f", -- RV-5 DangerRALT lamp + -- Variometer + [74] = "%.4f", -- Variometer {-1.0, -0.875, -0.775, -0.44, 0.0, 0.44, 0.775, 0.875, 1.0}{-80.0, -50.0, -20.0, -10.0, 0.0, 10.0, 20.0, 50.0, 80.0} + [76] = "%.4f", -- Variometer sideslip {-1.0, 1.0} + [75] = "%.4f", -- Variometer turn {-1.0, -0.58, -0.275, 0.275, 0.58, 1.0} {-math.rad(5.7), math.rad(-3.8), math.rad(-1.9), math.rad(1.9), math.rad(3.8), math.rad(5.7)} + -- KPP (ADI) + [38] = "%.4f", -- KPP 1273K roll {-1.0, 1.0} {-math.pi, math.pi} + --[31] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[40] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + [35] = "%.4f", -- KPP Course Deviation Bar {-1.0, 1.0} + [34] = "%.4f", -- KPP Alt Deviation Bar {-1.0, 1.0} + [36] = "%1d", -- KPP Glide Beacon + [37] = "%1d", -- KPP Localizer Beacon + [29] = "%.4f", -- KPP Arretir + [32] = "%.4f", -- KPP SDU Roll {-1.0, 1.0} + [33] = "%.4f", -- KPP SDU Pitch {-1.0, 1.0} + -- NPP (HSI) + --[41] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[42] = "%.4f", -- HSI commanded course needle (yellow needle) {1.0, 0.0} {0.0, math.pi * 2.0} + [43] = "%.4f", -- HSI bearing needle {1.0, 0.0} {0.0, math.pi * 2.0} + [47] = "%.4f", -- HSI Course Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [45] = "%.4f", -- HSI Alt Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [46] = "%.4f", -- HSI Glide Beacon G + [44] = "%.4f", -- HSI Localizer Beacon K + -- RSBN + --[189] = "%.4f", -- RSBN NAV Chan {0.0, 0.39} {1.0, 40.0} + --[190] = "%.4f", -- RSBN LAND Chan {0.0, 0.39} {1.0, 40.0} + [66] = "%.4f", -- RSBN Range 100 + [65] = "%.4f", -- RSBN Range 10 + [64] = "%.4f", -- RSBN Range 1 + [580] = "%.4f", -- RSBN PanelLightsLmp + -- Barometric altimeter VD-20 + [52] = "%.4f", -- VD-20 km {0.0, 1.0}{0.0, 20.0} + [53] = "%.4f", -- VD-20 m {0.0, 1.0}{0.0, 1000.0} + [54] = "%.4f", -- VD-20 km Ind {0.0, 1.0}{0.0, 20.0} + [55] = "%.4f", -- VD-20 m Ind {0.0, 1.0}{0.0, 1000.0} + --[56] = "%.4f", -- VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + -- Barometric altimeter + -- Altimeter Feet , copy of A-10 altimeter + [637] = "%.4f", -- Altimeter_100_footPtr {0.0, 1.0}{0.0, 1000.0} + [632] = "%.4f", -- Altimeter_10000_footCount {0.0, 1.0}{0.0, 10.0} + [631] = "%.4f", -- Altimeter_1000_footCount {0.0, 1.0}{0.0, 10.0} + [630] = "%.4f", -- Altimeter_100_footCount {0.0, 1.0}{0.0, 10.0} + [636] = "%.4f", -- pressure_setting_0 {0.0, 1.0}{0.0, 10.0} + [635] = "%.4f", -- pressure_setting_1 {0.0, 1.0}{0.0, 10.0} + [634] = "%.4f", -- pressure_setting_2 {0.0, 1.0}{0.0, 10.0} + [633] = "%.4f", -- pressure_setting_3 {0.0, 1.0}{0.0, 10.0} + -- AIRSPEED AND MACH + [49] = "%.4f", -- IAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [50] = "%.4f", -- TAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [51] = "%.4f", -- MACH + -- RKL-41 + [77] = "%.4f", -- RKL-41 needle {0.0, 1.0}{0.0, math.pi * 2.0} + [156] = "%.4f", -- RKL-41 Signal + [531] = "%.4f", -- KM-8 heading {0.0, 1.0}{0.0, math.pi * 2.0} + [530] = "%.4f", -- KM-8 variation {1.0, -1.0}{-math.pi, math.pi} + -- electric interface + [92] = "%.4f", -- Voltmeter {0.0, 1.0}{0.0, 40.0} + [93] = "%.4f", -- Ampermeter {0.0, 1.0}{-100.0, 300.0} + -- oxygen interface + [301] = "%.4f", -- OxygenPressure {0.0, 0.025, 0.925, 1.0}{0.0, 10.0, 150.0, 160.0} + [302] = "%.4f", -- FlowBlinker + -- accelerometer + [86] = "%.4f", -- Acceleration {0.0, 1.0}{-5.0, 10.0} + [88] = "%.4f", -- AccelerationMin {0.31, 0.695}{-5.0, 1.0} + [87] = "%.4f", -- AccelerationMax {0.0, 1.0}{-5.0, 10.0} + -- + [95] = "%.4f", -- CockpitAlt {0.0, 1.0}{0.0, 20000.0} + [96] = "%.4f", -- PressDiff {0.0, 0.102, 0.202, 0.398, 0.779, 1.0}{-0.04, -0.02, 0.0, 0.1, 0.4, 0.6} + -- Hydro Pressure + [198] = "%.4f", -- MainHydro PRESS {0.0, 1.0}{0.0, 200.0} + [200] = "%.4f", -- AuxHydro PRESS {0.0, 1.0}{0.0, 200.0} + [98] = "%.4f", -- BrakeLMainHydro PRESS {0.0, 1.0}{0.0, 60.0} + [99] = "%.4f", -- BrakeRMainHydro PRESS {0.0, 1.0}{0.0, 60.0} + [100] = "%.4f", -- BrakeAuxHydro PRESS {0.0, 1.0}{0.0, 60.0} + -- Fuel Quantity + [91] = "%.4f", -- Fuel Quantity {0.0, 0.127, 0.239, 0.35, 0.458, 0.56, 0.685, 0.82, 1.0}{0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 825.0} + -- Fan RPM + [85] = "%.4f", -- Fan RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Compressor RPM + [84] = "%.4f", -- Compressor RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Oil + [83] = "%.4f", -- Oil Temp {0.0, 0.323, 0.576, 0.817, 1.0}{-50.0, 0.0, 50.0, 100.0, 150.0} + [82] = "%.4f", -- Oil Press {0.0, 0.077, 1.0}{-1.0, 0.0, 6.0} + -- Fuel Press + [81] = "%.4f", -- Fuel Press {0.0, 0.06, 0.148, 0.323, 0.547, 0.659, 0.801, 1.0}{-1.0, 0.0, 20.0, 40.0, 60.0, 70.0, 80.0, 100.0} + -- Engine Temp + [90] = "%.4f", -- Engine Temp {0.0, 1.0}{0.0, 900.0} + -- EngineVibration + [94] = "%.4f", -- EngineVibration {0.0, 1.0}{0.0, 100.0} + -- PitchTrimInd + [247] = "%.4f", -- PitchTrimInd {1.0, -1.0}{-1.0, 1.0} + -- lights system + --[533] = "%.4f", -- CptInstrumentLightsIntensity + --[558] = "%.4f", -- CompassLightIntensity + --[555] = "%.4f", -- EmergencyLightIntensity + -- RKL-41 Radio Compass + [561] = "%.f", -- FarNDBSelectorLamp + [570] = "%.f", -- NearNDBSelectorLamp + [563] = "%.f", -- PanelLights + -- BrakeHandle + [127] = "%.4f", -- BrakeHandle + -- Lamps + [18] = "%.f", -- MRP 56 + [6] = "%.f", -- MainGenerator + [9] = "%.f", -- ReserveGennerator + [12] = "%.f", -- Inverter115 + [16] = "%.f", -- Inverter363 + [316] = "%.f", -- GroundPower + [278] = "%.f", -- FlapsUp + [279] = "%.f", -- FlapsTO + [280] = "%.f", -- FlapsDn + [117] = "%.f", -- AirBrakes + [113] = "%.f", -- GearDown front + [112] = "%.f", -- GearDown left + [114] = "%.f", -- GearDown right + [110] = "%.f", -- GearUp front + [109] = "%.f", -- GearUp left + [111] = "%.f", -- GearUp right + [115] = "%.f", -- ExtendGears + [116] = "%.f", -- DoorsOut + [185] = "%.f", -- RSBN Azim Correction + [186] = "%.f", -- RSBN Range Correction + [15] = "%.f", -- BreakdownFinished + [123] = "%.f", -- GA TILT + [206] = "%.f", -- GA TILT PU26 + [2] = "%.f", -- DangerAltitude + [27] = "%.f", -- EmergFuel + [23] = "%.f", -- TurboStarter + [4] = "%.f", -- Remain150 + [7] = "%.f", -- DoNotStart + [26] = "%.f", -- FuelFilter + [14] = "%.f", -- WingTanks + [246] = "%.f", -- TrimmerRollNeutral + [3] = "%.f", -- MachMeterLamp + [10] = "%.f", -- CanopyNotClosed + [556] = "%.f", -- LeftPitot + [557] = "%.f", -- RightPitot + [8] = "%.f", -- Vibration + [1] = "%.f", -- Fire + [28] = "%.f", -- EngineTemperature700 + [24] = "%.f", -- EngineTemperature730 + [20] = "%.f", -- EngineMinOilPressure + [359] = "%.f", -- RSBN Azim Correct + [362] = "%.f", -- RSBN Range Correct + [19] = "%.f", -- HSI Accordance + [11] = "%.f", -- CockpitPressure + [22] = "%.f", -- ConditioningClosed + [25] = "%.f", -- Defrost + [21] = "%.f", -- Ice + [182] = "%.f", -- RIO HeatingOk + [5] = "%.f", -- HydraulicPressureDrop + [253] = "%.f", -- MasterDanger + [17] = "%.f", -- EmergConditioning + [562] = "%.f", -- RadioUnderControl + -- Back Seat + -- Mechanic clock + [405] = "%.4f", -- Backseat - CLOCK currtime hours + [406] = "%.4f", -- Backseat - CLOCK currtime minutes + [408] = "%.4f", -- Backseat - CLOCK seconds meter time seconds + [411] = "%.4f", -- Backseat - CLOCK flight time meter status + [409] = "%.4f", -- Backseat - CLOCK flight hours + [410] = "%.4f", -- Backseat - CLOCK flight minutes + [407] = "%.4f", -- Backseat - CLOCK seconds meter time minutes + -- Radar altimeter RV-5 + [396] = "%.4f", -- Backseat - RV-5 RALT {0.0, 0.086, 0.439, 0.878, 0.955}{0.0, 20.0, 100.0, 700.0, 800.0} + [397] = "%.4f", -- Backseat - RV-5 DangerRALT index {0.0, 0.094, 0.48, 0.998}{0.0, 20.0, 100.0, 700.0} + [400] = "%.4f", -- Backseat - RV-5 warning flag + [401] = "%.f", -- Backseat - RV-5 DangerRALT lamp + -- Variometer + [416] = "%.4f", -- Backseat - Variometer {-1.0, -0.875, -0.775, -0.44, 0.0, 0.44, 0.775, 0.875, 1.0}{-80.0, -50.0, -20.0, -10.0, 0.0, 10.0, 20.0, 50.0, 80.0} + [418] = "%.4f", -- Backseat - Variometer sideslip {-1.0, 1.0} + [417] = "%.4f", -- Backseat - Variometer turn {-1.0, 1.0} {-math.rad(6.0), math.rad(6.0)} + -- KPP (ADI) + [375] = "%.4f", -- Backseat - KPP 1273K roll {-1.0, 1.0} {-math.pi, math.pi} + [368] = "%.4f", -- Backseat - KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + [377] = "%.4f", -- Backseat - KPP 1273K sideslip {-1.0, 1.0} + [372] = "%.4f", -- Backseat - KPP Course Deviation Bar {-1.0, 1.0} + [373] = "%.4f", -- Backseat - KPP Glide Beacon + [374] = "%.4f", -- Backseat - KPP Localizer Beacon + [366] = "%.4f", -- Backseat - KPP Arretir + [369] = "%.4f", -- Backseat - KPP SDU Roll {-1.0, 1.0} + [370] = "%.4f", -- Backseat - KPP SDU Pitch {-1.0, 1.0} + -- NPP HSI + --[378] = "%.4f", -- Backseat - HSI2 heading {1.0, 0.0}{0.0, math.pi * 2.0} + --[379] = "%.4f", -- Backseat - HSI2 commanded course needle {1.0, 0.0}{0.0, math.pi * 2.0} + [380] = "%.4f", -- Backseat - HSI2 bearing needle {1.0, 0.0}{0.0, math.pi * 2.0} + [384] = "%.4f", -- Backseat - HSI2 Course Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [382] = "%.4f", -- Backseat - HSI2 Alt Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [383] = "%.4f", -- Backseat - HSI2 Glide Beacon + [381] = "%.4f", -- Backseat - HSI2 Localizer Beacon + -- RSPN + [404] = "%.4f", -- Backseat - RSBN Range 100 + [403] = "%.4f", -- Backseat - RSBN Range 10 + [402] = "%.4f", -- Backseat - RSBN Range 1 + -- Barometric altimeter VD-20 instructor + [389] = "%.4f", -- Backseat - VD-20 km {0.0, 1.0}{0.0, 20.0} + [390] = "%.4f", -- Backseat - VD-20 m {0.0, 1.0}{0.0, 1000.0} + [391] = "%.4f", -- Backseat - VD-20 km Ind {0.0, 1.0}{0.0, 20.0} + [392] = "%.4f", -- Backseat - VD-20 m Ind {0.0, 1.0}{0.0, 1000.0} + --[393] = "%.4f", -- Backseat - VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + -- Barometric altimeter + -- Altimeter Feet , copy of A-10 altimeter + [737] = "%.4f", -- Altimeter_100_footPtr {0.0, 1.0}{0.0, 1000.0} + [732] = "%.4f", -- Altimeter_10000_footCount {0.0, 1.0}{0.0, 10.0} + [731] = "%.4f", -- Altimeter_1000_footCount {0.0, 1.0}{0.0, 10.0} + [730] = "%.4f", -- Altimeter_100_footCount {0.0, 1.0}{0.0, 10.0} + [736] = "%.4f", -- pressure_setting_0 {0.0, 1.0}{0.0, 10.0} + [735] = "%.4f", -- pressure_setting_1 {0.0, 1.0}{0.0, 10.0} + [734] = "%.4f", -- pressure_setting_2 {0.0, 1.0}{0.0, 10.0} + [733] = "%.4f", -- pressure_setting_3 {0.0, 1.0}{0.0, 10.0} + -- AIRSPEED AND MACH + [386] = "%.4f", -- Backseat - IAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [387] = "%.4f", -- Backseat - TAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [388] = "%.4f", -- Backseat - MACH 2 + -- RKL-41 + [420] = "%.4f", -- Backseat - RKL-41 needle {0.0, 1.0}{0.0, math.pi * 2.0} + [513] = "%.4f", -- Backseat - RKL-41 Signal + -- oxygen interface + [477] = "%.4f", -- Backseat - OxygenPressure {0.0, 0.025, 0.925, 1.0}{0.0, 10.0, 150.0, 160.0} + [478] = "%.4f", -- Backseat - FlowBlinker + -- accelerometer + [550] = "%.4f", -- Backseat - CockpitAlt {0.0, 1.0}{0.0, 20000.0} + [551] = "%.4f", -- Backseat - PressDiff {0.0, 0.102, 0.202, 0.398, 0.779, 1.0}{-0.04, -0.02, 0.0, 0.1, 0.4, 0.6} + -- Fuel Quantity + [427] = "%.4f", -- Backseat - Fuel Quantity {0.0, 0.127, 0.239, 0.35, 0.458, 0.56, 0.685, 0.82, 1.0}{0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 825.0} + -- Fan RPM + [425] = "%.4f", -- Backseat - Fan RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Compressor RPM + [424] = "%.4f", -- Backseat - Compressor RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Oil + [423] = "%.4f", -- Backseat - Oil Temp {0.0, 0.323, 0.576, 0.817, 1.0}{-50.0, 0.0, 50.0, 100.0, 150.0} + [422] = "%.4f", -- Backseat - Oil Press {0.0, 0.077, 1.0}{-1.0, 0.0, 6.0} + -- Fuel Press + [421] = "%.4f", -- Backseat - Fuel Press {0.0, 0.06, 0.148, 0.323, 0.547, 0.659, 0.801, 1.0}{-1.0, 0.0, 20.0, 40.0, 60.0, 70.0, 80.0, 100.0} + -- lights system + --[559] = "%.4f", -- Backseat - CptInstrumentLightsIntensity + -- RKL-41 Radio Compass + [564] = "%.f", -- Backseat - FarNDBSelectorLamp CP + [571] = "%.f", -- Backseat - NearNDBSelectorLamp CP + [566] = "%.f", -- Backseat - RKL PanelLights + -- BrakeHandle + [542] = "%.4f", -- Backseat - BrakeHandle CP + -- Lamps + [358] = "%.f", -- Backseat - MRP 56 Instructor + [347] = "%.f", -- Backseat - MainGen Instructor + [350] = "%.f", -- Backseat - ReserveGen Instructor + [353] = "%.f", -- Backseat - Inverter115 Instructor + [357] = "%.f", -- Backseat - Inverter363 Instructor + [462] = "%.f", -- Backseat - FlapsUp + [463] = "%.f", -- Backseat - FlapsTO + [464] = "%.f", -- Backseat - FlapsDn + [436] = "%.f", -- Backseat - AirBrakes + [432] = "%.f", -- Backseat - GearDown front + [431] = "%.f", -- Backseat - GearDown left + [433] = "%.f", -- Backseat - GearDown right + [429] = "%.f", -- Backseat - GearUp front + [428] = "%.f", -- Backseat - GearUp left + [430] = "%.f", -- Backseat - GearUp right + [434] = "%.f", -- Backseat - ExtendGears + [435] = "%.f", -- Backseat - DoorsOu + [356] = "%.f", -- Backseat - BreakdownFinished + [443] = "%.f", -- Backseat - GA TILT + [343] = "%.f", -- Backseat - DangerAltitudeInstructor + [365] = "%.f", -- Backseat - EmergFuel + [345] = "%.f", -- Backseat - Remain150 + [348] = "%.f", -- Backseat - DoNotStart + [364] = "%.f", -- Backseat - FuelFilter + [355] = "%.f", -- Backseat - WingTanks + [441] = "%.f", -- Backseat - TrimmerRollNeutral + [442] = "%.f", -- Backseat - TrimmerPitchNeutral + [344] = "%.f", -- Backseat - MachMeterLamp + [351] = "%.f", -- Backseat - CanopyNotClosed + [349] = "%.f", -- Backseat - Vibration + [342] = "%.f", -- Backseat - Fire + [352] = "%.f", -- Backseat - CockpitPressure + [361] = "%.f", -- Backseat - ConditioningClosed + [363] = "%.f", -- Backseat - Defrost + [360] = "%.f", -- Backseat - Ice + [346] = "%.f", -- Backseat - HydraulicPressureDrop + [455] = "%.f", -- Backseat - MasterDanger + [565] = "%.f", -- Backseat - RadioUnderControl +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Front Seat + -- ASP-3NMU Gunsight + [101] = "%1d", -- ASP-3NMU Gunsight Mode, GYRO/FIXED + [102] = "%.1f", -- ASP-3NMU Gunsight Brightness Knob (Axis) {0.0, 1.0} in 0.2 Steps + [103] = "%.1f", -- ASP-3NMU Gunsight Target Wingspan Adjustment Dial (meters) (Axis) {0.0, 1.0} in 0.1 Steps + [104] = "%1d", -- ASP-3NMU Gunsight Color Filter, ON/OFF + [105] = "%1d", -- ASP-3NMU Gunsight Fixed Reticle Mask Lever + [106] = "%.1f", -- ASP-3NMU Gunsight Mirror Depression (Axis) {0.0, 1.0} in 0.05 Steps + [107] = "%.1f", -- ASP-3NMU Gunsight Target Distance (Axis) {0.0, 1.0} in 0.1 Steps + -- CLOCK + [335] = "%1d", -- Mech clock left lever Button + [336] = "%.1f", -- Mech clock left lever (Axis) {0.0, 1.0} in 0.04 Steps + [337] = "%1d", -- Mech clock right lever Button + [338] = "%.1f", -- Mech clock right lever (Axis) {0.0, 1.0} in 0.1 Steps + -- Baro Altimeter + [57] = "%.f2", -- Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.6 Steps + -- Radar Altimeter + [60] = "%1d", -- RV-5M Radio Altimeter Test Button + [61] = "%.2f", -- RV-5M Radio Altimeter Decision Height Knob (Axis) {0.0, 1.0} in 0.2 Steps + -- GMK + [204] = "%1d", -- GMK-1AE GMC Hemisphere Selection Switch, N(orth)/S(outh) + [207] = "%1d", -- GMK-1AE GMC Mode Switch, MC(Magnetic Compass Mode)/GC(Directional Gyro Mode) + [205] = "%1d", -- GMK-1AE GMC Test Switch, 0(degrees)/OFF/300(degrees) - Use to check heading indication accuracy {-1.0,0.0,1.0} + [208] = "%1d", -- GMK-1AE GMC Course Selector Switch, CCW/OFF/CW {-1.0,0.0,1.0} + [209] = "%.2f", -- GMK-1AE GMC Latitude Selector Knob (Axis) {0.0, 1.0} in 0.02 Steps + -- Gyro + [124] = "%1d", -- MC Synchronization Button - Push to synchronize (level flight only) + -- Magnetic Variation + [532] = "%.2f", -- Magnetic Declination set Knob (Axis) {0.0, 1.0} in 0.05 Steps + -- KPP-1273K (ADI) + [30] = "%1d", -- KPP-1273K Attitude Director Indicator (ADI) Cage Button + [39] = "%.2f", -- KPP-1273K Attitude Director Indicator (ADI) Pitch Trim Knob {-1.0, 1.0} in 0.05 Steps + [177] = "%1d", -- SDU Switch, ON/OFF + [460] = "%1d", -- AGD Pitch Failure + [461] = "%1d", -- AGD Bank Failure + -- NPP (HSI) + [48] = "%.2f", -- HSI Course set Knob (Axis) {0.0, 1.0} in 0.15 Steps + [526] = "%1d", -- Course Accordance + [458] = "%1d", -- GMK Failure + -- ISKRA (RSBN) + [178] = "%.1f", -- RSBN Mode Switch, LANDING/NAVIGATION/GLIDE PATH {0.0,0.1,0.2} + [179] = "%1d", -- RSBN Identification Button + [180] = "%1d", -- RSBN Test Button - Push to test + [181] = "%.2f", -- RSBN Control Box Lighting Intensity Knob (Axis) {0.0, 0.8} in 0.04 Steps + [184] = "%.2f", -- RSBN Volume Knob (Axis) {0.0, 0.8} in 0.04 Steps + [187] = "%1d", -- Initial Azimuth {-1.0,0.0,1.0} + [188] = "%1d", -- Initial Range {-1.0,0.0,1.0} + [191] = "%.3f", -- RSBN Navigation Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps + [192] = "%1d", -- RSBN Landing Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps + [193] = "%1d", -- Set 0 Azimuth + [201] = "%.2f", -- RSBN Field Elevation Knob (Axis) {0.0, 1.0} in 0.02 Steps + [297] = "%1d", -- RSBN Listen Callsign Button - Push to listen + [527] = "%1d", -- RSBN Emergency Landing Switch, ON/OFF + -- Variometer + [569] = "%.1f", -- Variometer adjustment knob (Axis) {0.0, 1.0} in 0.1 Steps + -- RKL-41 + [119] = "%1d", -- RKL-41 ADF Outer-Inner Beacon (Far-Near NDB) Switch + [157] = "%.2f", -- RKL-41 ADF Volume Knob (Axis) {1.0, 0.0} in 0.05 Steps + [161] = "%1d", -- RKL-41 ADF Brightness Knob (Axis) {1.0, 0.0} in 0.05 Steps + [159] = "%1d", -- RKL-41 ADF Mode Switch, TLF(A3)/TLG(A1,A2) + [160] = "%.1f", -- RKL-41 ADF Function Selector Switch, OFF/COMP(AUTO)/COMP(MAN)/ANT/LOOP {0.0,0.1,0.2,0.3,0.4} + [162] = "%1d", -- RKL-41 ADF Loop Switch, LEFT/OFF/RIGHT {-1.0,0.0,1.0} + [158] = "%1d", -- RKL-41 ADF Control Switch, TAKE CONTROL/HAND OVER CONTROL + [165] = "%.2f", -- RKL-41 ADF Far NDB Frequency Tune (Axis) {1.0, 0.0} in 0.05 Steps + [163] = "%.4f", -- RKL-41 ADF Far NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [164] = "%.1f", -- RKL-41 ADF Far NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [168] = "%.2f", -- RKL-41 ADF Near NDB Frequency Tune (Axis) {0.0,1.0} in 0.05 Steps + [166] = "%.4f", -- RKL-41 ADF Near NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [167] = "%.1f", -- RKL-41 ADF Near NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [459] = "%1d", -- ARK Failure + -- electric system + [141] = "%1d", -- Battery Switch, ON/OFF + [142] = "%1d", -- Main Generator Switch, ON/OFF + [143] = "%1d", -- Emergency Generator Switch, ON/OFF + [502] = "%1d", -- Net Switch, ON/OFF + [169] = "%1d", -- Emergency Engine Instruments Power Switch, ON/OFF + [315] = "%1d", -- Turbo Button + [313] = "%1d", -- Stop Turbo Switch, ON/OFF + [326] = "%1d", -- Engine Button + [320] = "%1d", -- Emergency Fuel Switch + [322] = "%.1f", -- Engine Start Mode Switch, START/FALSE START/COLD CRANKING {0.0,0.1,0.2} + [144] = "%1d", -- CB Engine Switch, ON/OFF + [145] = "%1d", -- CB AGD-GMK Switch, ON/OFF + [146] = "%1d", -- CB Inverter 1 (AC 115V) Switch, ON/OFF + [147] = "%1d", -- CB Inverter 2 (AC 115V) Switch, ON/OFF + [148] = "%1d", -- CB RDO (ICS and Radio) Switch, ON/OFF + [149] = "%1d", -- CB MRP-RV (Marker Beacon Receiver and Radio Altimeter) Switch, ON/OFF + [150] = "%1d", -- CB RSBN (ISKRA) Switch, ON/OFF + [151] = "%1d", -- CB IFF (SRO) Emergency Connection Switch, ON/OFF + [152] = "%1d", -- CB RSBN (ISKRA) Emergency Connection Switch, ON/OFF + [153] = "%1d", -- CB Wing Tanks Switch, ON/OFF + [154] = "%1d", -- CB RIO-3 De-Icing Signal Switch, ON/OFF + [155] = "%1d", -- CB SDU Switch, ON/OFF + [505] = "%1d", -- CB Weapon Switch, ON/OFF + [211] = "%1d", -- CB Air Conditioning, ON/OFF + [212] = "%1d", -- CB Anti-Ice, ON/OFF + [213] = "%1d", -- CB Pitot Left, ON/OFF + [214] = "%1d", -- CB Pitot Right, ON/OFF + [215] = "%1d", -- CB PT-500C, ON/OFF + [216] = "%1d", -- CB ARC, ON/OFF + [217] = "%1d", -- CB SRO, ON/OFF + [218] = "%1d", -- CB Seat-Helmet, ON/OFF + [219] = "%1d", -- CB Gears, ON/OFF + [220] = "%1d", -- CB Control, ON/OFF + [221] = "%1d", -- CB Signaling, ON/OFF + [222] = "%1d", -- CB Nav. Lights, ON/OFF + [223] = "%1d", -- CB Spotlight Left, ON/OFF + [224] = "%1d", -- CB Spotlight Right, ON/OFF + [225] = "%1d", -- CB Red Lights, ON/OFF + [226] = "%1d", -- CB White Lights, ON/OFF + [227] = "%1d", -- CB Start Panel, ON/OFF + [228] = "%1d", -- CB Booster Pump, ON/OFF + [229] = "%1d", -- CB Ignition 1, ON/OFF + [230] = "%1d", -- CB Ignition 2, ON/OFF + [231] = "%1d", -- CB Engine Instruments, ON/OFF + [232] = "%1d", -- CB Fire, ON/OFF + [233] = "%1d", -- CB Emergency Jettison, ON/OFF + [234] = "%1d", -- CB SARPP, ON/OFF + [503] = "%1d", -- CB Seat, ON/OFF + [504] = "%1d", -- CB Signal, ON/OFF + [512] = "%1d", -- CB Ground Intercom, ON/OFF + [294] = "%1d", -- Standby (Left) Pitot Tube Heating Button - Push to turn heating on + [295] = "%1d", -- Main (Right) Pitot Tube Heating Button - Push to turn heating on + [292] = "%1d", -- Standby (Left) Pitot Tube Heating Off Button - Push to turn heating off + [293] = "%1d", -- Standby (Left) Pitot Tube Heating Off Button - Push to turn heating off + -- lights system + [176] = "%.1f", -- Navigation Lights Mode Control Switch, FLICKER/OFF/FIXED {0.0,0.5,1.0} + [175] = "%.1f", -- Navigation Lights Intensity Control Switch, DIM(30%)/BRT(60%)/MAX(100%) {0.0,0.5,1.0} + [311] = "%1d", -- Taxi and Landing Lights (Searchlights) Control Switch, TAXI/OFF/LANDING {-1.0,0.0,1.0} + [330] = "%1d", -- Instrument Lighting Switch, Red/OFF/White {-1.0,0.0,1.0} + [331] = "%.1f", -- Instrument Lights Intensity Knob (Axis) {0.1,0.9} in 0.1 Steps + [249] = "%1d", -- Emergency Instrument Light Switch, ON/OFF + [202] = "%.1f", -- Warning-Light Intensity Knob (Axis) {0.0,1.0} in 0.1 Steps + [203] = "%1d", -- Warning-Light Check Button - Push to check + -- Weapon System + [254] = "%1d", -- CB Armament System Power Switch, ON/OFF + [255] = "%1d", -- CB UB-16 Rocket Firing Control Circuit Power Switch, ON/OFF + [256] = "%1d", -- CB ASP-FKP (Gunsight and Gun Camera) Power Switch, ON/OFF + [257] = "%1d", -- CB Missile Seeker Heating Circuit Power Switch, ON/OFF + [258] = "%1d", -- CB Missile Seeker Glowing Circuit Power Switch, ON/OFF + [259] = "%.1f", -- Missile Seeker Tone Volume Knob (Axis) {0.0,1.0} in 0.1 Steps + [268] = "%1d", -- Arm/Safe Bombs Emergency Jettison Switch, LIVE/BLANK + [271] = "%.1f", -- Rockets Firing Mode Selector Switch, AUT./2RS/4RS {0.0,0.1,0.2} + [509] = "%1d", -- Arm/Safe Bombs Emergency Jettison Switch, LIVE/BOMBS/BLANK {-1.0,0.0,1.0} + [507] = "%1d", -- Emergency Jettison Switch, ON/OFF + [273] = "%1d", -- EKSR-46 Signal Flare Dispenser Power Switch, ON/OFF + [274] = "%1d", -- EKSR-46 Yellow Signal Flare Launch Button + [275] = "%1d", -- EKSR-46 Green Signal Flare Launch Button + [276] = "%1d", -- EKSR-46 Red Signal Flare Launch Button + [277] = "%1d", -- EKSR-46 White Signal Flare Launch Button + [260] = "%1d", -- Missile/Bomb Release Selector Switch, PORT(Left)/STARB-BOTH(Right for Missiles/Both) + [270] = "%1d", -- Emergency Jettison Outboard Stations Switch, ON/OFF + -- oxygen system + [303] = "%1d", -- Emergency Oxygen Switch, ON/OFF + [304] = "%1d", -- Diluter Demand Switch, 100% / MIX + [307] = "%1d", -- Helmet Ventilation Switch, ON/OFF + [306] = "%.2f", -- Oxygen Supply Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + [484] = "%.2f", -- Oxygen Interconnaction Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + -- sarpp + [298] = "%1d", -- SARPP Flight Recorder, ON/OFF + -- fuel system + [296] = "%1d", -- Fuel Shut-Off Lever + -- air system + [245] = "%.1f", -- ECS and Pressurization Handle, OFF/CANOPIES SEALED/ECS ON (Axis) {0.0,1.0} in 0.1 Steps + [172] = "%.2f", -- Cabin Air Conditioning Control Switch, OFF/HEAT/COOL/AUTOMATIC {0.0,0.25} in 0.05 Steps + [173] = "%.1f", -- Cabin Air Temperature Controller Rheostat (Axis) {0.0,1.0} in 0.1 Steps + [121] = "%.2f", -- Diffuser and Flight Suit Air Conditioning Control Switch, HEAT/AUTO/COOL {0.0,0.25} in 0.05 Steps + [120] = "%.1f", -- Diffuser and Flight Suit Temperature Rheostat (Axis) {0.0,1.0} in 0.1 Steps + [511] = "%1d", -- Conditioning Shutoff Switch, OPEN/FRONT PILOT CONTROL/CLOSE {-1.0,0.0,1.0} + -- anti-icing system + [174] = "%1d", -- De-Icing Mode Switch, MANUAL/AUTOMATIC/OFF {0.0,0.1,0.2} + [183] = "%1d", -- RIO-3 De-Icing Sensor Heating Circuit Check Button - Push to test + -- helmet heating + [309] = "%1d", -- Helmet Visor Quick Heating Button - Push to heat + [308] = "%1d", -- Helmet Heating Mode Switch, AUTO/OFF/ON {0.0,0.5,1.0} + [310] = "%.1f", -- Helmet Heating Temperature Rheostat (Axis) {0.0,1.0} in 0.1 Steps + -- SPU-9 + [209] = "%1d", -- Reserve Intercom Switch, ON/OFF + [291] = "%1d", -- ADF Audio Switch, ADF/OFF + [288] = "%1d", -- Intercom Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [289] = "%1d", -- Radio Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [134] = "%1d", -- Radio Button + [133] = "%1d", -- Intercom Button + -- R-832M + [287] = "%1d", -- Radio Control Switch, ON/OFF + [286] = "%1d", -- Squelch Switch, ON/OFF + [284] = "%1d", -- R-832M Preset Channel Selector Knob (Axis) {0.0,1.0} in 20 0.05 Steps + -- engine systems + [329] = "%1d", -- IV-300 Engine Vibration Test Button - Push to test + [328] = "%1d", -- Fire Extinguish Button - Push to extinguish + [272] = "%1d", -- Fire Warning Signal Test Switch, I/OFF/II {-1.0,0.0,1.0} + [324] = "%1d", -- RT-12 JPT Regulator Manual Disable Switch, RT-12 DISABLED/RT-12 ENABLED + [243] = "%1d", -- RT-12 JPT Regulator Power Switch, ON/OFF + [242] = "%1d", -- RT-12 JPT Regulator Test Switch, I/OFF/II {-1.0,0.0,1.0} + [499] = "%1d", -- EGT Indicator Switch, FRONT/REAR + -- control system + [281] = "%1d", -- Flaps Flight Position (0 degrees) Button + [282] = "%1d", -- Flaps Takeoff Position (25 degrees) Button + [283] = "%1d", -- Flaps Landing Position (44 degrees) Button + [549] = "%1d", -- Throttle Limiter + [135] = "%1d", -- Air Brake Switch {0.0,1.0} + [136] = "%1d", -- Air Brake Switch (2nd position) {0.0,1.0} + [118] = "%1d", -- Landing Gear Control Lever {-1.0,0.0,1.0} + [334] = "%.1f", -- Emergency/Parking Wheel Brake Lever {0.0,1.0} in 0.1 Steps + [334] = "%1d", -- Parking Brake Lever Flag - Push to remove parking brake + [197] = "%1d", -- Main and Emergency Hydraulic Systems Interconnection Lever, FORWARD(OFF)/BACKWARD(ON) + [194] = "%1d", -- Emergency Landing Gear Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [195] = "%1d", -- Emergency Flaps Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [196] = "%1d", -- RAT (Emergency Generator) Emergency Lever, FORWARD(OFF)/BACKWARD(ON) + [456] = "%1d", -- Full Pressure Failure Lever, ON/STBY/FAILURE {-0.5,0.0,0.5} + [457] = "%1d", -- Static Pressure Failure Lever, ON/STBY/FAILURE {-0.5,0.0,0.5} + -- accelerometer + [89] = "%1d", -- Reset Limits + -- canopy + [998] = "%1d", -- Canopy Handle + [285] = "%1d", -- Forward Canopy Lock Handle + [244] = "%1d", -- Forward Canopy Emergency Jettison Handle + -- Pitot Selector + [333] = "%1d", -- Pitot Tube Selector Lever, STBY(Left)/MAIN(Right) + -- Back Seat + -- CLOCK + [412] = "%1d", -- Backseat - Mech clock left lever Button + [413] = "%.1f", -- Backseat - Mech clock left lever (Axis) {0.0, 1.0} in 0.04 Steps + [414] = "%1d", -- Backseat - Mech clock right lever Button + [415] = "%.1f", -- Backseat - Mech clock right lever (Axis) {0.0, 1.0} in 0.1 Steps + -- Baro Altimeter + [394] = "%.f2", -- Backseat - Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.6 Steps + -- Radar Altimeter + [398] = "%1d", -- Backseat - RV-5M Radio Altimeter Test Button + [399] = "%.2f", -- Backseat - RV-5M Radio Altimeter Decision Height Knob (Axis) {0.0, 1.0} in 0.2 Steps + -- GMK + -- Gyro + [444] = "%1d", -- Backseat - MC Synchronization Button - Push to synchronize (level flight only) + -- KPP-1273K (ADI) + [367] = "%1d", -- Backseat - KPP-1273K Attitude Director Indicator (ADI) Cage Button + [376] = "%.2f", -- Backseat - KPP-1273K Attitude Director Indicator (ADI) Pitch Trim Knob (Axis) {-1.0, 1.0} in 0.05 Steps + -- NPP (HSI) + [385] = "%.2f", -- Backseat - HSI Course set knob (Axis) {0.0, 1.0} in 0.15 Steps + -- Variometer + [419] = "%.1f", -- Backseat - Variometer adjustment knob (Axis) {0.0, 1.0} in 0.1 Steps + -- RKL-41 + [440] = "%1d", -- Backseat - RKL-41 ADF Outer-Inner Beacon (Far-Near NDB) Switch + [514] = "%.2f", -- Backseat - RKL-41 ADF Volume Knob (Axis) {1.0, 0.0} in 0.05 Steps + [518] = "%.2f", -- Backseat - RKL-41 ADF Brightness Knob (Axis) {1.0, 0.0} in 0.05 Steps + [516] = "%1d", -- Backseat - RKL-41 ADF Mode Switch, TLF(A3)/TLG(A1,A2) + [517] = "%.1f", -- Backseat - RKL-41 ADF Function Selector Switch, OFF/COMP(AUTO)/COMP(MAN)/ANT/LOOP {0.0,0.1,0.2,0.3,0.4} + [519] = "%1d", -- Backseat - RKL-41 ADF Loop Switch, LEFT/OFF/RIGHT + [515] = "%1d", -- Backseat - RKL-41 ADF Control Switch, TAKE CONTROL/HAND OVER CONTROL + [522] = "%.2f", -- Backseat - RKL-41 ADF Far NDB Frequency Tune (Axis) {1.0, 0.0} in 0.05 Steps + [520] = "%.4f", -- Backseat - RKL-41 ADF Far NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [521] = "%.1f", -- Backseat - RKL-41 ADF Far NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [525] = "%.2f", -- Backseat - RKL-41 ADF Near NDB Frequency Tune (Axis) {0.0,1.0} in 0.05 Steps + [523] = "%.4f", -- Backseat - RKL-41 ADF Near NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [524] = "%.1f", -- Backseat - RKL-41 ADF Near NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + -- electric system + [488] = "%1d", -- Backseat - Turbo Button + [494] = "%1d", -- Backseat - Engine Button + [490] = "%1d", -- Backseat - Stop Engine Switch + [492] = "%1d", -- Backseat - Emergency Fuel Switch + -- lights system + [486] = "%1d", -- Backseat - Taxi and Landing Lights (Searchlights) Control Switch, TAXI/OFF/LANDING {-1.0,0.0,1.0} + [497] = "%1d", -- Backseat - Instrument Lighting Switch, Red/OFF/White {-1.0,0.0,1.0} + [498] = "%.1f", -- Backseat - Instrument Lights Intensity Knob (Axis) {0.1,0.9} in 0.1 Steps + [537] = "%.1f", -- Backseat - Warning-Light Intensity Knob (Axis) {0.0,1.0} in 0.1 Steps + [538] = "%1d", -- Backseat - Warning-Light Check Button - Push to check + -- oxygen system + [479] = "%1d", -- Backseat - Emergency Oxygen Switch, ON/OFF + [480] = "%1d", -- Backseat - Diluter Demand Switch, 100% / MIX + [482] = "%.4f", -- Backseat - Oxygen Supply Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + -- fuel system + [475] = "%1d", -- Backseat - Fuel Shut-Off Lever + -- air system + [245] = "%.1f", -- Backseat - ECS and Pressurization Handle, OFF/CANOPIES SEALED/ECS ON (Axis) {0.0,1.0} in 0.1 Steps + -- SPU-9 + [473] = "%1d", -- Backseat - Reserve Intercom Switch, ON/OFF + [474] = "%1d", -- Backseat - ADF Audio Switch, ADF/OFF + [471] = "%1d", -- Backseat - Intercom Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [472] = "%1d", -- Backseat - Radio Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [547] = "%1d", -- Backseat - Radio Button + [546] = "%1d", -- Backseat - Intercom Button + -- R-832M + [470] = "%1d", -- Backseat - Radio Control Switch, ON/OFF + [469] = "%1d", -- Backseat - Squelch Switch, ON/OFF + [468] = "%1d", -- Backseat - R-832M Preset Channel Selector Knob (Axis) {0.0,1.0} in 20 0.05 Steps + -- control system + [465] = "%1d", -- Backseat - Flaps Flight Position (0 degrees) Button + [466] = "%1d", -- Backseat - Flaps Takeoff Position (25 degrees) Button + [467] = "%1d", -- Backseat - Flaps Landing Position (44 degrees) Button + [548] = "%1d", -- Backseat - Air Brake Switch {-1.0, 0.0, 1.0} + [437] = "%1d", -- Backseat - Landing Gear Control Lever {0.0,0.5,1.0} ??? eigentlich 4 Positionen + [501] = "%.1f", -- Backseat - Emergency Wheel Brake Lever {0.0,1.0} in 0.1 Steps + [536] = "%1d", -- Backseat - Main and Emergency Hydraulic Systems Interconnection Lever, FORWARD(OFF)/BACKWARD(ON) + [533] = "%1d", -- Backseat - Emergency Landing Gear Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [534] = "%1d", -- Backseat - Emergency Flaps Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [535] = "%1d", -- Backseat - RAT (Emergency Generator) Emergency Lever, FORWARD(OFF)/BACKWARD(ON) + -- canopy + [999] = "%1d", -- Backseat - Canopy Handle + [485] = "%1d", -- Backseat - Canopy Lock Handle + [539] = "%1d", -- Backseat - Canopy Emergency Jettison Handle +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Front Seat + + -- ADI correction + --[31] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[40] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + local lPitch = mainPanelDevice:get_argument_value(31) + + lPitch = lPitch * 2 + + ExportScript.Tools.SendData(31, string.format("%.4f", lPitch)) + ExportScript.Tools.SendData(40, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(40)))) -- negate + + -- HSI correction + --[41] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[42] = "%.4f", -- HSI commanded course needle (wihte needle) {1.0, 0.0} {0.0, math.pi * 2.0} + local lCommandCourse = mainPanelDevice:get_argument_value(42) + + lCommandCourse = lCommandCourse + 0.5 -- 180 degree turn + + ExportScript.Tools.SendData(41, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(41)))) -- negate + ExportScript.Tools.SendData(42, string.format("%.4f", lCommandCourse)) + + -- Back Seat + + -- ADI correction + --[368] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[377] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + local lPitch2 = mainPanelDevice:get_argument_value(368) + + lPitch2 = lPitch2 * 2 + + ExportScript.Tools.SendData(368, string.format("%.4f", lPitch2)) + ExportScript.Tools.SendData(377, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(377)))) -- negate + + -- HSI correction + --[378] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[379] = "%.4f", -- HSI commanded course needle (wihte needle) {1.0, 0.0} {0.0, math.pi * 2.0} + local lCommandCourse2 = mainPanelDevice:get_argument_value(379) + + lCommandCourse2 = lCommandCourse2 + 0.5 -- 180 degree turn + + ExportScript.Tools.SendData(378, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(378))))-- negate + ExportScript.Tools.SendData(379, string.format("%.4f", lCommandCourse2)) + + -- VD-20 Presseure correction + --[56] = "%.4f", -- VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + local lVD_20_PRESS = mainPanelDevice:get_argument_value(56) + --ExportScript.Tools.WriteToLog('Pressure: '..ExportScript.Tools.dump(lVD_20_PRESS)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.89 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 0.76793104410172 -- maximaler Eingangswert + x = 0.57506740093231 -- aktueller Eingangswert + + d_y = 0.89 -- Delta Ausgabewerte (y_max - y_min) + d_x = 0.76793104410172 -- Delta Eingangswerte (x_max - x_min) + m = 1.158958225267568124678891052043 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000002387929418604 (2.387929418604e-32) -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.66648 -- Ergebnis (m * x + n) + ]] + if gVD_20_PRESS ~= lVD_20_PRESS then + gVD_20_PRESS = lVD_20_PRESS + lVD_20_PRESS = 1.158958225267568124678891052043 * lVD_20_PRESS + 0.0000000000000000000000000000002387929418604 + --ExportScript.Tools.WriteToLog('Pressure2: '..ExportScript.Tools.dump(lVD_20_PRESS)) + ExportScript.Tools.SendData(56, string.format("%.4f", lVD_20_PRESS)) + end + + --[393] = "%.4f", -- Backseat - VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + local lVD_20_PRESS_Backseat = mainPanelDevice:get_argument_value(393) + --ExportScript.Tools.WriteToLog('Pressure: '..ExportScript.Tools.dump(lVD_20_PRESS_Backseat)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.89 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 0.76793104410172 -- maximaler Eingangswert + x = 0.57506740093231 -- aktueller Eingangswert + + d_y = 0.89 -- Delta Ausga + d_x = 0.76793104410172 -- Delta Eingangswerte (x_max + m = 1.158958225267568124678891052043 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000002387929418604 (2.387929418604e-32) -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.66648 -- Ergebnis (m * x + n) + ]] + if gVD_20_PRESS_Backseat ~= lVD_20_PRESS_Backseat then + gVD_20_PRESS_Backseat = lVD_20_PRESS_Backseat + lVD_20_PRESS_Backseat = 1.158958225267568124678891052043 * lVD_20_PRESS_Backseat + 0.0000000000000000000000000000002387929418604 + --ExportScript.Tools.WriteToLog('Pressure2: '..ExportScript.Tools.dump(lVD_20_PRESS_Backseat)) + ExportScript.Tools.SendData(393, string.format("%.4f", lVD_20_PRESS_Backseat)) + end +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- R_832M Channel + local R_832M = {[0.0]="0",[0.05]="1",[0.1]="2",[0.15]="3",[0.2]="4",[0.25]="5",[0.3]="6",[0.35]="7",[0.4]="8",[0.45]="9",[0.5]="10",[0.55]="11",[0.6]="12",[0.65]="13",[0.7]="14",[0.75]="15",[0.8]="16",[0.85]="17",[0.9]="18",[0.95]="19"} + ExportScript.Tools.SendData(2000, R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + --ExportScript.Tools.WriteToLog('R_832M Channel: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(284))..', '..R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + + -- R_832M Frequency + local lR_832M_F = GetDevice(19) + if lR_832M_F:is_on() then + --ExportScript.Tools.SendData(2001, string.format("%7.3f", lR_832M_F:get_frequency()/1000000)) + ExportScript.Tools.SendData(2001, ExportScript.Tools.RoundFreqeuncy(lR_832M_F:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('R_832M Frequency: '..ExportScript.Tools.dump(string.format("%7.3f", lR_832M_F:get_frequency()/1000000))) + else + ExportScript.Tools.SendData(2001, " ") + end + + -- RSBN + --[189] = "%.4f", -- RSBN NAV Chan {0.0, 0.39} {1.0, 40.0} + --[190] = "%.4f", -- RSBN LAND Chan {0.0, 0.39} {1.0, 40.0} + local lRSBN_Chan = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="21",[0.21]="22",[0.22]="23",[0.23]="24",[0.24]="25",[0.25]="26",[0.26]="27",[0.27]="28",[0.28]="29",[0.29]="30",[0.30]="31",[0.31]="32",[0.32]="33",[0.33]="34",[0.34]="35",[0.35]="36",[0.36]="37",[0.37]="38",[0.38]="39",[0.39]="40"} + ExportScript.Tools.SendData(189, lRSBN_Chan[ExportScript.Tools.round(mainPanelDevice:get_argument_value(189), 2)]) + --ExportScript.Tools.WriteToLog('RSBN 1: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(189))) + --ExportScript.Tools.WriteToLog('RSBN 2: '..ExportScript.Tools.dump(ExportScript.Tools.round(mainPanelDevice:get_argument_value(189), 2))) + + ExportScript.Tools.SendData(190, lRSBN_Chan[ExportScript.Tools.round(mainPanelDevice:get_argument_value(190), 2)]) + --ExportScript.Tools.WriteToLog('RSBN 1: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(190))) + --ExportScript.Tools.WriteToLog('RSBN 2: '..ExportScript.Tools.dump(ExportScript.Tools.round(mainPanelDevice:get_argument_value(190), 2))) + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {222, 225, 226, 497}) + -- CB Nav. Lights, CB Red Lights, CB White Lights, Backseat - Instrument Lighting Switch +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF RADIO:get frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- R_832M Channel + local R_832M = {[0.0]="0",[0.05]="1",[0.1]="2",[0.15]="3",[0.2]="4",[0.25]="5",[0.3]="6",[0.35]="7",[0.4]="8",[0.45]="9",[0.5]="10",[0.55]="11",[0.6]="12",[0.65]="13",[0.7]="14",[0.75]="15",[0.8]="16",[0.85]="17",[0.9]="18",[0.95]="19"} + ExportScript.Tools.SendDataDAC(2000, R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + --ExportScript.Tools.WriteToLog('R_832M Channel: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(284))..', '..R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + + + -- R_832M Frequency + local lR_832M_F = GetDevice(19) + if lR_832M_F:is_on() then + --ExportScript.Tools.SendDataDAC(2001, string.format("%7.3f", lR_832M_F:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC(2001, ExportScript.Tools.RoundFreqeuncy(lR_832M_F:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('R_832M Frequency: '..ExportScript.Tools.dump(string.format("%7.3f", lR_832M_F:get_frequency()/1000000))) + else + ExportScript.Tools.SendDataDAC(2001, " ") + end + + -- RSBN + --[189] = "%.4f", -- RSBN NAV Chan {0.0, 0.39} {1.0, 40.0} + --[190] = "%.4f", -- RSBN LAND Chan {0.0, 0.39} {1.0, 40.0} + local lRSBN_Chan = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="21",[0.21]="22",[0.22]="23",[0.23]="24",[0.24]="25",[0.25]="26",[0.26]="27",[0.27]="28",[0.28]="29",[0.29]="30",[0.30]="31",[0.31]="32",[0.32]="33",[0.33]="34",[0.34]="35",[0.35]="36",[0.36]="37",[0.37]="38",[0.38]="39",[0.39]="40"} + ExportScript.Tools.SendDataDAC(189, lRSBN_Chan[ExportScript.Tools.round(mainPanelDevice:get_argument_value(189), 2)]) + + ExportScript.Tools.SendDataDAC(190, lRSBN_Chan[ExportScript.Tools.round(mainPanelDevice:get_argument_value(190), 2)]) + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +-- global VD-20 Pressure variable +gVD_20_PRESS = 0 +gVD_20_PRESS_Backseat = 0 +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/L-39ZA.lua b/ExportsModules/L-39ZA.lua new file mode 100644 index 0000000..0196242 --- /dev/null +++ b/ExportsModules/L-39ZA.lua @@ -0,0 +1,852 @@ +-- L-39ZA + +ExportScript.FoundDCSModule = true +ExportScript.Version.L39ZA = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + -- Front Seat + -- Mechanic clock + [67] = "%.4f", -- CLOCK currtime hours + [68] = "%.4f", -- CLOCK currtime minutes + [70] = "%.4f", -- CLOCK seconds meter time seconds + [73] = "%.4f", -- CLOCK flight time meter status + [71] = "%.4f", -- CLOCK flight hours + [72] = "%.4f", -- CLOCK flight minutes + [69] = "%.4f", -- CLOCK seconds meter time minutes + -- Radar altimeter RV-5 + [58] = "%.4f", -- RV-5 RALT {0.0, 0.086, 0.439, 0.878, 0.955}{0.0, 20.0, 100.0, 700.0, 800.0} + [59] = "%.4f", -- RV-5 DangerRALT index {0.0, 0.094, 0.48, 0.998}{0.0, 20.0, 100.0, 700.0} + [62] = "%.4f", -- RV-5 warning flag + [63] = "%.f", -- RV-5 DangerRALT lamp + -- Variometer + [74] = "%.4f", -- Variometer {-1.0, -0.875, -0.775, -0.44, 0.0, 0.44, 0.775, 0.875, 1.0}{-80.0, -50.0, -20.0, -10.0, 0.0, 10.0, 20.0, 50.0, 80.0} + [76] = "%.4f", -- Variometer sideslip {-1.0, 1.0} + [75] = "%.4f", -- Variometer turn {-1.0, -0.58, -0.275, 0.275, 0.58, 1.0} {-math.rad(5.7), math.rad(-3.8), math.rad(-1.9), math.rad(1.9), math.rad(3.8), math.rad(5.7)} + -- KPP (ADI) + [38] = "%.4f", -- KPP 1273K roll {-1.0, 1.0} {-math.pi, math.pi} + --[31] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[40] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + [35] = "%.4f", -- KPP Course Deviation Bar {-1.0, 1.0} + [34] = "%.4f", -- KPP Alt Deviation Bar {-1.0, 1.0} + [36] = "%1d", -- KPP Glide Beacon + [37] = "%1d", -- KPP Localizer Beacon + [29] = "%.4f", -- KPP Arretir + [32] = "%.4f", -- KPP SDU Roll {-1.0, 1.0} + [33] = "%.4f", -- KPP SDU Pitch {-1.0, 1.0} + -- NPP (HSI) + --[41] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[42] = "%.4f", -- HSI commanded course needle (yellow needle) {1.0, 0.0} {0.0, math.pi * 2.0} + [43] = "%.4f", -- HSI bearing needle {1.0, 0.0} {0.0, math.pi * 2.0} + [47] = "%.4f", -- HSI Course Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [45] = "%.4f", -- HSI Alt Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [46] = "%.4f", -- HSI Glide Beacon G + [44] = "%.4f", -- HSI Localizer Beacon K + -- RSBN + [189] = "%.4f", -- RSBN NAV Chan {0.0, 0.39} {1.0, 40.0} + [190] = "%.4f", -- RSBN LAND Chan {0.0, 0.39} {1.0, 40.0} + [66] = "%.4f", -- RSBN Range 100 + [65] = "%.4f", -- RSBN Range 10 + [64] = "%.4f", -- RSBN Range 1 + [580] = "%.4f", -- RSBN PanelLightsLmp + -- Barometric altimeter VD-20 + [52] = "%.4f", -- VD-20 km {0.0, 1.0}{0.0, 20.0} + [53] = "%.4f", -- VD-20 m {0.0, 1.0}{0.0, 1000.0} + [54] = "%.4f", -- VD-20 km Ind {0.0, 1.0}{0.0, 20.0} + [55] = "%.4f", -- VD-20 m Ind {0.0, 1.0}{0.0, 1000.0} + --[56] = "%.4f", -- VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + -- Barometric altimeter + -- Altimeter Feet , copy of A-10 altimeter + [637] = "%.4f", -- Altimeter_100_footPtr {0.0, 1.0}{0.0, 1000.0} + [632] = "%.4f", -- Altimeter_10000_footCount {0.0, 1.0}{0.0, 10.0} + [631] = "%.4f", -- Altimeter_1000_footCount {0.0, 1.0}{0.0, 10.0} + [630] = "%.4f", -- Altimeter_100_footCount {0.0, 1.0}{0.0, 10.0} + [636] = "%.4f", -- pressure_setting_0 {0.0, 1.0}{0.0, 10.0} + [635] = "%.4f", -- pressure_setting_1 {0.0, 1.0}{0.0, 10.0} + [634] = "%.4f", -- pressure_setting_2 {0.0, 1.0}{0.0, 10.0} + [633] = "%.4f", -- pressure_setting_3 {0.0, 1.0}{0.0, 10.0} + -- AIRSPEED AND MACH + [49] = "%.4f", -- IAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [50] = "%.4f", -- TAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [51] = "%.4f", -- MACH + -- RKL-41 + [77] = "%.4f", -- RKL-41 needle {0.0, 1.0}{0.0, math.pi * 2.0} + [156] = "%.4f", -- RKL-41 Signal + [531] = "%.4f", -- KM-8 heading {0.0, 1.0}{0.0, math.pi * 2.0} + [530] = "%.4f", -- KM-8 variation {1.0, -1.0}{-math.pi, math.pi} + -- electric interface + [92] = "%.4f", -- Voltmeter {0.0, 1.0}{0.0, 40.0} + [93] = "%.4f", -- Ampermeter {0.0, 1.0}{-100.0, 300.0} + -- oxygen interface + [301] = "%.4f", -- OxygenPressure {0.0, 0.025, 0.925, 1.0}{0.0, 10.0, 150.0, 160.0} + [302] = "%.4f", -- FlowBlinker + -- accelerometer + [86] = "%.4f", -- Acceleration {0.0, 1.0}{-5.0, 10.0} + [88] = "%.4f", -- AccelerationMin {0.31, 0.695}{-5.0, 1.0} + [87] = "%.4f", -- AccelerationMax {0.0, 1.0}{-5.0, 10.0} + -- + [95] = "%.4f", -- CockpitAlt {0.0, 1.0}{0.0, 20000.0} + [96] = "%.4f", -- PressDiff {0.0, 0.102, 0.202, 0.398, 0.779, 1.0}{-0.04, -0.02, 0.0, 0.1, 0.4, 0.6} + -- Hydro Pressure + [198] = "%.4f", -- MainHydro PRESS {0.0, 1.0}{0.0, 200.0} + [200] = "%.4f", -- AuxHydro PRESS {0.0, 1.0}{0.0, 200.0} + [98] = "%.4f", -- BrakeLMainHydro PRESS {0.0, 1.0}{0.0, 60.0} + [99] = "%.4f", -- BrakeRMainHydro PRESS {0.0, 1.0}{0.0, 60.0} + [100] = "%.4f", -- BrakeAuxHydro PRESS {0.0, 1.0}{0.0, 60.0} + -- Fuel Quantity + [91] = "%.4f", -- Fuel Quantity {0.0, 0.127, 0.239, 0.35, 0.458, 0.56, 0.685, 0.82, 1.0}{0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 825.0} + -- Fan RPM + [85] = "%.4f", -- Fan RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Compressor RPM + [84] = "%.4f", -- Compressor RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Oil + [83] = "%.4f", -- Oil Temp {0.0, 0.323, 0.576, 0.817, 1.0}{-50.0, 0.0, 50.0, 100.0, 150.0} + [82] = "%.4f", -- Oil Press {0.0, 0.077, 1.0}{-1.0, 0.0, 6.0} + -- Fuel Press + [81] = "%.4f", -- Fuel Press {0.0, 0.06, 0.148, 0.323, 0.547, 0.659, 0.801, 1.0}{-1.0, 0.0, 20.0, 40.0, 60.0, 70.0, 80.0, 100.0} + -- Engine Temp + [90] = "%.4f", -- Engine Temp {0.0, 1.0}{0.0, 900.0} + -- EngineVibration + [94] = "%.4f", -- EngineVibration {0.0, 1.0}{0.0, 100.0} + -- PitchTrimInd + [247] = "%.4f", -- PitchTrimInd {1.0, -1.0}{-1.0, 1.0} + -- lights system + --[533] = "%.4f", -- CptInstrumentLightsIntensity + --[558] = "%.4f", -- CompassLightIntensity + --[555] = "%.4f", -- EmergencyLightIntensity + -- RKL-41 Radio Compass + [561] = "%.f", -- FarNDBSelectorLamp + [570] = "%.f", -- NearNDBSelectorLamp + [563] = "%.f", -- PanelLights + -- BrakeHandle + [127] = "%.4f", -- BrakeHandle + -- Lamps + [18] = "%.f", -- MRP 56 + [6] = "%.f", -- MainGenerator + [9] = "%.f", -- ReserveGennerator + [12] = "%.f", -- Inverter115 + [16] = "%.f", -- Inverter363 + [316] = "%.f", -- GroundPower + [278] = "%.f", -- FlapsUp + [279] = "%.f", -- FlapsTO + [280] = "%.f", -- FlapsDn + [117] = "%.f", -- AirBrakes + [113] = "%.f", -- GearDown front + [112] = "%.f", -- GearDown left + [114] = "%.f", -- GearDown right + [110] = "%.f", -- GearUp front + [109] = "%.f", -- GearUp left + [111] = "%.f", -- GearUp right + [115] = "%.f", -- ExtendGears + [116] = "%.f", -- DoorsOut + [185] = "%.f", -- RSBN Azim Correction + [186] = "%.f", -- RSBN Range Correction + [15] = "%.f", -- BreakdownFinished + [123] = "%.f", -- GA TILT + [206] = "%.f", -- GA TILT PU26 + [2] = "%.f", -- DangerAltitude + [27] = "%.f", -- EmergFuel + [23] = "%.f", -- TurboStarter + [4] = "%.f", -- Remain150 + [7] = "%.f", -- DoNotStart + [26] = "%.f", -- FuelFilter + [14] = "%.f", -- WingTanks + [246] = "%.f", -- TrimmerRollNeutral + [3] = "%.f", -- MachMeterLamp + [10] = "%.f", -- CanopyNotClosed + [556] = "%.f", -- LeftPitot + [557] = "%.f", -- RightPitot + [8] = "%.f", -- Vibration + [1] = "%.f", -- Fire + [28] = "%.f", -- EngineTemperature700 + [24] = "%.f", -- EngineTemperature730 + [20] = "%.f", -- EngineMinOilPressure + [359] = "%.f", -- RSBN Azim Correct + [362] = "%.f", -- RSBN Range Correct + [19] = "%.f", -- HSI Accordance + [11] = "%.f", -- CockpitPressure + [22] = "%.f", -- ConditioningClosed + [25] = "%.f", -- Defrost + [21] = "%.f", -- Ice + [182] = "%.f", -- RIO HeatingOk + [5] = "%.f", -- HydraulicPressureDrop + [253] = "%.f", -- MasterDanger + [17] = "%.f", -- EmergConditioning + [562] = "%.f", -- RadioUnderControl + [13] = "%.f", -- EmptyWingFuelTanks + -- Back Seat + -- Mechanic clock + [405] = "%.4f", -- Backseat - CLOCK currtime hours + [406] = "%.4f", -- Backseat - CLOCK currtime minutes + [408] = "%.4f", -- Backseat - CLOCK seconds meter time seconds + [411] = "%.4f", -- Backseat - CLOCK flight time meter status + [409] = "%.4f", -- Backseat - CLOCK flight hours + [410] = "%.4f", -- Backseat - CLOCK flight minutes + [407] = "%.4f", -- Backseat - CLOCK seconds meter time minutes + -- Radar altimeter RV-5 + [396] = "%.4f", -- Backseat - RV-5 RALT {0.0, 0.086, 0.439, 0.878, 0.955}{0.0, 20.0, 100.0, 700.0, 800.0} + [397] = "%.4f", -- Backseat - RV-5 DangerRALT index {0.0, 0.094, 0.48, 0.998}{0.0, 20.0, 100.0, 700.0} + [400] = "%.4f", -- Backseat - RV-5 warning flag + [401] = "%.f", -- Backseat - RV-5 DangerRALT lamp + -- Variometer + [416] = "%.4f", -- Backseat - Variometer {-1.0, -0.875, -0.775, -0.44, 0.0, 0.44, 0.775, 0.875, 1.0}{-80.0, -50.0, -20.0, -10.0, 0.0, 10.0, 20.0, 50.0, 80.0} + [418] = "%.4f", -- Backseat - Variometer sideslip {-1.0, 1.0} + [417] = "%.4f", -- Backseat - Variometer turn {-1.0, 1.0} {-math.rad(6.0), math.rad(6.0)} + -- KPP (ADI) + [375] = "%.4f", -- Backseat - KPP 1273K roll {-1.0, 1.0} {-math.pi, math.pi} + [368] = "%.4f", -- Backseat - KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + [377] = "%.4f", -- Backseat - KPP 1273K sideslip {-1.0, 1.0} + [372] = "%.4f", -- Backseat - KPP Course Deviation Bar {-1.0, 1.0} + [373] = "%.4f", -- Backseat - KPP Glide Beacon + [374] = "%.4f", -- Backseat - KPP Localizer Beacon + [366] = "%.4f", -- Backseat - KPP Arretir + [369] = "%.4f", -- Backseat - KPP SDU Roll {-1.0, 1.0} + [370] = "%.4f", -- Backseat - KPP SDU Pitch {-1.0, 1.0} + -- NPP HSI + --[378] = "%.4f", -- Backseat - HSI2 heading {1.0, 0.0}{0.0, math.pi * 2.0} + --[379] = "%.4f", -- Backseat - HSI2 commanded course needle {1.0, 0.0}{0.0, math.pi * 2.0} + [380] = "%.4f", -- Backseat - HSI2 bearing needle {1.0, 0.0}{0.0, math.pi * 2.0} + [384] = "%.4f", -- Backseat - HSI2 Course Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [382] = "%.4f", -- Backseat - HSI2 Alt Deviation Bar {-0.8, 0.8}{-1.0, 1.0} + [383] = "%.4f", -- Backseat - HSI2 Glide Beacon + [381] = "%.4f", -- Backseat - HSI2 Localizer Beacon + -- RSPN + [404] = "%.4f", -- Backseat - RSBN Range 100 + [403] = "%.4f", -- Backseat - RSBN Range 10 + [402] = "%.4f", -- Backseat - RSBN Range 1 + -- Barometric altimeter VD-20 instructor + [389] = "%.4f", -- Backseat - VD-20 km {0.0, 1.0}{0.0, 20.0} + [390] = "%.4f", -- Backseat - VD-20 m {0.0, 1.0}{0.0, 1000.0} + [391] = "%.4f", -- Backseat - VD-20 km Ind {0.0, 1.0}{0.0, 20.0} + [392] = "%.4f", -- Backseat - VD-20 m Ind {0.0, 1.0}{0.0, 1000.0} + --[393] = "%.4f", -- Backseat - VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + -- Barometric altimeter + -- Altimeter Feet , copy of A-10 altimeter + [737] = "%.4f", -- Altimeter_100_footPtr {0.0, 1.0}{0.0, 1000.0} + [732] = "%.4f", -- Altimeter_10000_footCount {0.0, 1.0}{0.0, 10.0} + [731] = "%.4f", -- Altimeter_1000_footCount {0.0, 1.0}{0.0, 10.0} + [730] = "%.4f", -- Altimeter_100_footCount {0.0, 1.0}{0.0, 10.0} + [736] = "%.4f", -- pressure_setting_0 {0.0, 1.0}{0.0, 10.0} + [735] = "%.4f", -- pressure_setting_1 {0.0, 1.0}{0.0, 10.0} + [734] = "%.4f", -- pressure_setting_2 {0.0, 1.0}{0.0, 10.0} + [733] = "%.4f", -- pressure_setting_3 {0.0, 1.0}{0.0, 10.0} + -- AIRSPEED AND MACH + [386] = "%.4f", -- Backseat - IAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [387] = "%.4f", -- Backseat - TAS {0.0, 0.08, 0.186, 0.296, 0.436, 0.55, 0.635, 0.705, 0.765, 0.824, 1.0}{0.0, 100.0, 150.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 1200.0} + [388] = "%.4f", -- Backseat - MACH 2 + -- RKL-41 + [420] = "%.4f", -- Backseat - RKL-41 needle {0.0, 1.0}{0.0, math.pi * 2.0} + [513] = "%.4f", -- Backseat - RKL-41 Signal + -- oxygen interface + [477] = "%.4f", -- Backseat - OxygenPressure {0.0, 0.025, 0.925, 1.0}{0.0, 10.0, 150.0, 160.0} + [478] = "%.4f", -- Backseat - FlowBlinker + -- accelerometer + [550] = "%.4f", -- Backseat - CockpitAlt {0.0, 1.0}{0.0, 20000.0} + [551] = "%.4f", -- Backseat - PressDiff {0.0, 0.102, 0.202, 0.398, 0.779, 1.0}{-0.04, -0.02, 0.0, 0.1, 0.4, 0.6} + -- Fuel Quantity + [427] = "%.4f", -- Backseat - Fuel Quantity {0.0, 0.127, 0.239, 0.35, 0.458, 0.56, 0.685, 0.82, 1.0}{0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 825.0} + -- Fan RPM + [425] = "%.4f", -- Backseat - Fan RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Compressor RPM + [424] = "%.4f", -- Backseat - Compressor RPM {0.0, 0.09, 0.18, 0.28, 0.372, 0.468, 0.555, 0.645, 0.733, 0.822, 0.909, 1.0}{0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0} + -- Oil + [423] = "%.4f", -- Backseat - Oil Temp {0.0, 0.323, 0.576, 0.817, 1.0}{-50.0, 0.0, 50.0, 100.0, 150.0} + [422] = "%.4f", -- Backseat - Oil Press {0.0, 0.077, 1.0}{-1.0, 0.0, 6.0} + -- Fuel Press + [421] = "%.4f", -- Backseat - Fuel Press {0.0, 0.06, 0.148, 0.323, 0.547, 0.659, 0.801, 1.0}{-1.0, 0.0, 20.0, 40.0, 60.0, 70.0, 80.0, 100.0} + -- lights system + --[559] = "%.4f", -- Backseat - CptInstrumentLightsIntensity + -- RKL-41 Radio Compass + [564] = "%.f", -- Backseat - FarNDBSelectorLamp CP + [571] = "%.f", -- Backseat - NearNDBSelectorLamp CP + [566] = "%.f", -- Backseat - RKL PanelLights + -- BrakeHandle + [542] = "%.4f", -- Backseat - BrakeHandle CP + -- Lamps + [358] = "%.f", -- Backseat - MRP 56 Instructor + [347] = "%.f", -- Backseat - MainGen Instructor + [350] = "%.f", -- Backseat - ReserveGen Instructor + [353] = "%.f", -- Backseat - Inverter115 Instructor + [357] = "%.f", -- Backseat - Inverter363 Instructor + [462] = "%.f", -- Backseat - FlapsUp + [463] = "%.f", -- Backseat - FlapsTO + [464] = "%.f", -- Backseat - FlapsDn + [436] = "%.f", -- Backseat - AirBrakes + [432] = "%.f", -- Backseat - GearDown front + [431] = "%.f", -- Backseat - GearDown left + [433] = "%.f", -- Backseat - GearDown right + [429] = "%.f", -- Backseat - GearUp front + [428] = "%.f", -- Backseat - GearUp left + [430] = "%.f", -- Backseat - GearUp right + [434] = "%.f", -- Backseat - ExtendGears + [435] = "%.f", -- Backseat - DoorsOu + [356] = "%.f", -- Backseat - BreakdownFinished + [443] = "%.f", -- Backseat - GA TILT + [343] = "%.f", -- Backseat - DangerAltitudeInstructor + [365] = "%.f", -- Backseat - EmergFuel + [345] = "%.f", -- Backseat - Remain150 + [348] = "%.f", -- Backseat - DoNotStart + [364] = "%.f", -- Backseat - FuelFilter + [355] = "%.f", -- Backseat - WingTanks + [441] = "%.f", -- Backseat - TrimmerRollNeutral + [442] = "%.f", -- Backseat - TrimmerPitchNeutral + [344] = "%.f", -- Backseat - MachMeterLamp + [351] = "%.f", -- Backseat - CanopyNotClosed + [349] = "%.f", -- Backseat - Vibration + [342] = "%.f", -- Backseat - Fire + [352] = "%.f", -- Backseat - CockpitPressure + [361] = "%.f", -- Backseat - ConditioningClosed + [363] = "%.f", -- Backseat - Defrost + [360] = "%.f", -- Backseat - Ice + [346] = "%.f", -- Backseat - HydraulicPressureDrop + [455] = "%.f", -- Backseat - MasterDanger + [565] = "%.f", -- Backseat - RadioUnderControl + [354] = "%.f", -- Backseat - EmptyWingFuelTanks +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Front Seat + -- ASP-3NMU Gunsight + [101] = "%1d", -- ASP-3NMU Gunsight Mode, GYRO/FIXED + [102] = "%.1f", -- ASP-3NMU Gunsight Brightness Knob (Axis) {0.0, 1.0} in 0.2 Steps + [103] = "%.1f", -- ASP-3NMU Gunsight Target Wingspan Adjustment Dial (meters) (Axis) {0.0, 1.0} in 0.1 Steps + [104] = "%1d", -- ASP-3NMU Gunsight Color Filter, ON/OFF + [105] = "%1d", -- ASP-3NMU Gunsight Fixed Reticle Mask Lever + [106] = "%.1f", -- ASP-3NMU Gunsight Mirror Depression (Axis) {0.0, 1.0} in 0.05 Steps + [107] = "%.1f", -- ASP-3NMU Gunsight Target Distance (Axis) {0.0, 1.0} in 0.1 Steps + -- CLOCK + [335] = "%1d", -- Mech clock left lever Button + [336] = "%.1f", -- Mech clock left lever (Axis) {0.0, 1.0} in 0.04 Steps + [337] = "%1d", -- Mech clock right lever Button + [338] = "%.1f", -- Mech clock right lever (Axis) {0.0, 1.0} in 0.1 Steps + -- Baro Altimeter + [57] = "%.f2", -- Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.6 Steps + -- Radar Altimeter + [60] = "%1d", -- RV-5M Radio Altimeter Test Button + [61] = "%.2f", -- RV-5M Radio Altimeter Decision Height Knob (Axis) {0.0, 1.0} in 0.2 Steps + -- GMK + [204] = "%1d", -- GMK-1AE GMC Hemisphere Selection Switch, N(orth)/S(outh) + [207] = "%1d", -- GMK-1AE GMC Mode Switch, MC(Magnetic Compass Mode)/GC(Directional Gyro Mode) + [205] = "%1d", -- GMK-1AE GMC Test Switch, 0(degrees)/OFF/300(degrees) - Use to check heading indication accuracy {-1.0,0.0,1.0} + [208] = "%1d", -- GMK-1AE GMC Course Selector Switch, CCW/OFF/CW {-1.0,0.0,1.0} + [209] = "%.2f", -- GMK-1AE GMC Latitude Selector Knob (Axis) {0.0, 1.0} in 0.02 Steps + -- Gyro + [124] = "%1d", -- MC Synchronization Button - Push to synchronize (level flight only) + -- Magnetic Variation + [532] = "%.2f", -- Magnetic Declination set Knob (Axis) {0.0, 1.0} in 0.05 Steps + -- KPP-1273K (ADI) + [30] = "%1d", -- KPP-1273K Attitude Director Indicator (ADI) Cage Button + [39] = "%.2f", -- KPP-1273K Attitude Director Indicator (ADI) Pitch Trim Knob {-1.0, 1.0} in 0.05 Steps + [177] = "%1d", -- SDU Switch, ON/OFF + [460] = "%1d", -- AGD Pitch Failure + [461] = "%1d", -- AGD Bank Failure + -- NPP (HSI) + [48] = "%.2f", -- HSI Course set Knob (Axis) {0.0, 1.0} in 0.15 Steps + [526] = "%1d", -- Course Accordance + [458] = "%1d", -- GMK Failure + -- ISKRA (RSBN) + [178] = "%.1f", -- RSBN Mode Switch, LANDING/NAVIGATION/GLIDE PATH {0.0,0.1,0.2} + [179] = "%1d", -- RSBN Identification Button + [180] = "%1d", -- RSBN Test Button - Push to test + [181] = "%.2f", -- RSBN Control Box Lighting Intensity Knob (Axis) {0.0, 0.8} in 0.04 Steps + [184] = "%.2f", -- RSBN Volume Knob (Axis) {0.0, 0.8} in 0.04 Steps + [187] = "%1d", -- Initial Azimuth {-1.0,0.0,1.0} + [188] = "%1d", -- Initial Range {-1.0,0.0,1.0} + [191] = "%.3f", -- RSBN Navigation Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps + [192] = "%1d", -- RSBN Landing Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps + [193] = "%1d", -- Set 0 Azimuth + [201] = "%.2f", -- RSBN Field Elevation Knob (Axis) {0.0, 1.0} in 0.02 Steps + [297] = "%1d", -- RSBN Listen Callsign Button - Push to listen + [527] = "%1d", -- RSBN Emergency Landing Switch, ON/OFF + -- Variometer + [569] = "%.1f", -- Variometer adjustment knob (Axis) {0.0, 1.0} in 0.1 Steps + -- RKL-41 + [119] = "%1d", -- RKL-41 ADF Outer-Inner Beacon (Far-Near NDB) Switch + [157] = "%.2f", -- RKL-41 ADF Volume Knob (Axis) {1.0, 0.0} in 0.05 Steps + [161] = "%1d", -- RKL-41 ADF Brightness Knob (Axis) {1.0, 0.0} in 0.05 Steps + [159] = "%1d", -- RKL-41 ADF Mode Switch, TLF(A3)/TLG(A1,A2) + [160] = "%.1f", -- RKL-41 ADF Function Selector Switch, OFF/COMP(AUTO)/COMP(MAN)/ANT/LOOP {0.0,0.1,0.2,0.3,0.4} + [162] = "%1d", -- RKL-41 ADF Loop Switch, LEFT/OFF/RIGHT {-1.0,0.0,1.0} + [158] = "%1d", -- RKL-41 ADF Control Switch, TAKE CONTROL/HAND OVER CONTROL + [165] = "%.2f", -- RKL-41 ADF Far NDB Frequency Tune (Axis) {1.0, 0.0} in 0.05 Steps + [163] = "%.4f", -- RKL-41 ADF Far NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [164] = "%.1f", -- RKL-41 ADF Far NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [168] = "%.2f", -- RKL-41 ADF Near NDB Frequency Tune (Axis) {0.0,1.0} in 0.05 Steps + [166] = "%.4f", -- RKL-41 ADF Near NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [167] = "%.1f", -- RKL-41 ADF Near NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [459] = "%1d", -- ARK Failure + -- electric system + [141] = "%1d", -- Battery Switch, ON/OFF + [142] = "%1d", -- Main Generator Switch, ON/OFF + [143] = "%1d", -- Emergency Generator Switch, ON/OFF + [502] = "%1d", -- Net Switch, ON/OFF + [169] = "%1d", -- Emergency Engine Instruments Power Switch, ON/OFF + [315] = "%1d", -- Turbo Button + [313] = "%1d", -- Stop Turbo Switch, ON/OFF + [326] = "%1d", -- Engine Button + [320] = "%1d", -- Emergency Fuel Switch + [322] = "%.1f", -- Engine Start Mode Switch, START/FALSE START/COLD CRANKING {0.0,0.1,0.2} + [144] = "%1d", -- CB Engine Switch, ON/OFF + [145] = "%1d", -- CB AGD-GMK Switch, ON/OFF + [146] = "%1d", -- CB Inverter 1 (AC 115V) Switch, ON/OFF + [147] = "%1d", -- CB Inverter 2 (AC 115V) Switch, ON/OFF + [148] = "%1d", -- CB RDO (ICS and Radio) Switch, ON/OFF + [149] = "%1d", -- CB MRP-RV (Marker Beacon Receiver and Radio Altimeter) Switch, ON/OFF + [150] = "%1d", -- CB RSBN (ISKRA) Switch, ON/OFF + [151] = "%1d", -- CB IFF (SRO) Emergency Connection Switch, ON/OFF + [152] = "%1d", -- CB RSBN (ISKRA) Emergency Connection Switch, ON/OFF + [153] = "%1d", -- CB Wing Tanks Switch, ON/OFF + [154] = "%1d", -- CB RIO-3 De-Icing Signal Switch, ON/OFF + [155] = "%1d", -- CB SDU Switch, ON/OFF + [628] = "%1d", -- CB Heating AOA Sensor Switch, ON/OFF + [505] = "%1d", -- CB Weapon Switch, ON/OFF + [211] = "%1d", -- CB Air Conditioning, ON/OFF + [212] = "%1d", -- CB Anti-Ice, ON/OFF + [213] = "%1d", -- CB Pitot Left, ON/OFF + [214] = "%1d", -- CB Pitot Right, ON/OFF + [215] = "%1d", -- CB PT-500C, ON/OFF + [216] = "%1d", -- CB ARC, ON/OFF + [217] = "%1d", -- CB SRO, ON/OFF + [218] = "%1d", -- CB Seat-Helmet, ON/OFF + [219] = "%1d", -- CB Gears, ON/OFF + [220] = "%1d", -- CB Control, ON/OFF + [221] = "%1d", -- CB Signaling, ON/OFF + [222] = "%1d", -- CB Nav. Lights, ON/OFF + [223] = "%1d", -- CB Spotlight Left, ON/OFF + [224] = "%1d", -- CB Spotlight Right, ON/OFF + [225] = "%1d", -- CB Red Lights, ON/OFF + [226] = "%1d", -- CB White Lights, ON/OFF + [227] = "%1d", -- CB Start Panel, ON/OFF + [228] = "%1d", -- CB Booster Pump, ON/OFF + [229] = "%1d", -- CB Ignition 1, ON/OFF + [230] = "%1d", -- CB Ignition 2, ON/OFF + [231] = "%1d", -- CB Engine Instruments, ON/OFF + [232] = "%1d", -- CB Fire, ON/OFF + [233] = "%1d", -- CB Emergency Jettison, ON/OFF + [234] = "%1d", -- CB SARPP, ON/OFF + [503] = "%1d", -- CB Seat, ON/OFF + [504] = "%1d", -- CB Signal, ON/OFF + [512] = "%1d", -- CB Ground Intercom, ON/OFF + [294] = "%1d", -- Standby (Left) Pitot Tube Heating Button - Push to turn heating on + [295] = "%1d", -- Main (Right) Pitot Tube Heating Button - Push to turn heating on + [292] = "%1d", -- Standby (Left) Pitot Tube Heating Off Button - Push to turn heating off + [293] = "%1d", -- Standby (Left) Pitot Tube Heating Off Button - Push to turn heating off + -- lights system + [176] = "%.1f", -- Navigation Lights Mode Control Switch, FLICKER/OFF/FIXED {0.0,0.5,1.0} + [175] = "%.1f", -- Navigation Lights Intensity Control Switch, DIM(30%)/BRT(60%)/MAX(100%) {0.0,0.5,1.0} + [311] = "%1d", -- Taxi and Landing Lights (Searchlights) Control Switch, TAXI/OFF/LANDING {-1.0,0.0,1.0} + [330] = "%1d", -- Instrument Lighting Switch, Red/OFF/White {-1.0,0.0,1.0} + [331] = "%.1f", -- Instrument Lights Intensity Knob (Axis) {0.1,0.9} in 0.1 Steps + [249] = "%1d", -- Emergency Instrument Light Switch, ON/OFF + [202] = "%.1f", -- Warning-Light Intensity Knob (Axis) {0.0,1.0} in 0.1 Steps + [203] = "%1d", -- Warning-Light Check Button - Push to check + -- Weapon System + [254] = "%1d", -- CB Armament System Power Switch, ON/OFF + [255] = "%1d", -- CB Missile Firing Control Circuit Power Switch, ON/OFF + [256] = "%1d", -- CB ASP-FKP (Gunsight and Gun Camera) Power Switch, ON/OFF + [257] = "%1d", -- CB Missile Seeker Heating Circuit Power Switch, ON/OFF + [258] = "%1d", -- CB Missile Seeker Glowing Circuit Power Switch, ON/OFF + [259] = "%.1f", -- Missile Seeker Tone Volume Knob (Axis) {0.0,1.0} in 0.1 Steps + [268] = "%1d", -- Arm/Safe Bombs Emergency Jettison Switch, LIVE/BLANK + [271] = "%.1f", -- Rockets Firing Mode Selector Switch, AUT./2RS/4RS {0.0,0.1,0.2} + [509] = "%1d", -- Arm/Safe Bombs Emergency Jettison Switch, LIVE/BOMBS/BLANK {-1.0,0.0,1.0} + [507] = "%1d", -- Emergency Jettison Switch, ON/OFF + [273] = "%1d", -- EKSR-46 Signal Flare Dispenser Power Switch, ON/OFF + [274] = "%1d", -- EKSR-46 Yellow Signal Flare Launch Button + [275] = "%1d", -- EKSR-46 Green Signal Flare Launch Button + [276] = "%1d", -- EKSR-46 Red Signal Flare Launch Button + [277] = "%1d", -- EKSR-46 White Signal Flare Launch Button + [260] = "%1d", -- Missile/Bomb Release Selector Switch, PORT(Left)/STARB-BOTH(Right for Missiles/Both) + [583] = "%1d", -- Gun+PK3 Switch + [590] = "%1d", -- Emergency Jettison Inboard Stations Switch, ON/OFF + [607] = "%1d", -- Pyro Charge Apply {0.0,0.5,1.0} + [576] = "%1d", -- Gsh-23 Arm/Safe + [585] = "%1d", -- Outboard Stations Select + [586] = "%1d", -- Outboard Stations Deselect + [587] = "%1d", -- Inboard Stations Select + [588] = "%1d", -- Inboard Stations Deselect + [577] = "%1d", -- Charge Outer Guns + [578] = "%1d", -- Charge Inner Guns + [592] = "%1d", -- Emergency Launch Missiles + [597] = "%1d", -- Arm Outer Guns + [598] = "%1d", -- Arm Inner Guns + [596] = "%1d", -- Arm Bombs + [584] = "%1d", -- Bombs Series {-1.0,0.0,1.0} + [270] = "%1d", -- Emergency Jettison Outboard Stations Switch, ON/OFF + [629] = "%1d", -- CB Weapon Switch, ON/OFF + [599] = "%1d", -- Deblock Guns + -- oxygen system + [303] = "%1d", -- Emergency Oxygen Switch, ON/OFF + [304] = "%1d", -- Diluter Demand Switch, 100% / MIX + [307] = "%1d", -- Helmet Ventilation Switch, ON/OFF + [306] = "%.2f", -- Oxygen Supply Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + [484] = "%.2f", -- Oxygen Interconnaction Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + -- sarpp + [298] = "%1d", -- SARPP Flight Recorder, ON/OFF + -- fuel system + [296] = "%1d", -- Fuel Shut-Off Lever + -- air system + [245] = "%.1f", -- ECS and Pressurization Handle, OFF/CANOPIES SEALED/ECS ON (Axis) {0.0,1.0} in 0.1 Steps + [172] = "%.2f", -- Cabin Air Conditioning Control Switch, OFF/HEAT/COOL/AUTOMATIC {0.0,0.25} in 0.05 Steps + [173] = "%.1f", -- Cabin Air Temperature Controller Rheostat (Axis) {0.0,1.0} in 0.1 Steps + [121] = "%.2f", -- Diffuser and Flight Suit Air Conditioning Control Switch, HEAT/AUTO/COOL {0.0,0.25} in 0.05 Steps + [120] = "%.1f", -- Diffuser and Flight Suit Temperature Rheostat (Axis) {0.0,1.0} in 0.1 Steps + [511] = "%1d", -- Conditioning Shutoff Switch, OPEN/FRONT PILOT CONTROL/CLOSE {-1.0,0.0,1.0} + -- anti-icing system + [174] = "%1d", -- De-Icing Mode Switch, MANUAL/AUTOMATIC/OFF {0.0,0.1,0.2} + [183] = "%1d", -- RIO-3 De-Icing Sensor Heating Circuit Check Button - Push to test + -- helmet heating + [309] = "%1d", -- Helmet Visor Quick Heating Button - Push to heat + [308] = "%1d", -- Helmet Heating Mode Switch, AUTO/OFF/ON {0.0,0.5,1.0} + [310] = "%.1f", -- Helmet Heating Temperature Rheostat (Axis) {0.0,1.0} in 0.1 Steps + -- SPU-9 + [209] = "%1d", -- Reserve Intercom Switch, ON/OFF + [291] = "%1d", -- ADF Audio Switch, ADF/OFF + [288] = "%1d", -- Intercom Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [289] = "%1d", -- Radio Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [134] = "%1d", -- Radio Button + [133] = "%1d", -- Intercom Button + -- R-832M + [287] = "%1d", -- Radio Control Switch, ON/OFF + [286] = "%1d", -- Squelch Switch, ON/OFF + [284] = "%1d", -- R-832M Preset Channel Selector Knob (Axis) {0.0,1.0} in 20 0.05 Steps + -- engine systems + [329] = "%1d", -- IV-300 Engine Vibration Test Button - Push to test + [328] = "%1d", -- Fire Extinguish Button - Push to extinguish + [272] = "%1d", -- Fire Warning Signal Test Switch, I/OFF/II {-1.0,0.0,1.0} + [324] = "%1d", -- RT-12 JPT Regulator Manual Disable Switch, RT-12 DISABLED/RT-12 ENABLED + [243] = "%1d", -- RT-12 JPT Regulator Power Switch, ON/OFF + [242] = "%1d", -- RT-12 JPT Regulator Test Switch, I/OFF/II {-1.0,0.0,1.0} + [499] = "%1d", -- EGT Indicator Switch, FRONT/REAR + -- control system + [281] = "%1d", -- Flaps Flight Position (0 degrees) Button + [282] = "%1d", -- Flaps Takeoff Position (25 degrees) Button + [283] = "%1d", -- Flaps Landing Position (44 degrees) Button + [549] = "%1d", -- Throttle Limiter + [135] = "%1d", -- Air Brake Switch {0.0,1.0} + [136] = "%1d", -- Air Brake Switch (2nd position) {0.0,1.0} + [118] = "%1d", -- Landing Gear Control Lever {-1.0,0.0,1.0} + [334] = "%.1f", -- Emergency/Parking Wheel Brake Lever {0.0,1.0} in 0.1 Steps + [334] = "%1d", -- Parking Brake Lever Flag - Push to remove parking brake + [197] = "%1d", -- Main and Emergency Hydraulic Systems Interconnection Lever, FORWARD(OFF)/BACKWARD(ON) + [194] = "%1d", -- Emergency Landing Gear Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [195] = "%1d", -- Emergency Flaps Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [196] = "%1d", -- RAT (Emergency Generator) Emergency Lever, FORWARD(OFF)/BACKWARD(ON) + [456] = "%1d", -- Full Pressure Failure Lever, ON/STBY/FAILURE {-0.5,0.0,0.5} + [457] = "%1d", -- Static Pressure Failure Lever, ON/STBY/FAILURE {-0.5,0.0,0.5} + -- accelerometer + [89] = "%1d", -- Reset Limits + -- canopy + [998] = "%1d", -- Canopy Handle + [285] = "%1d", -- Forward Canopy Lock Handle + [244] = "%1d", -- Forward Canopy Emergency Jettison Handle + -- Pitot Selector + [333] = "%1d", -- Pitot Tube Selector Lever, STBY(Left)/MAIN(Right) + -- Back Seat + -- CLOCK + [412] = "%1d", -- Backseat - Mech clock left lever Button + [413] = "%.1f", -- Backseat - Mech clock left lever (Axis) {0.0, 1.0} in 0.04 Steps + [414] = "%1d", -- Backseat - Mech clock right lever Button + [415] = "%.1f", -- Backseat - Mech clock right lever (Axis) {0.0, 1.0} in 0.1 Steps + -- Baro Altimeter + [394] = "%.f2", -- Backseat - Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.6 Steps + -- Radar Altimeter + [398] = "%1d", -- Backseat - RV-5M Radio Altimeter Test Button + [399] = "%.2f", -- Backseat - RV-5M Radio Altimeter Decision Height Knob (Axis) {0.0, 1.0} in 0.2 Steps + -- GMK + -- Gyro + [444] = "%1d", -- Backseat - MC Synchronization Button - Push to synchronize (level flight only) + -- KPP-1273K (ADI) + [367] = "%1d", -- Backseat - KPP-1273K Attitude Director Indicator (ADI) Cage Button + [376] = "%.2f", -- Backseat - KPP-1273K Attitude Director Indicator (ADI) Pitch Trim Knob (Axis) {-1.0, 1.0} in 0.05 Steps + -- NPP (HSI) + [385] = "%.2f", -- Backseat - HSI Course set knob (Axis) {0.0, 1.0} in 0.15 Steps + -- Variometer + [419] = "%.1f", -- Backseat - Variometer adjustment knob (Axis) {0.0, 1.0} in 0.1 Steps + -- RKL-41 + [440] = "%1d", -- Backseat - RKL-41 ADF Outer-Inner Beacon (Far-Near NDB) Switch + [514] = "%.2f", -- Backseat - RKL-41 ADF Volume Knob (Axis) {1.0, 0.0} in 0.05 Steps + [518] = "%.2f", -- Backseat - RKL-41 ADF Brightness Knob (Axis) {1.0, 0.0} in 0.05 Steps + [516] = "%1d", -- Backseat - RKL-41 ADF Mode Switch, TLF(A3)/TLG(A1,A2) + [517] = "%.1f", -- Backseat - RKL-41 ADF Function Selector Switch, OFF/COMP(AUTO)/COMP(MAN)/ANT/LOOP {0.0,0.1,0.2,0.3,0.4} + [519] = "%1d", -- Backseat - RKL-41 ADF Loop Switch, LEFT/OFF/RIGHT + [515] = "%1d", -- Backseat - RKL-41 ADF Control Switch, TAKE CONTROL/HAND OVER CONTROL + [522] = "%.2f", -- Backseat - RKL-41 ADF Far NDB Frequency Tune (Axis) {1.0, 0.0} in 0.05 Steps + [520] = "%.4f", -- Backseat - RKL-41 ADF Far NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [521] = "%.1f", -- Backseat - RKL-41 ADF Far NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + [525] = "%.2f", -- Backseat - RKL-41 ADF Near NDB Frequency Tune (Axis) {0.0,1.0} in 0.05 Steps + [523] = "%.4f", -- Backseat - RKL-41 ADF Near NDB 100kHz rotary (Axis) {0.0,0.938} in 0.0588 Steps + [524] = "%.1f", -- Backseat - RKL-41 ADF Near NDB 10kHz rotary (Axis) {0.0,0.9} in 0.1 Steps + -- electric system + [488] = "%1d", -- Backseat - Turbo Button + [494] = "%1d", -- Backseat - Engine Button + [490] = "%1d", -- Backseat - Stop Engine Switch + [492] = "%1d", -- Backseat - Emergency Fuel Switch + -- lights system + [486] = "%1d", -- Backseat - Taxi and Landing Lights (Searchlights) Control Switch, TAXI/OFF/LANDING {-1.0,0.0,1.0} + [497] = "%1d", -- Backseat - Instrument Lighting Switch, Red/OFF/White {-1.0,0.0,1.0} + [498] = "%.1f", -- Backseat - Instrument Lights Intensity Knob (Axis) {0.1,0.9} in 0.1 Steps + [537] = "%.1f", -- Backseat - Warning-Light Intensity Knob (Axis) {0.0,1.0} in 0.1 Steps + [538] = "%1d", -- Backseat - Warning-Light Check Button - Push to check + -- oxygen system + [479] = "%1d", -- Backseat - Emergency Oxygen Switch, ON/OFF + [480] = "%1d", -- Backseat - Diluter Demand Switch, 100% / MIX + [482] = "%.4f", -- Backseat - Oxygen Supply Valve (CLOSE - CW, OPEN - CCW) (Axis) {0.0,1.0} in 0.05 Steps + -- fuel system + [475] = "%1d", -- Backseat - Fuel Shut-Off Lever + -- air system + [245] = "%.1f", -- Backseat - ECS and Pressurization Handle, OFF/CANOPIES SEALED/ECS ON (Axis) {0.0,1.0} in 0.1 Steps + -- SPU-9 + [473] = "%1d", -- Backseat - Reserve Intercom Switch, ON/OFF + [474] = "%1d", -- Backseat - ADF Audio Switch, ADF/OFF + [471] = "%1d", -- Backseat - Intercom Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [472] = "%1d", -- Backseat - Radio Volume Knob (Axis) {0.0,0.8} in 0.05 Steps + [547] = "%1d", -- Backseat - Radio Button + [546] = "%1d", -- Backseat - Intercom Button + -- R-832M + [470] = "%1d", -- Backseat - Radio Control Switch, ON/OFF + [469] = "%1d", -- Backseat - Squelch Switch, ON/OFF + [468] = "%1d", -- Backseat - R-832M Preset Channel Selector Knob (Axis) {0.0,1.0} in 20 0.05 Steps + -- control system + [465] = "%1d", -- Backseat - Flaps Flight Position (0 degrees) Button + [466] = "%1d", -- Backseat - Flaps Takeoff Position (25 degrees) Button + [467] = "%1d", -- Backseat - Flaps Landing Position (44 degrees) Button + [548] = "%1d", -- Backseat - Air Brake Switch {-1.0, 0.0, 1.0} + [437] = "%1d", -- Backseat - Landing Gear Control Lever {0.0,0.5,1.0} ??? eigentlich 4 Positionen + [501] = "%.1f", -- Backseat - Emergency Wheel Brake Lever {0.0,1.0} in 0.1 Steps + [536] = "%1d", -- Backseat - Main and Emergency Hydraulic Systems Interconnection Lever, FORWARD(OFF)/BACKWARD(ON) + [533] = "%1d", -- Backseat - Emergency Landing Gear Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [534] = "%1d", -- Backseat - Emergency Flaps Extension Lever, FORWARD(OFF)/BACKWARD(ON) + [535] = "%1d", -- Backseat - RAT (Emergency Generator) Emergency Lever, FORWARD(OFF)/BACKWARD(ON) + -- canopy + [999] = "%1d", -- Backseat - Canopy Handle + [485] = "%1d", -- Backseat - Canopy Lock Handle + [539] = "%1d", -- Backseat - Canopy Emergency Jettison Handle +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Front Seat + + -- ADI correction + --[31] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[40] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + local lPitch = mainPanelDevice:get_argument_value(31) + + lPitch = lPitch * 2 + + ExportScript.Tools.SendData(31, string.format("%.4f", lPitch)) + ExportScript.Tools.SendData(40, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(40)))) -- negate + + -- HSI correction + --[41] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[42] = "%.4f", -- HSI commanded course needle (yellow needle) {1.0, 0.0} {0.0, math.pi * 2.0} + local lCommandCourse = mainPanelDevice:get_argument_value(42) + + lCommandCourse = lCommandCourse + 0.5 -- 180 degree turn + + ExportScript.Tools.SendData(41, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(41)))) -- negate + ExportScript.Tools.SendData(42, string.format("%.4f", lCommandCourse)) + + -- Back Seat + + -- ADI correction + --[368] = "%.4f", -- KPP 1273K pitch {-0.5, 0.5} {-math.pi / 2.0, math.pi / 2.0} + --[377] = "%.4f", -- KPP 1273K sideslip {-1.0, 1.0} + local lPitch2 = mainPanelDevice:get_argument_value(368) + + lPitch2 = lPitch2 * 2 + + ExportScript.Tools.SendData(368, string.format("%.4f", lPitch2)) + ExportScript.Tools.SendData(377, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(377)))) -- negate + + -- HSI correction + --[378] = "%.4f", -- HSI heading {1.0, 0.0} {0.0, math.pi * 2.0} + --[379] = "%.4f", -- HSI commanded course needle (wihte needle) {1.0, 0.0} {0.0, math.pi * 2.0} + local lCommandCourse2 = mainPanelDevice:get_argument_value(379) + + lCommandCourse2 = lCommandCourse2 + 0.5 -- 180 degree turn + + ExportScript.Tools.SendData(378, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(378)))) -- negate + ExportScript.Tools.SendData(379, string.format("%.4f", lCommandCourse2)) + + -- VD-20 Presseure correction + --[56] = "%.4f", -- VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + local lVD_20_PRESS = mainPanelDevice:get_argument_value(56) + --ExportScript.Tools.WriteToLog('Pressure: '..ExportScript.Tools.dump(lVD_20_PRESS)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.89 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 0.76793104410172 -- maximaler Eingangswert + x = 0.57506740093231 -- aktueller Eingangswert + + d_y = 0.89 -- Delta Ausga + d_x = 0.76793104410172 -- Delta Eingangswerte (x_max + m = 1.158958225267568124678891052043 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000002387929418604 (2.387929418604e-32) -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.66648 -- Ergebnis (m * x + n) + ]] + if gVD_20_PRESS ~= lVD_20_PRESS then + gVD_20_PRESS = lVD_20_PRESS + lVD_20_PRESS = 1.158958225267568124678891052043 * lVD_20_PRESS + 0.0000000000000000000000000000002387929418604 + --ExportScript.Tools.WriteToLog('Pressure2: '..ExportScript.Tools.dump(lVD_20_PRESS)) + ExportScript.Tools.SendData(56, string.format("%.4f", lVD_20_PRESS)) + end + + --[393] = "%.4f", -- Backseat - VD-20 PRESS {0.0, 1.0}{670.0, 826.0} + local lVD_20_PRESS_Backseat = mainPanelDevice:get_argument_value(393) + --ExportScript.Tools.WriteToLog('Pressure: '..ExportScript.Tools.dump(lVD_20_PRESS_Backseat)) + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 0.89 -- maximaler Ausgabewert + x_min = 0.0 -- minimaler Eingangswert + x_max = 0.76793104410172 -- maximaler Eingangswert + x = 0.57506740093231 -- aktueller Eingangswert + + d_y = 0.89 -- Delta Ausga + d_x = 0.76793104410172 -- Delta Eingangswerte (x_max + m = 1.158958225267568124678891052043 -- Steigung der linearen Funktion (d_y / d_x) + n = 0.0000000000000000000000000000002387929418604 (2.387929418604e-32) -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.66648 -- Ergebnis (m * x + n) + ]] + if gVD_20_PRESS_Backseat ~= lVD_20_PRESS_Backseat then + gVD_20_PRESS_Backseat = lVD_20_PRESS_Backseat + lVD_20_PRESS_Backseat = 1.158958225267568124678891052043 * lVD_20_PRESS_Backseat + 0.0000000000000000000000000000002387929418604 + --ExportScript.Tools.WriteToLog('Pressure2: '..ExportScript.Tools.dump(lVD_20_PRESS_Backseat)) + ExportScript.Tools.SendData(393, string.format("%.4f", lVD_20_PRESS_Backseat)) + end +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF RADIO:get frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- R_832M Channel + local R_832M = {[0.0]="0",[0.05]="1",[0.1]="2",[0.15]="3",[0.2]="4",[0.25]="5",[0.3]="6",[0.35]="7",[0.4]="8",[0.45]="9",[0.5]="10",[0.55]="11",[0.6]="12",[0.65]="13",[0.7]="14",[0.75]="15",[0.8]="16",[0.85]="17",[0.9]="18",[0.95]="19"} + ExportScript.Tools.SendData(2000, R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + --ExportScript.Tools.WriteToLog('R_832M Channel: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(284))..', '..R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + + -- R_832M Frequency + local lR_832M_F = GetDevice(19) + if lR_832M_F:is_on() then + --ExportScript.Tools.SendData(2001, string.format("%7.3f", lR_832M_F:get_frequency()/1000000)) + ExportScript.Tools.SendData(2001, ExportScript.Tools.RoundFreqeuncy(lR_832M_F:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('R_832M Frequency: '..ExportScript.Tools.dump(string.format("%7.3f", lR_832M_F:get_frequency()/1000000))) + else + ExportScript.Tools.SendData(2001, " ") + end + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {222, 225, 226, 497}) + -- CB Nav. Lights, CB Red Lights, CB White Lights, Backseat - Instrument Lighting Switch +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF RADIO:get frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- R_832M Channel + local R_832M = {[0.0]="0",[0.05]="1",[0.1]="2",[0.15]="3",[0.2]="4",[0.25]="5",[0.3]="6",[0.35]="7",[0.4]="8",[0.45]="9",[0.5]="10",[0.55]="11",[0.6]="12",[0.65]="13",[0.7]="14",[0.75]="15",[0.8]="16",[0.85]="17",[0.9]="18",[0.95]="19"} + ExportScript.Tools.SendDataDAC(2000, R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + --ExportScript.Tools.WriteToLog('R_832M Channel: '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(284))..', '..R_832M[ExportScript.Tools.round(mainPanelDevice:get_argument_value(284), 2)]) + + + -- R_832M Frequency + local lR_832M_F = GetDevice(19) + if lR_832M_F:is_on() then + --ExportScript.Tools.SendDataDAC(2001, string.format("%7.3f", lR_832M_F:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC(2001, ExportScript.Tools.RoundFreqeuncy(lR_832M_F:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('R_832M Frequency: '..ExportScript.Tools.dump(string.format("%7.3f", lR_832M_F:get_frequency()/1000000))) + else + ExportScript.Tools.SendDataDAC(2001, " ") + end + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +-- global VD-20 Pressure variable +gVD_20_PRESS = 0 +gVD_20_PRESS_Backseat = 0 +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/M-2000C.lua b/ExportsModules/M-2000C.lua new file mode 100644 index 0000000..7db1e64 --- /dev/null +++ b/ExportsModules/M-2000C.lua @@ -0,0 +1,1325 @@ +-- Mirage M-2000C + +ExportScript.FoundDCSModule = true +ExportScript.Version.M2000C = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + +-- LAMPS / DISPLAYS -------------------------------------- + [185] = "%.1f", --LIM, MIP, + [186] = "%.1f", --IFF, MIP, Acc + [187] = "%.1f", --LED green, ADI + [188] = "%.1f", --LED green, ADI + +-- RWR Lamps + [229] = "%.1f", --V + [230] = "%.1f", --BR + [231] = "%.1f", --DA + [232] = "%.1f", --D2M + [233] = "%.1f", --LL + +-- Autopilot Controls/Indicator Lights + [267] = "%.1f", --button P light + [268] = "%.1f", --button MIS light + [270] = "%.1f", --button AUT light + [271] = "%.1f", --button MAN light + [273] = "%.1f", --button MAG-P light + [274] = "%.1f", --button MAG-MAG light + + [280] = "%.1f", --button TOT light + [281] = "%.1f", --button PAP light + +-- Weapon panel + [236] = "%.1f", --button1 S 001 light + [238] = "%.1f", --button2 S 001 light + [240] = "%.1f", --button3 S 001 light + [242] = "%.1f", --button4 S 001 light + [244] = "%.1f", --button5 S 001 light + + [251] = "%.1f", --button1 S 002 light + [252] = "%.1f", --button1 P 002 light + [254] = "%.1f", --button2 S 002 light + [255] = "%.1f", --button2 P 002 light + [257] = "%.1f", --button3 S 002 light + [258] = "%.1f", --button3 P 002 light + [260] = "%.1f", --button4 S 002 light + [261] = "%.1f", --button4 P 002 light + [263] = "%.1f", --button5 S 002 light + [264] = "%.1f", --button5 P 002 light + + [246] = "%.1f", --button KL1 light + [247] = "%.1f", --button KL2 light + + [321] = "%.1f", --ADI ILS light + [374] = "%.1f", --Fire light 1 + [375] = "%.1f", --Fire light 2 + +-- AUTOPILOT lights + [283] = "%.1f", --P + [284] = "%.1f", --A + [286] = "%.1f", --Alt 1 + [287] = "%.1f", --blank Alt + [289] = "%.1f", --Alt 2 + [290] = "%.1f", --AFF + [292] = "%.1f", --blank1 + [293] = "%.1f", --blank2 + [295] = "%.1f", --left + [296] = "%.1f", --blank L + [297] = "%.1f", --G + [298] = "%.1f", --blank G + +-- div. lights + [373] = "%.1f", --Afterburner light + [376] = "%.1f", --starter light + [198] = "%.1f", --tranfere + [199] = "%.1f", --master-warning + [200] = "%.1f", --master-caution +-- INSTRUMENTS ------------------------------------------- + +-- Display Settings + --[224] = "%.4f", --Drum X000 + --[225] = "%.4f", --Drum 0X00 + --[226] = "%.4f", --Drum 00X0 + --[227] = "%.4f", --Drum 000X + +-- AUTOPILOT ALTITUDE SELECTOR: Adjust autopilot altitude hold value. + --[299] = "%.4f", --Alt Drum X00 + --[300] = "%.4f", --Alt Drum 0X0 + --[301] = "%.4f", --Alt Drum 00X + +-- BINGO FUEL SELECTOR: Adjust the value for the Bingo Fuel warning + [360] = "%.4f", --Drum X0 + [361] = "%.4f", --Drum 0X + +-- ASI + [303] = "%.4f", --asi needle + [304] = "%.4f", --mach wheel + +-- ALTITUDE INDICATOR: indicates barometric altitude (MSL) in feet + [305] = "%.4f", --Needle + [306] = "%.4f", --Alt Drum X00 + [307] = "%.4f", --Alt Drum 0X0 + [308] = "%.4f", --Alt Drum 00X + [310] = "%.4f", --Pressure Drum X000 + [311] = "%.4f", --Pressure Drum 0X00 + [312] = "%.4f", --Pressure Drum 00X0 + [313] = "%.4f", --Pressure Drum 000X + +-- ADI + [316] = "%.4f", --pitch + [317] = "%.4f", --bank + [318] = "%.4f", --heading + [319] = "%.1f", --off flag + [320] = "%.4f", --slip ball + [322] = "%.4f", --ILS bar course + [323] = "%.4f", --ILS bar alt + +-- VVI + [324] = "%.4f", --VVI needle + +-- ADI Standby + [327] = "%.4f", --pitch + [326] = "%.4f", --bank + [328] = "%.4f", --adjust / White Silhouette + [329] = "%.1f", --off flag + +-- AOA + [331] = "%.4f", --needle + +-- Flag black/red + [332] = "%.1f", --flag + +-- HSI + [333] = "%.4f", --HDG Indicator + [334] = "%.4f", --Needle + [335] = "%.4f", --Needle small + [336] = "%.4f", --Drum X000 + [337] = "%.4f", --Drum 0X00 + [338] = "%.4f", --Drum 00X0 + [339] = "%.4f", --Drum 000X + [342] = "%.4f", --Compass rose + [344] = "%.1f", --HSI Flag 1 + [345] = "%.1f", --HSI Flag 2 + [346] = "%.1f", --HSI Flag CAP + [341] = "%.1f", --HSI Mode + [343] = "%.1f", --DME Off Flag + +-- ACC indicator + [347] = "%.4f", --needle + +-- JAUG fuel + [349] = "%.4f", --Drum X00 + [350] = "%.4f", --Drum 0X0 + [351] = "%.4f", --Drum 00X + +-- DETOT fuel + [352] = "%.4f", --Drum X00 + [353] = "%.4f", --Drum 0X0 + [354] = "%.4f", --Drum 00X + +-- Fuel indicator + [358] = "%.4f", --v-needle left + [359] = "%.4f", --v-needle right + [362] = "%.1f", --light L RL + [363] = "%.1f", --light C RL + [364] = "%.1f", --light R RL + [365] = "%.1f", --light L AV + [366] = "%.1f", --light R AV + [367] = "%.1f", --light L V + [368] = "%.1f", --light R V + +-- ENGINE INSTRUMENTS: Indicates engine RPM and Temperature. + [369] = "%.4f", --N needle + [370] = "%.4f", --Tt7 needle + [371] = "%.4f", --Drum XX0 + [372] = "%.4f", --Drum 00X + +-- Center console IFF + [377] = "%.4f", -- X0 MODE + [378] = "%.4f", -- 0X + + [379] = "%.4f", -- X000 MODE 3A + [380] = "%.4f", -- 0X00 + [381] = "%.4f", -- 00X0 + [382] = "%.4f", -- 000X + + [388] = "%.1f", -- Rote Kontrollampe MODE-4 Panel + [394] = "%.1f", -- gelbe „FAULT“ Anzeige + +-- Pressuge + [397] = "%.4f", --Needle left + [398] = "%.4f", --Needle right + +-- Cabin climb (x 1000 ft) + [399] = "%.4f", --Needle + +-- Clock + [401] = "%.4f", --hours + [402] = "%.4f", --minutes + [403] = "%.4f", --seconds + +-- GEARPANEL + [405] = "%.1f", -- Gearhandle Innenleuchte, rot + [410] = "%.1f", -- „A“ Warnlamp + [411] = "%.1f", -- „F“ Warnlamp + [412] = "%.1f", -- „DIRA“ Warnlamp, blau + [413] = "%.1f", -- „FREIN“ + [414] = "%.1f", -- „Cross“ + [415] = "%.1f", -- „SPAD“ + [416] = "%.1f", -- Rote Warnlamp unter „BIP“ + [417] = "%.1f", -- Left Gear ?, grüne Warnlampen + [418] = "%.1f", -- Nose Gear ? + [419] = "%.1f", -- Right Gear ? + +-- CS indicator + [424] = "%.4f", -- 1. waagerechte Balkenanzeige + [425] = "%.4f", -- 2. + [426] = "%.4f", -- 1. senkrechte Balkenanzeige + [427] = "%.4f", -- 3. waagerechte BA + [428] = "%.4f", -- 4. + +-- Com + --[436] = "%.4f", -- Preset display (1-20) + --[440] = "%.4f", -- Drum X000 (0-9-0) COM Panel + --[441] = "%.4f", -- Drum 0X00.00 + --[442] = "%.4f", -- Drum 00X0.00 + --[443] = "%.4f", -- Drum 000X.00 + --[444] = "%.4f", -- Drum 0000.XX (00-25-50-75-00) + --[190] = "%.4f", -- Drum X0 Preset (0-1-2) + --[189] = "%.4f", -- Drum 0X Preset (0-9-0) + [675] = "%.1f", -- TEST Button COM Panel, red + [676] = "%.1f", -- Test Button Panel over COM Panel, red + [677] = "%.1f", -- Left green lamp + +-- Compass + [906] = "%.4f", --Rose + +-- Oxygen + [518] = "%.4f", --Needle + [519] = "%.1f", --Oxy flow lamp (blue) + + +-- Left consule Lamps + [490] = "%.1f", -- „VAL†+ [492] = "%.1f", -- „A“ Kontrolllampe mittleres Panel + [494] = "%.1f", -- „DEC“ Kontrollampe + [496] = "%.1f", -- „VISU“ + [505] = "%.1f", -- „PSIC“ + [510] = "%.1f", -- „ELEC“ + [511] = "%.1f", -- „HYD“ + [512] = "%.1f", -- Red + [513] = "%.1f", -- GREEN + +-- LOX + [518] = "%.4f", -- needle + --[519] = "%.4f", -- LOX flow blinker + +-- WARNING PANEL + [525] = "%.1f", -- BATT + [526] = "%.1f", -- TR + [527] = "%.1f", -- ALT 1 + [528] = "%.1f", -- ALT2 + [529] = "%.1f", -- HUILLE + [530] = "%.1f", -- T7 + [531] = "%.1f", -- CALC C + [532] = "%.1f", -- SOURIS + [533] = "%.1f", -- PELLE + [534] = "%.1f", -- B.P + [535] = "%.1f", -- BP.G + [536] = "%.1f", -- BP.D + [537] = "%.1f", -- TRANSF + [538] = "%.1f", -- NIVEAU + [539] = "%.1f", -- HYD 1 + [540] = "%.1f", -- HYD 2 + [541] = "%.1f", -- HYD 3 + [542] = "%.1f", -- EP + [543] = "%.1f", -- BINGO + [544] = "%.1f", -- P.CAB + [545] = "%.1f", -- TEMP + [546] = "%.1f", -- REG O2 + [547] = "%.1f", -- 5nm O2 + [548] = "%.1f", -- O2 HA + [549] = "%.1f", -- ANEMO + [550] = "%.1f", -- CC + [551] = "%.1f", -- DSV + [552] = "%.1f", -- CONDIT + [553] = "%.1f", -- CONF + [554] = "%.1f", -- PA + [555] = "%.1f", -- MAN + [556] = "%.1f", -- DOM + [557] = "%.1f", -- BECS + [558] = "%.1f", -- U.S.EL + [559] = "%.1f", -- ZEICHEN + [560] = "%.1f", -- GAIN + [561] = "%.1f", -- RPM + [562] = "%.1f", -- DECOL + [563] = "%.1f", -- PARK. + +-- Lamps Right Console + [564] = "%.1f", -- “PRET†grüne Doppelanzeige, unten + [565] = "%.1f", -- „ALN“ + [566] = "%.1f", -- „MIP“ + [567] = "%.1f", -- „N.DEG“ + [568] = "%.1f", -- „SEC“ + [569] = "%.1f", -- „UNI“ + [669] = "%.1f", -- „M01†+ [670] = "%.1f", -- „M02“ + [671] = "%.1f", -- „M03“ + + [571] = "%.1f", -- “PREP†WL, gelb + [573] = "%.1f", -- “DEST†WL, gelb + [577] = "%.1f", -- “BAD†WL gelb/grün + [579] = "%.1f", -- “REC†+ [581] = "%.1f", -- “VAL†+ [583] = "%.1f", -- “MRC†+ [595] = "%.1f", -- “EFF†runde Warnlampe + [597] = "%.1f", -- “INS†runde WL + [668] = "%.1f", -- “ENC†WL gelb/grün + +-- VIERER ANZEIGE + [601] = "%.4f", -- 1. Drum + [602] = "%.4f", -- 2. + [603] = "%.4f", -- 3. + [604] = "%.4f", -- 4. + +-- VOR ILS + [611] = "%.4f", -- 1. Drum + [612] = "%.4f", -- 2. + [613] = "%.4f", -- 3. + [614] = "%.4f", -- 4. + [615] = "%.4f", -- 5. + +-- TACAN + [620] = "%.1f", -- X/Y + [621] = "%.4f", -- Drum XX0 left (--;1-12;--) + [622] = "%.4f", -- Drum 00X right (0;1-9;0) + + + [632] = "%.1f", -- Taster mit Warnlampe “C†+ [634] = "%.1f", -- Taster mit Warnlampe “F†+ +-- Panel lights + [720] = "%.4f", -- MIP Aufleuchte, red + [721] = "%.4f", -- MIP Hintergrundbeleuchtung, red + [722] = "%.4f", -- MIP Aufleuchte, weiß + [723] = "%.4f", -- Linke und rechte Seitenpanels Hintergrundbeleuchtung, red + [724] = "%.4f", -- Seitenpanels Aufleuchten, red (links, rechts) + [726] = "%.4f", -- Warnlampen Dimmer + [727] = "%.4f", -- Warnlampen Dimmer (Seitenpanels?) + +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + +-- Fuel + [193] = "%.1f", --Refuel Transfer Switch + +-- Landing Gear + [404] = "%.1f", --Landing Gear Lever + +-- HUD/VTB + [201] = "%.1f", --HUD Power Switch + [203] = "%.1f", --HUD Decluter Switch + [204] = "%.1f", --HUD Altimeter Selector Switch + [205] = "%.1f", --Radar Altimeter Power Switch + [208] = "%.1f", --Gun AG Reticle Selector + [209] = "%.1f", --Gun Target Wingspan Selector + [210] = "%.1f", --HUD Clear Switch + [192] = "%.4f", --Radar Altimeter Minimum Altitude Selector + [213] = "%.1f", --Radar Interception Switch + [214] = "%.1f", --Radar N Parameter Switch + [215] = "%.1f", --Radar P Parameter Switch + [216] = "%.1f", --Radar B Parameter Switch + [217] = "%.1f", --Radar C Parameter Switch + [218] = "%.1f", --Radar Z Parameter Switch + [219] = "%.1f", --Radar M Parameter Switch + [220] = "%.1f", --Radar T Parameter Switch + [221] = "%.1f", --VTB Power Switch + [222] = "%.1f", --VTB Switch + [223] = "%.1f", --VTB Switch + +-- PCA/PPA +++++++++++ HJP HBook Side 129 + [463] = "%.1f", --Gun Arm/Safe Switch + [234] = "%.1f", --Master Arm Switch + [248] = "%.1f", --Jett Switch Cover + [249] = "%.1f", --Selective Jettison Switch + [235] = "%.1f", --PCA Button 1 + [237] = "%.1f", --PCA Button 2 + [239] = "%.1f", --PCA Button 3 + [241] = "%.1f", --PCA Button 4 + [243] = "%.1f", --PCA Button 5 + [245] = "%.1f", --Gun Mode Selector + [250] = "%.1f", --Weapons Selector Button 1 + [253] = "%.1f", --Weapons Selector Button 2 + [256] = "%.1f", --Weapons Selector Button 3 + [259] = "%.1f", --Weapons Selector Button 4 + [262] = "%.1f", --Weapons Selector Button 5 + [266] = "%.1f", --S530 Standby + [269] = "%.1f", --AUTO/MAN Button + [272] = "%.1f", --MAGIC Standby + [279] = "%.1f", --Cannon Fire rate/Rockets Simul Launch + [265] = "%.1f", --Missile Selector Switch + [275] = "%.1f", --PPA Test Switch + [276] = "%.1f", --Bomb Fuze Selector Switch + [277] = "%.1f", --Bomb Release Quantity Selector Switch + [278] = "%.1f", --Bomb Release Interval Selector Switch + [409] = "%.1f", --Emergency Jettison + +--AFCS + [282] = "%.1f", --Autopilot Master + [285] = "%.1f", --Autopilot - Altitude Hold + [288] = "%.1f", --Autopilot - Selected Altitude Hold + [294] = "%.1f", --Autopilot - Approach Hold + [302] = "%.1f", --Autopilot - Lights Test + [299] = "%.1f", --Autopilot - Altitude Selector 10K + [300] = "%.1f", --Autopilot - Altitude Selector 1K + [301] = "%.1f", --Autopilot - Altitude Selector 1C + [514] = "%.1f", --Autopilot Test Cover + [515] = "%.1f", --Autopilot Test Switch + [516] = "%.1f", --FBW Test Cover + [517] = "%.1f", --FBW Test Switch + +--FBW + [330] = "%.1f", --FBW Spin Switch + [420] = "%.1f", --FBW Disconnect Cover + [421] = "%.1f", --FBW Disconnect Switch + [422] = "%.1f", --FBW G Limiter Switch + [460] = "%.1f", --Intake slats Operation Switch + [461] = "%.1f", --Intake cones Operation Switch + +-- HSI + [340] = "%.4f", --HSI Heading Selector + [341] = "%.1f", --HSI Mode Selector Switch + +-- PELLES, SOURIES AND BECS + [462] = "%.1f", --Slats Operation Switch + [395] = "%.1f", --Hydraulic System Selector + [396] = "%.1f", --Pedal Adjust Lever + +-- RADAR + [481] = "%.1f", --Radar Illumination Switch + [482] = "%.1f", --Radar Test Switch + [483] = "%.1f", --Radar Rearm Switch + [484] = "%.1f", --Radar Doppler Reject Selector + [486] = "%.1f", --Radar Power Switch + [488] = "%.4f", --Radar Gain Dial + [491] = "%.1f", --A/G Radar A Mode + [493] = "%.1f", --A/G Radar DEC Mode + [495] = "%.1f", --A/G Radar VISU Mode + [499] = "%.1f", --Radar Grid Selector + [500] = "%.1f", --Target Memory Time Selector + [502] = "%.1f", --Radar Scan Lines Selector + [503] = "%.1f", --Radar Range Selector + [504] = "%.1f", --AA Radar STT Selector + [506] = "%.1f", --Radar Azimuth Aperture Selector + [598] = "%.1f", --Radar IFF Mode Switch + [599] = "%.1f", --Radar IFF L/R Selector + [600] = "%.1f", --Radar IFF Power Switch + [601] = "%.1f", --Radar IFF Code-4 Selector + [602] = "%.1f", --Radar IFF Code-3 Selector + [603] = "%.1f", --Radar IFF Code-2 Selector + [604] = "%.1f", --Radar IFF Code-1 Selector + [709] = "%.1f", --Radar PRF Selector + [710] = "%.1f", --TDC Mode + +-- ELECTRICAL PANEL + [520] = "%.1f", --Main Battery Switch + [521] = "%.1f", --Electric Power Transfer Switch + [522] = "%.1f", --Alternator 1 Switch + [523] = "%.1f", --Alternator 2 Switch + [524] = "%.1f", --Lights Test Switch + [654] = "%.1f", --Alert Network (QRA) Switch + +-- PCN + [570] = "%.1f", --INS PREP Switch + [572] = "%.1f", --INS DEST Switch + [574] = "%.1f", --INS Parameter Selector + [575] = "%.4f", --Light Brightnes Control/Test + [576] = "%.1f", --Offset Waypoint/Target + [578] = "%.1f", --INS Update + [580] = "%.1f", --Validate Data Entry + [582] = "%.1f", --Mark Position + [584] = "%.1f", --INS Button 1 + [585] = "%.1f", --INS Button 2 + [586] = "%.1f", --INS Button 3 + [587] = "%.1f", --INS Button 4 + [588] = "%.1f", --INS Button 5 + [589] = "%.1f", --INS Button 6 + [590] = "%.1f", --INS Button 7 + [591] = "%.1f", --INS Button 8 + [592] = "%.1f", --INS Button 9 + [593] = "%.1f", --INS Button 0 + [594] = "%.1f", --INS Clear Button + [596] = "%.1f", --INS ENTER Button + [667] = "%.1f", --AUTO Navigation + +-- PSM + [627] = "%.1f", --INS Mode Selector + [629] = "%.1f", --INS Operational Mode + [665] = "%.1f", --INS Auxiliary Heading/Horizon + +-- EW PANEL + [228] = "%.4f", --RWR Light Brightnes Control + [605] = "%.1f", --EW Mode Selector Switch + [606] = "%.1f", --BR Switch + [607] = "%.1f", --RWR Switch + [608] = "%.1f", --D2M Switch + [609] = "%.1f", --LL (Jammer) Switch + [610] = "%.1f", --Jammer Strength + +-- ECM BOX + [194] = "%.1f", --ECM Box Mode Switch + [195] = "%.1f", --ECM Box Switch + [196] = "%.1f", --ECM Box Lighs Switch + [197] = "%.1f", --ECM Box LCD Display Brightness + +-- Panel Lights + [449] = "%.1f", --Police Lights + [450] = "%.1f", --Landing Lights + [452] = "%.1f", --Refuel Lights + [453] = "%.1f", --Anti-Collision Lights + [454] = "%.1f", --Navigation Lights + [455] = "%.1f", --Formation Lights + [639] = "%.4f", --Dashboard Flood Lights + [640] = "%.4f", --Dashboard Panel Lights + [641] = "%.4f", --Console Flood Lights + [642] = "%.4f", --Console Panel Lights + [643] = "%.4f", --Casution/Advisory Lights Rheostat + [644] = "%.4f", --White Flood Lights Knob + [920] = "%.4f", --Refuel Lights Brightness Knob + +-- Engine Start Panel + [468] = "%.1f", --Engine In-Flight Start Switch + [467] = "%.1f", --Engine Shutdown Button + [645] = "%.1f", --Engine Start Switch Cover + [646] = "%.1f", --Starter Fuel Pump Switch + [647] = "%.1f", --Engine Fuel Left Boost Pump Switch + [648] = "%.1f", --Engine Fuel Right Boost Pump Switch + [649] = "%.1f", --Engine Start Switch + [650] = "%.1f", --Ventilation Selector Switch + [651] = "%.1f", --Fuel Cutoff Switch Cover + [652] = "%.1f", --Fuel Cutoff Switch + [477] = "%.1f", --Fuel Dump Switch Cover + [478] = "%.1f", --Fuel Dump Switch + [471] = "%.1f", --A/B Emergency Cutoff Switch Cover + [472] = "%.1f", --A/B Emergency Cutoff Switch + [464] = "%.1f", --Emergency Throttle Cover + [465] = "%.1f", --Emergency Throttle Handle + [473] = "%.1f", --Secondary Oil Control Cover + [474] = "%.1f", --Secondary Oil Control Switch + [475] = "%.1f", --Engine Emergency Control Cover + [476] = "%.1f", --Engine Emergency Control Switch + + -- Radio Panel + [429] = "%.1f", --UHF Power 5W/25W Switch + [430] = "%.1f", --UHF SIL Switch + [431] = "%.1f", --UHF E-A2 Switch + [432] = "%.1f", --UHF CDE Switch + [433] = "%.1f", --UHF Mode Switch + [434] = "%.1f", --UHF TEST Switch + [435] = "%.1f", --UHF Knob + [437] = "%.1f", --U/VHF TEST Switch + [438] = "%.1f", --U/VHF E+A2 Switch + [439] = "%.1f", --U/VHF SIL Switch + [440] = "%.1f", --U/VHF Select 100 MHz + [441] = "%.1f", --U/VHF Select 10 MHz + [442] = "%.1f", --U/VHF Select 1 MHz + [443] = "%.1f", --U/VHF Select 100 KHz + [444] = "%.1f", --U/VHF Select 25 KHz + [445] = "%.1f", --U/VHF Knob + [446] = "%.1f", --U/VHF Mode Switch 1 + [447] = "%.1f", --U/VHF Power 5W/25W Switch + [448] = "%.1f", --U/VHF Manual/Preset + +-- Navigational Antennas + [616] = "%.1f", --VOR/ILS Frequency Change Whole + [617] = "%.1f", --VOR/ILS Power Dial + [618] = "%.1f", --VOR/ILS Frequency Change Decimal + [619] = "%.1f", --VOR/ILS Test Dial + +-- TACAN + [623] = "%.1f", --TACAN Channel Change Tens + [624] = "%.1f", --TACAN X/Y Select + [625] = "%.1f", --TACAN Channel Change Ones + [626] = "%.1f", --TACAN Mode Select + +-- Miscelaneous Right Panel + [657] = "%.1f", -- Hydraulic Emergency Pump Switch + +-- Miscelaneous Left Panel + [191] = "%.1f", --Audio Warning Reset + +-- Miscelaneous Seat + [900] = "%.1f", --Seat adjustment switch + [458] = "%.1f", --Anti-Skid Cover + [459] = "%.1f", --Anti-Skid Switch + [666] = "%.1f", --Parking Brake Lever + [807] = "%.1f", --Nose Wheel Steering / IFF + +-- Sound Panel + [700] = "%.1f", --AMPLIS Selector + [701] = "%.1f", --VOR/ILS Volume {0.0,1.0} in 0.1 steps + [702] = "%.1f", --TACAN Volume {0.0,1.0} in 0.1 steps + [703] = "%.1f", --MAGIC Tone Volume {0.0,1.0} in 0.1 steps + [704] = "%.1f", --TB APP Volume {0.0,1.0} in 0.1 steps + [705] = "%.1f", --Marker Signal Volume {0.0,1.0} in 0.1 steps + [706] = "%.1f", --V/UHF Radio Volume {0.0,1.0} in 0.1 steps + [707] = "%.1f", --VHF Radio Volume {0.0,1.0} in 0.1 steps + +-- ALT + [309] = "%.1f", --Barometric Pressure Calibration + [314] = "%.1f", --ADI Cage Lever + [315] = "%.1f", --ADI Backlight Switch + [325] = "%.1f", --Backup ADI Cage + --[328] = "%.4f", --Backup ADI Pitch Adjust Knob {-1.0,1.0} in 0.1 steps +-- Center console IFF + [383] = "%.1f", --Ident Power Switch {-1.0,0.0,1.0} + [384] = "%.1f", --Mode-1 Switch + [385] = "%.1f", --Mode-2 Switch + [386] = "%.1f", --Mode-3A Switch + [387] = "%.1f", --Mode-C Switch +-- Miscelaneous Seat + [900] = "%.1f", --Seat Adjustment Switch + [910] = "%.1f", --LOX Dilution Lever + [912] = "%.1f", --LOX Emergency Supply + [911] = "%.1f", --LOX Test Switch +-- ECS Panel + [630] = "%.1f", --ECS Main Mode Switch + [631] = "%.1f", --ECS C Button + [633] = "%.1f", --ECS F Button + [635] = "%.1f", --ECS Cond Switch + [636] = "%.1f", --ECS Air Exchange Switch + [637] = "%.1f", --ECS Temperature Select Knob {-1.0,1.0} in 0.1 steps + [638] = "%.1f", --ECS Defog Switch +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- ECM Mode Switch + -- [194] = "%.1f", --ECM Box Mode Switch + local lECM_On = (mainPanelDevice:get_argument_value(194) > 0.0 and true or false) + + -- ECM_CHF + local lECM_CHF = ExportScript.Tools.getListIndicatorValue(3) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lECM_CHF : '..ExportScript.Tools.dump(lECM_CHF)) + end + + if lECM_On and lECM_CHF ~= nil and lECM_CHF.text_ECM_CHF ~= nil then + -- string with max 3 charachters + ExportScript.Tools.SendData(2001, string.format("%s", lECM_CHF.text_ECM_CHF)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('2001: '..ExportScript.Tools.dump(lECM_CHF.text_ECM_CHF)) + end + else + ExportScript.Tools.SendData(2001, " ") + end + + -- ECM_FLR + local lECM_FLR = ExportScript.Tools.getListIndicatorValue(4) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lECM_FLR : '..ExportScript.Tools.dump(lECM_FLR)) + end + + if lECM_On and lECM_FLR ~= nil and lECM_FLR.text_ECM_FLR ~= nil then + -- string with max 2 charachters + ExportScript.Tools.SendData(2002, string.format("%s", lECM_FLR.text_ECM_FLR)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('2002: '..ExportScript.Tools.dump(lECM_FLR.text_ECM_FLR)) + end + else + ExportScript.Tools.SendData(2002, " ") + end + + -- FUEL + local lFUEL = ExportScript.Tools.getListIndicatorValue(5) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lFUEL : '..ExportScript.Tools.dump(lFUEL)) + end + + if lFUEL ~= nil and lFUEL.txt_fuel_g ~= nil then + -- string with max 3 charachters + ExportScript.Tools.SendData(2003, string.format("%s", lFUEL.txt_fuel_g)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('2003: '..ExportScript.Tools.dump(lFUEL.txt_fuel_g)) + end + else + ExportScript.Tools.SendData(2003, " ") + end + + -- PCA_UR (Weappon Panel top line) + local lPCAUR = list_indication(6) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lPCAUR : '..ExportScript.Tools.dump(lPCAUR)) + end + + local to1, to2, from1, from2 = nil, nil, nil, nil + local lPCA_UR = {"", "", "", "", ""} + to1, to2 = lPCAUR:find("PCA_UR") + if (to1 ~= nil) then + for lIndex = 1, 5, 1 do + from1, from2 = lPCAUR:find("text_PCA_UR"..lIndex.."%c") + if (from2 ~= nill) then + to1, to2 = lPCAUR:find("%c", from2+2) + if (to1 ~= nil) then + lPCA_UR[lIndex] = lPCAUR:sub(from2+1, to1-1) + end + end + end -- for + end + + -- string with max 3 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2010: "..string.format("%s", lPCA_UR[1])) + ExportScript.Tools.WriteToLog("2011: "..string.format("%s", lPCA_UR[2])) + ExportScript.Tools.WriteToLog("2012: "..string.format("%s", lPCA_UR[3])) + ExportScript.Tools.WriteToLog("2013: "..string.format("%s", lPCA_UR[4])) + ExportScript.Tools.WriteToLog("2014: "..string.format("%s", lPCA_UR[5])) + end + ExportScript.Tools.SendData(2010, string.format("%s", lPCA_UR[1])) + ExportScript.Tools.SendData(2011, string.format("%s", lPCA_UR[2])) + ExportScript.Tools.SendData(2012, string.format("%s", lPCA_UR[3])) + ExportScript.Tools.SendData(2013, string.format("%s", lPCA_UR[4])) + ExportScript.Tools.SendData(2014, string.format("%s", lPCA_UR[5])) + + -- PCA_BR (Weappon Panel bottom line) + local lPCABR = list_indication(7) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lPCABR : '..ExportScript.Tools.dump(lPCABR)) + end + + local to1, to2, from1, from2 = nil, nil, nil, nil + local lPCA_BR = {"", "", "", "", ""} + to1, to2 = lPCABR:find("PCA_BR") + if (to1 ~= nil) then + for lIndex = 1, 5, 1 do + from1, from2 = lPCABR:find("text_PCA_BR"..lIndex.."%c") + if (from2 ~= nill) then + to1, to2 = lPCABR:find("%c", from2+2) + if (to1 ~= nil) then + lPCA_BR[lIndex] = lPCABR:sub(from2+1, to1-1) + end + end + end-- for + end + + -- string with max 3 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2015: "..string.format("%s", lPCA_BR[1])) + ExportScript.Tools.WriteToLog("2016: "..string.format("%s", lPCA_BR[2])) + ExportScript.Tools.WriteToLog("2017: "..string.format("%s", lPCA_BR[3])) + ExportScript.Tools.WriteToLog("2018: "..string.format("%s", lPCA_BR[4])) + ExportScript.Tools.WriteToLog("2019: "..string.format("%s", lPCA_BR[5])) + end + ExportScript.Tools.SendData(2015, string.format("%s", lPCA_BR[1])) + ExportScript.Tools.SendData(2016, string.format("%s", lPCA_BR[2])) + ExportScript.Tools.SendData(2017, string.format("%s", lPCA_BR[3])) + ExportScript.Tools.SendData(2018, string.format("%s", lPCA_BR[4])) + ExportScript.Tools.SendData(2019, string.format("%s", lPCA_BR[5])) + + -- COM + local lCOM = list_indication(9) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lCOM : '..ExportScript.Tools.dump(lCOM)) + end + + local to1, to2, from1, from2, lCOM1, lCOM2 = nil, nil, nil, nil, "", "" + to1, to2 = lCOM:find("COM") + if (to1 ~= nil) then + from1, from2 = lCOM:find("text_COM_UHF1%c") + if (from2 ~= nil) then + to1, to2 = lCOM:find("%c", from2+2) + if (to1 ~= nil) then + lCOM1 = lCOM:sub(from2+1, to1-1) + end + end + + from1, from2 = lCOM:find("text_COM_UHF2%c", to2) + if (from2 ~= nil) then + to1, to2 = lCOM:find("%c", from2+2) + if (to1 ~= nil) then + lCOM2 = lCOM:sub(from2+1, to1-1) + end + end + end + + -- string with max 7 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2020: "..string.format("%s", lCOM1)) + ExportScript.Tools.WriteToLog("2021: "..string.format("%s", lCOM2)) + end + ExportScript.Tools.SendData(2020, string.format("%s", lCOM1)) + ExportScript.Tools.SendData(2021, string.format("%s", lCOM2)) + + -- PPA Bomb Display + local lPPA = list_indication(8) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lPPA : '..ExportScript.Tools.dump(lPPA)) + end + + local to1, to2, from1, from2, lPPA1, lPPA2 = nil, nil, nil, nil, "", "" + to1, to2 = lPPA:find("PPA") + if (to1 ~= nil) then + from1, from2 = lPPA:find("text_PPA_QTY%c") + if (from2 ~= nil) then + to1, to2 = lPPA:find("%c", from2+2) + if (to1 ~= nil) then + lPPA1 = lPPA:sub(from2+1, to1-1) + end + end + + from1, from2 = lPPA:find("text_PPA_INT%c", to2) + if (from2 ~= nil) then + to1, to2 = lPPA:find("%c", from2+2) + if (to1 ~= nil) then + lPPA2 = lPPA:sub(from2+1, to1-1) + end + end + end + + -- string with max 2 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2022: "..string.format("%s", lPPA1)) + ExportScript.Tools.WriteToLog("2023: "..string.format("%s", lPPA2)) + end + ExportScript.Tools.SendData(2022, string.format("%s", lPPA1)) + ExportScript.Tools.SendData(2023, string.format("%s", lPPA2)) + + -- PCN_UR Navigation Displays + if ExportScript.Config.Debug then + local lPCNUR = list_indication(10) + ExportScript.Tools.WriteToLog('lPCNUR : '..ExportScript.Tools.dump(lPCNUR)) + end + + -- SubLeftTop SubRightTop SubLeftBottom SubRightBottom MainLeft MainRight + local lPCN_sub_L_T, lPCN_sub_R_T, lPCN_sub_L_B, lPCN_sub_R_B, lPCN_main_L, lPCN_main_R = "", "", "", "", "", "" + local lPCNUR = ExportScript.Tools.getListIndicatorValue(10) + -- das untere durch solche aufrufe ersetzen + if lPCNUR.text_PCN_R_INT ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_INT + end + if lPCNUR.text_PCN_L_INT ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_INT + end + if lPCNUR.text_PCN_L_TR ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_TR + end + if lPCNUR.text_PCN_NORD ~= nil then + lPCN_sub_L_T = lPCNUR.text_PCN_NORD + end + if lPCNUR.text_PCN_EST ~= nil then + lPCN_sub_R_T = lPCNUR.text_PCN_EST + end + if lPCNUR.text_PCN_SUD ~= nil then + lPCN_sub_L_B = lPCNUR.text_PCN_SUD + end + if lPCNUR.text_PCN_OUEST ~= nil then + lPCN_sub_R_B = lPCNUR.text_PCN_OUEST + end + if lPCNUR.text_PCN_L_MRQ_LAT ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_MRQ_LAT + end + if lPCNUR.text_PCN_R_MRQ_LON ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_MRQ_LON + end + if lPCNUR.text_PCN_PLUS_R ~= nil then + lPCN_sub_R_T = lPCN_sub_R_T..lPCNUR.text_PCN_PLUS_R + end + if lPCNUR.text_PCN_PLUS_L ~= nil then + lPCN_sub_L_T = lPCN_sub_L_T..lPCNUR.text_PCN_PLUS_L + end + if lPCNUR.text_PCN_MOINS_L ~= nil then + lPCN_sub_L_B = lPCN_sub_L_B..lPCNUR.text_PCN_MOINS_L + end + if lPCNUR.text_PCN_MOINS_R ~= nil then + lPCN_sub_R_B = lPCN_sub_R_B..lPCNUR.text_PCN_MOINS_R + end + if lPCNUR.text_PCN_L_DR ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_DR + end + if lPCNUR.text_PCN_R_DEG ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_DEG + end + if lPCNUR.text_PCN_L_DEG ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_DEG + end + if lPCNUR.text_PCN_RDE ~= nil then + lPCN_main_R = lPCNUR.text_PCN_RDE + end + if lPCNUR.text_PCN_LDE ~= nil then + lPCN_main_L = lPCNUR.text_PCN_LDE + end + if lPCNUR.text_PCN_L_LG ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_LG + end + if lPCNUR.text_PCN_R_LG ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_LG + end + if lPCNUR.text_PCN_R_TD ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_TD + end + if lPCNUR.text_PCN_L_TD ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_TD + end + if lPCNUR.text_PCN_R_ASTS ~= nil then + lPCN_main_R = lPCNUR.text_PCN_R_ASTS + end + if lPCNUR.text_PCN_L_ACLASS ~= nil then + lPCN_main_L = lPCNUR.text_PCN_L_ACLASS + end + if lPCNUR.text_PCN_L_ACTMR ~= nil then + lPCN_main_L = lPCN_main_L.." "..lPCNUR.text_PCN_L_ACTMR + end + if lPCNUR.text_PCN_MSG ~= nil then + lPCN_main_L = lPCNUR.text_PCN_MSG + end + + if ExportScript.Config.Debug then + -- string with max 1 charachters + ExportScript.Tools.WriteToLog("2024: "..string.format("%s", lPCN_sub_L_T)) + ExportScript.Tools.WriteToLog("2025: "..string.format("%s", lPCN_sub_R_T)) + ExportScript.Tools.WriteToLog("2026: "..string.format("%s", lPCN_sub_L_B)) + ExportScript.Tools.WriteToLog("2027: "..string.format("%s", lPCN_sub_R_B)) + -- string with max 9 charachters + ExportScript.Tools.WriteToLog("2028: "..string.format("%s", lPCN_main_L)) + ExportScript.Tools.WriteToLog("2029: "..string.format("%s", lPCN_main_R)) + end + + lPCN_main_L = lPCN_main_L:gsub(":", "¦") + lPCN_main_R = lPCN_main_R:gsub(":", "¦") + lPCN_main_L = lPCN_main_L:sub(0, 10) + lPCN_main_R = lPCN_main_R:sub(0, 10) + lPCN_sub_L_T = lPCN_sub_L_T:sub(0, 2) + lPCN_sub_R_T = lPCN_sub_R_T:sub(0, 2) + lPCN_sub_L_B = lPCN_sub_L_B:sub(0, 2) + lPCN_sub_R_B = lPCN_sub_R_B:sub(0, 2) + + ExportScript.Tools.SendData(2024, string.format("%s", lPCN_sub_L_T)) + ExportScript.Tools.SendData(2025, string.format("%s", lPCN_sub_R_T)) + ExportScript.Tools.SendData(2026, string.format("%s", lPCN_sub_L_B)) + ExportScript.Tools.SendData(2027, string.format("%s", lPCN_sub_R_B)) + ExportScript.Tools.SendData(2028, string.format("%s", lPCN_main_L)) + ExportScript.Tools.SendData(2029, string.format("%s", lPCN_main_R)) + + -- PCN_BR (Naviagation, wahrscheinlich die Wegpunktanzeige) + local lPCNBR = list_indication(11) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('lPCNBR : '..ExportScript.Tools.dump(lPCNBR)) + end + + local to1, to2, from1, from2, lPCN_BR1, lPCN_BR2 = nil, nil, nil, nil, "", "" + to1, to2 = lPCNBR:find("PCN_BR") + if (to1 ~= nil) then + from1, from2 = lPCNBR:find("text_PCN_BR1%c") + if (from2 ~= nil) then + to1, to2 = lPCNBR:find("%c", from2+2) + if (to1 ~= nil) then + lPCN_BR1 = lPCNBR:sub(from2+1, to1-1) + end + end + + from1, from2 = lPCNBR:find("text_PCN_BR2%c", to2) + if (from2 ~= nil) then + to1, to2 = lPCNBR:find("%c", from2+2) + if (to1 ~= nil) then + lPCN_BR2 = lPCNBR:sub(from2+1, to1-1) + end + end + end + + -- string with max 2 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2030: "..string.format("%s", lPCN_BR1)) + ExportScript.Tools.WriteToLog("2031: "..string.format("%s", lPCN_BR2)) + end + ExportScript.Tools.SendData(2030, string.format("%s", lPCN_BR1)) + ExportScript.Tools.SendData(2031, string.format("%s", lPCN_BR2)) + +-- Radar IFF Mode +--[[ + [601] = "%.1f", -- 1. Drum + [602] = "%.1f", -- 2. + [603] = "%.1f", -- 3. + [604] = "%.1f", -- 4. +]] + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(601) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(602) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(603) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(604) * 10) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2032: "..string.format("%s", digits[1])) + ExportScript.Tools.WriteToLog("2033: "..string.format("%s", digits[2])) + ExportScript.Tools.WriteToLog("2034: "..string.format("%s", digits[3])) + ExportScript.Tools.WriteToLog("2035: "..string.format("%s", digits[4])) + end + + ExportScript.Tools.SendData(2032, digits[1]) + ExportScript.Tools.SendData(2033, digits[2]) + ExportScript.Tools.SendData(2034, digits[3]) + ExportScript.Tools.SendData(2035, digits[4]) + +-- VOR ILS +--[[ + [611] = "%.4f", -- 1. Drum + [612] = "%.4f", -- 2. + [613] = "%.4f", -- 3. + [614] = "%.4f", -- 4. + [615] = "%.4f", -- 5. +]] + digits = {} + digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(611) * 10) + digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(612) * 10) + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(613) * 10) + digits[4] = string.format("%1.0f",mainPanelDevice:get_argument_value(614) * 10) + digits[5] = string.format("%1.0f",mainPanelDevice:get_argument_value(615) * 10) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("2036-1: "..string.format("%s", digits[1])) + ExportScript.Tools.WriteToLog("2036-2: "..string.format("%s", digits[2])) + ExportScript.Tools.WriteToLog("2036-3: "..string.format("%s", digits[3])) + ExportScript.Tools.WriteToLog("2036-4: "..string.format("%s", digits[4])) + ExportScript.Tools.WriteToLog("2036-5: "..string.format("%s", digits[5])) + end + + ExportScript.Tools.SendData(2036, digits[1]..digits[2]..digits[3].."."..digits[4]..digits[5]) + +-- TACAN +--[[ + [620] = "%.1f", -- X/Y + [621] = "%.4f", -- Drum XX0 left (--;1-12;--) + [622] = "%.4f", -- Drum 00X right (0;1-9;0) +]] + local lTACAN_FREQUENCE1 = {[-0.3]=" ",[-0.2]="1",[-0.1]="2",[0.0]="3",[0.1]="4",[0.2]="5",[0.3]="6",[0.4]="7",[0.5]="8",[0.6]="9",[0.7]="10",[0.8]="11",[0.9]="12",[1.0]=" "} + digits = {} + --digits[1] = string.format("%1.0f",mainPanelDevice:get_argument_value(620) * 10) + --digits[2] = string.format("%1.0f",mainPanelDevice:get_argument_value(621) * 10) + digits[1] = (mainPanelDevice:get_argument_value(620) == 0 and "X" or "Y") + digits[2] = lTACAN_FREQUENCE1[tonumber(string.format("%0.1f",mainPanelDevice:get_argument_value(621)))] + digits[3] = string.format("%1.0f",mainPanelDevice:get_argument_value(622) * 10) + digits[3] = (digits[3] == "10" and "0" or digits[3]) + + ExportScript.Tools.SendData(2037, digits[1]..digits[2]..digits[3]) + +-- U/VHF Com + ExportScript.Tools.SendData(2038, ExportScript.Tools.DisplayFormat(string.format("%1.0f",mainPanelDevice:get_argument_value(440) * 10), 1)) + ExportScript.Tools.SendData(2039, ExportScript.Tools.DisplayFormat(string.format("%1.0f",mainPanelDevice:get_argument_value(441) * 10), 1)) + ExportScript.Tools.SendData(2040, ExportScript.Tools.DisplayFormat(string.format("%1.0f",mainPanelDevice:get_argument_value(442) * 10), 1)) + ExportScript.Tools.SendData(2041, ExportScript.Tools.DisplayFormat(string.format("%1.0f",mainPanelDevice:get_argument_value(443) * 10), 1)) + local lTmpNumber = tonumber(string.format("%1.0f",mainPanelDevice:get_argument_value(444) * 100)) + if lTmpNumber == 0 then + lTmpNumber = "00" + end + ExportScript.Tools.SendData(2042, ExportScript.Tools.DisplayFormat(tostring(lTmpNumber), 2)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('2038: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(440) * 10))) + ExportScript.Tools.WriteToLog('2039: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(441) * 10))) + ExportScript.Tools.WriteToLog('2040: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(442) * 10))) + ExportScript.Tools.WriteToLog('2041: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(443) * 10))) + ExportScript.Tools.WriteToLog('2042: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(444) * 100))) + ExportScript.Tools.WriteToLog('2042-2: '..ExportScript.Tools.dump(lTmpNumber)) + end + +-- U/VHF Com Preset + --[436] = "%.4f", -- Preset display (1-20) + local lUVHF_RADIO_PRESET = {[0.00]="1",[0.10]="2",[0.15]="3",[0.20]="4",[0.25]="5",[0.30]="6",[0.35]="7",[0.40]="8",[0.45]="9",[0.50]="10",[0.55]="11",[0.60]="12",[0.65]="13",[0.70]="14",[0.75]="15",[0.80]="16",[0.85]="17",[0.90]="18",[0.95]="19",[1.00]="20"} + ExportScript.Tools.SendData(436, ExportScript.Tools.DisplayFormat(lUVHF_RADIO_PRESET[tonumber(string.format("%1.2f",mainPanelDevice:get_argument_value(436)))], 2)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('436-1: '..ExportScript.Tools.dump(string.format("%1.2f",mainPanelDevice:get_argument_value(436)))) + ExportScript.Tools.WriteToLog('436-2: '..ExportScript.Tools.dump(lUVHF_RADIO_PRESET[tonumber(string.format("%1.2f",mainPanelDevice:get_argument_value(436)))])) + end + +-- VHF Com Preset + --[190] = "%.4f", -- Drum X0 Preset (0-1-2) + --[189] = "%.4f", -- Drum 0X Preset (0-9-0) + local lVHF_RADIO_PRESET = {[0.0]="0",[0.1]="1",[0.2]="2",[0.3]="3",[0.4]="4",[0.5]="5",[0.6]="6",[0.7]="7",[0.8]="8",[0.9]="9",[1.0]="0"} + local lTmpNumber = mainPanelDevice:get_argument_value(190) + if lTmpNumber > 0.2 then + lTmpNumber = 0.2 + end + ExportScript.Tools.SendData(189, ExportScript.Tools.DisplayFormat(lVHF_RADIO_PRESET[tonumber(string.format("%1.1f",lTmpNumber))]..lVHF_RADIO_PRESET[tonumber(string.format("%1.1f",mainPanelDevice:get_argument_value(189)))], 2)) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('189: '..ExportScript.Tools.dump(lVHF_RADIO_PRESET[tonumber(string.format("%1.1f",lTmpNumber))]..lVHF_RADIO_PRESET[tonumber(string.format("%1.1f",mainPanelDevice:get_argument_value(189)))])) + end + +-- Display Settings + --[224] = "%.4f", --Drum X000 + --[225] = "%.4f", --Drum 0X00 + --[226] = "%.4f", --Drum 00X0 + --[227] = "%.4f", --Drum 000X + digits = {} + digits[1] = mainPanelDevice:get_argument_value(224) * 10 + digits[2] = mainPanelDevice:get_argument_value(225) * 10 + digits[3] = mainPanelDevice:get_argument_value(226) * 10 + digits[4] = mainPanelDevice:get_argument_value(227) * 10 + digits[1] = (digits[1] > 7 and 7 or digits[1]) + digits[2] = (digits[2] > 7 and 7 or digits[2]) + digits[3] = (digits[3] > 7 and 7 or digits[3]) + digits[4] = (digits[4] > 7 and 7 or digits[4]) + ExportScript.Tools.SendData(224, string.format("%1.0f",digits[1])) + ExportScript.Tools.SendData(225, string.format("%1.0f",digits[2])) + ExportScript.Tools.SendData(226, string.format("%1.0f",digits[3])) + ExportScript.Tools.SendData(227, string.format("%1.0f",digits[4])) + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('224: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(224) * 10))) + ExportScript.Tools.WriteToLog('225: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(225) * 10))) + ExportScript.Tools.WriteToLog('226: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(226) * 10))) + ExportScript.Tools.WriteToLog('227: '..ExportScript.Tools.dump(string.format("%1.0f",mainPanelDevice:get_argument_value(227) * 10))) + end + + ExportScript.Tools.FlushData() +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- ECM_CHF + local lECM_CHF = ExportScript.Tools.getListIndicatorValue(3) + + if lECM_CHF ~= nil and lECM_CHF.text_ECM_CHF ~= nil then + -- string with max 3 charachters + ExportScript.Tools.SendDataDAC(2001, string.format("%s", lECM_CHF.text_ECM_CHF)) + else + ExportScript.Tools.SendDataDAC(2001, "-") + end + + -- ECM_FLR + local lECM_FLR = ExportScript.Tools.getListIndicatorValue(4) + + if lECM_FLR ~= nil and lECM_FLR.text_ECM_FLR ~= nil then + -- string with max 2 charachters + ExportScript.Tools.SendDataDAC(2002, string.format("%s", lECM_FLR.text_ECM_FLR)) + else + ExportScript.Tools.SendDataDAC(2002, "-") + end + + -- FUEL + local lFUEL = ExportScript.Tools.getListIndicatorValue(5) + + if lFUEL ~= nil and lFUEL.txt_fuel_g ~= nil then + -- string with max 3 charachters + ExportScript.Tools.SendDataDAC(2003, string.format("%s", lFUEL.txt_fuel_g)) + else + ExportScript.Tools.SendDataDAC(2003, "-") + end + + -- COM + local lCOM = list_indication(9) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('COM : '..ExportScript.Tools.dump(lCOM)) + end + + local to1, to2, from1, from2, lCOM1, lCOM2 = nil, nil, nil, nil, "-", "-" + to1, to2 = lCOM:find("COM") + if (to1 ~= nil) then + from1, from2 = lCOM:find("text_COM_UHF1%c") + if (from2 ~= nil) then + to1, to2 = lCOM:find("%c", from2+2) + if (to1 ~= nil) then + lCOM1 = lCOM:sub(from2+1, to1-1) + end + end + + from1, from2 = lCOM:find("text_COM_UHF2%c", to2) + if (from2 ~= nil) then + to1, to2 = lCOM:find("%c", from2+2) + if (to1 ~= nil) then + lCOM2 = lCOM:sub(from2+1, to1-1) + end + end + end + + -- string with max 7 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("lCOM1: "..string.format("%s", lCOM1)) + ExportScript.Tools.WriteToLog("lCOM2: "..string.format("%s", lCOM2)) + end + ExportScript.Tools.SendDataDAC(2020, string.format("%s", lCOM1)) + ExportScript.Tools.SendDataDAC(2021, string.format("%s", lCOM2)) + + -- PPA (vielelicht die Bomben Anzeige unten rechts) + local lPPA = list_indication(8) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('PPA : '..ExportScript.Tools.dump(lPPA)) + end + + local to1, to2, from1, from2, lPPA1, lPPA2 = nil, nil, nil, nil, "-", "-" + to1, to2 = lPPA:find("PPA") + if (to1 ~= nil) then + from1, from2 = lPPA:find("text_PPA_QTY%c") + if (from2 ~= nil) then + to1, to2 = lPPA:find("%c", from2+2) + if (to1 ~= nil) then + lPPA1 = lPPA:sub(from2+1, to1-1) + end + end + + from1, from2 = lPPA:find("text_PPA_INT%c", to2) + if (from2 ~= nil) then + to1, to2 = lPPA:find("%c", from2+2) + if (to1 ~= nil) then + lPPA2 = lPPA:sub(from2+1, to1-1) + end + end + end + + -- string with max 2 charachters + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("lPPA1: "..string.format("%s", lPPA1)) + ExportScript.Tools.WriteToLog("lPPA2: "..string.format("%s", lPPA2)) + end + ExportScript.Tools.SendDataDAC(2022, string.format("%s", lPPA1)) + ExportScript.Tools.SendDataDAC(2023, string.format("%s", lPPA2)) + + -- send data + ExportScript.Tools.FlushDataDAC(#ExportScript.Config.DAC) + + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/Mi-24P.csv b/ExportsModules/Mi-24P.csv new file mode 100644 index 0000000..52f1237 --- /dev/null +++ b/ExportsModules/Mi-24P.csv @@ -0,0 +1,844 @@ +Device (ID),Command ID,Element ID,Class Type,Arg ID,Value,Limit Min,Limit Max,Hints,, +ANTI_ICE_INTERFACE(60),3001,ROTOR-DEICER-AUTO-MAN-PTR,TUMB,109,-1,0,1,AntiIce AUTO/MANUAL,, +ANTI_ICE_INTERFACE(60),3001,ROTOR-DEICER-AUTO-MAN-PTR,TUMB,109,1,0,1,AntiIce AUTO/MANUAL,, +ANTI_ICE_INTERFACE(60),3002,ROTOR-DEICER-OFF-PTR,BTN,110,1,0,1,AntiIce OFF,, +ANTI_ICE_INTERFACE(60),3003,LEFT-ENG-HEATING-PTR,TUMB,113,-1,0,1,Left Engine AntiIce ON/OFF,, +ANTI_ICE_INTERFACE(60),3003,LEFT-ENG-HEATING-PTR,TUMB,113,1,0,1,Left Engine AntiIce ON/OFF,, +ANTI_ICE_INTERFACE(60),3004,RIGHT-ENG-HEATING-PTR,TUMB,112,-1,0,1,Right Engine AntiIce ON/OFF,, +ANTI_ICE_INTERFACE(60),3004,RIGHT-ENG-HEATING-PTR,TUMB,112,1,0,1,Right Engine AntiIce ON/OFF,, +ANTI_ICE_INTERFACE(60),3005,WINDSHIELD-DEICER-PTR,TUMB,111,-1,-1,1,Windshield Antiice LOW/OFF/HIGH,, +ANTI_ICE_INTERFACE(60),3005,WINDSHIELD-DEICER-PTR,TUMB,111,1,-1,1,Windshield Antiice LOW/OFF/HIGH,, +ANTI_ICE_INTERFACE(60),3006,WINDSHIELD-DEICER-OP-PTR,TUMB,675,-1,-1,1,Windshield Antiice LOW/OFF/HIGH,, +ANTI_ICE_INTERFACE(60),3006,WINDSHIELD-DEICER-OP-PTR,TUMB,675,1,-1,1,Windshield Antiice LOW/OFF/HIGH,, +ANTI_ICE_INTERFACE(60),3007,DEICER-KNOB-PTR,TUMB,114,-0.1,0,1,AC Voltmeter knob,, +ANTI_ICE_INTERFACE(60),3007,DEICER-KNOB-PTR,TUMB,114,0.1,0,1,AC Voltmeter knob,, +ARC_15_PANEL_O(48),3001,ARC-OP-VOLUME-PTR,LEV,634,0,0,1,ARC-15 Volume,, +ARC_15_PANEL_O(48),3002,ARC-OP-MODULATED-PTR,TUMB,635,-1,0,1,ARC-15 TLF/TLG,, +ARC_15_PANEL_O(48),3002,ARC-OP-MODULATED-PTR,TUMB,635,1,0,1,ARC-15 TLF/TLG,, +ARC_15_PANEL_O(48),3003,ARC-OP-MODE-PTR,TUMB,638,-0.115,0,0.345,ARC-15 mode OFF/COMPASS/ANT/FRAME,, +ARC_15_PANEL_O(48),3003,ARC-OP-MODE-PTR,TUMB,638,0.115,0,0.345,ARC-15 mode OFF/COMPASS/ANT/FRAME,, +ARC_15_PANEL_O(48),3004,ARC-OP-CH2-OUT-KNOB,TUMB,639,-0.058823529,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3004,ARC-OP-CH2-OUT-KNOB,TUMB,639,0.058823529,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3005,ARC-OP-CH2-CENTER-PTR,TUMB,640,-0.111111111,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3005,ARC-OP-CH2-CENTER-PTR,TUMB,640,0.111111111,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3006,ARC-OP-CH2-IN-PTR,TUMB,641,-0.05,0,0.95,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3006,ARC-OP-CH2-IN-PTR,TUMB,641,0.05,0,0.95,ARC-15 Left Frequency,, +ARC_15_PANEL_O(48),3007,ARC-OP-CH1-OUT-KNOB,TUMB,642,-0.058823529,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3007,ARC-OP-CH1-OUT-KNOB,TUMB,642,0.058823529,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3008,ARC-OP-CH1-CENTER-PTR,TUMB,643,-0.111111111,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3008,ARC-OP-CH1-CENTER-PTR,TUMB,643,0.111111111,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3009,ARC-OP-CH1-IN-PTR,TUMB,644,-0.05,0,0.95,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3009,ARC-OP-CH1-IN-PTR,TUMB,644,0.05,0,0.95,ARC-15 Right Frequency,, +ARC_15_PANEL_O(48),3010,ARC-OP-FRAME-PTR,BTN,633,1,0,1,ARC-15 Loop Button,, +ARC_15_PANEL_O(48),3011,ARC-OP-CHANNEL-PTR,TUMB,637,-1,0,1,ARC-15 1/2,, +ARC_15_PANEL_O(48),3011,ARC-OP-CHANNEL-PTR,TUMB,637,1,0,1,ARC-15 1/2,, +ARC_15_PANEL_O(48),3012,ARC-OP-AUTH-PTR,BTN,636,1,0,1,ARC-15 Control Button,, +ARC_15_PANEL_P(47),3001,ARC-VOLUME-PTR,LEV,459,0,0,1,ARC-15 Volume,, +ARC_15_PANEL_P(47),3002,ARC-MODULATED-PTR,TUMB,460,-1,0,1,ARC-15 TLF/TLG,, +ARC_15_PANEL_P(47),3002,ARC-MODULATED-PTR,TUMB,460,1,0,1,ARC-15 TLF/TLG,, +ARC_15_PANEL_P(47),3003,ARC-MODE-PTR,TUMB,463,-0.115,0,0.345,ARC-15 mode OFF/COMPASS/ANT/FRAME,, +ARC_15_PANEL_P(47),3003,ARC-MODE-PTR,TUMB,463,0.115,0,0.345,ARC-15 mode OFF/COMPASS/ANT/FRAME,, +ARC_15_PANEL_P(47),3004,ARC-CH2-OUT-KNOB,TUMB,464,-0.058823529,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3004,ARC-CH2-OUT-KNOB,TUMB,464,0.058823529,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3005,ARC-CH2-CENTER-PTR,TUMB,465,-0.111111111,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3005,ARC-CH2-CENTER-PTR,TUMB,465,0.111111111,0,1,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3006,ARC-CH2-IN-PTR,TUMB,466,-0.05,0,0.95,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3006,ARC-CH2-IN-PTR,TUMB,466,0.05,0,0.95,ARC-15 Left Frequency,, +ARC_15_PANEL_P(47),3007,ARC-CH1-OUT-KNOB,TUMB,467,-0.058823529,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3007,ARC-CH1-OUT-KNOB,TUMB,467,0.058823529,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3008,ARC-CH1-CENTER-PTR,TUMB,468,-0.111111111,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3008,ARC-CH1-CENTER-PTR,TUMB,468,0.111111111,0,1,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3009,ARC-CH1-IN-PTR,TUMB,469,-0.05,0,0.95,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3009,ARC-CH1-IN-PTR,TUMB,469,0.05,0,0.95,ARC-15 Right Frequency,, +ARC_15_PANEL_P(47),3010,ARC-FRAME-PTR,BTN,458,1,0,1,ARC-15 Loop Button,, +ARC_15_PANEL_P(47),3011,ARC-CHANNEL-PTR,TUMB,462,-1,0,1,ARC-15 1/2,, +ARC_15_PANEL_P(47),3011,ARC-CHANNEL-PTR,TUMB,462,1,0,1,ARC-15 1/2,, +ARC_15_PANEL_P(47),3012,ARC-AUTH-PTR,BTN,461,1,0,1,ARC-15 Control Button,, +ARC_U2(54),3001,ARC-U2-ON-OFF-PTR,TUMB,324,-1,0,1,ARC-U2 switcher On/Off,, +ARC_U2(54),3001,ARC-U2-ON-OFF-PTR,TUMB,324,1,0,1,ARC-U2 switcher On/Off,, +ARC_U2(54),3002,ARC-U2-FRAME-PTR,BTN,325,-1,-1,0,ARC-U2 switcher L–RAMKA-P,, +ARC_U2(54),3003,ARC-U2-FRAME-PTR,BTN,325,1,0,1,ARC-U2 switcher L–RAMKA-P,, +ARC_U2(54),3004,ARC-U2-SENS-PTR,TUMB,326,-1,0,1,ARC-U2 switcher sensitivity B-M,, +ARC_U2(54),3004,ARC-U2-SENS-PTR,TUMB,326,1,0,1,ARC-U2 switcher sensitivity B-M,, +ARC_U2(54),3005,ARC-U2-COMPASS-CONNECT-PTR,TUMB,327,-1,-1,1,ARC-U2 switcher COMPASS R-852–RADIOLINK–COMPASS R-828,, +ARC_U2(54),3005,ARC-U2-COMPASS-CONNECT-PTR,TUMB,327,1,-1,1,ARC-U2 switcher COMPASS R-852–RADIOLINK–COMPASS R-828,, +ASO_2V(9),3001,ASO2V-INTERV-PTR,TUMB,1008,-1,0,1,Interval,, +ASO_2V(9),3001,ASO2V-INTERV-PTR,TUMB,1008,1,0,1,Interval,, +ASO_2V(9),3002,ASO2V-SERIES-PTR,TUMB,965,-1,0,1,Serie,, +ASO_2V(9),3002,ASO2V-SERIES-PTR,TUMB,965,1,0,1,Serie,, +ASO_2V(9),3003,ASO2V-RESET-PTR,BTN,968,1,0,1,Launch Snars,, +ASO_2V(9),3004,ASO2V-LEFT-PTR,TUMB,969,-1,0,1,Left Side,, +ASO_2V(9),3004,ASO2V-LEFT-PTR,TUMB,969,1,0,1,Left Side,, +ASO_2V(9),3005,ASO2V-RIGHT-PTR,TUMB,970,-1,0,1,Right Side,, +ASO_2V(9),3005,ASO2V-RIGHT-PTR,TUMB,970,1,0,1,Right Side,, +ASO_2V(9),3006,ASO2V-SETS-PTR,TUMB,971,-0.1,0,0.3,Set I/II/III,, +ASO_2V(9),3006,ASO2V-SETS-PTR,TUMB,971,0.1,0,0.3,Set I/II/III,, +ASO_2V(9),3007,ASO-ON-PTR,BTN,847,1,0,1,Pilot Launch Snars,, +ASP_17V(16),3001,SIGHT-MAN-AUTO-PTR,TUMB,553,-0.5,0,0.5,Sight mode MANUAL/AUTO,, +ASP_17V(16),3001,SIGHT-MAN-AUTO-PTR,TUMB,553,0.5,0,0.5,Sight mode MANUAL/AUTO,, +ASP_17V(16),3002,SIGHT-SYNC-UNSYNC-PTR,TUMB,554,-0.5,0,0.5,Sight mode SYNC/ASYNC,, +ASP_17V(16),3002,SIGHT-SYNC-UNSYNC-PTR,TUMB,554,0.5,0,0.5,Sight mode SYNC/ASYNC,, +ASP_17V(16),3003,WEAP-DIST-MAN-AUTO-PTR,TUMB,515,-1,0,1,Sight distance MANUAL/AUTO,, +ASP_17V(16),3003,WEAP-DIST-MAN-AUTO-PTR,TUMB,515,1,0,1,Sight distance MANUAL/AUTO,, +ASP_17V(16),3004,WEAP-SIGHT-DIST-PTR,LEV,552,0,0,1,Sight Range Adjustment,, +ASP_17V(16),3005,SIGHT-VERT-KNOB-PTR,LEV,556,0,0,1,Sight Crosshair Vertical Adjustment,, +ASP_17V(16),3006,SIGHT-HOR-KNOB-PTR,LEV,566,0,0,1,Sight Crosshair Horizontal Adjustment,, +ASP_17V(16),3007,WEAP-SIGHT-RESET-PTR,BTN,528,1,0,1,Sight Resrt Crosshair,, +ASP_17V(16),3008,SIGHT-BASE-KNOB-PTR,LEV,557,0,0,1,Sight Base and Range Adjustment,, +ASP_17V(16),3009,SIGHT-CONTROL-PTR,BTN,570,1,0,1,Sight Control,, +ASP_17V(16),3010,SIGHT-GRID-BRIGHNTNESS-KNOB-PTR,LEV,567,0,0,1,Sight Grid Brightness Adjustment,, +ASP_17V(16),3011,SIGHT-CROSSHAIR-BRIGHNTNESS-KNOB-PTR,LEV,564,0,0,1,Sight Crosshair Brightness Adjustment,, +ASP_17V(16),3012,SIGHT-GRID-BACKUP-PTR,TUMB,569,-1,0,1,Sight Grid Lamp MAIN/BACKUP,, +ASP_17V(16),3012,SIGHT-GRID-BACKUP-PTR,TUMB,569,1,0,1,Sight Grid Lamp MAIN/BACKUP,, +ASP_17V(16),3013,SIGHT-CROSSHAIR-BACKUP-PTR,TUMB,568,-1,0,1,Sight Crosshair Lamp MAIN/BACKUP,, +ASP_17V(16),3013,SIGHT-CROSSHAIR-BACKUP-PTR,TUMB,568,1,0,1,Sight Crosshair Lamp MAIN/BACKUP,, +ASP_17V(16),3014,WEAP-SIGHT-ON-PFF-PTR,TUMB,529,-1,0,1,Sight Power ON/OFF,, +ASP_17V(16),3014,WEAP-SIGHT-ON-PFF-PTR,TUMB,529,1,0,1,Sight Power ON/OFF,, +ASP_17V(16),3015,WEAP-DISTR-POWER-OP-PTR,TUMB,761,-1,0,1,USR power,, +ASP_17V(16),3015,WEAP-DISTR-POWER-OP-PTR,TUMB,761,1,0,1,USR power,, +ASP_17V(16),3016,WEAP-DISTR-CONTROL-OP-PTR,TUMB,762,-1,-1,1,USR check,, +ASP_17V(16),3016,WEAP-DISTR-CONTROL-OP-PTR,TUMB,762,1,-1,1,USR check,, +ASP_17V(16),3045,ILS-ADJUST-HANDLE-PTR,TUMB,1005,0,0,1,Sight reflector control,, +ASP_17V(16),3046,ILS-ADJUST-HANDLE-PTR,LEV,1006,0,0,1,Sight reflector control,, +AUTOPILOT(10),3001,SAU-K-ON-PTR,BTN,243,1,0,1,Autopilot K Channel ON,, +AUTOPILOT(10),3003,SAU-K-OFF-PTR,BTN,242,1,0,1,Autopilot K Channel OFF,, +AUTOPILOT(10),3005,SAU-H-ON-PTR,BTN,237,1,0,1,Autopilot H Channel ON,, +AUTOPILOT(10),3007,SAU-H-OFF-PTR,BTN,236,1,0,1,Autopilot H Channel OFF,, +AUTOPILOT(10),3009,SAU-T-ON-PTR,BTN,249,1,0,1,Autopilot T Channel ON,, +AUTOPILOT(10),3011,SAU-T-OFF-PTR,BTN,248,1,0,1,Autopilot T Channel OFF,, +AUTOPILOT(10),3013,SAU-B-ON-PTR,BTN,255,1,0,1,Autopilot B Channel ON,, +AUTOPILOT(10),3015,SAU-B-OFF-PTR,BTN,254,1,0,1,Autopilot B Channel OFF,, +AUTOPILOT(10),3017,SAU-B-SWITCH-PTR,BTN,253,1,0,1,Autopilot Altitude Control,, +AUTOPILOT(10),3019,SAU-B-SWITCH-PTR,BTN,253,-1,-1,0,Autopilot Altitude Control,, +AUTOPILOT(10),3021,SAU-K-KNOB-PTR,LEV,240,0,0,1,Autopilot K Channel Delta Correction,, +AUTOPILOT(10),3023,SAU-H-KNOB-PTR,LEV,234,0,0,1,Autopilot H Channel Delta Correction,, +AUTOPILOT(10),3025,SAU-T-KNOB-PTR,LEV,246,0,0,1,Autopilot T Channel Delta Correction,, +AUTOPILOT(10),3027,STICK-TRIMMER-PTR,BTN,742,1,0,1,Autopilot Trimmer Button,, +AUTOPILOT(10),3028,OP-STICK-TRIMMER-PTR,BTN,855,1,0,1,Autopilot Trimmer Button,, +AUTOPILOT(10),3030,SAU-AZ-PTR,LEV,262,1,0,1,Autopilot Route Azimuth,, +AUTOPILOT(10),3032,SAU-HEIGHT-ON-PTR,BTN,258,1,0,1,Autopilot Altitude Mode ON,, +AUTOPILOT(10),3034,SAU-HEIGHT-OFF-PTR,BTN,257,1,0,1,Autopilot Altitude Mode OFF,, +AUTOPILOT(10),3036,SAU-HOVER-ON-PTR,BTN,259,1,0,1,Autopilot Hover Mode ON,, +AUTOPILOT(10),3038,SAU-ROUTE-ON-PTR,BTN,261,1,0,1,Autopilot Route Mode ON,, +AUTOPILOT(10),3040,SAU-HOVER-ROUTE-OFF-PTR,BTN,260,1,0,1,Autopilot Route and Hover Modes OFF,, +AUTOPILOT(10),3042,SAU-SPEED-ON-PTR,BTN,268,1,0,1,Autopilot Speed Stabilization ON,, +AUTOPILOT(10),3044,SAU-SPEED-OFF-PTR,BTN,269,1,0,1,Autopilot Speed Stabilization OFF,, +AUTOPILOT(10),3070,SAU-BRIGHT-DIM-PTR,TUMB,267,-1,0,1,Buttons Lighting BRIGHT/DIM,, +AUTOPILOT(10),3070,SAU-BRIGHT-DIM-PTR,TUMB,267,1,0,1,Buttons Lighting BRIGHT/DIM,, +BAROALT_O(42),3001,ALTIMETER-KNOB-OP-PTR,LEV,788,1,0,1,Operator Baro Pressure Knob,, +BAROALT_P(41),3001,ALTIMETER-KNOB-PTR,LEV,18,1,0,1,Baro Pressure Knob,, +CLOCK_O(36),3001,CLOCK-LEFT-OP-PTR,BTN,687,1,0,1,Mech clock left lever,, +CLOCK_O(36),3002,CLOCK-LEFT-OP-PTR,BTN,687,-1,-1,0,Mech clock left lever,, +CLOCK_O(36),3003,CLOCK-LEFT-OP-PTR,LEV,688,1,0,1,Mech clock left lever,, +CLOCK_O(36),3004,CLOCK-RIGHT-OP-PTR,BTN,693,1,0,1,Mech clock right lever,, +CLOCK_O(36),3005,CLOCK-RIGHT-OP-PTR,LEV,694,0.05,-0.15,0.15,Mech clock right lever,, +CLOCK_P(35),3001,CLOCK-LEFT-PTR,BTN,57,1,0,1,Mech clock left lever,, +CLOCK_P(35),3002,CLOCK-LEFT-PTR,BTN,57,-1,-1,0,Mech clock left lever,, +CLOCK_P(35),3003,CLOCK-LEFT-PTR,LEV,58,1,0,1,Mech clock left lever,, +CLOCK_P(35),3004,CLOCK-RIGHT-PTR,BTN,59,1,0,1,Mech clock right lever,, +CLOCK_P(35),3005,CLOCK-RIGHT-PTR,LEV,60,0.05,-0.15,0.15,Mech clock right lever,, +CPT_MECH(11),3001,LANDING-GEAR-PTR,TUMB,232,0,0,1,Gear Lever, UP/DOWN, +CPT_MECH(11),3001,LANDING-GEAR-PTR,TUMB,232,1,0,1,Gear Lever, UP/DOWN, +CPT_MECH(11),3002,LANDING-GEAR-LOCK-PTR,TUMB,228,0,0,1,Gear Lever Lock, UP/DOWN, +CPT_MECH(11),3002,LANDING-GEAR-LOCK-PTR,TUMB,228,1,0,1,Gear Lever Lock, UP/DOWN, +CPT_MECH(11),3003,LANDING-GEAR-LIGHTS-PTR,TUMB,224,-1,0,1,Gear Indication Lights ON/OFF,, +CPT_MECH(11),3003,LANDING-GEAR-LIGHTS-PTR,TUMB,224,1,0,1,Gear Indication Lights ON/OFF,, +CPT_MECH(11),3004,LANDING-GEAR-LIGHTS-COVER-PTR,TUMB,223,-1,0,1,Gear Indication Lights Cover UP/DOWN,, +CPT_MECH(11),3004,LANDING-GEAR-LIGHTS-COVER-PTR,TUMB,223,1,0,1,Gear Indication Lights Cover UP/DOWN,, +CPT_MECH(11),3005,LANDING-GEAR-OP-PTR,TUMB,677,-1,0,1,Operator Gear Switch, UP/DOWN, +CPT_MECH(11),3005,LANDING-GEAR-OP-PTR,TUMB,677,1,0,1,Operator Gear Switch, UP/DOWN, +CPT_MECH(11),3006,LANDING-GEAR-OP-COVER-PTR,TUMB,676,-1,0,1,Operator Gear Switch Cover, UP/DOWN, +CPT_MECH(11),3006,LANDING-GEAR-OP-COVER-PTR,TUMB,676,1,0,1,Operator Gear Switch Cover, UP/DOWN, +CPT_MECH(11),3007,LANDING-GEAR-EMER-PTR,TUMB,827,0,0,1,Emeregency Gear Lever,, +CPT_MECH(11),3007,LANDING-GEAR-EMER-PTR,TUMB,827,1,0,1,Emeregency Gear Lever,, +CPT_MECH(11),3012,DUAS-V-HEATING-OP-PTR,TUMB,763,-1,0,1,Heating DUAS, ON/OFF, +CPT_MECH(11),3012,DUAS-V-HEATING-OP-PTR,TUMB,763,1,0,1,Heating DUAS, ON/OFF, +CPT_MECH(11),3013,CLOCK-HEATING-OP-PTR,TUMB,672,-1,0,1,Clock Heating Switch, ON/OFF, +CPT_MECH(11),3013,CLOCK-HEATING-OP-PTR,TUMB,672,1,0,1,Clock Heating Switch, ON/OFF, +CPT_MECH(11),3015,WIPER-SPRINKLER-PTR,BTN,384,1,0,1,Window Sprayer Button,, +CPT_MECH(11),3016,WIPER-SPRINKLER-OP-PTR,BTN,680,1,0,1,Operator Window Sprayer Button,, +CPT_MECH(11),3017,CANOPY-HANDLE-PTR,TUMB,8,0,0,1,Pilot Door Safety Lock, OPEN/CLOSE, +CPT_MECH(11),3017,CANOPY-HANDLE-PTR,TUMB,8,1,0,1,Pilot Door Safety Lock, OPEN/CLOSE, +CPT_MECH(11),3018,CANOPY-HANDLE-SAFETY-PTR,BTN,189,1,0,1,Pilot Door Safety Lock Button,, +CPT_MECH(11),3019,CANOPY-HANDLE-OP-PTR,TUMB,848,0,0,1,Operator Lock Canopy, OPEN/CLOSE, +CPT_MECH(11),3019,CANOPY-HANDLE-OP-PTR,TUMB,848,1,0,1,Operator Lock Canopy, OPEN/CLOSE, +CPT_MECH(11),3020,WIPER-MODE-PTR-HISPEED,TUMB,418,0.25,0.25,0.25,Windscreen Wiper Control Switch, SPEED 2, +CPT_MECH(11),3020,WIPER-MODE-PTR-LOWSPEED,TUMB,418,0.15,0.15,0.15,Windscreen Wiper Control Switch, SPEED 1, +CPT_MECH(11),3020,WIPER-MODE-PTR-OFF,TUMB,418,0,0,0,Windscreen Wiper Control Switch, OFF, +CPT_MECH(11),3020,WIPER-MODE-PTR-RESET,BTN,418,0.35,0,0.35,Windscreen Wiper Control Switch, RESET, +CPT_MECH(11),3020,WIPER-MODE-PTR-START,TUMB,418,0.05,0.05,0.05,Windscreen Wiper Control Switch, START, +CPT_MECH(11),3021,WIPER-MODE-OP-PTR-HISPEED,TUMB,674,0.25,0.25,0.25,Windscreen Wiper Control Switch, SPEED 2, +CPT_MECH(11),3021,WIPER-MODE-OP-PTR-LOWSPEED,TUMB,674,0.15,0.15,0.15,Windscreen Wiper Control Switch, SPEED 1, +CPT_MECH(11),3021,WIPER-MODE-OP-PTR-OFF,TUMB,674,0,0,0,Windscreen Wiper Control Switch, OFF, +CPT_MECH(11),3021,WIPER-MODE-OP-PTR-RESET,BTN,674,0.35,0,0.35,Windscreen Wiper Control Switch, RESET, +CPT_MECH(11),3021,WIPER-MODE-OP-PTR-START,TUMB,674,0.05,0.05,0.05,Windscreen Wiper Control Switch, START, +CPT_MECH(11),3024,FAN-PTR,TUMB,420,-1,0,1,Pilot Fan, ON/OFF, +CPT_MECH(11),3024,FAN-PTR,TUMB,420,1,0,1,Pilot Fan, ON/OFF, +CPT_MECH(11),3025,FAN-OP-PTR,TUMB,665,-1,0,1,Operator Fan, ON/OFF, +CPT_MECH(11),3025,FAN-OP-PTR,TUMB,665,1,0,1,Operator Fan, ON/OFF, +CPT_MECH(11),3026,STICK-BRAKE-PTR,BTN,737,1,0,1,Wheel Brakes Handle,, +CPT_MECH(11),3027,STICK-BRAKE-FIX-PTR,TUMB,736,-1,0,1,Parking Brake Handle,, +CPT_MECH(11),3027,STICK-BRAKE-FIX-PTR,TUMB,736,1,0,1,Parking Brake Handle,, +CPT_MECH(11),3028,COLLECTIVE-FRICT-PTR,BTN,753,1,0,1,friction clutch of the collective,, +CPT_MECH(11),3029,EASTER_PILOT,BTN,0,1,0,1,Cockpit Fan - Touch,, +CPT_MECH(11),3030,EASTER_OP,BTN,0,1,0,1,Cockpit Fan - Touch,, +CPT_MECH(11),3031,PTR-STICK-HIDE-974,TUMB,974,-1,0,1,Hide Stick toggle,, +CPT_MECH(11),3031,PTR-STICK-HIDE-974,TUMB,974,1,0,1,Hide Stick toggle,, +CPT_MECH(11),3040,CONTROL-TRIMMER-OP-PTR,TUMB,671,-1,0,1,Autopilot Trimmer for yourself ,, +CPT_MECH(11),3040,CONTROL-TRIMMER-OP-PTR,TUMB,671,1,0,1,Autopilot Trimmer for yourself ,, +CPT_MECH(11),3041,CONTROL-TRIMMER-OP-COVER-PTR,TUMB,670,-1,0,1,Autopilot Trimmer for yourself Switch Cover, UP/DOWN, +CPT_MECH(11),3041,CONTROL-TRIMMER-OP-COVER-PTR,TUMB,670,1,0,1,Autopilot Trimmer for yourself Switch Cover, UP/DOWN, +DISS_15(8),3001,DISS-ON-OFF-PTR,TUMB,371,-1,0,1,DISS-15D ON/OFF,, +DISS_15(8),3001,DISS-ON-OFF-PTR,TUMB,371,1,0,1,DISS-15D ON/OFF,, +DISS_15(8),3002,DVS-DISS-PTR,TUMB,370,-1,0,1,Airspeed to DISS ON/OFF,, +DISS_15(8),3002,DVS-DISS-PTR,TUMB,370,1,0,1,Airspeed to DISS ON/OFF,, +DISS_15(8),3003,PTR-DISS-BTN-OFF,BTN,818,1,0,1,DISS coordinates OFF,, +DISS_15(8),3004,PTR-DISS-BTN-ON,BTN,819,1,0,1,DISS coordinates ON,, +DISS_15(8),3005,PTR-DISS-BTN-MINUS,BTN,815,1,0,1,DISS decrease map angle,, +DISS_15(8),3006,PTR-DISS-BTN-PLUS,BTN,816,1,0,1,DISS increase map angle,, +DISS_15(8),3007,PTR-DISS-BTN-N,BTN,809,1,0,1,DISS decrease path,, +DISS_15(8),3008,PTR-DISS-BTN-V,BTN,810,1,0,1,DISS increase path,, +DISS_15(8),3009,PTR-DISS-BTN-TOLE,BTN,803,1,0,1,DISS decrease deviation,, +DISS_15(8),3010,PTR-DISS-BTN-TORI,BTN,804,1,0,1,DISS increase deviation,, +DISS_15(8),3011,DRIFT-R-K-PTR,TUMB,797,-1,0,1,DISS Mode WORK/CHECK,, +DISS_15(8),3011,DRIFT-R-K-PTR,TUMB,797,1,0,1,DISS Mode WORK/CHECK,, +DISS_15(8),3012,DRIFT-S-M-PTR,TUMB,798,-1,0,1,DISS Mode LAND/SEA,, +DISS_15(8),3012,DRIFT-S-M-PTR,TUMB,798,1,0,1,DISS Mode LAND/SEA,, +DISS_15(8),3013,DISS-SELECTOR-KNOB-PTR,TUMB,826,-0.1,0,0.4,DISS select mode IDK/IDK/IDK/MEM/OPER,, +DISS_15(8),3013,DISS-SELECTOR-KNOB-PTR,TUMB,826,0.1,0,0.4,DISS select mode IDK/IDK/IDK/MEM/OPER,, +ECS_INTERFACE(29),3001,CABIN-DEPRESS-PTR,TUMB,133,-1,0,1,Cabin Unseal Switch, ON/OFF, +ECS_INTERFACE(29),3001,CABIN-DEPRESS-PTR,TUMB,133,1,0,1,Cabin Unseal Switch, ON/OFF, +ECS_INTERFACE(29),3002,AC-MODE-PTR,TUMB,134,-1,-1,1,Blowdown Conditioning Switch, CONDITIONING/OFF/BLOWDOWN, +ECS_INTERFACE(29),3002,AC-MODE-PTR,TUMB,134,1,-1,1,Blowdown Conditioning Switch, CONDITIONING/OFF/BLOWDOWN, +ECS_INTERFACE(29),3003,AC-FILTER-PTR,TUMB,143,-1,0,1,Filter Switch, ON/OFF, +ECS_INTERFACE(29),3003,AC-FILTER-PTR,TUMB,143,1,0,1,Filter Switch, ON/OFF, +ECS_INTERFACE(29),3004,AC-HEATER1-MODE-PTR,TUMB,144,-1,0,1,Heating Switch, HOT/NORMAL, +ECS_INTERFACE(29),3004,AC-HEATER1-MODE-PTR,TUMB,144,1,0,1,Heating Switch, HOT/NORMAL, +ECS_INTERFACE(29),3005,AC-HEATER2-MODE-PTR,TUMB,145,-0.1,0,0.3,Automatic Hot Cold Switch, OFF/COLD/HOT/AUTO, +ECS_INTERFACE(29),3005,AC-HEATER2-MODE-PTR,TUMB,145,0.1,0,0.3,Automatic Hot Cold Switch, OFF/COLD/HOT/AUTO, +ECS_INTERFACE(29),3006,AC-TEMP-KNOB-PTR,TUMB,146,-0.111111111,0,1.111111111,Temperature Selector, 5/10/15/18/20/22/24/30/35/40/50, +ECS_INTERFACE(29),3006,AC-TEMP-KNOB-PTR,TUMB,146,0.111111111,0,1.111111111,Temperature Selector, 5/10/15/18/20/22/24/30/35/40/50, +ECS_INTERFACE(29),3007,WEAP-MISSILES-SIGHT-FAN-OP-PTR,TUMB,774,-1,0,1,Sight Fan, ON/OFF, +ECS_INTERFACE(29),3007,WEAP-MISSILES-SIGHT-FAN-OP-PTR,TUMB,774,1,0,1,Sight Fan, ON/OFF, +ECS_INTERFACE(29),3008,CABIN-PRESS-VALVE-PTR,LEV,516,0,0,1,Sealing, OPEN/CLOSE, +ELEC_INTERFACE(1),3001,GROUND-AC-PTR,TUMB,87,-1,0,1,AC Ground Power, ON/OFF, +ELEC_INTERFACE(1),3001,GROUND-AC-PTR,TUMB,87,1,0,1,AC Ground Power, ON/OFF, +ELEC_INTERFACE(1),3004,GEN-LEFT-PTR,TUMB,101,-1,0,1,Left Generator switch, ON/OFF, +ELEC_INTERFACE(1),3004,GEN-LEFT-PTR,TUMB,101,1,0,1,Left Generator switch, ON/OFF, +ELEC_INTERFACE(1),3007,GEN-RIGHT-PTR,TUMB,80,-1,0,1,Right Generator switch, ON/OFF, +ELEC_INTERFACE(1),3007,GEN-RIGHT-PTR,TUMB,80,1,0,1,Right Generator switch, ON/OFF, +ELEC_INTERFACE(1),3010,TRANS115-PTR,TUMB,83,-1,-1,1,AC Transformer 115v, MAIN/AUTO/BACKUP, +ELEC_INTERFACE(1),3010,TRANS115-PTR,TUMB,83,1,-1,1,AC Transformer 115v, MAIN/AUTO/BACKUP, +ELEC_INTERFACE(1),3013,TRANS36-PTR,TUMB,85,-1,-1,1,AC Transformer 36v, MAIN/AUTO/BACKUP, +ELEC_INTERFACE(1),3013,TRANS36-PTR,TUMB,85,1,-1,1,AC Transformer 36v, MAIN/AUTO/BACKUP, +ELEC_INTERFACE(1),3016,GROUND-RECT-PTR,TUMB,89,-1,0,1,AC Ground Check, ON/OFF, +ELEC_INTERFACE(1),3016,GROUND-RECT-PTR,TUMB,89,1,0,1,AC Ground Check, ON/OFF, +ELEC_INTERFACE(1),3019,INV115-PTR,TUMB,98,-1,0,1,Inverter PO-750A, ON/OFF, +ELEC_INTERFACE(1),3019,INV115-PTR,TUMB,98,1,0,1,Inverter PO-750A, ON/OFF, +ELEC_INTERFACE(1),3022,INV36-PTR,TUMB,100,-1,0,1,Inverter PT-125Ts, ON/OFF, +ELEC_INTERFACE(1),3022,INV36-PTR,TUMB,100,1,0,1,Inverter PT-125Ts, ON/OFF, +ELEC_INTERFACE(1),3025,VOLT-AC-KNOB-PTR,TUMB,91,-0.1,0,1,AC Voltmeter knob,, +ELEC_INTERFACE(1),3025,VOLT-AC-KNOB-PTR,TUMB,91,0.1,0,1,AC Voltmeter knob,, +ELEC_INTERFACE(1),3028,TRANS-DIM-PTR,TUMB,196,-1,0,1,DIM Transformer switch, MAIN/BACKUP, +ELEC_INTERFACE(1),3028,TRANS-DIM-PTR,TUMB,196,1,0,1,DIM Transformer switch, MAIN/BACKUP, +ELEC_INTERFACE(1),3031,GROUND-DC-PTR,TUMB,73,-1,0,1,DC Ground Power, ON/OFF, +ELEC_INTERFACE(1),3031,GROUND-DC-PTR,TUMB,73,1,0,1,DC Ground Power, ON/OFF, +ELEC_INTERFACE(1),3034,BATT-LEFT-PTR,TUMB,75,-1,0,1,Left Battery switch, ON/OFF, +ELEC_INTERFACE(1),3034,BATT-LEFT-PTR,TUMB,75,1,0,1,Left Battery switch, ON/OFF, +ELEC_INTERFACE(1),3037,BATT-RIGHT-PTR,TUMB,61,-1,0,1,Right Battery switch, ON/OFF, +ELEC_INTERFACE(1),3037,BATT-RIGHT-PTR,TUMB,61,1,0,1,Right Battery switch, ON/OFF, +ELEC_INTERFACE(1),3040,RECT-LEFT-PTR,TUMB,62,-1,0,1,Left Rectifier switch, ON/OFF, +ELEC_INTERFACE(1),3040,RECT-LEFT-PTR,TUMB,62,1,0,1,Left Rectifier switch, ON/OFF, +ELEC_INTERFACE(1),3043,RECT-RIGHT-PTR,TUMB,65,-1,0,1,Right Rectifier switch, ON/OFF, +ELEC_INTERFACE(1),3043,RECT-RIGHT-PTR,TUMB,65,1,0,1,Right Rectifier switch, ON/OFF, +ELEC_INTERFACE(1),3046,STARTER-GEN-PTR,TUMB,66,-1,0,1,APU Generator switch, ON/OFF, +ELEC_INTERFACE(1),3046,STARTER-GEN-PTR,TUMB,66,1,0,1,APU Generator switch, ON/OFF, +ELEC_INTERFACE(1),3049,BATT-HEATING-PTR,TUMB,74,-1,0,1,Battery Heating, ON/OFF, +ELEC_INTERFACE(1),3049,BATT-HEATING-PTR,TUMB,74,1,0,1,Battery Heating, ON/OFF, +ELEC_INTERFACE(1),3052,NET-TO-BATT-PTR,TUMB,71,-1,0,1,Network to Batteries, ON/OFF, +ELEC_INTERFACE(1),3052,NET-TO-BATT-PTR,TUMB,71,1,0,1,Network to Batteries, ON/OFF, +ELEC_INTERFACE(1),3055,VOLT-DC-KNOB-PTR,TUMB,69,-0.111111111,0,1,DC Voltmeter knob,, +ELEC_INTERFACE(1),3055,VOLT-DC-KNOB-PTR,TUMB,69,0.111111111,0,1,DC Voltmeter knob,, +ELEC_INTERFACE(1),3058,GROUND-RECT-COVER-PTR,TUMB,88,-1,0,1,AC Ground Check Cover, UP/DOWN, +ELEC_INTERFACE(1),3058,GROUND-RECT-COVER-PTR,TUMB,88,1,0,1,AC Ground Check Cover, UP/DOWN, +ELEC_INTERFACE(1),3061,INV115-COVER-PTR,TUMB,97,-1,0,1,Inverter PO-750A Cover, UP/DOWN, +ELEC_INTERFACE(1),3061,INV115-COVER-PTR,TUMB,97,1,0,1,Inverter PO-750A Cover, UP/DOWN, +ELEC_INTERFACE(1),3064,INV36-COVER-PTR,TUMB,99,-1,0,1,Inverter PT-125Ts Cover, UP/DOWN, +ELEC_INTERFACE(1),3064,INV36-COVER-PTR,TUMB,99,1,0,1,Inverter PT-125Ts Cover, UP/DOWN, +ELEC_INTERFACE(1),3067,NET-TO-BATT-COVER-PTR,TUMB,70,-1,0,1,Network to Batteries cover, UP/DOWN, +ELEC_INTERFACE(1),3067,NET-TO-BATT-COVER-PTR,TUMB,70,1,0,1,Network to Batteries cover, UP/DOWN, +ELEC_INTERFACE(1),3070,CB-FRAME-LEFT-1-PTR,BTN,601,1,0,1,All Left CBs ON,, +ELEC_INTERFACE(1),3072,CB-FRAME-RIGHT-1-PTR,BTN,632,1,0,1,All Right CBs ON,, +ELEC_INTERFACE(1),3074,CB-RIGHT-CONTROL-FORCE-MECHANISM-PTR,TUMB,602,-1,0,1,CB Control Force Grad, ON/OFF, +ELEC_INTERFACE(1),3074,CB-RIGHT-CONTROL-FORCE-MECHANISM-PTR,TUMB,602,1,0,1,CB Control Force Grad, ON/OFF, +ELEC_INTERFACE(1),3075,CB-RIGHT-CONTROL-CLUTCH-PTR,TUMB,603,-1,0,1,CB Collective Lever Lock, ON/OFF, +ELEC_INTERFACE(1),3075,CB-RIGHT-CONTROL-CLUTCH-PTR,TUMB,603,1,0,1,CB Collective Lever Lock, ON/OFF, +ELEC_INTERFACE(1),3076,CB-RIGHT-ENGINE-TEMP-ADJUST-LEFT-PTR,TUMB,604,-1,0,1,CB Temperature Control Left Governor RPM, ON/OFF, +ELEC_INTERFACE(1),3076,CB-RIGHT-ENGINE-TEMP-ADJUST-LEFT-PTR,TUMB,604,1,0,1,CB Temperature Control Left Governor RPM, ON/OFF, +ELEC_INTERFACE(1),3077,CB-RIGHT-ENGINE-TEMP-ADJUST-RIGHT-PTR,TUMB,605,-1,0,1,CB Temperature Control Right Governor RPM, ON/OFF, +ELEC_INTERFACE(1),3077,CB-RIGHT-ENGINE-TEMP-ADJUST-RIGHT-PTR,TUMB,605,1,0,1,CB Temperature Control Right Governor RPM, ON/OFF, +ELEC_INTERFACE(1),3078,CB-RIGHT-ROTOR-RPM-ADJUST-PTR,TUMB,606,-1,0,1,CB Rotor RPM Adjust, ON/OFF, +ELEC_INTERFACE(1),3078,CB-RIGHT-ROTOR-RPM-ADJUST-PTR,TUMB,606,1,0,1,CB Rotor RPM Adjust, ON/OFF, +ELEC_INTERFACE(1),3079,CB-RIGHT-ARMAMENT-SIGNAL-PTR,TUMB,607,-1,0,1,CB Signal, ON/OFF, +ELEC_INTERFACE(1),3079,CB-RIGHT-ARMAMENT-SIGNAL-PTR,TUMB,607,1,0,1,CB Signal, ON/OFF, +ELEC_INTERFACE(1),3080,CB-RIGHT-ARMAMENT-CAMERA-SHUTTER-PTR,TUMB,608,-1,0,1,CB Camera, ON/OFF, +ELEC_INTERFACE(1),3080,CB-RIGHT-ARMAMENT-CAMERA-SHUTTER-PTR,TUMB,608,1,0,1,CB Camera, ON/OFF, +ELEC_INTERFACE(1),3081,CB-RIGHT-ARMAMENT-CONTROL-PTR,TUMB,609,-1,0,1,CB Armament Control, ON/OFF, +ELEC_INTERFACE(1),3081,CB-RIGHT-ARMAMENT-CONTROL-PTR,TUMB,609,1,0,1,CB Armament Control, ON/OFF, +ELEC_INTERFACE(1),3082,CB-RIGHT-ARMAMENT-CANNON-PTR,TUMB,610,-1,0,1,CB Cannon, ON/OFF, +ELEC_INTERFACE(1),3082,CB-RIGHT-ARMAMENT-CANNON-PTR,TUMB,610,1,0,1,CB Cannon, ON/OFF, +ELEC_INTERFACE(1),3083,CB-RIGHT-FIRE-2-AUTO-PTR,TUMB,611,-1,0,1,CB Squib-2 Auto Fire Protection, ON/OFF, +ELEC_INTERFACE(1),3083,CB-RIGHT-FIRE-2-AUTO-PTR,TUMB,611,1,0,1,CB Squib-2 Auto Fire Protection, ON/OFF, +ELEC_INTERFACE(1),3084,CB-RIGHT-FIRE-2-MANUAL-PTR,TUMB,612,-1,0,1,CB Squib-2 Manual Fire Protection, ON/OFF, +ELEC_INTERFACE(1),3084,CB-RIGHT-FIRE-2-MANUAL-PTR,TUMB,612,1,0,1,CB Squib-2 Manual Fire Protection, ON/OFF, +ELEC_INTERFACE(1),3085,CB-RIGHT-EXT-STORES-TACTICAL-DROP-PTR,TUMB,613,-1,0,1,CB External Stores Tactical Release, ON/OFF, +ELEC_INTERFACE(1),3085,CB-RIGHT-EXT-STORES-TACTICAL-DROP-PTR,TUMB,613,1,0,1,CB External Stores Tactical Release, ON/OFF, +ELEC_INTERFACE(1),3086,CB-RIGHT-EXT-STORES-LOCK-RELEASE-PTR,TUMB,614,-1,0,1,CB External Stores Release Lock, ON/OFF, +ELEC_INTERFACE(1),3086,CB-RIGHT-EXT-STORES-LOCK-RELEASE-PTR,TUMB,614,1,0,1,CB External Stores Release Lock, ON/OFF, +ELEC_INTERFACE(1),3087,CB-RIGHT-GEAR-EXTENT-HANDLE-BACKUP-PTR,TUMB,615,-1,0,1,CB Landing Gear Valve, ON/OFF, +ELEC_INTERFACE(1),3087,CB-RIGHT-GEAR-EXTENT-HANDLE-BACKUP-PTR,TUMB,615,1,0,1,CB Landing Gear Valve, ON/OFF, +ELEC_INTERFACE(1),3088,CB-RIGHT-LAUNCHER-DETACH-PTR,TUMB,616,-1,0,1,CB Jettison Missile Rails, ON/OFF, +ELEC_INTERFACE(1),3088,CB-RIGHT-LAUNCHER-DETACH-PTR,TUMB,616,1,0,1,CB Jettison Missile Rails, ON/OFF, +ELEC_INTERFACE(1),3089,CB-RIGHT-BOMB-COMBAT-DROP-PTR,TUMB,617,-1,0,1,CB Bombs Release, ON/OFF, +ELEC_INTERFACE(1),3089,CB-RIGHT-BOMB-COMBAT-DROP-PTR,TUMB,617,1,0,1,CB Bombs Release, ON/OFF, +ELEC_INTERFACE(1),3090,CB-RIGHT-CONNECTION-DISTRIBUTION-DEVICE-PTR,TUMB,618,-1,0,1,CB Connection Distribution Device, ON/OFF, +ELEC_INTERFACE(1),3090,CB-RIGHT-CONNECTION-DISTRIBUTION-DEVICE-PTR,TUMB,618,1,0,1,CB Connection Distribution Device, ON/OFF, +ELEC_INTERFACE(1),3091,CB-RIGHT-PILOT-AIM-PTR,TUMB,619,-1,0,1,PILOT SIGHT CB, ON/OFF, +ELEC_INTERFACE(1),3091,CB-RIGHT-PILOT-AIM-PTR,TUMB,619,1,0,1,PILOT SIGHT CB, ON/OFF, +ELEC_INTERFACE(1),3092,CB-RIGHT-DUAS-V-HEATING-PTR,TUMB,620,-1,0,1,CB Air Data Computer Heating, ON/OFF, +ELEC_INTERFACE(1),3092,CB-RIGHT-DUAS-V-HEATING-PTR,TUMB,620,1,0,1,CB Air Data Computer Heating, ON/OFF, +ELEC_INTERFACE(1),3093,CB-RIGHT-EMERGENCY-DOOR-DETACH-PILOT-PTR,TUMB,621,-1,0,1,CB Jettison Pilot´s Door, ON/OFF, +ELEC_INTERFACE(1),3093,CB-RIGHT-EMERGENCY-DOOR-DETACH-PILOT-PTR,TUMB,621,1,0,1,CB Jettison Pilot´s Door, ON/OFF, +ELEC_INTERFACE(1),3094,CB-RIGHT-EMERGENCY-DOOR-DETACH-OP-PTR,TUMB,622,-1,0,1,CB Jettision Gunners Door, ON/OFF, +ELEC_INTERFACE(1),3094,CB-RIGHT-EMERGENCY-DOOR-DETACH-OP-PTR,TUMB,622,1,0,1,CB Jettision Gunners Door, ON/OFF, +ELEC_INTERFACE(1),3095,CB-RIGHT-CONDITIONER-CONTROL-PTR,TUMB,623,-1,0,1,CB Air Conditioning, ON/OFF, +ELEC_INTERFACE(1),3095,CB-RIGHT-CONDITIONER-CONTROL-PTR,TUMB,623,1,0,1,CB Air Conditioning, ON/OFF, +ELEC_INTERFACE(1),3096,CB-RIGHT-FUEL-METER-PTR,TUMB,624,-1,0,1,CB Fuel Quantity Indication, ON/OFF, +ELEC_INTERFACE(1),3096,CB-RIGHT-FUEL-METER-PTR,TUMB,624,1,0,1,CB Fuel Quantity Indication, ON/OFF, +ELEC_INTERFACE(1),3097,CB-RIGHT-VALVE-TANK-2-PTR,TUMB,625,-1,0,1,CB Fuel Tank 2 Valve, ON/OFF, +ELEC_INTERFACE(1),3097,CB-RIGHT-VALVE-TANK-2-PTR,TUMB,625,1,0,1,CB Fuel Tank 2 Valve, ON/OFF, +ELEC_INTERFACE(1),3098,CB-RIGHT-VALVE-FIRE-RIGHT-PTR,TUMB,626,-1,0,1,CB Fuel Tank 2 Shutoff Valve, ON/OFF, +ELEC_INTERFACE(1),3098,CB-RIGHT-VALVE-FIRE-RIGHT-PTR,TUMB,626,1,0,1,CB Fuel Tank 2 Shutoff Valve, ON/OFF, +ELEC_INTERFACE(1),3099,CB-RIGHT-PUMP-TANK-2-PTR,TUMB,627,-1,0,1,CB Fuel Pump 2, ON/OFF, +ELEC_INTERFACE(1),3099,CB-RIGHT-PUMP-TANK-2-PTR,TUMB,627,1,0,1,CB Fuel Pump 2, ON/OFF, +ELEC_INTERFACE(1),3100,CB-RIGHT-PUMP-TANK-4-PTR,TUMB,628,-1,0,1,CB Fuel Pump 4, ON/OFF, +ELEC_INTERFACE(1),3100,CB-RIGHT-PUMP-TANK-4-PTR,TUMB,628,1,0,1,CB Fuel Pump 4, ON/OFF, +ELEC_INTERFACE(1),3101,CB-RIGHT-PILOT-SEAT-MECHANISM-PTR,TUMB,629,-1,0,1,CB Pilot Seat Adjustment, ON/OFF, +ELEC_INTERFACE(1),3101,CB-RIGHT-PILOT-SEAT-MECHANISM-PTR,TUMB,629,1,0,1,CB Pilot Seat Adjustment, ON/OFF, +ELEC_INTERFACE(1),3102,CB-RIGHT-ANTIICE-ALARM-PTR,TUMB,630,-1,0,1,CB Anti-Ice System - Warning, ON/OFF, +ELEC_INTERFACE(1),3102,CB-RIGHT-ANTIICE-ALARM-PTR,TUMB,630,1,0,1,CB Anti-Ice System - Warning, ON/OFF, +ELEC_INTERFACE(1),3103,CB-RIGHT-ANTIICE-CONTROL-PTR,TUMB,631,-1,0,1,CB Anti-Ice System - Control, ON/OFF, +ELEC_INTERFACE(1),3103,CB-RIGHT-ANTIICE-CONTROL-PTR,TUMB,631,1,0,1,CB Anti-Ice System - Control, ON/OFF, +ELEC_INTERFACE(1),3104,CB-LEFT-MISSILE-POWER-PTR,TUMB,572,-1,0,1,CB Missile Power, ON/OFF, +ELEC_INTERFACE(1),3104,CB-LEFT-MISSILE-POWER-PTR,TUMB,572,1,0,1,CB Missile Power, ON/OFF, +ELEC_INTERFACE(1),3105,CB-LEFT-BOMB-EMERGENCY-DETACH-PTR,TUMB,573,-1,0,1,CB Emergency Jettison, ON/OFF, +ELEC_INTERFACE(1),3105,CB-LEFT-BOMB-EMERGENCY-DETACH-PTR,TUMB,573,1,0,1,CB Emergency Jettison, ON/OFF, +ELEC_INTERFACE(1),3106,CB-LEFT-BOMB-EXPLOSION-PTR,TUMB,574,-1,0,1,CB Bombs, ON/OFF, +ELEC_INTERFACE(1),3106,CB-LEFT-BOMB-EXPLOSION-PTR,TUMB,574,1,0,1,CB Bombs, ON/OFF, +ELEC_INTERFACE(1),3107,CB-LEFT-ROCKETS-PTR,TUMB,575,-1,0,1,CB Rockets, ON/OFF, +ELEC_INTERFACE(1),3107,CB-LEFT-ROCKETS-PTR,TUMB,575,1,0,1,CB Rockets, ON/OFF, +ELEC_INTERFACE(1),3108,CB-LEFT-RADIOCOMPASS-HF-PTR,TUMB,576,-1,0,1,CB ADF, ON/OFF, +ELEC_INTERFACE(1),3108,CB-LEFT-RADIOCOMPASS-HF-PTR,TUMB,576,1,0,1,CB ADF, ON/OFF, +ELEC_INTERFACE(1),3109,CB-LEFT-PUMP-TANK-1-PTR,TUMB,577,-1,0,1,CB Fuel Shutoff Valve, ON/OFF, +ELEC_INTERFACE(1),3109,CB-LEFT-PUMP-TANK-1-PTR,TUMB,577,1,0,1,CB Fuel Shutoff Valve, ON/OFF, +ELEC_INTERFACE(1),3110,CB-LEFT-PUMP-TANK-5-PTR,TUMB,578,-1,0,1,CB Cross Feed Valve, ON/OFF, +ELEC_INTERFACE(1),3110,CB-LEFT-PUMP-TANK-5-PTR,TUMB,578,1,0,1,CB Cross Feed Valve, ON/OFF, +ELEC_INTERFACE(1),3111,CB-LEFT-VALVE-TANK-1-PTR,TUMB,579,-1,0,1,CB Tank 1 Valve, ON/OFF, +ELEC_INTERFACE(1),3111,CB-LEFT-VALVE-TANK-1-PTR,TUMB,579,1,0,1,CB Tank 1 Valve, ON/OFF, +ELEC_INTERFACE(1),3112,CB-LEFT-VALVE-FIRE-LEFT-PTR,TUMB,580,-1,0,1,CB Left Tank Fire Warning, ON/OFF, +ELEC_INTERFACE(1),3112,CB-LEFT-VALVE-FIRE-LEFT-PTR,TUMB,580,1,0,1,CB Left Tank Fire Warning, ON/OFF, +ELEC_INTERFACE(1),3113,CB-LEFT-VALVE-SEPARATION-PTR,TUMB,581,-1,0,1,CB Left Valve Separation, ON/OFF, +ELEC_INTERFACE(1),3113,CB-LEFT-VALVE-SEPARATION-PTR,TUMB,581,1,0,1,CB Left Valve Separation, ON/OFF, +ELEC_INTERFACE(1),3114,CB-LEFT-GLASS-SPRINKLER-PTR,TUMB,582,-1,0,1,CB Windshield Spray, ON/OFF, +ELEC_INTERFACE(1),3114,CB-LEFT-GLASS-SPRINKLER-PTR,TUMB,582,1,0,1,CB Windshield Spray, ON/OFF, +ELEC_INTERFACE(1),3115,CB-LEFT-GLASS-WIPER-OP-PTR,TUMB,583,-1,0,1,CB Windshield Wiper Gunner, ON/OFF, +ELEC_INTERFACE(1),3115,CB-LEFT-GLASS-WIPER-OP-PTR,TUMB,583,1,0,1,CB Windshield Wiper Gunner, ON/OFF, +ELEC_INTERFACE(1),3116,CB-LEFT-GLASS-WIPER-PILOT-PTR,TUMB,584,-1,0,1,CB Windshield Wiper Pilot, ON/OFF, +ELEC_INTERFACE(1),3116,CB-LEFT-GLASS-WIPER-PILOT-PTR,TUMB,584,1,0,1,CB Windshield Wiper Pilot, ON/OFF, +ELEC_INTERFACE(1),3117,CB-LEFT-SPEECH-INFORMER-PTR,TUMB,585,-1,0,1,CB Audio Warning System, ON/OFF, +ELEC_INTERFACE(1),3117,CB-LEFT-SPEECH-INFORMER-PTR,TUMB,585,1,0,1,CB Audio Warning System, ON/OFF, +ELEC_INTERFACE(1),3118,CB-LEFT-RECORDER-PARAMS-PTR,TUMB,586,-1,0,1,CB Flight Recorder, ON/OFF, +ELEC_INTERFACE(1),3118,CB-LEFT-RECORDER-PARAMS-PTR,TUMB,586,1,0,1,CB Flight Recorder, ON/OFF, +ELEC_INTERFACE(1),3119,CB-LEFT-FIRE-1-AUTO-PTR,TUMB,587,-1,0,1,CB Fire Protection System - Auto, ON/OFF, +ELEC_INTERFACE(1),3119,CB-LEFT-FIRE-1-AUTO-PTR,TUMB,587,1,0,1,CB Fire Protection System - Auto, ON/OFF, +ELEC_INTERFACE(1),3120,CB-LEFT-FIRE-1-MANUAL-PTR,TUMB,588,-1,0,1,CB Fire Protection System - Manual, ON/OFF, +ELEC_INTERFACE(1),3120,CB-LEFT-FIRE-1-MANUAL-PTR,TUMB,588,1,0,1,CB Fire Protection System - Manual, ON/OFF, +ELEC_INTERFACE(1),3121,CB-LEFT-FIRE-ALARM-PTR,TUMB,589,-1,0,1,CB Fire Protection System Warning, ON/OFF, +ELEC_INTERFACE(1),3121,CB-LEFT-FIRE-ALARM-PTR,TUMB,589,1,0,1,CB Fire Protection System Warning, ON/OFF, +ELEC_INTERFACE(1),3122,CB-LEFT-EXT-CARGO-EMERGENCY-DROP-PTR,TUMB,590,-1,0,1,CB External Cargo Emergency Jettison, ON/OFF, +ELEC_INTERFACE(1),3122,CB-LEFT-EXT-CARGO-EMERGENCY-DROP-PTR,TUMB,590,1,0,1,CB External Cargo Emergency Jettison, ON/OFF, +ELEC_INTERFACE(1),3123,CB-LEFT-GEAR-EXTENT-HANDLE-PTR,TUMB,591,-1,0,1,CB Landing Gear Extend / Retract, ON/OFF, +ELEC_INTERFACE(1),3123,CB-LEFT-GEAR-EXTENT-HANDLE-PTR,TUMB,591,1,0,1,CB Landing Gear Extend / Retract, ON/OFF, +ELEC_INTERFACE(1),3124,CB-LEFT-GEAR-ALARM-PTR,TUMB,592,-1,0,1,CB Landing Gear Warning, ON/OFF, +ELEC_INTERFACE(1),3124,CB-LEFT-GEAR-ALARM-PTR,TUMB,592,1,0,1,CB Landing Gear Warning, ON/OFF, +ELEC_INTERFACE(1),3125,CB-LEFT-PT125TS-PTR,TUMB,593,-1,0,1,CB Inverter, ON/OFF, +ELEC_INTERFACE(1),3125,CB-LEFT-PT125TS-PTR,TUMB,593,1,0,1,CB Inverter, ON/OFF, +ELEC_INTERFACE(1),3126,CB-LEFT-AIRSPEED-SENSOR-PTR,TUMB,594,-1,0,1,CB Air Speed Sensor, ON/OFF, +ELEC_INTERFACE(1),3126,CB-LEFT-AIRSPEED-SENSOR-PTR,TUMB,594,1,0,1,CB Air Speed Sensor, ON/OFF, +ELEC_INTERFACE(1),3127,CB-LEFT-AUTOPILOT-ALARM-PTR,TUMB,595,-1,0,1,CB AFCS Warn, ON/OFF, +ELEC_INTERFACE(1),3127,CB-LEFT-AUTOPILOT-ALARM-PTR,TUMB,595,1,0,1,CB AFCS Warn, ON/OFF, +ELEC_INTERFACE(1),3128,CB-LEFT-STARTUP-BLOCK-PTR,TUMB,596,-1,0,1,CB Auto Start System, ON/OFF, +ELEC_INTERFACE(1),3128,CB-LEFT-STARTUP-BLOCK-PTR,TUMB,596,1,0,1,CB Auto Start System, ON/OFF, +ELEC_INTERFACE(1),3129,CB-LEFT-STARTUP-IGNITION-PTR,TUMB,597,-1,0,1,CB Igniter, ON/OFF, +ELEC_INTERFACE(1),3129,CB-LEFT-STARTUP-IGNITION-PTR,TUMB,597,1,0,1,CB Igniter, ON/OFF, +ELEC_INTERFACE(1),3130,CB-LEFT-BEACON-PTR,TUMB,598,-1,0,1,CB Beacon Light, ON/OFF, +ELEC_INTERFACE(1),3130,CB-LEFT-BEACON-PTR,TUMB,598,1,0,1,CB Beacon Light, ON/OFF, +ELEC_INTERFACE(1),3131,CB-LEFT-HEADLIGHT-CONTROL-PTR,TUMB,599,-1,0,1,CB Landing Light Control, ON/OFF, +ELEC_INTERFACE(1),3131,CB-LEFT-HEADLIGHT-CONTROL-PTR,TUMB,599,1,0,1,CB Landing Light Control, ON/OFF, +ELEC_INTERFACE(1),3132,CB-LEFT-PILOTING-DEVICE-PTR,TUMB,600,-1,0,1,CB Main Attitude Indicator, ON/OFF, +ELEC_INTERFACE(1),3132,CB-LEFT-PILOTING-DEVICE-PTR,TUMB,600,1,0,1,CB Main Attitude Indicator, ON/OFF, +ENGINE_INTERFACE(3),3003,COLLECTIVE-CORR-PTR,LEV,0,0,-1,1,Collective (LMB press, hold and move) / Throttle (RMB press, hold and move) +ENGINE_INTERFACE(3),3004,COLLECTIVE-CORR-PTR,LEV,0,0,-1,1,Collective (LMB press, hold and move) / Throttle (RMB press, hold and move) +ENGINE_INTERFACE(3),3006,RRUD-LEFT-PTR,LEV,5,0,0,1,Left Engine Throttle,, +ENGINE_INTERFACE(3),3008,RRUD-RIGHT-PTR,LEV,4,0,0,1,Right Engine Throttle,, +ENGINE_INTERFACE(3),3009,ENG-BRAKE-LEFT-PTR,TUMB,6,0,0,1,Left Engine Stop,, +ENGINE_INTERFACE(3),3009,ENG-BRAKE-LEFT-PTR,TUMB,6,1,0,1,Left Engine Stop,, +ENGINE_INTERFACE(3),3010,ENG-BRAKE-RIGHT-PTR,TUMB,7,0,0,1,Right Engine Stop,, +ENGINE_INTERFACE(3),3010,ENG-BRAKE-RIGHT-PTR,TUMB,7,1,0,1,Right Engine Stop,, +ENGINE_INTERFACE(3),3011,ROTOR-BRAKE-PTR,TUMB,745,0,0,1,Rotor Brake,, +ENGINE_INTERFACE(3),3011,ROTOR-BRAKE-PTR,TUMB,745,1,0,1,Rotor Brake,, +ENGINE_INTERFACE(3),3012,APU-START-PTR,BTN,307,1,0,1,APU Start,, +ENGINE_INTERFACE(3),3013,APU-STOP-PTR,BTN,311,1,0,1,APU Stop,, +ENGINE_INTERFACE(3),3014,APU-FALSE-CRANK-START-PTR,TUMB,313,-1,-1,1,APU Launch Method START/CRANK/FALSE,, +ENGINE_INTERFACE(3),3014,APU-FALSE-CRANK-START-PTR,TUMB,313,1,-1,1,APU Launch Method START/CRANK/FALSE,, +ENGINE_INTERFACE(3),3015,ENG-START-PTR,BTN,314,1,0,1,Engine Start,, +ENGINE_INTERFACE(3),3016,ENG-LEFT-RIGHT-PTR,TUMB,320,-1,0,1,Engine Select RIGHT/LEFT,, +ENGINE_INTERFACE(3),3016,ENG-LEFT-RIGHT-PTR,TUMB,320,1,0,1,Engine Select RIGHT/LEFT,, +ENGINE_INTERFACE(3),3017,ENG-ABORT-PTR,BTN,318,1,0,1,Engine Interrupt Start,, +ENGINE_INTERFACE(3),3018,ENG-CRANK-START-PTR,TUMB,321,-1,0,1,Engine Launch Method START/CRANK,, +ENGINE_INTERFACE(3),3018,ENG-CRANK-START-PTR,TUMB,321,1,0,1,Engine Launch Method START/CRANK,, +ENGINE_INTERFACE(3),3019,COLLECTIVE-GOV-PTR,BTN,747,1,0,1,Readjust Free Turbine RPM, RIGHT/NEUTRAL/LEFT, +ENGINE_INTERFACE(3),3020,COLLECTIVE-GOV-PTR,BTN,747,-1,-1,0,Readjust Free Turbine RPM, RIGHT/NEUTRAL/LEFT, +ENGINE_INTERFACE(3),3021,DEDUST-OFF-PTR,TUMB,796,-1,0,1,Antidust ON/OFF,, +ENGINE_INTERFACE(3),3021,DEDUST-OFF-PTR,TUMB,796,1,0,1,Antidust ON/OFF,, +ENGINE_INTERFACE(3),3022,DEDUST-OFF-COVER-PTR,TUMB,514,-1,0,1,Antidust ON Cover, UP/DOWN, +ENGINE_INTERFACE(3),3022,DEDUST-OFF-COVER-PTR,TUMB,514,1,0,1,Antidust ON Cover, UP/DOWN, +ENGINE_INTERFACE(3),3023,ENG-TEMP-SENSOR-CONTROL-COLD-PTR,BTN,194,1,0,1,Engine Termometer control COLD,, +ENGINE_INTERFACE(3),3024,ENG-TEMP-SENSOR-CONTROL-HOT-PTR,BTN,195,1,0,1,Engine Termometer control HOT,, +ENGINE_INTERFACE(3),3090,OP-COLL-THROTTLE-PTR,LEV,0,0,-1,1,Collective (LMB press, hold and move) / Throttle (RMB press, hold and move) +ENGINE_INTERFACE(3),3091,OP-COLL-THROTTLE-PTR,LEV,0,0,-1,1,Collective (LMB press, hold and move) / Throttle (RMB press, hold and move) +EUCALYPT_M24(51),3001,EUCAL-CHANNEL-PTR,TUMB,337,-0.1,0,0.9,Eucalypt-M24 Channel Select,, +EUCALYPT_M24(51),3001,EUCAL-CHANNEL-PTR,TUMB,337,0.1,0,0.9,Eucalypt-M24 Channel Select,, +EUCALYPT_M24(51),3002,EUCAL-VOLUME-PTR,LEV,339,0,0,1,Eucalypt-M24 Volume,, +EUCALYPT_M24(51),3003,EUCAL-ASY-PTR,BTN,340,1,0,1,Eucalypt-M24 ASU,, +EUCALYPT_M24(51),3004,EUCAL-PSH-PTR,TUMB,341,-1,0,1,Eucalypt-M24 Squelch ON/OFF,, +EUCALYPT_M24(51),3004,EUCAL-PSH-PTR,TUMB,341,1,0,1,Eucalypt-M24 Squelch ON/OFF,, +EUCALYPT_M24(51),3005,R828-ON-OFF-PTR,TUMB,373,-1,0,1,Eucalypt-M24 ON/OFF,, +EUCALYPT_M24(51),3005,R828-ON-OFF-PTR,TUMB,373,1,0,1,Eucalypt-M24 ON/OFF,, +EXT_CARGO_EQUIPMENT(61),3001,COLLECTIVE-CARGO-TACT-PTR,BTN,752,1,0,1,Tactical Cargo Release Button - Push to release,, +EXT_CARGO_EQUIPMENT(61),3002,COLLECTIVE-CARGO-TACT-COVER-PTR,TUMB,751,-1,0,1,Tactical Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3002,COLLECTIVE-CARGO-TACT-COVER-PTR,TUMB,751,1,0,1,Tactical Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3004,COLLECTIVE-CARGO-EMER-COVER-PTR,TUMB,748,-1,0,1,Emergency Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3004,COLLECTIVE-CARGO-EMER-COVER-PTR,TUMB,748,1,0,1,Emergency Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3005,OP-COLL-CARGO-DROP-PTR,BTN,863,1,0,1,Emergency Cargo Release Button - Push to release,, +EXT_CARGO_EQUIPMENT(61),3006,OP-COLL-CARGO-DROP-COVER-PTR,TUMB,862,-1,0,1,Emergency Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3006,OP-COLL-CARGO-DROP-COVER-PTR,TUMB,862,1,0,1,Emergency Cargo Release Button Cover, OPEN/CLOSE, +EXT_CARGO_EQUIPMENT(61),3007,EXTCARGO-AUTOLOCK-PTR,TUMB,199,-1,0,1,External Cargo Automatic Dropping, ON/OFF, +EXT_CARGO_EQUIPMENT(61),3007,EXTCARGO-AUTOLOCK-PTR,TUMB,199,1,0,1,External Cargo Automatic Dropping, ON/OFF, +EXT_CARGO_EQUIPMENT(61),3008,EXTCARGO-EXT-RETR-PTR,TUMB,198,-1,0,1,External Cargo Remove Release, ON/OFF, +EXT_CARGO_EQUIPMENT(61),3008,EXTCARGO-EXT-RETR-PTR,TUMB,198,1,0,1,External Cargo Remove Release, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3001,TAXILIGHT-PTR,TUMB,34,-1,0,1,Taxi LT Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3001,TAXILIGHT-PTR,TUMB,34,1,0,1,Taxi LT Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3002,TAXILIGHT-OP-PTR,TUMB,686,-1,0,1,Operator Taxi LT Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3002,TAXILIGHT-OP-PTR,TUMB,686,1,0,1,Operator Taxi LT Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3003,NAVLIGHT-BRIGHT-DIM-OFF-PTR,TUMB,207,-1,-1,1,Navigation Lights Switch, BRIGHT/OFF/DIM, +EXT_LIGHTS_SYSTEM(15),3003,NAVLIGHT-BRIGHT-DIM-OFF-PTR,TUMB,207,1,-1,1,Navigation Lights Switch, BRIGHT/OFF/DIM, +EXT_LIGHTS_SYSTEM(15),3004,CODE-NAVLIGHT-PTR,BTN,35,1,0,1,Navigation Lights Code Button,, +EXT_LIGHTS_SYSTEM(15),3005,FORMATION-LIGHTS-PTR,TUMB,414,-1,-1,1,Formation Lights Switch, BRIGHT/OFF/DIM, +EXT_LIGHTS_SYSTEM(15),3005,FORMATION-LIGHTS-PTR,TUMB,414,1,-1,1,Formation Lights Switch, BRIGHT/OFF/DIM, +EXT_LIGHTS_SYSTEM(15),3006,ROTOR-LIGHTS-PTR,TUMB,415,-1,0,1,Tip Lights Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3006,ROTOR-LIGHTS-PTR,TUMB,415,1,0,1,Tip Lights Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3007,STROBE-TAIL-PTR,TUMB,417,-1,0,1,Strobe Light Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3007,STROBE-TAIL-PTR,TUMB,417,1,0,1,Strobe Light Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3008,TAXILIGHT-RETR-PTR,TUMB,208,-1,-1,1,LND LT Control-Off-Retract switch,, +EXT_LIGHTS_SYSTEM(15),3008,TAXILIGHT-RETR-PTR,TUMB,208,1,-1,1,LND LT Control-Off-Retract switch,, +EXT_LIGHTS_SYSTEM(15),3011,CONTROL-HEADLIGHT-OP-PTR,TUMB,669,-1,0,1,LND Light Assumed Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3011,CONTROL-HEADLIGHT-OP-PTR,TUMB,669,1,0,1,LND Light Assumed Switch, ON/OFF, +EXT_LIGHTS_SYSTEM(15),3012,CONTROL-HEADLIGHT-OP-COVER-PTR,TUMB,668,-1,0,1,LND Light Assumed Switch Cover, OPEN/CLOSE, +EXT_LIGHTS_SYSTEM(15),3012,CONTROL-HEADLIGHT-OP-COVER-PTR,TUMB,668,1,0,1,LND Light Assumed Switch Cover, OPEN/CLOSE, +FIRE_EXTING_INTERFACE(13),3001,FIRE-1-L-ENG-PTR,BTN,502,1,0,1,Extinguish Left Engine 1,, +FIRE_EXTING_INTERFACE(13),3002,FIRE-2-L-ENG-PTR,BTN,504,1,0,1,Extinguish Left Engine 2,, +FIRE_EXTING_INTERFACE(13),3003,FIRE-1-R-ENG-PTR,BTN,498,1,0,1,Extinguish Right Engine 1,, +FIRE_EXTING_INTERFACE(13),3004,FIRE-2-R-ENG-PTR,BTN,500,1,0,1,Extinguish Right Engine 2,, +FIRE_EXTING_INTERFACE(13),3005,FIRE-1-APU-PTR,BTN,494,1,0,1,Extinguish APU 1,, +FIRE_EXTING_INTERFACE(13),3006,FIRE-2-APU-PTR,BTN,496,1,0,1,Extinguish APU 2,, +FIRE_EXTING_INTERFACE(13),3007,FIRE-1-REDUCER-PTR,BTN,490,1,0,1,Extinguish Gearbox 1,, +FIRE_EXTING_INTERFACE(13),3008,FIRE-2-REDUCER-PTR,BTN,492,1,0,1,Extinguish Gearbox 2,, +FIRE_EXTING_INTERFACE(13),3009,FIRE-ALARM-OFF-PTR,BTN,488,1,0,1,Turn Off Fire Signal Button,, +FIRE_EXTING_INTERFACE(13),3010,EXTINGUISH-CONTROL-PTR,TUMB,482,-1,0,1,Extinguisher Control Switch EXING/CNTRL,, +FIRE_EXTING_INTERFACE(13),3010,EXTINGUISH-CONTROL-PTR,TUMB,482,1,0,1,Extinguisher Control Switch EXING/CNTRL,, +FIRE_EXTING_INTERFACE(13),3011,FIRE-PYRO-CHANNEL-PTR,BTN,486,-1,-1,0,Fire Extinguisher Squib Control,, +FIRE_EXTING_INTERFACE(13),3012,FIRE-PYRO-CHANNEL-PTR,BTN,486,1,0,1,Fire Extinguisher Squib Control,, +FIRE_EXTING_INTERFACE(13),3013,FIRE-SENSOR-CHANNEL-PTR1,TUMB,484,-0.1,0,0.3,Fire Extinguisher Sensor Cnannel OFF/1/2/3,, +FIRE_EXTING_INTERFACE(13),3013,FIRE-SENSOR-CHANNEL-PTR1,TUMB,484,0.1,0,0.3,Fire Extinguisher Sensor Cnannel OFF/1/2/3,, +FIRE_EXTING_INTERFACE(13),3014,FIRE-POWER-PTR,TUMB,487,-1,0,1,Fire Extinguisher Power ON/OFF,, +FIRE_EXTING_INTERFACE(13),3014,FIRE-POWER-PTR,TUMB,487,1,0,1,Fire Extinguisher Power ON/OFF,, +FM_PROXY(37),3001,STATIC-VALVE-PTR,TUMB,520,-1,-1,1,Static valve sensor select LEFT/BOTH/RIGHT,, +FM_PROXY(37),3001,STATIC-VALVE-PTR,TUMB,520,1,-1,1,Static valve sensor select LEFT/BOTH/RIGHT,, +FUELSYS_INTERFACE(2),3001,TANK-1-PTR,TUMB,408,-1,0,1,Tank 1 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3001,TANK-1-PTR,TUMB,408,1,0,1,Tank 1 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3004,TANK-2-PTR,TUMB,410,-1,0,1,Tank 2 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3004,TANK-2-PTR,TUMB,410,1,0,1,Tank 2 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3007,TANK-4-PTR,TUMB,404,-1,0,1,Tank 4 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3007,TANK-4-PTR,TUMB,404,1,0,1,Tank 4 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3010,TANK-5-PTR,TUMB,406,-1,0,1,Tank 5 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3010,TANK-5-PTR,TUMB,406,1,0,1,Tank 5 Pump, ON/OFF, +FUELSYS_INTERFACE(2),3013,EXT-TANKS-PTR,TUMB,411,-1,0,1,External Tanks, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3013,EXT-TANKS-PTR,TUMB,411,1,0,1,External Tanks, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3016,FIRE-VALVE-LEFT-PTR,TUMB,397,-1,0,1,Left Engine Fire Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3016,FIRE-VALVE-LEFT-PTR,TUMB,397,1,0,1,Left Engine Fire Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3019,FIRE-VALVE-LEFT-COVER-PTR,TUMB,396,-1,0,1,Left Engine Fire Valve Cover, UP/DOWN, +FUELSYS_INTERFACE(2),3019,FIRE-VALVE-LEFT-COVER-PTR,TUMB,396,1,0,1,Left Engine Fire Valve Cover, UP/DOWN, +FUELSYS_INTERFACE(2),3022,FIRE-VALVE-RIGHT-PTR,TUMB,400,-1,0,1,Right Engine Fire Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3022,FIRE-VALVE-RIGHT-PTR,TUMB,400,1,0,1,Right Engine Fire Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3025,FIRE-VALVE-RIGHT-COVER-PTR,TUMB,399,-1,0,1,Right Engine Fire Valve Cover, UP/DOWN, +FUELSYS_INTERFACE(2),3025,FIRE-VALVE-RIGHT-COVER-PTR,TUMB,399,1,0,1,Right Engine Fire Valve Cover, UP/DOWN, +FUELSYS_INTERFACE(2),3028,FUEL-DELIM-PTR,TUMB,402,-1,0,1,Fuel Delimiter Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3028,FUEL-DELIM-PTR,TUMB,402,1,0,1,Fuel Delimiter Valve, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3031,FEED-TANK-1-PTR,TUMB,392,-1,0,1,Feed Tank 1 Valve Switch, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3031,FEED-TANK-1-PTR,TUMB,392,1,0,1,Feed Tank 1 Valve Switch, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3034,FEED-TANK-2-PTR,TUMB,394,-1,0,1,Feed Tank 2 Valve Switch, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3034,FEED-TANK-2-PTR,TUMB,394,1,0,1,Feed Tank 2 Valve Switch, OPEN/CLOSE, +FUELSYS_INTERFACE(2),3037,FUEL-METER-KNOB-PTR,TUMB,191,-0.166666667,0,1,Select tank for fuel meter,, +FUELSYS_INTERFACE(2),3037,FUEL-METER-KNOB-PTR,TUMB,191,0.166666667,0,1,Select tank for fuel meter,, +FUELSYS_INTERFACE(2),3040,FUEL-METER-H-BUTTON-PTR,BTN,524,1,0,1,Fuel meter test low,, +FUELSYS_INTERFACE(2),3042,FUEL-METER-P-BUTTON-PTR,BTN,526,1,0,1,Fuel meter test high,, +GREBEN(27),3001,GREBEN-ON-PFF-PTR,TUMB,367,-1,0,1,Greben' ON/OFF,, +GREBEN(27),3001,GREBEN-ON-PFF-PTR,TUMB,367,1,0,1,Greben' ON/OFF,, +GREBEN(27),3004,GREBEN-LATITUDE-PTR,LEV,448,0,0,1,Greben Set Latitude,, +GREBEN(27),3007,GREBEN-MATCH-PTR,BTN,450,1,0,1,Greben Match,, +GREBEN(27),3009,GREBEN-MODE-PTR,TUMB,449,-1,-1,1,Greben' mode ZK/GPK/MK,, +GREBEN(27),3009,GREBEN-MODE-PTR,TUMB,449,1,-1,1,Greben' mode ZK/GPK/MK,, +GREBEN(27),3012,GREBEN-SETUP-PTR,TUMB,451,-1,0,1,Greben' mode SETUP/OPER,, +GREBEN(27),3012,GREBEN-SETUP-PTR,TUMB,451,1,0,1,Greben' mode SETUP/OPER,, +GREBEN(27),3015,RMI-COURSE-KNOB-PTR,LEV,858,0,0,1,Course setter,, +G_Meter(53),3001,GFORCE-RESET-PTR,BTN,947,1,0,1,Accelerometer Reset Button - Push to reset,, +HELPER_AI(30),3011,OP-COLL-ENGAGE-PTR,BTN,865,1,0,1,Engage Stick,, +HELPER_AI(30),3012,OP-STICK-DISENGAGE-PTR,BTN,859,1,0,1,Disengage Stick,, +HELPER_AI(30),3013,OP-STICK-DISENGAGE-COVER-PTR,TUMB,857,-1,0,1,Disengage Stick Cover,, +HELPER_AI(30),3013,OP-STICK-DISENGAGE-COVER-PTR,TUMB,857,1,0,1,Disengage Stick Cover,, +HYDRO_SYS_INTERFACE(4),3001,HYDRO-MAIN-SECOND-PTR,TUMB,217,-1,0,1,Main/Auxiliary Hydraulic Switch, MAIN/AUXILIARY, +HYDRO_SYS_INTERFACE(4),3001,HYDRO-MAIN-SECOND-PTR,TUMB,217,1,0,1,Main/Auxiliary Hydraulic Switch, MAIN/AUXILIARY, +HYDRO_SYS_INTERFACE(4),3002,HYDRO-MAIN-SECOND-COVER-PTR,TUMB,216,-1,0,1,Main/Auxiliary Hydraulic Switch Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3002,HYDRO-MAIN-SECOND-COVER-PTR,TUMB,216,1,0,1,Main/Auxiliary Hydraulic Switch Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3003,LANDING-GEAR-MAIN-BACKUP-PTR,TUMB,219,-1,0,1,Main/Reserve Gear Hydraulic Switch, MAIN/RESERVE, +HYDRO_SYS_INTERFACE(4),3003,LANDING-GEAR-MAIN-BACKUP-PTR,TUMB,219,1,0,1,Main/Reserve Gear Hydraulic Switch, MAIN/RESERVE, +HYDRO_SYS_INTERFACE(4),3004,LANDING-GEAR-MAIN-BACKUP-COVER-PTR,TUMB,218,-1,0,1,Main/Reserve Gear Hydraulic Switch Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3004,LANDING-GEAR-MAIN-BACKUP-COVER-PTR,TUMB,218,1,0,1,Main/Reserve Gear Hydraulic Switch Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3005,HYDRO-BACKUP-OFF-PTR,BTN,213,1,0,1,Auxiliary Disable Button,, +HYDRO_SYS_INTERFACE(4),3006,HYDRO-BACKUP-OFF-COVER-PTR,TUMB,215,-1,0,1,Auxiliary Disable Button Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3006,HYDRO-BACKUP-OFF-COVER-PTR,TUMB,215,1,0,1,Auxiliary Disable Button Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3007,PEDAL-DAMPER-COVER-PTR,TUMB,290,-1,0,1,Pedal Damper, ON/OFF, +HYDRO_SYS_INTERFACE(4),3007,PEDAL-DAMPER-COVER-PTR,TUMB,290,1,0,1,Pedal Damper, ON/OFF, +HYDRO_SYS_INTERFACE(4),3008,PEDAL-DAMPER-COVER-PTR-PTR,TUMB,289,-1,0,1,Pedal Damper Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3008,PEDAL-DAMPER-COVER-PTR-PTR,TUMB,289,1,0,1,Pedal Damper Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3009,PEDAL-DAMPER-OP-PTR,TUMB,667,-1,0,1,Pedal Damper, ON/OFF, +HYDRO_SYS_INTERFACE(4),3009,PEDAL-DAMPER-OP-PTR,TUMB,667,1,0,1,Pedal Damper, ON/OFF, +HYDRO_SYS_INTERFACE(4),3010,PEDAL-DAMPER-OP-COVER-PTR,TUMB,666,-1,0,1,Pedal Damper Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3010,PEDAL-DAMPER-OP-COVER-PTR,TUMB,666,1,0,1,Pedal Damper Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3011,CONTROL-PRIORITY-PTR,TUMB,48,-1,0,1,Control Assumed Switch Cover, ON/OFF, +HYDRO_SYS_INTERFACE(4),3011,CONTROL-PRIORITY-PTR,TUMB,48,1,0,1,Control Assumed Switch Cover, ON/OFF, +HYDRO_SYS_INTERFACE(4),3012, CONTROL-COVER-PRIORITY-PTR,TUMB,47,-1,0,1,Control Assumed Switch Cover, UP/DOWN, +HYDRO_SYS_INTERFACE(4),3012, CONTROL-COVER-PRIORITY-PTR,TUMB,47,1,0,1,Control Assumed Switch Cover, UP/DOWN, +I9K113(7),3001,PK-PN-POWER-PTR,TUMB,885,-1,0,1,Sight Power Switch,, +I9K113(7),3001,PK-PN-POWER-PTR,TUMB,885,1,0,1,Sight Power Switch,, +I9K113(7),3002,PK-OBSERVE-PTR,TUMB,886,-1,0,1,OBSERVE,, +I9K113(7),3002,PK-OBSERVE-PTR,TUMB,886,1,0,1,OBSERVE,, +I9K113(7),3003,PK-DIAPH-PTR,TUMB,887,-1,0,1,DIAFR Open,, +I9K113(7),3003,PK-DIAPH-PTR,TUMB,887,1,0,1,DIAFR Open,, +I9K113(7),3004,PK-LOCK-PTR,TUMB,912,-1,0,1,LOCK ARU,, +I9K113(7),3004,PK-LOCK-PTR,TUMB,912,1,0,1,LOCK ARU,, +I9K113(7),3005,PK-SSP-PTR,TUMB,913,-1,0,1,SSP On,, +I9K113(7),3005,PK-SSP-PTR,TUMB,913,1,0,1,SSP On,, +I9K113(7),3006,PK-IMIT-GENER-PTR,TUMB,910,-1,0,1,GENERATOR-IMIT,, +I9K113(7),3006,PK-IMIT-GENER-PTR,TUMB,910,1,0,1,GENERATOR-IMIT,, +I9K113(7),3007,PK-CHECK-PTR,TUMB,905,-1,-1,1,CHECK2-NEUTR-CHECK1,, +I9K113(7),3007,PK-CHECK-PTR,TUMB,905,1,-1,1,CHECK2-NEUTR-CHECK1,, +I9K113(7),3008,WEAP-JETTISON-SPECIAL-OP-COVER-PTR002,TUMB,903,-1,0,1,WORK-CHECK,, +I9K113(7),3008,WEAP-JETTISON-SPECIAL-OP-COVER-PTR002,TUMB,903,1,0,1,WORK-CHECK,, +I9K113(7),3009,PK-WORK-CHECK-PTR,TUMB,899,-0.1,0,0.4,BVK Set,, +I9K113(7),3009,PK-WORK-CHECK-PTR,TUMB,899,0.1,0,0.4,BVK Set,, +I9K113(7),3010,PK-LAUNCH-PTR,BTN,911,1,0,1,Start PM,, +I9K113(7),3011,L166V-SWITCH-PTR,TUMB,870,-1,-1,1,Lamps Check,, +I9K113(7),3011,L166V-SWITCH-PTR,TUMB,870,1,-1,1,Lamps Check,, +I9K113(7),3012,SHTV-IN-OUT-PTR,TUMB,934,-1,0,1,Switcher IN-OUT,, +I9K113(7),3012,SHTV-IN-OUT-PTR,TUMB,934,1,0,1,Switcher IN-OUT,, +I9K113(7),3013,SHTV-CODE-PTR,TUMB,935,-1,0,1,Switcher CODE1-CODE2,, +I9K113(7),3013,SHTV-CODE-PTR,TUMB,935,1,0,1,Switcher CODE1-CODE2,, +I9K113(7),3014,SHTV-CHECK-VALUE-PTR,TUMB,933,-1,0,1,Switcher 0 - 0.4,, +I9K113(7),3014,SHTV-CHECK-VALUE-PTR,TUMB,933,1,0,1,Switcher 0 - 0.4,, +I9K113(7),3015,SHTV-CHECK-PTR,BTN,931,1,0,1,Checking,, +I9K113(7),3016,SHTV-HIGH-K-PTR,BTN,875,1,0,1,High K,, +I9K113(7),3017,SHTV-LAMP-CHECK-PTR,BTN,932,1,0,1,Lamps Check,, +I9K113(7),3018,WEAP-MISSILES-SIGHT-HEATING-OP-PTR,TUMB,775,-1,0,1,Sight Doors,, +I9K113(7),3018,WEAP-MISSILES-SIGHT-HEATING-OP-PTR,TUMB,775,1,0,1,Sight Doors,, +I9K113(7),3021,OP-SIGHT-SCOPE-PTR,TUMB,871,-1,0,1,Zoom In-Out,, +I9K113(7),3021,OP-SIGHT-SCOPE-PTR,TUMB,871,1,0,1,Zoom In-Out,, +I9K113(7),3022,OP-SIGHT-ORANGE-PTR,TUMB,872,-1,0,1,Orange Filter,, +I9K113(7),3022,OP-SIGHT-ORANGE-PTR,TUMB,872,1,0,1,Orange Filter,, +I9K113(7),3023,OP-SIGHT-ANTILASER-PTR,TUMB,873,-1,0,1,Laser Filter,, +I9K113(7),3023,OP-SIGHT-ANTILASER-PTR,TUMB,873,1,0,1,Laser Filter,, +I9K113(7),3062,PK-LIGHT-PTR,TUMB,884,-1,0,1,Backlight,, +I9K113(7),3062,PK-LIGHT-PTR,TUMB,884,1,0,1,Backlight,, +I9K113(7),3064,PK-HEATING-PTR,TUMB,890,-1,0,1,Sight Heating,, +I9K113(7),3064,PK-HEATING-PTR,TUMB,890,1,0,1,Sight Heating,, +I9K113(7),3067,PTR-STICK-STOW-1026,TUMB,0,-1,0,1,Push to Park/Unpark Operators Stick,, +I9K113(7),3067,PTR-STICK-STOW-1026,TUMB,0,1,0,1,Push to Park/Unpark Operators Stick,, +IFF(57),3001,DEV6201-CODE-PTR,TUMB,334,-0.333333333,0,1,IFF Transponder Mode Selector Switch, AUTO/KD/+-15/KP, +IFF(57),3001,DEV6201-CODE-PTR,TUMB,334,0.333333333,0,1,IFF Transponder Mode Selector Switch, AUTO/KD/+-15/KP, +IFF(57),3002,DEV6201-MAIN-BACKUP-PTR,TUMB,336,-1,0,1,IFF Transponder Device Selector Switch, WORK/RESERVE, +IFF(57),3002,DEV6201-MAIN-BACKUP-PTR,TUMB,336,1,0,1,IFF Transponder Device Selector Switch, WORK/RESERVE, +IFF(57),3003,DEV6201-NOT-USED-PTR,TUMB,332,-1,0,1,IFF Transponder Device Mode Switch, 1/2, +IFF(57),3003,DEV6201-NOT-USED-PTR,TUMB,332,1,0,1,IFF Transponder Device Mode Switch, 1/2, +IFF(57),3004,DEV6201-ERASE-COVER-PTR,TUMB,328,-1,0,1,IFF Transponder Erase Button Cover, OPEN/CLOSE, +IFF(57),3004,DEV6201-ERASE-COVER-PTR,TUMB,328,1,0,1,IFF Transponder Erase Button Cover, OPEN/CLOSE, +IFF(57),3005,DEV6201-ERASE-PTR,BTN,329,1,0,1,IFF Transponder Erase Button - Push to erase,, +IFF(57),3006,DEV6201-SOS-COVER-PTR,TUMB,330,-1,0,1,IFF Transponder Disaster Switch Cover, OPEN/CLOSE, +IFF(57),3006,DEV6201-SOS-COVER-PTR,TUMB,330,1,0,1,IFF Transponder Disaster Switch Cover, OPEN/CLOSE, +IFF(57),3007,DEV6201-SOS-PTR,TUMB,331,-1,0,1,IFF Transponder Disaster Switch, ON/OFF, +IFF(57),3007,DEV6201-SOS-PTR,TUMB,331,1,0,1,IFF Transponder Disaster Switch, ON/OFF, +IFF(57),3008,DEV6201-POWER-PTR,TUMB,383,-1,0,1,IFF Transponder Power Switch, ON/OFF, +IFF(57),3008,DEV6201-POWER-PTR,TUMB,383,1,0,1,IFF Transponder Power Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3001,LTG-COCKPIT-OP-PTR,TUMB,682,-1,-1,1,Operator Cabin Lighting Switch, WHITE/OFF/RED, +INT_LIGHTS_SYSTEM(23),3001,LTG-COCKPIT-OP-PTR,TUMB,682,1,-1,1,Operator Cabin Lighting Switch, WHITE/OFF/RED, +INT_LIGHTS_SYSTEM(23),3002,LTG-COCKPIT-PTR,TUMB,356,-1,-1,1,Pilot Cabin Lighting Switch, WHITE/OFF/RED, +INT_LIGHTS_SYSTEM(23),3002,LTG-COCKPIT-PTR,TUMB,356,1,-1,1,Pilot Cabin Lighting Switch, WHITE/OFF/RED, +INT_LIGHTS_SYSTEM(23),3003,LTG-WHITE-PTR,TUMB,354,-1,0,1,Cargo Lighting Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3003,LTG-WHITE-PTR,TUMB,354,1,0,1,Cargo Lighting Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3004,LTG-WHITE-COVER-PTR,TUMB,353,-1,0,1,Cargo Lighting Switch Cover, UP/DOWN, +INT_LIGHTS_SYSTEM(23),3004,LTG-WHITE-COVER-PTR,TUMB,353,1,0,1,Cargo Lighting Switch Cover, UP/DOWN, +INT_LIGHTS_SYSTEM(23),3005,LTG-CARGO-PTR,TUMB,355,-1,-1,1,Cargo Lighting Switch, WHITE/OFF/BLUE, +INT_LIGHTS_SYSTEM(23),3005,LTG-CARGO-PTR,TUMB,355,1,-1,1,Cargo Lighting Switch, WHITE/OFF/BLUE, +INT_LIGHTS_SYSTEM(23),3008,LAMP-CONTROL-PTR,BTN,363,1,0,1,Test Warning Lights Button,, +INT_LIGHTS_SYSTEM(23),3009,LAMP-CONTROL-OP-PTR,BTN,681,1,0,1,Test Warning Lights Button,, +INT_LIGHTS_SYSTEM(23),3010,DAY-NIGHT-PTR,TUMB,362,-1,0,1,Day-Night Switch, DAY/NIGHT, +INT_LIGHTS_SYSTEM(23),3010,DAY-NIGHT-PTR,TUMB,362,1,0,1,Day-Night Switch, DAY/NIGHT, +INT_LIGHTS_SYSTEM(23),3011,FLASHER-PTR,TUMB,364,-1,0,1,Blinker Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3011,FLASHER-PTR,TUMB,364,1,0,1,Blinker Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3012,RED-LTG1-PTR,TUMB,148,-0.1,0,1,Transformer 1 Group Of Red Lights Right And Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3012,RED-LTG1-PTR,TUMB,148,0.1,0,1,Transformer 1 Group Of Red Lights Right And Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3013,RED-LTG2-PTR,TUMB,147,-0.1,0,1,Transformer 2 Group Of Red Lights Right And Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3013,RED-LTG2-PTR,TUMB,147,0.1,0,1,Transformer 2 Group Of Red Lights Right And Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3014,AUX-LTG-PTR,TUMB,822,-1,0,1,Armament Panel Red Lights Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3014,AUX-LTG-PTR,TUMB,822,1,0,1,Armament Panel Red Lights Switch, ON/OFF, +INT_LIGHTS_SYSTEM(23),3015,RED-LTG4-PTR,TUMB,820,-0.1,0,1,Transformer 1 Group Of Red Lights Left Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3015,RED-LTG4-PTR,TUMB,820,0.1,0,1,Transformer 1 Group Of Red Lights Left Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3016,RED-LTG5-PTR,TUMB,503,-0.1,0,1,Transformer 2 Group Of Red Lights Left Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3016,RED-LTG5-PTR,TUMB,503,0.1,0,1,Transformer 2 Group Of Red Lights Left Pilot Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3017,RED-LTG1-OP-PTR,TUMB,1013,-0.1,0,1,Transformer 1 Group Of Red Lights Left And Operator Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3017,RED-LTG1-OP-PTR,TUMB,1013,0.1,0,1,Transformer 1 Group Of Red Lights Left And Operator Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3018,RED-LTG2-OP-PTR,TUMB,1014,-0.1,0,1,Transformer 2 Group Of Red Lights Left And Operator Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3018,RED-LTG2-OP-PTR,TUMB,1014,0.1,0,1,Transformer 2 Group Of Red Lights Left And Operator Panel, OFF/8V/9V/10V/11V/12V/13V/14V/16V/18V/20V, +INT_LIGHTS_SYSTEM(23),3020,RED-LTG3-PTR,TUMB,149,-0.1,0,1,Builtin Red Lights Transformer, OFF/0.6V/1.2V/1.8V/2.4V/3V/3.6V/4.2V/4.8V/5.4V/6V, +INT_LIGHTS_SYSTEM(23),3020,RED-LTG3-PTR,TUMB,149,0.1,0,1,Builtin Red Lights Transformer, OFF/0.6V/1.2V/1.8V/2.4V/3V/3.6V/4.2V/4.8V/5.4V/6V, +JADRO_1I(50),3001,JADRO-MODULATION-PTR,TUMB,438,-0.1,0,0.2,Jadro-1I Mode OFF/AM/OM,, +JADRO_1I(50),3001,JADRO-MODULATION-PTR,TUMB,438,0.1,0,0.2,Jadro-1I Mode OFF/AM/OM,, +JADRO_1I(50),3004,JADRO-001-PTR,TUMB,437,-0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3004,JADRO-001-PTR,TUMB,437,0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3007,JADRO-01-PTR,TUMB,436,-0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3007,JADRO-01-PTR,TUMB,436,0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3010,JADRO-1-PTR,TUMB,429,-0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3010,JADRO-1-PTR,TUMB,429,0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3013,JADRO-10-PTR,TUMB,428,-0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3013,JADRO-10-PTR,TUMB,428,0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3016,JADRO-100-PTR,TUMB,427,-0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3016,JADRO-100-PTR,TUMB,427,0.1,0,1,Jadro-1I Frequency,, +JADRO_1I(50),3019,JADRO-VOLUME-PTR,LEV,426,0,0,1,Jadro-1I Volume,, +JADRO_1I(50),3022,JADRO-PSH-PTR,LEV,421,0,0,1,Jadro-1I Squelch,, +JADRO_1I(50),3025,JADRO-CONTROL-PTR,BTN,423,1,0,1,Jadro-1I Test,, +JADRO_1I(50),3027,JADRO-ON-OFF-PTR,TUMB,374,-1,0,1,Jadro-1I ON/OFF,, +JADRO_1I(50),3027,JADRO-ON-OFF-PTR,TUMB,374,1,0,1,Jadro-1I ON/OFF,, +KM_2(68),3001,KM2-KNOB-PTR,LEV,647,0,0,1,KM-2 set magnetic declination ,, +KM_2(68),3002,KM2-CONTR-BUTTON-PTR,BTN,645,1,0,1,KM-2 Test button,, +MAP_DISPLAY(45),3001,MAPDISPLAY-SCALE-PTR,TUMB,985,-1,0,1,Map Scale Selector,, +MAP_DISPLAY(45),3001,MAPDISPLAY-SCALE-PTR,TUMB,985,1,0,1,Map Scale Selector,, +MAP_DISPLAY(45),3004,MAPDISPLAY-VERT-PTR,LEV,291,0,0,1,Set the vertical position of the helicopter on the Map ,, +MAP_DISPLAY(45),3006,MAPDISPLAY-HOR-PTR,LEV,983,0,0,1,Set the horizontall position of the helicopter on the Map ,, +MAP_DISPLAY(45),3008,MAPDISPLAY-POWER-PTR,TUMB,984,-1,0,1,Map Power ON/OFF,, +MAP_DISPLAY(45),3008,MAPDISPLAY-POWER-PTR,TUMB,984,1,0,1,Map Power ON/OFF,, +MAP_DISPLAY(45),3011,MAP-LIGHT-PTR,TUMB,192,-1,-1,1,Map Highlight BRIGHT/OFF/DIM,, +MAP_DISPLAY(45),3011,MAP-LIGHT-PTR,TUMB,192,1,-1,1,Map Highlight BRIGHT/OFF/DIM,, +MGV1SU_1(25),3001,GYRO1-CAGE-PTR,BTN,10,1,0,1,Cage Gyro 1,, +MGV1SU_1(25),3004,MGV1-POWER-PTR,TUMB,369,-1,0,1,Gyro 1 Power, ON/OFF, +MGV1SU_1(25),3004,MGV1-POWER-PTR,TUMB,369,1,0,1,Gyro 1 Power, ON/OFF, +MGV1SU_2(26),3001,GYRO2-CAGE-PTR,BTN,14,1,0,1,Cage Gyro 2,, +MGV1SU_2(26),3003,GYRO-CAGE-OP-PTR,BTN,701,1,0,1,Cage Gyro 2,, +MGV1SU_2(26),3004,MGV2-POWER-PTR,TUMB,368,-1,0,1,Gyro 2 Power, ON/OFF, +MGV1SU_2(26),3004,MGV2-POWER-PTR,TUMB,368,1,0,1,Gyro 2 Power, ON/OFF, +PKP72M_INTERFACE(34),3001,GYRO-SEL-PTR,TUMB,12,-1,0,1,Gyrovertical Switch, 1/2, +PKP72M_INTERFACE(34),3001,GYRO-SEL-PTR,TUMB,12,1,0,1,Gyrovertical Switch, 1/2, +PKP72M_INTERFACE(34),3002,PKP-POWER-OP-PTR,TUMB,759,-1,0,1,ADI Switch, ON/OFF, +PKP72M_INTERFACE(34),3002,PKP-POWER-OP-PTR,TUMB,759,1,0,1,ADI Switch, ON/OFF, +PKP72M_O(33),3001,PKP-INIT-PITCH-KNOB-OP-PTR,LEV,782,0,0,1,Pitch Trim Knob,, +PKP72M_O(33),3002,PKP-TEST-OP-PTR,BTN,787,1,0,1,Test ADI Button,, +PKP72M_P(32),3001,PKP-INIT-PITCH-KNOB-PTR,LEV,941,0,0,1,Pitch Trim Knob,, +PKP72M_P(32),3002,PKP-TEST-PTR,BTN,946,1,0,1,Test ADI Button,, +RADAR_ALTIMETER(12),3001,RADAR-ALTIMETER-KNOB-PTR,LEV,30,0.05,0,1,Radar altimeter adjust and test,, +RADAR_ALTIMETER(12),3002,RADAR-ALTIMETER-KNOB-PTR,BTN,31,1,0,1,Radar altimeter adjust and test,, +RADAR_ALTIMETER(12),3003,RAD-ALT-ON-OFF-PTR,TUMB,372,-1,0,1,RV-5 ON/OFF,, +RADAR_ALTIMETER(12),3003,RAD-ALT-ON-OFF-PTR,TUMB,372,1,0,1,RV-5 ON/OFF,, +RMI2_O(44),3002,RMI-KUR-2-OP-PTR,TUMB,843,-1,0,1,Mode Switch, ZK/ARKU2, +RMI2_O(44),3002,RMI-KUR-2-OP-PTR,TUMB,843,1,0,1,Mode Switch, ZK/ARKU2, +RMI2_P(43),3002,RMI-KUR-2-PTR,TUMB,26,-1,0,1,Mode Switch, ZK/ARKU2, +RMI2_P(43),3002,RMI-KUR-2-PTR,TUMB,26,1,0,1,Mode Switch, ZK/ARKU2, +R_852(52),3001,R852-CHANNEL-PTR,TUMB,518,-0.1,0,0.3,R-852 Channel Select,, +R_852(52),3001,R852-CHANNEL-PTR,TUMB,518,0.1,0,0.3,R-852 Channel Select,, +R_852(52),3004,R852-VOLUME-KNOB-PTR,LEV,517,0,0,1,R-852 Volume,, +R_863(49),3001,R863-ON-OFF-PTR,TUMB,375,-1,0,1,R-863 ON/OFF,, +R_863(49),3001,R863-ON-OFF-PTR,TUMB,375,1,0,1,R-863 ON/OFF,, +R_863(49),3004,R863-MODULATION-PTR,TUMB,506,-1,0,1,R-863 FM/AM,, +R_863(49),3004,R863-MODULATION-PTR,TUMB,506,1,0,1,R-863 FM/AM,, +R_863(49),3007,R863-CHANNEL-PTR,TUMB,513,-0.05,0,0.95,R-863 Channel Select,, +R_863(49),3007,R863-CHANNEL-PTR,TUMB,513,0.05,0,0.95,R-863 Channel Select,, +R_863(49),3009,R863-PSH-PTR,TUMB,510,-1,0,1,R-863 Squelch ON/OFF,, +R_863(49),3009,R863-PSH-PTR,TUMB,510,1,0,1,R-863 Squelch ON/OFF,, +R_863(49),3012,R863-VOLUME-KNOB-PTR,LEV,511,0,0,1,R-863 Volume,, +R_863(49),3015,R863-AP-PTR,TUMB,507,-1,0,1,R-863 Emergency Receiver ON/OFF,, +R_863(49),3015,R863-AP-PTR,TUMB,507,1,0,1,R-863 Emergency Receiver ON/OFF,, +R_863(49),3018,R863-RK-PTR,TUMB,509,-1,0,1,R-863 ARC-UD ON/OFF,, +R_863(49),3018,R863-RK-PTR,TUMB,509,1,0,1,R-863 ARC-UD ON/OFF,, +Recorder_MC61(58),3001,RECORDER-POWER-PTR,TUMB,378,-1,0,1,Recorder MC 61 Power Switch, ON/OFF, +Recorder_MC61(58),3001,RECORDER-POWER-PTR,TUMB,378,1,0,1,Recorder MC 61 Power Switch, ON/OFF, +Recorder_MC61(58),3002,RECORDER-MODE-PTR,TUMB,1007,-1,0,1,Recorder MC 61 AUTO/WORK,, +Recorder_MC61(58),3002,RECORDER-MODE-PTR,TUMB,1007,1,0,1,Recorder MC 61 AUTO/WORK,, +Recorder_MC61(58),3003,RECORDER-LTG-KNOB-PTR,LEV,381,0,0,1,Recorder MC 61 Brightness Knob,, +Recorder_MC61(58),3004,RECORDER-SOURCE-PTR,TUMB,1012,-1,0,1,Laryngophone Switch, ON/OFF, +Recorder_MC61(58),3004,RECORDER-SOURCE-PTR,TUMB,1012,1,0,1,Laryngophone Switch, ON/OFF, +SARPP12I1(62),3001,SARPP-MAN-AUTO-OFF-PTR,TUMB,357,-1,-1,1,SARPP-12 Mode Switch, MANUAL/AUTO, +SARPP12I1(62),3001,SARPP-MAN-AUTO-OFF-PTR,TUMB,357,1,-1,1,SARPP-12 Mode Switch, MANUAL/AUTO, +SIGNAL_FLARES(64),3001,FLARE-TOP-POWER-PTR,TUMB,343,-1,0,1,Signal Flares Cassette 1 Power Switch, ON/OFF, +SIGNAL_FLARES(64),3001,FLARE-TOP-POWER-PTR,TUMB,343,1,0,1,Signal Flares Cassette 1 Power Switch, ON/OFF, +SIGNAL_FLARES(64),3002,FLARE-TOP-GREEN-PTR,TUMB,345,-1,0,1,Signal Flares Cassette 1 Launch Green Button,, +SIGNAL_FLARES(64),3002,FLARE-TOP-GREEN-PTR,TUMB,345,1,0,1,Signal Flares Cassette 1 Launch Green Button,, +SIGNAL_FLARES(64),3003,FLARE-TOP-RED-PTR,TUMB,344,-1,0,1,Signal Flares Cassette 1 Launch Red Button,, +SIGNAL_FLARES(64),3003,FLARE-TOP-RED-PTR,TUMB,344,1,0,1,Signal Flares Cassette 1 Launch Red Button,, +SIGNAL_FLARES(64),3004,FLARE-TOP-WHITE-PTR,TUMB,347,-1,0,1,Signal Flares Cassette 1 Launch White Button,, +SIGNAL_FLARES(64),3004,FLARE-TOP-WHITE-PTR,TUMB,347,1,0,1,Signal Flares Cassette 1 Launch White Button,, +SIGNAL_FLARES(64),3005,FLARE-TOP-YELLOW-PTR,TUMB,346,-1,0,1,Signal Flares Cassette 1 Launch Yellow Button,, +SIGNAL_FLARES(64),3005,FLARE-TOP-YELLOW-PTR,TUMB,346,1,0,1,Signal Flares Cassette 1 Launch Yellow Button,, +SIGNAL_FLARES(64),3006,FLARE-BOTTOM-POWER-PTR,TUMB,352,-1,0,1,Signal Flares Cassette 2 Power Switch, ON/OFF, +SIGNAL_FLARES(64),3006,FLARE-BOTTOM-POWER-PTR,TUMB,352,1,0,1,Signal Flares Cassette 2 Power Switch, ON/OFF, +SIGNAL_FLARES(64),3007,FLARE-BOTTOM-GREEN-PTR,TUMB,349,-1,0,1,Signal Flares Cassette 2 Launch Green Button,, +SIGNAL_FLARES(64),3007,FLARE-BOTTOM-GREEN-PTR,TUMB,349,1,0,1,Signal Flares Cassette 2 Launch Green Button,, +SIGNAL_FLARES(64),3008,FLARE-BOTTOM-RED-PTR,TUMB,348,-1,0,1,Signal Flares Cassette 2 Launch Red Button,, +SIGNAL_FLARES(64),3008,FLARE-BOTTOM-RED-PTR,TUMB,348,1,0,1,Signal Flares Cassette 2 Launch Red Button,, +SIGNAL_FLARES(64),3009,FLARE-BOTTOM-WHITE-PTR,TUMB,351,-1,0,1,Signal Flares Cassette 2 Launch White Button,, +SIGNAL_FLARES(64),3009,FLARE-BOTTOM-WHITE-PTR,TUMB,351,1,0,1,Signal Flares Cassette 2 Launch White Button,, +SIGNAL_FLARES(64),3010,FLARE-BOTTOM-YELLOW-PTR,TUMB,350,-1,0,1,Signal Flares Cassette 2 Launch Yellow Button,, +SIGNAL_FLARES(64),3010,FLARE-BOTTOM-YELLOW-PTR,TUMB,350,1,0,1,Signal Flares Cassette 2 Launch Yellow Button,, +SPO_10(67),3001,SIRENA-POWER-PTR,TUMB,366,-1,0,1,RWR Power,, +SPO_10(67),3001,SIRENA-POWER-PTR,TUMB,366,1,0,1,RWR Power,, +SPO_10(67),3002,SIRENA-SIGNAL-PTR,TUMB,365,-1,0,1,RWR Signal,, +SPO_10(67),3002,SIRENA-SIGNAL-PTR,TUMB,365,1,0,1,RWR Signal,, +SPO_10(67),3003,MAPDISPLAY-VERT-PTR001,TUMB,989,-1,0,1,RWR DAY/NIGHT,, +SPO_10(67),3003,MAPDISPLAY-VERT-PTR001,TUMB,989,1,0,1,RWR DAY/NIGHT,, +SPO_10(67),3004,GFORCE-RESET-PTR001,BTN,990,1,0,1,Check RWR,, +SPUU_52(19),3001,SPUU-OFF-PTR,TUMB,275,-1,0,1,SPUU OFF (that's a button but acts like a switch),, +SPUU_52(19),3001,SPUU-OFF-PTR,TUMB,275,1,0,1,SPUU OFF (that's a button but acts like a switch),, +SPUU_52(19),3003,SPUU-KNOB-PTR,LEV,276,1,0,1,Autopilot Route Azimuth,, +SPUU_52(19),3006,SPUU-CONTROL-PTR,BTN,277,1,0,1,SPUU Control Switch P/NONE/T,, +SPUU_52(19),3007,SPUU-CONTROL-PTR,BTN,277,-1,-1,0,SPUU Control Switch P/NONE/T,, +SPUU_52(19),3010,SPUU-ON-OFF-PTR,TUMB,270,-1,0,1,SPUU Power ON/OFF,, +SPUU_52(19),3010,SPUU-ON-OFF-PTR,TUMB,270,1,0,1,SPUU Power ON/OFF,, +SPU_8(55),3001,SPU8-VOLUME-PTR,LEV,457,0,0,1,SPU-8 Volume Knob,, +SPU_8(55),3002,SPU8-RADIO-VOL-KNOB-PTR,LEV,453,0,0,1,SPU-8 Radio Volume Knob,, +SPU_8(55),3003,SPU8-MODE-PTR,TUMB,455,-0.2,0,1,Radio Source Selector Switch, R-863/NF/JADRO-1A/R-828(Eucalypt)/ARC-15/ARC-U2, +SPU_8(55),3003,SPU8-MODE-PTR,TUMB,455,0.2,0,1,Radio Source Selector Switch, R-863/NF/JADRO-1A/R-828(Eucalypt)/ARC-15/ARC-U2, +SPU_8(55),3004,SPU8-EXT-PTR,TUMB,456,-1,0,1,Radio/ICS Switch,, +SPU_8(55),3004,SPU8-EXT-PTR,TUMB,456,1,0,1,Radio/ICS Switch,, +SPU_8(55),3007,SPU8-NET-PTR,TUMB,452,-1,0,1,Network 1/2 Switch (N/F),, +SPU_8(55),3007,SPU8-NET-PTR,TUMB,452,1,0,1,Network 1/2 Switch (N/F),, +SPU_8(55),3008,SPU8-CV-PTR,BTN,454,1,0,1,Circular Call Button (N/F),, +SPU_8(55),3009,SPU8-OP-VOLUME-PTR,LEV,661,0,0,1,SPU-8 Volume Knob,, +SPU_8(55),3010,SPU8-OP-RADIO-VOL-KNOB-PTR,LEV,657,0,0,1,SPU-8 Radio Volume Knob,, +SPU_8(55),3011,SPU8-OP-MODE-PTR,TUMB,659,-0.2,0,1,Radio Source Selector Switch, R-863/NF/JADRO-1A/R-828(Eucalypt)/ARC-15/ARC-U2, +SPU_8(55),3011,SPU8-OP-MODE-PTR,TUMB,659,0.2,0,1,Radio Source Selector Switch, R-863/NF/JADRO-1A/R-828(Eucalypt)/ARC-15/ARC-U2, +SPU_8(55),3012,SPU8-OP-EXT-PTR,TUMB,660,-1,0,1,Radio/ICS Switch,, +SPU_8(55),3012,SPU8-OP-EXT-PTR,TUMB,660,1,0,1,Radio/ICS Switch,, +SPU_8(55),3013,SPU8-OP-NET-PTR,TUMB,656,-1,0,1,Network 1/2 Switch (N/F),, +SPU_8(55),3013,SPU8-OP-NET-PTR,TUMB,656,1,0,1,Network 1/2 Switch (N/F),, +SPU_8(55),3014,SPU8-OP-CV-PTR,BTN,658,1,0,1,Circular Call Button (N/F),, +SPU_8(55),3015,SPU8-OP-PTR,TUMB,664,-1,0,1,SPUU Power ON/OFF,, +SPU_8(55),3015,SPU8-OP-PTR,TUMB,664,1,0,1,SPUU Power ON/OFF,, +SPU_8(55),3017,SPU8-1-ON-OFF-PTR,TUMB,376,-1,0,1,Switch SPU-8 NET-1 ON/OFF,, +SPU_8(55),3017,SPU8-1-ON-OFF-PTR,TUMB,376,1,0,1,Switch SPU-8 NET-1 ON/OFF,, +SPU_8(55),3018,SPU8-2-ON-OFF-PTR,TUMB,377,-1,0,1,Switch SPU-8 NET-2 ON/OFF,, +SPU_8(55),3018,SPU8-2-ON-OFF-PTR,TUMB,377,1,0,1,Switch SPU-8 NET-2 ON/OFF,, +UKT_2(18),3001,UKT-KNOB-PTR,LEV,951,0,0,1,Pitch Trim Knob,, +VMS(59),3001,SPEECH-OFF-PTR,BTN,359,1,0,1,RI-65 OFF Button,, +VMS(59),3002,SPEECH-CHECK-PTR,BTN,360,1,0,1,RI-65 Check Button,, +VMS(59),3003,SPEECH-REPEAT-PTR,BTN,361,1,0,1,RI-65 Repeat Button,, +WEAP_SYS(6),3001,STICK-RS-PTR,BTN,741,1,0,1,Fire Weapons,, +WEAP_SYS(6),3002,STICK-RS-COVER-PTR,TUMB,740,-1,0,1,Fire Weapons Cover,, +WEAP_SYS(6),3002,STICK-RS-COVER-PTR,TUMB,740,1,0,1,Fire Weapons Cover,, +WEAP_SYS(6),3003,WEAP-BURST-LENGTH-PTR,TUMB,521,-1,-1,1,Burst Length SHORT/MED/LONG,, +WEAP_SYS(6),3003,WEAP-BURST-LENGTH-PTR,TUMB,521,1,-1,1,Burst Length SHORT/MED/LONG,, +WEAP_SYS(6),3004,WEAP-127-LEFT-RELOAD-PTR,TUMB,522,-0.1,0,0.3,Reload Left Gondola,, +WEAP_SYS(6),3004,WEAP-127-LEFT-RELOAD-PTR,TUMB,522,0.1,0,0.3,Reload Left Gondola,, +WEAP_SYS(6),3005,WEAP-127-RIGHT-RELOAD-PTR,TUMB,527,-0.1,0,0.3,Reload Right Gondola,, +WEAP_SYS(6),3005,WEAP-127-RIGHT-RELOAD-PTR,TUMB,527,0.1,0,0.3,Reload Right Gondola,, +WEAP_SYS(6),3006,WEAP-SIGHT-CONTROL-ON-OFF-PTR,TUMB,530,-1,0,1,Weapon Camera ON/OFF,, +WEAP_SYS(6),3006,WEAP-SIGHT-CONTROL-ON-OFF-PTR,TUMB,530,1,0,1,Weapon Camera ON/OFF,, +WEAP_SYS(6),3007,WEAP-SELECT-KNOB-PTR,TUMB,523,-0.1,0,0.8,Select Weapon,, +WEAP_SYS(6),3007,WEAP-SELECT-KNOB-PTR,TUMB,523,0.1,0,0.8,Select Weapon,, +WEAP_SYS(6),3008,WEAP-ROCKET-SELECT-PTR,TUMB,531,-1,-1,1,Select Rockets LEFT/BOTH/RIGHT,, +WEAP_SYS(6),3008,WEAP-ROCKET-SELECT-PTR,TUMB,531,1,-1,1,Select Rockets LEFT/BOTH/RIGHT,, +WEAP_SYS(6),3009,WEAP-ON-OFF-PTR,TUMB,551,-1,0,1,Weapon Control ON/OFF,, +WEAP_SYS(6),3009,WEAP-ON-OFF-PTR,TUMB,551,1,0,1,Weapon Control ON/OFF,, +WEAP_SYS(6),3010,WEAP-CANNON-PACE-PTR,TUMB,550,-1,0,1,Cannon Fire Rate SLOW/FAST,, +WEAP_SYS(6),3010,WEAP-CANNON-PACE-PTR,TUMB,550,1,0,1,Cannon Fire Rate SLOW/FAST,, +WEAP_SYS(6),3011,WEAP-NPU-RELOAD-PTR,BTN,549,1,0,1,Reload Cannon,, +WEAP_SYS(6),3012,WEAP-KMG-INTERRUPT-PTR,BTN,547,1,0,1,Stop container,, +WEAP_SYS(6),3013,WEAP-JETTISON-EXPLOSION-PTR,TUMB,546,-1,0,1,Explosion on Jettison ON/OFF,, +WEAP_SYS(6),3013,WEAP-JETTISON-EXPLOSION-PTR,TUMB,546,1,0,1,Explosion on Jettison ON/OFF,, +WEAP_SYS(6),3014,WEAP-JETTISON-EXPLOSION-COVER-PTR,TUMB,545,-1,0,1,Explosion on Jettison Cover, UP/DOWN, +WEAP_SYS(6),3014,WEAP-JETTISON-EXPLOSION-COVER-PTR,TUMB,545,1,0,1,Explosion on Jettison Cover, UP/DOWN, +WEAP_SYS(6),3015,WEAP-JETTISON-SPECIAL-PTR,BTN,542,1,0,1,Jettison Pylons ON/OFF,, +WEAP_SYS(6),3016,WEAP-JETTISON-SPECIAL-COVER-PTR,TUMB,541,-1,0,1,Jettison Pylons Cover, UP/DOWN, +WEAP_SYS(6),3016,WEAP-JETTISON-SPECIAL-COVER-PTR,TUMB,541,1,0,1,Jettison Pylons Cover, UP/DOWN, +WEAP_SYS(6),3017,WEAP-JETTISON-LAUNCHER-PTR,BTN,538,1,0,1,Jettison Launcher ON/OFF,, +WEAP_SYS(6),3018,WEAP-JETTISON-LAUNCHER-COVER-PTR,TUMB,537,-1,0,1,Jettison Launcher Cover, UP/DOWN, +WEAP_SYS(6),3018,WEAP-JETTISON-LAUNCHER-COVER-PTR,TUMB,537,1,0,1,Jettison Launcher Cover, UP/DOWN, +WEAP_SYS(6),3019,WEAP-PUS-ENGAGEMENT-PTR,BTN,536,1,0,1,Arm Rockets,, +WEAP_SYS(6),3020,ARMAMENT-POWER-OP-PTR,TUMB,673,-1,0,1,Main Weapon Safe Switch,, +WEAP_SYS(6),3020,ARMAMENT-POWER-OP-PTR,TUMB,673,1,0,1,Main Weapon Safe Switch,, +WEAP_SYS(6),3021,OP-STICK-RS-PTR,BTN,187,1,0,1,Fire Weapons,, +WEAP_SYS(6),3022,OP-STICK-RS-COVER-PTR,TUMB,853,-1,0,1,Fire Weapons Cover,, +WEAP_SYS(6),3022,OP-STICK-RS-COVER-PTR,TUMB,853,1,0,1,Fire Weapons Cover,, +WEAP_SYS(6),3023,WEAP-PRIORITY-OP-PTR,TUMB,713,-1,0,1,Weapon Control,, +WEAP_SYS(6),3023,WEAP-PRIORITY-OP-PTR,TUMB,713,1,0,1,Weapon Control,, +WEAP_SYS(6),3024,WEAP-JETTISON-EXPLOSION-OP-PTR,TUMB,715,-1,0,1,Explosion on Jettison,, +WEAP_SYS(6),3024,WEAP-JETTISON-EXPLOSION-OP-PTR,TUMB,715,1,0,1,Explosion on Jettison,, +WEAP_SYS(6),3025,WEAP-JETTISON-OP-PTR,BTN,142,1,0,1,Emergency Jettison,, +WEAP_SYS(6),3026,WEAP-BURST-LENGTH-OP-PTR,TUMB,770,-1,-1,1,Burst Length SHORT/MED/LONG,, +WEAP_SYS(6),3026,WEAP-BURST-LENGTH-OP-PTR,TUMB,770,1,-1,1,Burst Length SHORT/MED/LONG,, +WEAP_SYS(6),3027,WEAP-SELECT-KNOB-OP-PTR,TUMB,709,-0.1,0,0.4,Select Weapon,, +WEAP_SYS(6),3027,WEAP-SELECT-KNOB-OP-PTR,TUMB,709,0.1,0,0.4,Select Weapon,, +WEAP_SYS(6),3028,WEAP-MISSILES-POWER-OP-PTR,TUMB,773,-1,0,1,Missiles Power,, +WEAP_SYS(6),3028,WEAP-MISSILES-POWER-OP-PTR,TUMB,773,1,0,1,Missiles Power,, +WEAP_SYS(6),3030,SHSCHO-POWER-PTR,TUMB,955,-1,0,1,SCHO Power,, +WEAP_SYS(6),3030,SHSCHO-POWER-PTR,TUMB,955,1,0,1,SCHO Power,, +WEAP_SYS(6),3031,WEAP-JETTISON-TEST-OP-PTR,BTN,768,1,0,1,Release Check PU,, +WEAP_SYS(6),3032,WEAP-JETTISON-SPECIAL-OP-PTR,TUMB,765,-1,0,1,Jettison Launcher ON/OFF,, +WEAP_SYS(6),3032,WEAP-JETTISON-SPECIAL-OP-PTR,TUMB,765,1,0,1,Jettison Launcher ON/OFF,, +WEAP_SYS(6),3033,WEAP-BOMBS-BLOCKS-OP-PTR,TUMB,700,-1,-1,1,Bombs/Blocks Mode,, +WEAP_SYS(6),3033,WEAP-BOMBS-BLOCKS-OP-PTR,TUMB,700,1,-1,1,Bombs/Blocks Mode,, +WEAP_SYS(6),3034,OP-AIM-RESET-RAD-PTR,BTN,882,1,0,1,Radiation Reset,, +WEAP_SYS(6),3035,SHSCHO-CHECK-PTR,BTN,956,1,0,1,SCHO Lamps Check,, +WEAP_SYS(6),3037,WEAP-CANNON-PACE-OP-PTR,TUMB,772,-1,0,1,Cannon Fire Rate SLOW/FAST,, +WEAP_SYS(6),3037,WEAP-CANNON-PACE-OP-PTR,TUMB,772,1,0,1,Cannon Fire Rate SLOW/FAST,, +WEAP_SYS(6),3038,SHSCHO-KNOB-PTR,TUMB,963,-0.1,0,0.8,Select Station,, +WEAP_SYS(6),3038,SHSCHO-KNOB-PTR,TUMB,963,0.1,0,0.8,Select Station,, +WEAP_SYS(6),3039,WEAP-NPU-RELOAD-OP-PTR,BTN,769,1,0,1,Reload Cannon,, +WEAP_SYS(6),3040,WEAP-PRIORITY-OP-COVER-PTR,TUMB,712,-1,0,1,Weapon Control Cover, UP/DOWN, +WEAP_SYS(6),3040,WEAP-PRIORITY-OP-COVER-PTR,TUMB,712,1,0,1,Weapon Control Cover, UP/DOWN, +WEAP_SYS(6),3041,WEAP-JETTISON-EXPLOSION-OP-COVER-PTR,TUMB,714,-1,0,1,Explosion on Jettison Cover, UP/DOWN, +WEAP_SYS(6),3041,WEAP-JETTISON-EXPLOSION-OP-COVER-PTR,TUMB,714,1,0,1,Explosion on Jettison Cover, UP/DOWN, +WEAP_SYS(6),3042,WEAP-JETTISON-OP-COVER-PTR,TUMB,141,-1,0,1,Emergency Jettison Cover, UP/DOWN, +WEAP_SYS(6),3042,WEAP-JETTISON-OP-COVER-PTR,TUMB,141,1,0,1,Emergency Jettison Cover, UP/DOWN, +WEAP_SYS(6),3043,WEAP-BOMBS-BLOCKS-OP-COVER-PTR,TUMB,699,-1,0,1,Bombs/Blocks Mode Cover, UP/DOWN, +WEAP_SYS(6),3043,WEAP-BOMBS-BLOCKS-OP-COVER-PTR,TUMB,699,1,0,1,Bombs/Blocks Mode Cover, UP/DOWN, +WEAP_SYS(6),3044,WEAP-JETTISON-SPECIAL-OP-COVER-PTR,TUMB,764,-1,0,1,Jettison Launcher Cover, UP/DOWN, +WEAP_SYS(6),3044,WEAP-JETTISON-SPECIAL-OP-COVER-PTR,TUMB,764,1,0,1,Jettison Launcher Cover, UP/DOWN, +WEAP_SYS(6),3045,WEAP-KMG-COMMENCE-OP-PTR,BTN,711,1,0,1,Start container,, +WEAP_SYS(6),3046,WEAP-KMG-INTERRUPT-OP-PTR,BTN,710,1,0,1,Stop container,, diff --git a/ExportsModules/Mi-8MT.lua b/ExportsModules/Mi-8MT.lua new file mode 100644 index 0000000..1b8f767 --- /dev/null +++ b/ExportsModules/Mi-8MT.lua @@ -0,0 +1,1327 @@ +-- Mi-8MTV2 Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.Mi8MT = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + + -- CONTROLLERS + --------------------------------------------------------------- + ----[209] = "%.4f", -- rudder { -1, 1} + --[266] = "%.4f", -- rudder_add { 1, -1} + --[181] = "%.4f", -- stick_roll {1, -1} + --[180] = "%.4f", -- stick_pitch {1, -1} + --[191] = "%.4f", -- collective_position {0, 1} + --[192] = "%1d", -- correction_position {1, 0} + --[230] = "%1d", -- collective_position_operator {0, 1} + --[231] = "%1d", -- correction_position_operator {1, 0} + --[560] = "%1d", -- coll_ROUTE_DESCENT_sw {0, 1} + --[558] = "%1d", -- coll_ReadjustFreeTurbRPM_sw {0, 1} + ----[208] = "%1d", -- collective_stopper {0, 1} + --[187] = "%.4f", -- left_engine_throttle {0.0, 1.0} + --[189] = "%.4f", -- right_engine_throttle {0.0, 1.0} + --[881] = "%.4f", -- wheelBrakes {0.0, 1.0} + ----[579] = "", -- throttle_cover {0.0, 1.0} + ----[208] = "", -- rotor_brake_handle {0.0, 1.0} + -- Variometer + --------------------------------------------------------------- + [16] = "%.4f", -- Variometer_L {-30, -20, -10, -5, -2, -1, 0, 1, 2, 5, 10, 20, 30} {-1.0, -0.71, -0.43, -0.23, -0.09, -0.05, 0, 0.05, 0.09, 0.23, 0.43, 0.71, 1.0} + [95] = "%.4f", -- Variometer_R {-30, -20, -10, -5, -2, -1, 0, 1, 2, 5, 10, 20, 30} {-1.0, -0.71, -0.43, -0.23, -0.09, -0.05, 0, 0.05, 0.09, 0.23, 0.43, 0.71, 1.0} + -- Airspeed + --------------------------------------------------------------- + [24] = "%.4f", -- IAS_L {-10.0, 0.0, 13.889, 27.78, 41.67, 55.56, 69.44, 83.33, 111.1, 125.0, 129.2} {0.0, 0.001, 0.028, 0.165, 0.277, 0.393, 1.0} + [790] = "%.4f", -- IAS_R {-10.0, 0.0, 13.889, 27.78, 41.67, 55.56, 69.44, 83.33, 111.1, 125.0, 129.2} {0.0, 0.001, 0.028, 0.165, 0.277, 0.393, 1.0} + -- AGB-3k + --------------------------------------------------------------- + [13] = "%.4f", -- AGB_3K_Left_roll {-1.0, 1.0} + --[12] = "%.4f", -- AGB_3K_Left_pitch {1.0, -1.0} + [14] = "%.4f", -- AGB_3K_Left_failure_flag {0.0, 1.0} + [15] = "%.4f", -- AGB_3K_Left_sideslip {1.0, -1.0} + [820] = "%.4f", -- AGB_3K_Left_index {0.5, -0.5} + ------ + [92] = "%.4f", -- AGB_3K_Right_roll {-1.0, 1.0} + --[91] = "%.4f", -- AGB_3K_Right_pitch {1.0, -1.0} + [93] = "%.4f", -- AGB_3K_Right_failure_flag {0.0, 1.0} + [94] = "%.4f", -- AGB_3K_Right_sideslip {1.0, -1.0} + [821] = "%.4f", -- AGB_3K_Right_index {0.5, -0.5} + -- EUP-53 + --------------------------------------------------------------- + [22] = "%.4f", -- EUP_speed {-1.0, 1.0} + [23] = "%.4f", -- EUP_sideslip {-1.0, 1.0} + -- UGR-4K + --------------------------------------------------------------- + [25] = "%.4f", -- UGR_4K_heading_L {0.0, 1.0} + [27] = "%.4f", -- UGR_4K_commanded_course_L {0.0, 1.0} + [28] = "%.4f", -- UGR_4K_bearing_needle_L {0.0, 1.0} + ---- + [101] = "%.4f", -- UGR_4K_heading_R {0.0, 1.0} + [103] = "%.4f", -- UGR_4K_commanded_course_R {0.0, 1.0} + [104] = "%.4f", -- UGR_4K_bearing_needle_R {0.0, 1.0} + -- Barometric altimeter VD-10K + --------------------------------------------------------------- + [19] = "%.4f", -- VD_10K_L_100 {0.0, 1.0} + [20] = "%.4f", -- VD_10K_L_10 {0.0, 1.0} + [833] = "%.4f", -- VD_10K_L_100_Ind {0.0, 1.0} + [832] = "%.4f", -- VD_10K_L_10_Ind {0.0, 1.0} + [916] = "%.4f", -- VD_10K_L_Shutter {0.822, 0.75} + --[21] = "%.4f", -- VD_10K_L_PRESS {0.0, 1.0} + ----- + [98] = "%.4f", -- VD_10K_R_100 {0.0, 1.0} + [99] = "%.4f", -- VD_10K_R_10 {0.0, 1.0} + [835] = "%.4f", -- VD_10K_R_100_Ind {0.0, 1.0} + [917] = "%.4f", -- VD_10K_R_Shutter {0.822, 0.75} + [834] = "%.4f", -- VD_10K_R_10_Ind {0.0, 1.0} + [100] = "%.4f", -- VD_10K_R_PRESS {0.0, 1.0} + -- Rotor RPM + --------------------------------------------------------------- + [42] = "%.4f", -- RotorRPM {0.0, 1.0} + [787] = "%.4f", -- RotorRPM_Oper {0.0, 1.0} + -- Rotor Pitch + --------------------------------------------------------------- + [36] = "%.2f", -- RotorPitch {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0} {0.0, 0.07, 0.14, 0.21, 0.29, 0.35, 0.43, 0.5, 0.57, 0.64, 0.71, 0.79, 0.86, 0.93, 1.0} + -- Radar altimeter A-036 + --------------------------------------------------------------- + [34] = "%.3f", -- A_036_RALT {0, 100, 300, 800} {0.0, 0.475, 0.625, 1.0} + [31] = "%.3f", -- A_036_DangerRALT_index {0, 100, 300, 800} {0.0, 0.475, 0.625, 1.0} + [30] = "%.f", -- A_036_DangerRALT_lamp {0.0, 1.0} + [33] = "%.1f", -- A_036_warning_flag {0.0, 1.0} + -- Engines RPM + --------------------------------------------------------------- + [40] = "%.4f", -- LeftEngineRPM {0.0, 110.0} {0.0, 1.0} + [41] = "%.4f", -- RightEngineRPM {0.0, 110.0} {0.0, 1.0} + [788] = "%.4f", -- LeftEngineRPM_Oper {0.0, 110.0} {0.0, 1.0} + [789] = "%.4f", -- RightEngineRPM_Oper {0.0, 110.0} {0.0, 1.0} + -- Engines temperature + --------------------------------------------------------------- + [43] = "%.4f", -- LeftEngineTemperatureHund {0.0, 1200.0} {0.0, 1.0} + [44] = "%.4f", -- LeftEngineTemperatureTenth {0.0, 100.0} {0.0, 1.0} + [45] = "%.4f", -- RightEngineTemperatureHund {0.0, 1200.0} {0.0, 1.0} + [46] = "%.4f", -- RightEngineTemperatureTenth {0.0, 100.0} {0.0, 1.0} + -- Engines mode indicator + --------------------------------------------------------------- + [39] = "%.4f", -- EnginesMode {0.0, 1.0} + [37] = "%.4f", -- LeftEngineMode {0.0, 1.0} + [38] = "%.4f", -- RightEngineMode {0.0, 1.0} + -- Engines brakes + --------------------------------------------------------------- + [204] = "%.1f", -- left_engine_brake_handle {0.0, 1.0} + [206] = "%.1f", -- right_engine_brake_handle {0.0, 1.0} + [203] = "%.1f", -- left_engine_brake_handle_holder {0.0, 1.0} + [205] = "%.1f", -- right_engine_brake_handle_holder {0.0, 1.0} + -- DISS 15 + --------------------------------------------------------------- + [830] = "%.4f", -- diss15_hover_x {-1.0, 0, 1.0} + [828] = "%.4f", -- diss15_hover_y {-1.0, 1.0} + [829] = "%.4f", -- diss15_hover_z {-1.0, 1.0} + [831] = "%.4f", -- diss15_hover_lamp_off {0.0, 0.9} + ---- + [791] = "%.4f", -- diss15_drift_angle {-1.0, 1.0} + ---- + [795] = "%.4f", -- diss15_W_shutter {0.0, 1.0} + [796] = "%.1f", -- diss15_W_memory_lamp {1.0, 0.0} + [792] = "%.4f", -- diss15_W_hundreds {0.0, 1.0} + [793] = "%.4f", -- diss15_W_tens {0.0, 1.0} + [794] = "%.4f", -- diss15_W_ones {0.0, 1.0} + ---- + [817] = "%.4f", -- diss15_coord_on_lamp {1.0, 0.0} + [805] = "%.4f", -- diss15_coord_forward {1.0, 0.0} + [806] = "%.4f", -- diss15_coord_X_hundreds {0.0, 1.0} + [807] = "%.4f", -- diss15_coord_X_tens {0.0, 1.0} + [808] = "%.4f", -- diss15_coord_X_ones {0.0, 1.0} + [802] = "%.4f", -- diss15_coord_right {0.0, 1.0} + [799] = "%.4f", -- diss15_coord_Z_hundreds {0.0, 1.0} + [800] = "%.4f", -- diss15_coord_Z_tens {0.0, 1.0} + [801] = "%.4f", -- diss15_coord_Z_ones {0.0, 1.0} + [811] = "%.4f", -- diss15_coord_angle_hundreds {0.0, 1.0} + [812] = "%.4f", -- diss15_coord_angle_tens {0.0, 1.0} + [813] = "%.4f", -- diss15_coord_angle_ones {0.0, 1.0} + [814] = "%.4f", -- diss15_coord_angle_minutes {0.0, 1.0} + ---- + [822] = "%.f", -- diss15_check_control_lamp {0.0, 0.9} + [823] = "%.f", -- diss15_check_work_lamp {0.0, 0.9} + [824] = "%.f", -- diss15_check_failM_lamp {0.0, 0.9} + [825] = "%.f", -- diss15_check_failC_lamp {0.0, 0.9} + -- Oil + --------------------------------------------------------------- + [111] = "%.4f", -- oils_p_main_reductor {0.0, 1.0} + [114] = "%.2f", -- oils_t_main_reductor {0.0, 1.0} {-0.25, 0.75} + [113] = "%.2f", -- oils_temp_tail_reductor {0.0, 1.0} {-0.25, 0.75} + [112] = "%.2f", -- oils_temp_intermediate_reductor {0.0, 1.0} {-0.25, 0.75} + [115] = "%.4f", -- oils_p_left_engine {0.0, 1.0} + [116] = "%.2f", -- oils_t_left_engine {-0.25, 0.75} + [117] = "%.4f", -- oils_p_right_engine {0.0, 1.0} + [118] = "%.2f", -- oils_t_right_engine {-0.25, 0.75} + -- Autopilot + --------------------------------------------------------------- + [122] = "%.4f", -- autopilot_yaw_indicator {-1.0, 1.0} + [124] = "%.4f", -- autopilot_pitch_indicator {-1.0, 1.0} + [123] = "%.2f", -- autopilot_roll_indicator {-0.33, 0.33} + [125] = "%.4f", -- autopilot_altitude_indicator {-1.0, 1.0} + [119] = "%.4f", -- autopilot_yaw_scale {0.0, 1.0} + [120] = "%.4f", -- autopilot_roll_scale {0.0, 1.0} + [121] = "%.4f", -- autopilot_pitch_scale {0.0, 1.0} + -- Center upper panel + --------------------------------------------------------------- + [404] = "%.2f", -- hydro_pressure_main {0.05, 0.33, 0.52, 0.69, 1.0} + [405] = "%.2f", -- hydro_pressure_aux {0.05, 0.33, 0.52, 0.69, 1.0} + [402] = "%.2f", -- APU_temperature {0.0, 0.2, 0.42, 0.69, 0.94, 1.0} + [403] = "%.2f", -- APU_pressure {0.04, 0.95} + -- Mechanic clock + --------------------------------------------------------------- + [49] = "%.4f", -- CLOCK_currtime_hours {0.0, 1.0} + [50] = "%.4f", -- CLOCK_currtime_minutes {0.0, 1.0} + [51] = "%.4f", -- CLOCK_currtime_seconds {0.0, 1.0} + [56] = "%.4f", -- CLOCK_flight_time_meter_status {0.0, 1.0} + [52] = "%.4f", -- CLOCK_flight_hours {0.0, 1.0} + [53] = "%.4f", -- CLOCK_flight_minutes {0.0, 1.0} + [54] = "%.4f", -- CLOCK_seconds_meter_time_minutes {0.0, 1.0} + [55] = "%.4f", -- CLOCK_seconds_meter_time_seconds {0.0, 1.0} + -- Fuel tanks + --------------------------------------------------------------- + [62] = "%.3f", -- FuelScaleUpper {0.0, 200.0, 400.0, 800.0, 1600.0, 2000.0, 2400.0, 2800.0} {0.0, 0.131, 0.244, 0.414, 0.647, 0.705, 0.9, 1.0} + [62] = "%.3f", -- FuelScaleLower {0.0, 200.0, 300.0, 400.0, 600.0, 1200.0, 2240.0} {0.0, 0.165, 0.283, 0.393, 0.618, 1.0} + -- Air system gauges + --------------------------------------------------------------- + [320] = "%.2f", -- air_system_pressure {0.0, 25.0, 50.0, 100.0} {0.0, 0.23, 0.48, 1.0} + [321] = "%.4f", -- air_system_brake_pressure {0.0, 1.0} + -- SPUU-52 + --------------------------------------------------------------- + [126] = "%.4f", -- SPUU_pointer {-1.0, 1.0} + [786] = "%.f", -- SPUU52_lamp {0.0, 1.0} + -- PU-26 LAMP + --------------------------------------------------------------- + [827] = "%.f", -- PU_26_GA_Lamp {0.0, 1.0} {0.0, 0.5} + -- ARC-UD + --------------------------------------------------------------- + [458] = "%.f", -- ARC_UD_Narrow_Lamp {0.0, 0.9} + [459] = "%.f", -- ARC_UD_Wide_Lamp {0.0, 0.9} + [460] = "%.f", -- ARC_UD_Pulse_Lamp {0.0, 0.9} + -- ARC-9 + --------------------------------------------------------------- + [681] = "%.4f", -- ARC_9_Signal {0.0, 1.0} + ---- + [857] = "%.4f", -- PKV_Reflector {0.0, 1.0} + ---- + [778] = "%.4f", -- SAFE_WEAP {0.0, 1.0} + ---- + [577] = "%.4f", -- AMMO_CNT1_1 {0.0, 1.0} + [578] = "%.4f", -- AMMO_CNT1_2 {0.0, 1.0} + [580] = "%.4f", -- AMMO_CNT2_1 {0.0, 1.0} + [581] = "%.4f", -- AMMO_CNT2_2 {0.0, 1.0} + [583] = "%.4f", -- AMMO_CNT3_1 {0.0, 1.0} + [584] = "%.4f", -- AMMO_CNT3_2 {0.0, 1.0} + -- Radio R-828 + --------------------------------------------------------------- + [740] = "%.2f", -- R828_ASU {0.0, 1.0} {0.0, 0.95} + [736] = "%.3f", -- R828_channel {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} {0.0, 0.101, 0.199, 0.302, 0.400, 0.502, 0.601, 0.697, 0.801, 0.898} + -- Damage + --------------------------------------------------------------- + --[215] = "%0.1f", -- Blister_LEFT {0.0, 1.0} {0.0, 0.8} + --[216] = "%0.1f", -- Blister_RIGHT {0.0, 1.0} {0.0, 0.8} + ---- + --[878] = "%.1f", -- WindShiels_Up {0.0, 1.0} + --[879] = "%.1f", -- WindShiels_Down {0.0, 1.0} + -- UV-26 + --------------------------------------------------------------- + --[892] = "%.1f", -- UV26_Left {0.0, 1.0} + --[891] = "%.1f", -- UV26_Right {0.0, 1.0} + -- Pilots + --------------------------------------------------------------- + --[245] = "%.1f", -- Pilot_Body {0.0, 1.0} + --[242] = "%.1f", -- Operator_Body {0.0, 1.0} + --[262] = "%.1f", -- Crew_Body {0.0, 1.0} + -- Damage + --------------------------------------------------------------- + --[876] = "%.1f", -- Upper_Windshield {0.0, 1.0} + --[877] = "%.1f", -- Down_Windshield {0.0, 1.0} + --[879] = "%.1f", -- Left_Windshield {0.0, 1.0} + --[878] = "%.1f", -- Right_Windshield {0.0, 1.0} + -- Jadro 1A + --------------------------------------------------------------- + [849] = "%.f", -- Jadro_ASU_Lamp {0.0, 1.0} + [848] = "%.f", -- Jadro_Ctl_Lamp {0.0, 1.0} + [850] = "%.f", -- Jadro_Breakdown_Lamp {0.0, 1.0} + ---- + [904] = "%.4f", -- RAM_Temp {-50.0, 0.0, 70.0} {-1.0, 0.0, 1.0} + ---- + [907] = "%.4f", -- G_Meter {-1.0, 1.0, 3.0} {-1.0, 0.343, 1.0} + [908] = "%.4f", -- G_Meter_Max {1.0, 3.0} {0.343, 1.0} + [909] = "%.4f", -- G_Meter_Min {-1.0, 1.0} {-1.0, 0.343} + ---- + [903] = "%1d", -- filter_handle {0,1} + ---- + [63] = "%.4f", -- SalonTemperature {-70.0, -60.0, -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0, 60.0, 70.0} {-0.7, -0.593, -0.296, -0.227, -0.125, 0.003, 0.132, 0.233, 0.302, 0.603, 0.693} + -- electric system gauges + --------------------------------------------------------------- + [526] = "%.4f", -- DC_voltage {0.0, 30.0} {0.0, 1.0} + [532] = "%.2f", -- AC_voltage {0.0, 100.0, 150.0, 200.0, 250.0} {0.0, 0.14, 0.31, 0.56, 1.0} + [493] = "%.4f", -- DC_APU_current {0.0, 400.0} {0.0, 1.0} + [527] = "%.4f", -- DC_battery_I_current {0.0, 400.0} {0.0, 1.0} + [528] = "%.4f", -- DC_battery_II_current {0.0, 400.0} {0.0, 1.0} + [529] = "%.4f", -- DC_VU_I_current {0.0, 400.0} {0.0, 1.0} + [530] = "%.4f", -- DC_VU_II_current {0.0, 400.0} {0.0, 1.0} + [531] = "%.4f", -- DC_VU_III_current {0.0, 400.0} {0.0, 1.0} + [533] = "%.2f", -- AC_generator_I_current {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + [534] = "%.2f", -- AC_generator_II_current {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + [371] = "%.2f", -- AntiIce_ampermeter {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + -- LAMPS + --------------------------------------------------------------- + [781] = "%.f", -- lamp_AP_heading_on + [782] = "%.f", -- lamp_AP_heading_off + [783] = "%.f", -- lamp_AP_pitch_roll_on + [784] = "%.f", -- lamp_AP_height_on + [785] = "%.f", -- lamp_AP_height_off + [316] = "%.f", -- lamp_ENGINE_RT_LEFT_ON + [317] = "%.f", -- lamp_ENGINE_RT_RIGHT_ON + [318] = "%.f", -- lamp_SARPP_ON + [325] = "%.f", -- lamp_Descent_Siren + [326] = "%.f", -- lamp_LOCK_OPEN + [327] = "%.f", -- lamp_DOORS_OPEN + [340] = "%.f", -- lamp_TURN_ON_RI_65 + [360] = "%.f", -- lamp_FROST + [362] = "%.f", -- lamp_LEFT_ENG_HEATING + [363] = "%.f", -- lamp_RIGHT_ENG_HEATING + [361] = "%.f", -- lamp_ANTI_ICE_ON + [364] = "%.f", -- lamp_LEFT_PZU_FRONT + [365] = "%.f", -- lamp_RIGHT_PZU_FRONT + [366] = "%.f", -- lamp_LEFT_PZU_BACK + [367] = "%.f", -- lamp_RIGHT_PZU_BACK + [373] = "%.f", -- lamp_SECTION_1 + [375] = "%.f", -- lamp_SECTION_2 + [374] = "%.f", -- lamp_SECTION_3 + [376] = "%.f", -- lamp_SECTION_4 + [368] = "%.f", -- lamp_RIO_heating_ok + [377] = "%.f", -- lamp_LEFT_ENG_FIRE + [378] = "%.f", -- lamp_RIGHT_ENG_FIRE + [379] = "%.f", -- lamp_KO50_FIRE + [380] = "%.f", -- lamp_REDUC_AI9_FIRE + [381] = "%.f", -- lamp_FIRE_LENG_1_QUEUE + [382] = "%.f", -- lamp_FIRE_RENG_1_QUEUE + [383] = "%.f", -- lamp_FIRE_KO50_1_QUEUE + [384] = "%.f", -- lamp_FIRE_REDUCT_1_QUEUE + [385] = "%.f", -- lamp_FIRE_LENG_2_QUEUE + [386] = "%.f", -- lamp_FIRE_RENG_2_QUEUE + [387] = "%.f", -- lamp_FIRE_KO50_2_QUEUE + [388] = "%.f", -- lamp_FIRE_REDUCT_2_QUEUE + [398] = "%.f", -- lamp_CHECK_SENSORS + [407] = "%.f", -- lamp_HYDRO_main_on + [408] = "%.f", -- lamp_HYDRO_aux_on + [414] = "%.f", -- lamp_APD9_on + [416] = "%.f", -- lamp_APD9_oil_pressure + [417] = "%.f", -- lamp_APD9_rpm + [418] = "%.f", -- lamp_APD9_rpm_high + [420] = "%.f", -- lamp_APD_on + [424] = "%.f", -- lamp_APD_starter_on + [434] = "%.f", -- lamp_FUEL_left_closed + [435] = "%.f", -- lamp_FUEL_right_closed + [436] = "%.f", -- lamp_FUEL_ring_closed + [441] = "%.f", -- lamp_FUEL_center_on + [442] = "%.f", -- lamp_FUEL_left_on + [443] = "%.f", -- lamp_FUEL_right_on + [461] = "%.f", -- lamp_HEATER + [462] = "%.f", -- lamp_IGNITION + [463] = "%.f", -- lamp_KO50_ON + [341] = "%.f", -- lamp_LEFT_PITOT_HEATER_OK + [490] = "%.f", -- lamp_RIGHT_PITOT_HEATER_OK + [509] = "%.f", -- lamp_LEFT_PZU_ON + [510] = "%.f", -- lamp_RIGHT_PZU_ON + [504] = "%.f", -- lamp_ELEC_turn_VU1 + [505] = "%.f", -- lamp_ELEC_turn_VU2 + [506] = "%.f", -- lamp_ELEC_turn_VU3 + [507] = "%.f", -- lamp_ELEC_DC_ground + [508] = "%.f", -- lamp_ELEC_test_equipment + [543] = "%.f", -- lamp_ELEC_gen1_fail + [544] = "%.f", -- lamp_ELEC_gen2_fail + [545] = "%.f", -- lamp_ELEC_AC_ground + [546] = "%.f", -- lamp_ELEC_PO_500 + [86] = "%.f", -- lamp_CIRCUIT_FROM_BATTERY + [68] = "%.f", -- lamp_CLOG_TF_LEFT + [69] = "%.f", -- lamp_CLOG_TF_RIGHT + [70] = "%.f", -- lamp_CHIP_LEFT_ENG + [71] = "%.f", -- lamp_CHIP_RIGHT_ENG + [72] = "%.f", -- lamp_VIBRATION_LEFT_HIGH + [73] = "%.f", -- lamp_VIBRATION_RIGHT_HIGH + [74] = "%.f", -- lamp_FIRE + [76] = "%.f", -- lamp_LEFT_ENG_TURN_OFF + [77] = "%.f", -- lamp_RIGHT_ENG_TURN_OFF + [78] = "%.f", -- lamp_FT_LEFT_HIGH + [79] = "%.f", -- lamp_FT_RIGHT_HIGH + [80] = "%.f", -- lamp_OIL_PRESSURE_LEFT + [81] = "%.f", -- lamp_OIL_PRESSURE_RIGHT + [82] = "%.f", -- lamp_ER_LEFT + [83] = "%.f", -- lamp_ER_RIGHT + [84] = "%.f", -- lamp_EEC_LEFT_OFF + [85] = "%.f", -- lamp_EEC_RIGHT_OFF + [873] = "%.f", -- lamp_CHIP_MAIN_REDUCTOR + [874] = "%.f", -- lamp_CHIP_INTER_REDUCTOR + [875] = "%.f", -- lamp_CHIP_TAIL_REDUCTOR + [64] = "%.f", -- lamp_300_Left + [65] = "%.f", -- lamp_DISS_OFF + [555] = "%.f", -- lamp_BD1 + [556] = "%.f", -- lamp_BD2 + [557] = "%.f", -- lamp_BD3 + [558] = "%.f", -- lamp_BD4 + [559] = "%.f", -- lamp_BD5 + [560] = "%.f", -- lamp_BD6 + [711] = "%.f", -- lamp_BD1Bomb + [712] = "%.f", -- lamp_BD2Bomb + [713] = "%.f", -- lamp_BD3Bomb + [714] = "%.f", -- lamp_BD4Bomb + [715] = "%.f", -- lamp_BD5Bomb + [716] = "%.f", -- lamp_BD6Bomb + [562] = "%.f", -- lamp_PUS1 + [563] = "%.f", -- lamp_PUS3 + [564] = "%.f", -- lamp_PUS4 + [565] = "%.f", -- lamp_PUS6 + [561] = "%.f", -- lamp_EmergExplode + [705] = "%.f", -- lamp_EmergExplodeSec + [710] = "%.f", -- lamp_BV_Net_On + [566] = "%.f", -- lamp_RS_Net_On + [567] = "%.f", -- lamp_GUV_Net_On + --[] = "%.f", -- lamp_MV_Net_On + [568] = "%.f", -- lamp_FKP_On + [778] = "%.f", -- lamp_Caution_Weap + --[] = "%.f", -- lamp_LeftSignal + --[] = "%.f", -- lamp_RightSignal + [586] = "%.f", -- lamp_Caution_Weap1 + [587] = "%.f", -- lamp_Caution_Weap2 + [588] = "%.f", -- lamp_Caution_Weap3 + [306] = "%.f", -- lamp_Record_P503B + [302] = "%.f", -- lamp_IFF_KD + [303] = "%.f", -- lamp_IFF_KP + [912] = "%.f", -- lamp_IFF_TurnOnReserve + [87] = "%.f", -- lamp_IFF_Failure + -- Lights system + --------------------------------------------------------------- + [880] = "%.f", -- RedLightLhGr1 {1.0, 0.0} + [896] = "%.f", -- RedLightLhGr2 {1.0, 0.0} + [897] = "%.f", -- RedLightRhGr1 {1.0, 0.0} + [898] = "%.f", -- RedLightRhGr2 {1.0, 0.0} + [899] = "%.f", -- RedLightChGr1 {1.0, 0.0} + [901] = "%.f", -- RedLightChGr2 {1.0, 0.0} + [922] = "%.f", -- RedLightChGr12 {1.0, 0.0} + [902] = "%.f", -- RedLight5V5 {1.0, 0.0} + [900] = "%.f", -- PlafondBrightness {1.0, 0.0} + [547] = "%.f", -- LeftPlafond {1.0, 0.0} + [665] = "%.f", -- RightPlafond {1.0, 0.0} + [920] = "%.f" -- RecorderP503B_PanelLightness {1.0, 0.0} + -- Windshield Wiper + --[254] = "%.4f" -- WindscreenWiperL {0.0, 1.0} + --[255] = "%.4f" -- WindscreenWiperR {0.0, 1.0} +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- ELEC_INTERFACE + --[536] = "%.1f", -- PTR-EEP-LVR-ADJV1 (AC Voltage 1 set rotary) {-1, 1} + --[537] = "%.1f", -- PTR-EEP-LVR-ADJV2 (AC Voltage 2 set rotary) {-1, 1} + [538] = "%1d", --PTR-EEP-TMB-GEN1 (Generator 1) + [539] = "%1d", --PTR-EEP-TMB-GEN2 (Generator 2) + [540] = "%1d", --PTR-EEP-TMB-AER (AC ground power) + [541] = "%1d", --PTR-EEP-TMB-PO (115V Inverter) + [542] = "%1d", --PTR-EEP-TMB-PT (36V Inverter) + [535] = "%.1f", --PTR-EEP-LVR-MODE (AC Mode), 11 degrees + [494] = "%.1f", --PTR-RSPE-LVR-FEEDMODE (DC Bus Selector), 8 degrees + + [495] = "%1d", --PTR-RSPE-TMB-AKK1 (Battery 1) + [496] = "%1d", --PTR-RSPE-TMB-AKK2 (Battery 2) + [497] = "%1d", --PTR-RSPE-TMB-RESGEN (Standby Generator) + --[498] = "%.1f", -- PTR-RSPE-LVR-V (DC Voltage set rotary) {-1, 1} + [499] = "%1d", --PTR-RSPE-TMB-RECT1 (Rectifier 1) + [500] = "%1d", --PTR-RSPE-TMB-RECT2 (Rectifier 2) + [501] = "%1d", --PTR-RSPE-TMB-RECT3 (Rectifier 3) + [502] = "%1d", --PTR-RSPE-TMB-AERF (DC ground power) + [503] = "%1d", --PTR-RSPE-TMB-TESTEQU (Equipment Test) + + [147] = "%1d", --PTR-APP-CVR-CIRC (Standby Rectifier Cover) + [148] = "%1d", --PTR-APP-TMB-CIRC (Standby Rectifier) + [149] = "%1d", --PTR-APP-TMB-TRNS (36V Transformer) + + [498] = "%.4f", --PTR-RSPE-LVR-V (Standby Generator Voltage Adjustment Rheostat) + [536] = "%.4f", --PTR-EEP-LVR-ADJV1 (Generator 1 Voltage Adjustment Rheostat) + [537] = "%.4f", --PTR-EEP-LVR-ADJV2 (Generator 2 Voltage Adjustment Rheostat) + [522] = "%.4f", --PTR-RSPE-TMB-WRMAKK (Battery Heating Switch, ON/OFF) + + [590] = "%1d", --PTR-LAZS-TMB-BV-ZSBR (BW ESBR) + [591] = "%1d", --PTR-LAZS-TMB-BV-EXP (Explode) + [592] = "%1d", --PTR-LAZS-TMB-BV-DIR (Control) + [593] = "%1d", --PTR-LAZS-TMB-BV-EQU (Equipment) + [594] = "%1d", --PTR-LAZS-TMB-RSGUV-FIRE (RS/GUV Fire) + [595] = "%1d", --PTR-LAZS-TMB-RSGUV-SIGN (RS/GUV Warning) + [596] = "%1d", --PTR-LAZS-TMB-RSGUV-WARM (ESBR Heating) + + [597] = "%1d", --PTR-LAZS-TMB-311 (GUV Out 800 Left) + [598] = "%1d", --PTR-LAZS-TMB-GUOUT-800L (GUV Out 800 Left) + [599] = "%1d", --PTR-LAZS-TMB-GUOUT-800R (GUV Out 800 Right) + [600] = "%1d", --PTR-LAZS-TMB-GUOUTL-622L (GUV In Left 622 Left) + [601] = "%1d", --PTR-LAZS-TMB-GUOUTL-622R (GUV In Left 622 Right) + [602] = "%1d", --PTR-LAZS-TMB-GUOUTR-622L (GUV In Right 622 Left) + [603] = "%1d", --PTR-LAZS-TMB-GUOUTR-622R (GUV In Rignt 622 Right) + + [604] = "%1d", --PTR-LAZS-TMB-ES-800L (Electric Launch 800 Left) + [605] = "%1d", --PTR-LAZS-TMB-ES-622R (Electric Launch 800 Right) + [606] = "%1d", --PTR-LAZS-TMB-PKT (PKT) + [607] = "%1d", --PTR-LAZS-TMB-JETBOMB (Emergency Jettison) + [608] = "%1d", --PTR-LAZS-TMB-JETPWR (Power Jettison) + [609] = "%1d", --PTR-LAZS-TMB-JETEXPL (Emergency Jettison) + [610] = "%1d", --PTR-LAZS-TMB-JETRCKT (Alarm rockets) + + [611] = "%1d", --PTR-RAZS-TMB-START-TRBON (CB APU start) + [612] = "%1d", --PTR-RAZS-TMB-START-TRBIGN (CB APU ignition) + [613] = "%1d", --PTR-RAZS-TMB-START-ENGON (CB Engine start) + [614] = "%1d", --PTR-RAZS-TMB-START-ENGIGN (CB Engine ignition) + [615] = "%1d", --PTR-RAZS-TMB-RPM (CB RPM CONTROL) + [616] = "%1d", --PTR-NONAME (CB NONAME) + [617] = "%1d", --PTR-SW-LOCKER-BASE (CB Lock Opening Control Main) + [618] = "%1d", --PTR-SW-LOCKER-RES (CB Lock Opening Control Reserve) + [619] = "%1d", --PTR-RAZS-TMB-TURN (CB TURN INDICATOR) + + [629] = "%1d", --PTR-RAZS-TMB-TSCOCK-ON (CB Bypass) + [630] = "%1d", --PTR-RAZS-TMB-TSCOCK-L (CB Left valve) + [631] = "%1d", --PTR-RAZS-TMB-TSCOCK-R (CB Right valve) + [632] = "%1d", --PTR-RAZS-TMB-TSCOUNT (CB Fuelmeter) + [633] = "%1d", --PTR-RAZS-TMB-TSPMP-C (CB Center tank) + [634] = "%1d", --PTR-RAZS-TMB-TSPMP-L (CB Left pump) + [635] = "%1d", --PTR-RAZS-TMB-TSPMP-R (CB Right pump) + [636] = "%1d", --PTR-RAZS-TMB-T819 (CB T-819) + [637] = "%1d", --PTR-RAZS-TMB-SPPU52 (CB SPUU-52) + + [647] = "%1d", --PTR-RAZS-TMB-HLGT-DIR-L (SPOT CONTROL LEFT) + [648] = "%1d", --PTR-RAZS-TMB-HLGT-ON-L (SPOT ON LEFT) + [649] = "%1d", --PTR-RAZS-TMB-HLGT-DIR-R (SPOT CONTROL RIGHT) + [650] = "%1d", --PTR-RAZS-TMB-HLGT-ON-R (SPOT ON RIGHT) + [651] = "%1d", --PTR-RAZS-TMB-ANO (ANO) + [652] = "%1d", --PTR-RAZS-TMB-WNGLGT (WING LIGHTS) + [653] = "%1d", --PTR-RAZS-TMB-LAMPTEST (CHECK LAMPS/FLASHER) + --[654] = "%1d", -- PTR-RAZS-TMB-DIRMAIN (LOCK MAIN) + --[655] = "%1d", -- PTR-RAZS-TMB-DIRDUB (LOCK SPARE) + [918] = "%1d", --PTR-SW-LIGHT-PRF4-LEFT (CB PRF-4 Light Left) + [919] = "%1d", --PTR-SW-LIGHT-PRF4-RIGHT (CB PRF-4 Light Right) + + [620] = "%1d", --PTR-RAZS-TMB-APMAIN (CB Autopilot MAIN) + [621] = "%1d", --PTR-RAZS-TMB-APFRICT (CB Autopilot Frict) + [622] = "%1d", --PTR-RAZS-TMB-APELCT (CB Autopilot Clutch) + [623] = "%1d", --PTR-RAZS-TMB-GSMAIN (CB Hydro Main) + [624] = "%1d", --PTR-RAZS-TMB-GSDBL (CB Hydro Aux) + [625] = "%1d", --PTR-RAZS-TMB-RADSPU (CB SPU (Intercom)) + [626] = "%1d", --PTR-RAZS-TMB-RADALT (CB Radio Altimeter) + [627] = "%1d", --PTR-RAZS-TMB-RADCOMM (CB Command Radio Station (R-863)) + [628] = "%1d", --PTR-RAZS-TMB-RADRS (CB 6201) + + [638] = "%1d", --PTR-RAZS-TMB-PPSSIGN (CB Signalization) + [639] = "%1d", --PTR-RAZS-TMB-PPSQUE1-L (CB 1 Queue Left) + [640] = "%1d", --PTR-RAZS-TMB-PPSQUE1-R (CB 1 Queue Right) + [641] = "%1d", --PTR-RAZS-TMB-PPSQUE2-L (CB 2 Queue Left) + [642] = "%1d", --PTR-RAZS-TMB-PPSQUE2-R (CB 2 Queue Right) + [643] = "%1d", --PTR-RAZS-TMB-RADCMP-SV (CB Radio Compass MW(ARC-9)) + [644] = "%1d", --PTR-RAZS-TMB-RADCMP-UKV (CB Radio Compass VHF(ARC-UD)) + [645] = "%1d", --PTR-RAZS-TMB-RADDISS (CB Doppler Navigator) + [646] = "%1d", --PTR-RAZS-TMB-RADRNTG (CB Radio Meter) + + [656] = "%1d", --PTR-RAZS-TMB-POSDIR (CONTROL) + [657] = "%1d", --PTR-RAZS-TMB-POSPZUENG-L (LEFT ENGINE) + [658] = "%1d", --PTR-RAZS-TMB-POSPZUENG-R (RIGHT ENGINE) + [659] = "%1d", --PTR-RAZS-TMB-POSRIO3 (RIO-3) + [660] = "%1d", --PTR-RAZS-TMB-POSGLS (WINDOW) + [661] = "%1d", --PTR-RAZS-TMB-WIPER-L (LEFT ENGINE) + [662] = "%1d", --PTR-RAZS-TMB-WIPER-R (RIGHT ENGINE) + [663] = "%1d", --PTR-RAZS-TMB-L1800 (RIO-3) + [664] = "%1d", --PTR-RAZS-TMB-KO50 (WINDOW) + + [882] = "%1d", --PTR-GRAZS-1 (CB Group 1) + [883] = "%1d", --PTR-GRAZS-2 (CB Group 4) + [884] = "%1d", --PTR-GRAZS-3 (CB Group 7) + [885] = "%1d", --PTR-GRAZS-4 (CB Group 2) + [886] = "%1d", --PTR-GRAZS-5 (CB Group 5) + [887] = "%1d", --PTR-GRAZS-6 (CB Group 8) + [888] = "%1d", --PTR-GRAZS-7 (CB Group 3) + [889] = "%1d", --PTR-GRAZS-8 (CB Group 6) + [890] = "%1d", --PTR-GRAZS-9 (CB Group 9) + ------------------------------------------------------------- + -- FUELSYS INTERFACE + [438] = "%1d", --PTR-CPE-TMB-PUMP-RATE (Service tank pump) + [439] = "%1d", --PTR-CPE-TMB-PUMPTNK-L (Left fuel tank pump) + [440] = "%1d", --PTR-CPE-TMB-PUMPTNK-R (Right fuel tank pump) + [427] = "%1d", --PTR-CPE-TMB-PUMP-L (Left Engine Shutoff Valve) + [429] = "%1d", --PTR-CPE-TMB-PUMP-R (Right Engine Shutoff Valve) + [426] = "%1d", --PTR-CPE-CVR-PUMP-L (Left Engine Shutoff Valve Cover) + [428] = "%1d", --PTR-CPE-CVR-PUMP-R (Right Engine Shutoff Valve Cover) + [431] = "%1d", --PTR-CPE-TMB-PUMP-RING (Crossfeed) + [430] = "%1d", --PTR-CPE-CVR-PUMP-RING (Crossfeed Cover) + + [433] = "%1d", --PTR-CPE-TMB-PUMP-PASS (Bypass) + [432] = "%1d", --PTR-CPE-CVR-PUMP-PASS (Bypass Cover) + [437] = "%.1f", --PTR-CPE-TMB-PUMP-CONTR (Refueling Control Switch) + ------------------------------------------------------------- + -- ENGINE INTERFACE + [412] = "%1d", --PTR-CPE-TMB-TURBOSTART-ST (APU start mode) + [413] = "%1d", --PTR-CPE-BTN-TURBOSTART-ON (APU start) + [415] = "%1d", --PTR-CPE-BTN-TURBOSTART-OFF (APU stop) + + [419] = "%1d", --PTR-CPE-BTN-ENGSTART-ON (Engine start ON) + [421] = "%1d", --PTR-CPE-BTN-ENGSTART-OFF (Engine start OFF) + [422] = "%1d", --PTR-CPE-TMB-ENGSTART-LFTRGT (Select engine) + [423] = "%1d", --PTR-CPE-TMB-ENGSTART-ROLL (Engine start mode) + [425] = "%1d", -- PTR-CPE-BTN-ENGSTART-TEST (Engine ignition check) + + [204] = "%1d", --PTR-ENGSTOP-ARM-L (Left engine stop) + [206] = "%1d", --PTR-ENGSTOP-ARM-R (Right engine stop) + [208] = "%1d", --PTR-VINTBRAKE-ARM (Rotor brake) + + [310] = "%1d", --PTR-LSPE-BTN-CONTR-IV500 (Vibration Sensor Test) + [311] = "%1d", --PTR-LSPE-BTN-CONTR-GRND (Temperature Sensor Test Cold) + [312] = "%1d", --PTR-LSPE-BTN-CONTR-AIR (Temperature Sensor Test Hot) + [313] = "%1d", --PTR-LSPE-BTN-CONTR-RTL (Temperature Regulator Test Left) + [314] = "%1d", --PTR-LSPE-BTN-CONTR-RTR (Temperature Regulator Test Right) + + [202] = "%1d", --PTR-STKSGR-TMB-RPM-LEFT + [867] = "%1d", --PTR-STKSGR-TMB-RPM-RIGHT + --[0] = "%.4f", --PTR-STKSEC-ARM-L (Left Engine Throttle) + --[0] = "%.4f", --PTR-STKSEC-ARM-R (Right Engine Throttle) + --[0] = "%.4f", --PKT-TROTTLE_L (Left Collective / Throttle) + --[0] = "%.4f", --PKT-TROTTLE_R (Right Collective / Throttle) + + [167] = "%1d", --PTR-APP-TMB-ERD-L (EEC Left) + [173] = "%1d", --PTR-APP-TMB-ERD-R (EEC Right) + [168] = "%1d", --PTR-APP-TMB-CHR-L (ER Left) + [172] = "%1d", --PTR-APP-TMB-CHR-R (ER Right) + [169] = "%1d", --PTR-APP-TMB-ST-L (FT Check Left) + [171] = "%1d", --PTR-APP-TMB-ST-R (FT Check Right) + [170] = "%1d", --PTR-APP-TMB-TKLR (CT check) + ------------------------------------------------------------- + -- HYDRO SYS INTERFACE + [406] = "%1d", --PTR-CPE-TMB-HYDRO-MAIN (Main Hydro) + [410] = "%1d", --PTR-CPE-TMB-HYDRO-DBL (Aux Hydro) + [409] = "%1d", --PTR-CPE-CVR-HYDRO-DBL (Aux Hydro Cover) + [411] = "%1d", --PTR-CPE-BTN-DBLOFF (Aux Hydro Off) + ------------------------------------------------------------- + -- AUTOPILOT + [134] = "%1d", --PTR-APP-BTN-DIRON (Autopilot Heading ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Button + [868] = "%.4f", --PTR-APP-BTN-DIRON (Autopilot Heading ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Axis + [135] = "%1d", --PTR-APP-BTN-DIROFF (Autopilot Heading OFF/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Button + [869] = "%.4f", --PTR-APP-BTN-DIROFF (Autopilot Heading OFF/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Axis + + [138] = "%1d", --PTR-APP-BTN-KTON (Autopilot Pitch/Roll ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Button + [870] = "%.4f", --PTR-APP-BTN-KTON (Autopilot Pitch/Roll ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Axis + [144] = "%1d", --PTR-APP-BTN-ALTON (Autopilot Altitude ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Button + [871] = "%.4f", --PTR-APP-BTN-ALTON (Autopilot Altitude ON/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Axis + [145] = "%1d", --PTR-APP-BTN-ALTOFF (Autopilot Altitude OFF/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Button + [872] = "%.4f", --PTR-APP-BTN-ALTOFF (Autopilot Altitude OFF/Lamp Intensity. Rotate mouse wheel to set lamp intensity), Axis + + [146] = "%1d", --PTR-APP-BTN-CONTR (Autopilot Altitude Channel Control) + + [136] = "%.4f", --PTR-APP-LVR-DIR (Autopilot Heading Adjustment) + [140] = "%.4f", --PTR-APP-LVR-K (Autopilot Roll Adjustment) + [142] = "%.4f", --PTR-APP-LVR-T (Autopilot Pitch Adjustment) + + [183] = "%1d", --PTR-AUTOPILOT-OFF-L (Autopilot Off Left Button) + [226] = "%1d", --PTR-AUTOPILOT-OFF-R (Autopilot Off Right Button) + ------------------------------------------------------------- + -- RADAR ALTIMETER + [32] = "%1d", --PTR-ALTR-LVR-TEST (Radio altimeter test) + [29] = "%.4f", --PTR-ALTR-LVR-SET (Dangerous RALT set rotary) {0, 1} + [35] = "%1d", --PTR-ALTR-TMB-ONOFF (Radar Altimeter Power) + ------------------------------------------------------------- + -- BAR ALTIMETER + [18] = "%.4f", --PTR-ALTB-LVR-SET (Baro pressure QFE knob) + [97] = "%.4f", --PTR-ALTB-LVR-SET-R (Baro pressure QFE knob) + ------------------------------------------------------------- + -- VARIOMETER + [17] = "%.4f", --PTR-VARIO-LVR-SET-L (Variometer adjustment knob) + [96] = "%.4f", --PTR-VARIO-LVR-SET-R (Variometer adjustment knob) + ------------------------------------------------------------- + --HSI + [26] = "%.4f", --PTR-PNP-LVR-SET (HSI Course set knob) + [858] = "%1d", --PTR-ARKSV-ARKUKV (HSI ARC-9/ARC-UD Select) + + [102] = "%.4f", --PTR-PNP-LVR-SET-R (HSI Course set knob) + ------------------------------------------------------------- + -- FUELSYS INTERFACE + [61] = "%.1f", --PTR-FUEL-LVR-MODE (Fuel meter switch) + ------------------------------------------------------------- + -- WEAPON SYS + [921] = "%1d", --PTR-SAFE-WEAPON (Weapon Safe-Armed) + [707] = "%1d", --PTR-ADDPBV-TMB-EMRGEXP (Emergency Explode) + [706] = "%1d", --PTR-ADDPBV-CVR-EMRGEXP (Emergency Explode Cover) + + [709] = "%1d", --PTR-ADDPBV-TMB-EMRGJET (Emergency Release) + [708] = "%1d", --PTR-ADDPBV-CVR-EMRGJET (Emergency Release Cover) + + [717] = "%1d", --PTR-ADDPBV-TMB-MAINOFF (Main Bombs) + [718] = "%1d", --PTR-ADDPBV-BTN-LAMPTEST (Lamps Check) + + [719] = "%.1f", --PTR-ADDPBV-LVR-MODE (Pod Variants) + [720] = "%1d", --PTR-ADDPBV-TMB-WARM (ESBR Heat) + + [730] = "%.4f", --PTR-ADDESBR-LVR-MODE (ESBR Position) + [731] = "%1d", --PTR-ADDESBR-LVR-ONOFF (ESBR On/Off) + + [570] = "%1d", --PTR-LAZS-TMB-EMRGEXP (Emergency Explode) + [572] = "%1d", --PTR-LAZS-TMB-EMRGJET (Emergency Release) + [569] = "%1d", --PTR-LAZS-CVR-EMRGEXP (Emergency Explode Cover) + [571] = "%1d", --PTR-LAZS-CVR-EMRGJET (Emergency Release Cover) + + --[573] = "%1d", -- PTR-LAZS-TMB-MAINOFF (Main On/Off) + [575] = "%1d", --PTR-LAZS-TMB-RSGUV (RS/GUV Selector) + [576] = "%1d", --PTR-LAZS-BTN-LAMPTEST (Lamps Check) + [574] = "%1d", --PTR-LAZS-BTN-ENTER (PUS Arming) + + [342] = "%1d", --PTR-LPE-TMB-SHOOT1 (8/16/4) + [343] = "%1d", --PTR-LPE-TMB-SHOOT2 (1256/AUTO/34) + [344] = "%1d", --PTR-LPE-TMB-RS (UPK/PKT/RS) + [345] = "%1d", --PTR-LPE-TMB-GUV (CUTOFF) + [349] = "%1d", --PTR-LAZS-TMB-MAINOFF05 (800_or_624_622_800) + [348] = "%1d", --PTR-LAZS-CVR-EMRGEXP01 (800 or 624_622_800 Cover) + + [347] = "%.4f", --PTR-LPE-TMB-VAR (In800Out/800inOr624/622) + + [346] = "%.4f", --PTR-LPE-LVR-SHELL (Burst length) + + [350] = "%.4f", --PTR-LPE-TMB-PYRO-L (PYROCARTRIDGE Left) + [351] = "%.4f", --PTR-LPE-TMB-PYRO-R (PYROCARTRIDGE Right) + + [573] = "%1d", --PTR-LAZS-TMB-MAINOFF (Mine Arms Main Switch) + [905] = "%1d", --PTR-RSPE-TMB-PKT (PKT Selector Switch) + ------------------------------------------------------------- + -- SYS CONTROLLER + [523] = "%1d", --PTR-RSPE-TMB-WINK (FLASHER) + [525] = "%1d", --PTR-RSPE-TMB-TAB (Transparent Day/Night) + [150] = "%1d", --PTR-APP-TMB-TEST (CHECK LAMPS/FLASHER) + ------------------------------------------------------------- + -- SPUU-52 + [332] = "%1d", --PTR-LES-TMB-SPPU52 (SPUU-52 Power) + [127] = "%1d", --PTR-APP-BTN-OFF (SPUU-52 Control Engage) + [129] = "%1d", --PTR-APP-TMB-RT (SPUU-52 Control (Left button - P. Right button - t)) + [128] = "%.4f", --PTR-APP-LVR-ADJ (SPUU 52 Control Adjustment) + ------------------------------------------------------------- + -- FIRE EXTING INTERFACE + [389] = "%1d", --PTR-CPE-BTN-QUE1-1 (Main Discharge L ENG) + [390] = "%1d", --PTR-CPE-BTN-QUE1-2 (Main Discharge R ENG) + [391] = "%1d", --PTR-CPE-BTN-QUE1-3 (Main Discharge KO-50) + [392] = "%1d", --PTR-CPE-BTN-QUE1-4 (Main Discharge APU GEAR) + [393] = "%1d", --PTR-CPE-BTN-QUE2-1 (Alternate Discharge L ENG) + [394] = "%1d", --PTR-CPE-BTN-QUE2-2 (Alternate Discharge R ENG) + [395] = "%1d", --PTR-CPE-BTN-QUE2-3 (Alternate Discharge KO-50) + [396] = "%1d", --PTR-CPE-BTN-QUE2-4 (Alternate Discharge APU GEAR) + [397] = "%1d", --PTR-CPE-BTN-FIRE-OFF (Turn Off Fire Signal) + + [399] = "%1d", --PTR-CPE-TMB-CONTR-FIRE (Fire Detector Test) + [400] = "%1d", --PTR-CPE-TMB-CONTR-PYRO (Squib Test) + [401] = "%.1f", --PTR-CPE-LVR-CONTR-MODE (Check Fire circuits) + ------------------------------------------------------------- + -- ENGINE INTERFACE + [353] = "%1d", --PTR-LPE-TMB-MANAUT (AUTO-MANUAL) + [354] = "%1d", --PTR-LPE-BTN-OVR (GENERAL OFF) + [355] = "%1d", --PTR-LPE-TMB-PZU-L (LEFT ENGINE) + [356] = "%1d", --PTR-LPE-TMB-PZU-R (RIGHT ENGINE) + [357] = "%1d", --PTR-LPE-TMB-GLASS (WINDOW) + [358] = "%1d", --PTR-LPE-TMB-RIO (Ice Detector Heater) + [359] = "%1d", --PTR-LPE-BTN-RIOCONTR (Ice Detector Heater Test) + [372] = "%.1f", --PTR-LPE-LVR-FEEDMODE (Anti Ice Sections Current) + + [519] = "%1d", --PTR-RSPE-TMB-WRMPVD-L (Left Pitot Heater) + [520] = "%1d", --PTR-RSPE-TMB-WRMPVD-R (Right Pitot Heater) + [339] = "%1d", --PTR-LES-BTN-CONTRPVD (Left Pitot Heater Control) + [482] = "%1d", --PTR-LES-BTN-CONTRPVD01 (Right Pitot Heater Control) + ------------------------------------------------------------- + -- DISS 15 + [483] = "%1d", --PTR-RES-TMB-DISS (Doppler Navigator, Power) + [818] = "%1d", --PTR-DISS-BTN-OFF (Turn Off Coordinates Calculator) + [819] = "%1d", --PTR-DISS-BTN-ON (Turn On Coordinates Calculator) + [815] = "%1d", --PTR-DISS-BTN-MINUS (Decrease Map Angle) + [816] = "%1d", --PTR-DISS-BTN-PLUS (Increase Map Angle) + [809] = "%1d", --PTR-DISS-BTN-N (Decrease Path KM) + [810] = "%1d", --PTR-DISS-BTN-V (Increase Path KM) + [803] = "%1d", --PTR-DISS-BTN-TOLE (Decrease Deviation KM) + [804] = "%1d", --PTR-DISS-BTN-TORI (Increase Deviation KM) + [826] = "%.1f", --PTR-IND-DISS-SELECTOR (Mode Switch) + [797] = "%1d", --PTR-DISS-SELECTOR-KR (Test/Work) + [798] = "%1d", --PTR-DISS-SELECTOR-SM (Land/Sea) + ------------------------------------------------------------- + -- ADI + [487] = "%1d", --PTR-RES-TMB-AG (Right Attitude Indicator Power) + [335] = "%1d", --PTR-LES-TMB-AG (Left Attitude Indicator Power) + [11] = "%1d", --PTR-AGB-LVR-KNOB (Left Attitude Indicator Cage) + [10] = "%.4f", --PTR-AGB-LVR-SET (Left Attitude Indicator Zero pitch trim) + [90] = "%1d", --PTR-AGB-LVR-KNOB-R (Right Attitude Indicator Cage) + [89] = "%.4f", --PTR-AGB-LVR-SET-R (Right Attitude Indicator Zero pitch trim) + ------------------------------------------------------------- + -- + [336] = "%1d", --PTR-LES-TMB-VK53 (VK-53, Power) + ------------------------------------------------------------- + -- GMK1A + [485] = "%1d", --PTR-RES-TMB-GMK (GMC Power) + [470] = "%1d", --PTR-RPE-LVR-CRDNS (GMC Hemisphere Selection) + [472] = "%1d", --PTR-RPE-LVR-CRDMK (GMC Mode (MC, DG, AC(N/F))) + [476] = "%.1f", --PTR-RPE-LVR-CRDCONTR (GMC Control (Left - 0, Right - 300)) {-1.0,0.0,1.0} + [477] = "%.1f", --PTR-RPE-LVR-CRDZK (GMC Course Setting (Left - CCW, Right - CW)) {-1.0,0.0,1.0} + [474] = "%.4f", --PTR-RPE-LVR-CRDLAT (GMC Latitude Selection) + ------------------------------------------------------------- + -- ENGINE INTERFACE + [517] = "%1d", --PTR-RSPE-TMB-PZUENG-L (Dust Protection Left) + [518] = "%1d", --PTR-RSPE-TMB-PZUENG-R (Dust Protection Right) + ------------------------------------------------------------- + -- Nav Lights System + [513] = "%1d", --PTR-RSPE-TMB-ANO (ANO) + [514] = "%1d", --PTR-RSPE-TMB-LGTWING (Formation Lights) + [515] = "%1d", --PTR-RSPE-TMB-LGTCONT (Tip Lights) + [516] = "%1d", --PTR-RSPE-TMB-BEAC (Strobe Light) + [322] = "%1d", --PTR-LSPE-TMB-AIR-CODE (ANO code) + [836] = "%1d", --PTR-LEFT-TAXI-L-SW (Taxi Light) + [837] = "%1d", --PTR-LEFT-TAXI-L-POS-SW (Left Landing Light) + [838] = "%1d", --PTR-LEFT-TAXI-R-POS-SW (Right Landing Light) + ------------------------------------------------------------- + -- Lights System + [333] = "%1d", --PTR-LES-TMB-PLF (Left Ceiling Light) + [489] = "%1d", --PTR-RES-TMB-PLF (Right Ceiling Light) + [479] = "%1d", --PTR-RES-TMB-LGT (5.5V Lights) + [280] = "%.4f", --PTR-LSPE-LVR-REDGRP1 (Lh RedLights Brightness Rst gr.1) {0.0, 1.0} + [281] = "%.4f", --PTR-LSPE-LVR-REDGRP2 (Lh RedLights Brightness Rst gr.2) {0.0, 1.0} + [491] = "%.4f", --PTR-RSPE-LVR-REDGRP1 (Rh RedLights Brightness Rst gr.1) {0.0, 1.0} + [492] = "%.4f", --PTR-RSPE-LVR-REDGRP2 (Rh RedLights Brightness Rst gr.2) {0.0, 1.0} + [894] = "%.4f", --PTR-RSPE-LVR-REDGRP003 (Central RedLights Brightness Rst gr.1) {0.0, 1.0} + [895] = "%.4f", --PTR-RSPE-LVR-REDGRP004 (Central RedLights Brightness Rst gr.2) {0.0, 1.0} + [914] = "%.4f", --PTR-RSPE-LVR-REDGRP005 (5.5V Lights Brightness Rheostat) + [511] = "%1d", --PTR-RSPE-TMB-DUTY (Cargo Cabin Duty Lights Switc) + [512] = "%1d", --PTR-RSPE-TMB-ALL (Cargo Cabin Common Lights Switch) + ------------------------------------------------- + -- RADIO EQUIPMENT + -- SPU-7 + -- Left + [549] = "%.4f", --PTR-LAZS-LVR-ALL (Common Volume) + [548] = "%.4f", --PTR-LAZS-LVR-AUDIT (Listening Volume) + [553] = "%1d", --PTR-LAZS-TMB-RADSPU (Radio/ICS) + [551] = "%1d", --PTR-LAZS-TMB-CIRC (Network 1/2 (N/F)) + [552] = "%1d", --PTR-LAZS-BTN-CB (Circular Call (N/F)) + [550] = "%.1f", --PTR-LAZS-LVR-MODES (Radio Source (R-863/JADRO-1A/R-828/NF/ARC-9/ARC-UD)) + -- Right + [841] = "%.4f", --PTR-RAZS-LVR-ALL002 (Common Volume) + [840] = "%.4f", --PTR-RAZS-LVR-AUDIT002 (Listening Volume) + [845] = "%1d", --PTR-RAZS-TMB-RADSPU002 (Radio/ICS) + [843] = "%1d", --PTR-RAZS-TMB-CIRC002 (Network 1/2 (N/F)) + [846] = "%1d", --PTR-RAZS-BTN-CB002 (Circular Call (N/F)) + [842] = "%.1f", --PTR-RAZS-LVR-MODES002 (Radio Source (R-863/JADRO-1A/R-828/NF/ARC-9/ARC-UD)) + + --[194] = "%.4f", -- RADIO/ICS-1-PTR (Radio/ICS) + [480] = "%1d", --PTR-RES-TMB-LARING (Laryngophone) + ------------------------------------------------------------- + -- R-863 + [369] = "%1d", --PTR-LPE-TMB-COMAND (R-863, Select FM/AM) + [132] = "%1d", --PTR-APP-TMB-NU (R-863, Dial/Memory Unit) + [370] = "%1d", --PTR-LPE-LVR-CHANNEL (R-863, Radio channel selector) + + [155] = "%1d", --PTR-APP-TMB-PS (R-863, Squelch) + [156] = "%.4f", --PTR-APP-LVR-LEVEL (R-863, Volume) + + [163] = "%.4f", --PTR-APP-LVR-SEL1 (R-863, 10MHz rotary) {-0.1, 0.1} + [164] = "%.4f", --PTR-APP-LVR-SEL2 (R-863, 1MHz rotary) {-0.1, 0.1} + [165] = "%.4f", --PTR-APP-LVR-SEL3 (R-863, 100kHz rotary) {-0.1, 0.1} + [166] = "%.4f", --PTR-APP-LVR-SEL4 (R-863, 1kHz rotary) {-0.1, 0.1} + + [153] = "%1d", --PTR-APP-TMB-AP (R-863, Emergency Receiver On/Off (N/F)) + [154] = "%1d", --PTR-APP-TMB-RK (R-863, ARC (N/F)) + ------------------------------------------------------------- + -- R-828 + [735] = "%1d", --PTR-ADDSECPLT-LVR-CHNL (R-828 Radio channel selector) + + [737] = "%.4f", --PTR-ADDSECPLT-LVR-VOL (R-828 Radio volume) + [738] = "%1d", --PTR-ADDSECPLT-BTN-ASU (R-828 Radio Tuner button) + [739] = "%1d", --PTR-ADDSECPLT-TMB-PSH (R-828 Radio Squelch) + [756] = "%1d", --PTR-ADDSECPLT-TMB-P828 (R-828 Radio, Power) + [757] = "%1d", --PTR-ADDSECPLT-TMB-MODSEL (R-828 Radio, COMM/NAV) + ------------------------------------------------------------- + -- Jadro-1A + [484] = "%1d", --PTR-RES-TMB-RS (Jadro 1A, Power) + [745] = "%.4f", --PTR-ADDSECPLT-LVR-DIG12 (Jadro 1A, Frequency Selector, 1MHz) {-0.1, 0.1} + [746] = "%.4f", --PTR-ADDSECPLT-LVR-DIG3 (Jadro 1A, Frequency Selector, 100kHz) {-0.1, 0.1} + [747] = "%.4f", --PTR-ADDSECPLT-LVR-DIG4 (Jadro 1A, Frequency Selector, 10kHz) {-0.1, 0.1} + + [748] = "%.4f", --PTR-ADDSECPLT-LVR-DIG6 (Jadro 1A, Frequency Selector, Left mouse - 1kHz/ Right mouse - 100Hz) + [749] = "%.4f", --PTR-ADDSECPLT-LVR-DIG6 (Jadro 1A, Frequency Selector, Left mouse - 1kHz/ Right mouse - 100Hz) + + [744] = "%.1f", --PTR-ADDSECPLT-LVR-ONOFF (Jadro 1A, Mode OFF/OM/AM) + + [743] = "%.4f", --PTR-ADDSECPLT-LVR-VOLUM (Jadro 1A, Volume) + [741] = "%.4f", --PTR-ADDSECPLT-LVR-PSH (Jadro 1A, Squelch) + [742] = "%1d", --PTR-ADDSECPLT-TMB-CONTR (Jadro 1A, Control) + ------------------------------------------------------------- + -- RI-65 + [338] = "%1d", --PTR-LES-TMB-RK85 (RI-65) + [292] = "%1d", --PTR-LSPE-BTN-RI65-OFF (RI-65 OFF) + [293] = "%1d", --PTR-LSPE-BTN-RI65-RETRY (RI-65 Repeat) + [294] = "%1d", --PTR-LSPE-BTN-RI65-TEST (RI-65 Check) + [295] = "%1d", --PTR-LSPE-TMB-RI65-AMP (RI-65 Amplifier) + ------------------------------------------------------------- + -- ARC-UD + [456] = "%.1f", --PTR-RPE-LVR-ARKMODE (ARC-UD, Mode OFF/NARROW/WIDE/PULSE/RC) + [457] = "%.1f", --PTR-RPE-LVR-ARKMODE2 (ARC-UD, Channel) + + [453] = "%1d", --PTR-RPE-TMB-ARKSENS (ARC-UD, Sensitivity) + [454] = "%1d", --PTR-RPE-TMB-ARKUKV (ARC-UD, MW/DW) + + [672] = "%1d", --PTR-RPE-BTN-CONTR (ARC-UD, Control) + [673] = "%1d", --PTR-RPE-BTN-ANTL (ARC-UD, Ant. Left) + [674] = "%1d", --PTR-RPE-BTN-ANTR (ARC-UD, Ant. Right) + + [455] = "%.4f", --PTR-RPE-LVR-ARKVOL (ARC-UD, Volume) + [481] = "%1d", --PTR-RES-TMB-BLOCK (ARC-UD, Lock Switch) + ------------------------------------------------------------- + -- PKV Sight + [589] = "%.4f", --PTR-LAZS-LVR-AIMLGT (Sight Brightness) + + [855] = "%.4f", --PTR-PKV-ROTARY (Sight Limb) + + [856] = "%.4f", --PTR-PKV-DOUBLE (Sight Double) {1.0,-1.0} + + [903] = "%.1f", --PTR-PKV-GLASS-FILTER (PKV Filter) + -------------------------------------------------------------------------------- + -- CLOCK + [57] = "%1d", --PTR-WATCH-LVR-L (Mech clock left lever) + [58] = "%1d", --PTR-WATCH-LVR-L (Mech clock left lever) + + [59] = "%1d", --PTR-WATCH-LVR-R (Mech clock right lever) + [60] = "%1d", --PTR-WATCH-LVR-R (Mech clock right lever) + + [521] = "%1d", --PTR-RSPE-TMB-WRMWTCH (Clock Heating Switch) + -------------------------------------------------------------------------------- + [839] = "%.1f", --PTR-STAT-PRESS (Static Pressure System Mode (LEFT/COMMON/RIGHT)) + -------------------------------------------------------------------------------- + -- UV-26 CMD Control Panel + [910] = "%1d", --PTR-UV26-ONOFF (CMD Power) + [859] = "%1d", --PTR-UV26-BOARD (CMD Select Left/Both/Right board flares dispensers) + [913] = "%1d", --PTR-UV26-PROG (CMD Amount flares counter/Programming) + [914] = "%1d", --PTR-L45-BTN (CMD Num of sequences) + [862] = "%1d", --PTR-L68-BTN (CMD Dispense interval) + [863] = "%1d", --PTR-L8-BTN (CMD Num in sequence) + [866] = "%1d", --PTR-START-BTN (CMD Start dispense) + [911] = "%1d", --PTR-LSPE-BTN-UV26-START (Start/Stop dispense) + [864] = "%1d", --PTR-RESET-PROG-BTN (CMD Reset to default program) + [865] = "%1d", --PTR-STOP-BTN (CMD Stop dispense) + ------------------------------------------------ + -- CPTMECH + [215] = "%1d", --PTR-BLISTER-LOCK-L (Left blister open/close) + [216] = "%1d", --PTR-BLISTER-LOCK-R (Right blister open/close) + + [881] = "%1d", --PTR-WHEELBRK-ARM (Wheel Brakes) + + [910] = "%1d", --PTR-RSPE-TMB-WINK002 (Acceleration Reset) + + [334] = "%1d", --PTR-LES-TMB-VENT (Left Fan Switch) + [488] = "%1d", --PTR-RES-TMB-VENT (Right Fan Switch) + ------------------------------------------------ + -- ARC-9 + [469] = "%1d", --PTR-RPE-TMB-NEARFAR (ARC-9, Main/Backup Dialer) + [448] = "%.4f", --PTR-RPE-LVR-FRQVOLUME (ARC-9, Volume) + [444] = "%1d", --PTR-RPE-TMB-FRQTLG (ARC-9, TLF/TLG) + [446] = "%.1f", --PTR-RPE-LVR-FRQMODE (ARC-9, Mode OFF/COMP/ANT/LOOP) + [447] = "$.1f", --PTR-RPE-TMB-FRQFRAME (ARC-9, Loop Left/Right) + + [449] = "%.4f", --PTR-RPE-LVR-FRQADJRES (ARC-9, Backup Frequency Tune) + [675] = "%.2f", --PTR-RPE-LVR-FRQRES-SEC (ARC-9, Backup 100kHz rotary) + [450] = "%.2f", --PTR-RPE-LVR-FRQRES (ARC-9, Backup 10kHz rotary) + [451] = "%.4f", --PTR-RPE-LVR-FRQADJMAIN (ARC-9, Main Frequency Tune) + [678] = "%.2f", --PTR-RPE-LVR-FRQMAIN-SEC (ARC-9, Main 100kHz rotary) + [452] = "%.2f", --PTR-RPE-LVR-FRQMAIN (ARC-9, Main 10kHz rotary) + ------------------------------------------------ + -- External Cargo Equipment + [199] = "%1d", --PTR-STKSG-CVR-TACTJET (Tactical Cargo Release Button Cover) + [200] = "%1d", --PTR-STKSG-BTN-TACTJET (Tactical Cargo Release Button - Push to release) + [197] = "%1d", --PTR-STKSG-CVR-EMRGJET (Emergency Cargo Release Button Cover) + [198] = "%1d", --PTR-STKSG-BTN-EMRGJET (Emergency Cargo Release Button - Push to release) + [324] = "%1d", --PTR-LSPE-TMB-BRK-OUT (External Cargo Automatic Dropping) + ------------------------------------------------ + -- Signal Flares + [282] = "%1d", --PTR-LSPE-TMB-ALRMRKT1 (Signal Flares Cassette 1 Power Switch) + [283] = "%1d", --PTR-LSPE-TMB-ALRMRKT2 (Signal Flares Cassette 2 Power Switch) + [284] = "%1d", --PTR-LSPE-BTN-RCKT11 (Signal Flares Cassette 1 Launch Red Button) + [285] = "%1d", --PTR-LSPE-BTN-RCKT12 (Signal Flares Cassette 1 Launch Green Button) + [286] = "%1d", --PTR-LSPE-BTN-RCKT13 (Signal Flares Cassette 1 Launch Yellow Button) + [287] = "%1d", --PTR-LSPE-BTN-RCKT14 (Signal Flares Cassette 1 Launch White Button) + [288] = "%1d", --PTR-LSPE-BTN-RCKT21 (Signal Flares Cassette 2 Launch Red Button) + [289] = "%1d", --PTR-LSPE-BTN-RCKT22 (Signal Flares Cassette 2 Launch Green Button) + [290] = "%1d", --PTR-LSPE-BTN-RCKT23 (Signal Flares Cassette 2 Launch Yellow Button) + [291] = "%1d", --PTR-LSPE-BTN-RCKT24 (Signal Flares Cassette 2 Launch White Button) + ------------------------------------------------ + -- SARPP + [315] = "%1d", --PTR-LSPE-TMB-CONTR-AUTMAN (SARPP-12 Mode Switch,) + ------------------------------------------------ + -- Recorder P-503B + [305] = "%1d", --PTR-LSPE-TMB-REC (Recorder P-503B Power Switch) + [308] = "%.4f", --PTR-LSPE-LVR-LGTSEL (Recorder P-503B Backlight Brightness Knob) + ------------------------------------------------ + -- IFF + [304] = "%1d", --"PTR-LSPE-LVR-MODE (IFF Transponder Mode Selector Switch) + [301] = "%1d", --PTR-LSPE-TMB-RADIO-WRK (IFF Transponder Device Selector Switch) + [300] = "%1d", --PTR-LSPE-TMB-RADIO-MODE12 (IFF Transponder Device Mode Switch) + [296] = "%1d", --PTR-LSPE-CVR-EMRG-ERASE (IFF Transponder Erase Button Cover) + [297] = "%1d", --PTR-LSPE-BTN-EMRG-ERASE (IFF Transponder Erase Button) + [298] = "%1d", --PTR-LSPE-CVR-EMRG-MAYDAY (IFF Transponder Disaster Switch Cover) + [299] = "%1d", --PTR-LSPE-TMB-EMRG-MAYDAY (IFF Transponder Disaster Switch) + ------------------------------------------------ + -- jump descent siren + [323] = "%1d", --PTR-LSPE-TMB-AIR-SIREN (Alarm Bell Button) + ------------------------------------------------ + [352] = "%1d", --PTR-LPE-TMB-FKP (Gun Camera Switch, ON/OFF) + ------------------------------------------------ + -- Windshield Wiper + [331] = "%.1f", --PTR-LES-TMB-GLSCLN (Left Windscreen Wiper Control Switch, OFF, START, RESET, SPEED 1, SPEED 2) {0.0,0.1,0.2,0.3,0.4} + [478] = "%.1f", --PTR-RES-TMB-GLSCLN (Right Windscreen Wiper Control Switch, OFF, START, RESET, SPEED 1, SPEED 2) {0.0,0.1,0.2,0.3,0.4} +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --[12] = "%.4f", -- AGB_3K_Left_pitch {1.0, -1.0} + --[91] = "%.4f", -- AGB_3K_Right_pitch {1.0, -1.0} + ExportScript.Tools.SendData(12, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(12)))) -- negate + + ExportScript.Tools.SendData(91, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(91)))) -- negate + + --[21] = "%.4f", -- VD_10K_L_PRESS {0.0, 1.0} + ExportScript.Tools.SendData(21, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(21)))) -- negate +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {280, 281, 491, 492, 894, 895, 914}) + -- Lh RedLights Brightness Rst gr.1, Lh RedLights Brightness Rst gr.2, Rh RedLights Brightness Rst gr.1, Rh RedLights Brightness Rst gr.2, Central RedLights Brightness Rst gr.1, Central RedLights Brightness Rst gr.2, 5.5V Lights Brightness Rheostat + + -- deactivated WPADI right warning Flag + ExportScript.Tools.SendData(2020, 0) + + -- UV-26 + local lUV26 = ExportScript.Tools.getListIndicatorValue(4) + + if lUV26 ~= nil and lUV26.txt_digits ~= nil then + ExportScript.Tools.SendData(2006, string.format("%s", lUV26.txt_digits)) + else + ExportScript.Tools.SendData(2006, " ") + end + + --[[ + -- AGB_3K_LEFT + local lAGB_3K_LEFT = GetDevice(6) + ExportScript.Tools.WriteToLog('lAGB_3K_LEFT:get_sideslip '..ExportScript.Tools.dump(lAGB_3K_LEFT:get_sideslip())) + ExportScript.Tools.WriteToLog('lAGB_3K_LEFT:get_bank '..ExportScript.Tools.dump(lAGB_3K_LEFT:get_bank())) + ExportScript.Tools.WriteToLog('lAGB_3K_LEFT:get_pitch '..ExportScript.Tools.dump(lAGB_3K_LEFT:get_pitch())) + + -- AGB_3K_RIGHT + local lAGB_3K_RIGHT = GetDevice(7) + ExportScript.Tools.WriteToLog('lAGB_3K_RIGHT:get_sideslip '..ExportScript.Tools.dump(lAGB_3K_RIGHT:get_sideslip())) + ExportScript.Tools.WriteToLog('lAGB_3K_RIGHT:get_bank '..ExportScript.Tools.dump(lAGB_3K_RIGHT:get_bank())) + ExportScript.Tools.WriteToLog('lAGB_3K_RIGHT:get_pitch '..ExportScript.Tools.dump(lAGB_3K_RIGHT:get_pitch())) + + -- DISS_15 + local lDISS_15 = GetDevice(15) + ExportScript.Tools.WriteToLog('lDISS_15:get_w_vector '..ExportScript.Tools.dump(lDISS_15:get_w_vector())) + ExportScript.Tools.WriteToLog('lDISS_15:get_drift_angle '..ExportScript.Tools.dump(lDISS_15:get_drift_angle())) + + -- RADAR_ALTIMETER + local lRADAR_ALTIMETER = GetDevice(18) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_altitude '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_altitude())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_dangerous_height_flag '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_dangerous_height_flag())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_distance_limit '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_distance_limit())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_dangerous_height '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_dangerous_height())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_warning_flag '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_warning_flag())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_mode '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_mode())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_aperture_size '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_aperture_size())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_needle_value '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_needle_value())) + + -- MISC_SYSTEMS_INTERFACE + local lMISC_SYSTEMS_INTERFACE = GetDevice(20) + ExportScript.Tools.WriteToLog('lMISC_SYSTEMS_INTERFACE:get_rotor_blades_pitch '..ExportScript.Tools.dump(lMISC_SYSTEMS_INTERFACE:get_rotor_blades_pitch())) + ExportScript.Tools.WriteToLog('lMISC_SYSTEMS_INTERFACE:get_main_rotor_rpm '..ExportScript.Tools.dump(lMISC_SYSTEMS_INTERFACE:get_main_rotor_rpm())) + + -- SPU_7 (Intercom) + local lSPU_7 = GetDevice(36) + ExportScript.Tools.WriteToLog('lSPU_7:is_communicator_available '..ExportScript.Tools.dump(lSPU_7:is_communicator_available())) + ExportScript.Tools.WriteToLog('lSPU_7:get_noise_level '..ExportScript.Tools.dump(lSPU_7:get_noise_level())) + ExportScript.Tools.WriteToLog('lSPU_7:get_signal_level '..ExportScript.Tools.dump(lSPU_7:get_signal_level())) + --ExportScript.Tools.WriteToLog('lSPU_7:set_communicator '..ExportScript.Tools.dump(lSPU_7:set_communicator())) -- test parameters + --ExportScript.Tools.WriteToLog('lSPU_7:set_voip_mode '..ExportScript.Tools.dump(lSPU_7:set_voip_mode())) -- test parameters + + -- JADRO_1A + local lJADRO_1A = GetDevice(37) + ExportScript.Tools.WriteToLog('lJADRO_1A:is_on '..ExportScript.Tools.dump(lJADRO_1A:is_on())) + ExportScript.Tools.WriteToLog('lJADRO_1A:get_frequency '..ExportScript.Tools.dump(lJADRO_1A:get_frequency())) + --ExportScript.Tools.WriteToLog('lJADRO_1A:set_frequency '..ExportScript.Tools.dump(lJADRO_1A:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lJADRO_1A:set_modulation '..ExportScript.Tools.dump(lJADRO_1A:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lJADRO_1A:set_channel '..ExportScript.Tools.dump(lJADRO_1A:set_channel())) -- test parameters + + -- R_863 + local lR_863 = GetDevice(38) + ExportScript.Tools.WriteToLog('lR_863:is_on '..ExportScript.Tools.dump(lR_863:is_on())) + ExportScript.Tools.WriteToLog('lR_863:get_frequency '..ExportScript.Tools.dump(lR_863:get_frequency())) + --ExportScript.Tools.WriteToLog('lR_863:set_frequency '..ExportScript.Tools.dump(lR_863:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lR_863:set_modulation '..ExportScript.Tools.dump(lR_863:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lR_863:set_channel '..ExportScript.Tools.dump(lR_863:set_channel())) -- test parameters + + -- R_828 + local lR_828 = GetDevice(39) + ExportScript.Tools.WriteToLog('lR_828:is_on '..ExportScript.Tools.dump(lR_828:is_on())) + ExportScript.Tools.WriteToLog('lR_828:get_frequency '..ExportScript.Tools.dump(lR_828:get_frequency())) + --ExportScript.Tools.WriteToLog('lR_828:set_frequency '..ExportScript.Tools.dump(lR_828:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lR_828:set_modulation '..ExportScript.Tools.dump(lR_828:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lR_828:set_channel '..ExportScript.Tools.dump(lR_828:set_channel())) -- test parameters + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Radio comunication + -- JADRO 1A + local lJADRO_1A = GetDevice(37) + if lJADRO_1A:is_on() then + --ExportScript.Tools.SendDataDAC("2000", string.format("%7.4f", lJADRO_1A:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy(lJADRO_1A:get_frequency()/1000000, "7.4")) + else + ExportScript.Tools.SendDataDAC("2000", "-") + end + + -- R_863 (center) + local lR_863_c = GetDevice(38) + --ExportScript.Tools.SendDataDAC("2001", string.format("%7.3f", lR_863_c:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2001", ExportScript.Tools.RoundFreqeuncy(lR_863_c:get_frequency()/1000000)) + + -- R_863 (left) Channel + local lR_863_l = {[0.0]="1",[0.05]="2",[0.10]="3",[0.15]="4",[0.20]="5",[0.25]="6",[0.30]="7",[0.35]="8",[0.40]="9",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20"} + ExportScript.Tools.SendDataDAC("2002", lR_863_l[ExportScript.Tools.round(mainPanelDevice:get_argument_value(370), 2)]) + + -- R_863 (left) Frequency + -- is the same frequency as R_863 (center), but not the frequency from R_863 (left) + local lR_863_F = GetDevice(38) + --ExportScript.Tools.SendDataDAC("2003", string.format("%7.3f", lR_863_F:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2003", ExportScript.Tools.RoundFreqeuncy(lR_863_F:get_frequency()/1000000)) + + -- R_828 Channel + local lR_828 = {[0.0]="1",[0.101]="2",[0.199]="3",[0.302]="4",[0.400]="5",[0.502]="6",[0.601]="7",[0.697]="8",[0.801]="9",[0.898]="10"} + ExportScript.Tools.SendDataDAC("2004", lR_828[ExportScript.Tools.round(mainPanelDevice:get_argument_value(736), 3)]) + + -- R_828 Frequency + local lR_828_F = GetDevice(39) + if lR_828_F:is_on() then + --ExportScript.Tools.SendDataDAC("2005", string.format("%7.3f", lR_828_F:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2005", ExportScript.Tools.RoundFreqeuncy(lR_828_F:get_frequency()/1000000)) + else + ExportScript.Tools.SendDataDAC("2005", "-") + end + + -- UV-26 + local lUV26 = ExportScript.Tools.getListIndicatorValue(4) + + if lUV26 ~= nil and lUV26.txt_digits ~= nil then + ExportScript.Tools.SendDataDAC("2006", string.format("%s", lUV26.txt_digits)) + else + ExportScript.Tools.SendDataDAC("2006", "-") + end + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "R-863 VHF/UHF" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 38 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 100.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3068 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 1.0 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = -1.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active +-- ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua +-- ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} +-- ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 155 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3004 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 1.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua +-- ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset +-- ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua + -- ManualPreset is AM FM modus switch Manual=AM, Preset=FM +-- ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active +-- ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 369 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3001 -- ManualPreset button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "YaDRO-1A HF" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 37 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.4f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 1 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 2.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 17.999 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3013 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3007 -- volume button id from cklickable.lua +-- ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active +-- ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 137 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua +-- ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} +-- ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.01 -- minimal step for preset change + ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 743 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 0.7 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua + -- Load is autotune lamp on Mi-8 + ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[2]['Load']['ButtonID'] = nil -- load button id from cklickable.lua, Load button deactiviert + ExportScript.genericRadioConf[2]['Load']['ArgumentID'] = 849 -- load argument id for autotune lamp on Mi-8 + -- ManualPreset button change between SSB (Single SideBand) and AM, Manual=SSB, AM=Preset + ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 744 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3001 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.5-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 1.0-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = " R-828 LVHF FM" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 39 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = false -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 20.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 59.975 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3005 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 1.0 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3002 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 735 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="1",[0.1]="2",[0.2]="3",[0.3]="4",[0.4]="5",[0.5]="6",[0.6]="7",[0.7]="8",[0.8]="9",[0.9]="10"} + ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.1 -- minimal step for preset change +-- ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.1 -- minimal step for preset change + ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 739 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3004 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3003 -- load button id from cklickable.lua + ExportScript.genericRadioConf[3]['Load']['ArgumentID'] = 740 -- load argument id for autotune lamp on Mi-8 + -- ManualPreset change betwen VOICE and HOMING Mode, Manual=Voice, Preset=Homing + ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 757 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3006 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 1.0-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.0-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + --============================================================================================ +--[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end +]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end diff --git a/ExportsModules/MiG-15bis.lua b/ExportsModules/MiG-15bis.lua new file mode 100644 index 0000000..26cc9a6 --- /dev/null +++ b/ExportsModules/MiG-15bis.lua @@ -0,0 +1,375 @@ +-- MiG-15Bis + +ExportScript.FoundDCSModule = true +ExportScript.Version.MiG15bis = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + [225] = "%.4f", -- Canopy + [223] = "%.4f", -- LeftCanopyLever + [222] = "%.4f", -- RightCanopyLever + [224] = "%.4f", -- AftCanopyLever + [14] = "%.4f", -- Variometer {-75.0,-60.0,-45.0,-30.0,-15.0,-10.0,-5.0,0.0,5.0,10.0,15.0,30.0,45.0,60.0,75.0} {0.0,0.075,0.151,0.24,0.352,0.401,0.448,0.5,0.553,0.6,0.649,0.76,0.848,0.925,1.0} + [28] = "%.4f", -- Altimeter_km {0.0, 10.0}{0.0, 1.0} + [29] = "%.4f", -- Altimeter_m {0.0, 1000.0}{0.0, 1.0} + [31] = "%.4f", -- Altimeter_Pressure {670, 790}{0.0, 1.0} + [15] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0}{0.0, 1.0} + [16] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0}{0.0, 1.0} + [22] = "%.4f", -- CLOCK_flight_time_meter_status {0.0, 0.2}{0.5, 0.0} + [18] = "%.4f", -- CLOCK_flight_hours {0.0, 12.0}{0.0, 1.0} + [19] = "%.4f", -- CLOCK_flight_minutes {0.0, 60.0}{0.0, 1.0} + [20] = "%.4f", -- CLOCK_seconds_meter_time_minutes {0.0, 60.0}{0.0, 1.0} + [17] = "%.4f", -- CLOCK_seconds_meter_time_seconds {0.0, 60.0}{0.0, 1.0} + [4] = "%.4f", -- IAS {100.0, 1100.0}{0.0, 1.0} + [5] = "%.4f", -- TAS {100.0, 1100.0}{0.0, 1.0} + [27] = "%.4f", -- MACH {0.0,0.3,0.95}{0.12,0.215,1.0} + [6] = "%.4f", -- AGK_47B_roll {-1.0, 1.0} + [7] = "%.4f", -- AGK_47B_pitch {1.0, -1.0} + [11] = "%.4f", -- AGK_47B_failure_flag {0.0, 1.0} + --[8] = "%.4f", -- AGK_47B_sideslip {-1.0, 1.0} + [9] = "%.4f", -- AGK_47B_turn {-1.0, 1.0} + [10] = "%.4f", -- AGK_47B_horizon {-1.0, 1.0} + [35] = "%.4f", -- PRV_46_RAlt {-10.0, 0.0, 1200.0}{-1.0, 0.0, 1.0} + [32] = "%.4f", -- PDK-45 HeadingScale {1.0, 0.0} + [33] = "%.4f", -- PDK-45 Heading {1.0, 0.0} + -- Weapon System + [95] = "%.4f", -- N37D_Ready_Lamp + [93] = "%.4f", -- NR23_TOP_Ready_Lamp + [94] = "%.4f", -- NR23_BOTTOM_Ready_Lamp + [100] = "%.4f", -- Tactical_Rel_Lamp + [98] = "%.4f", -- LEFT_BOMB_Lamp + [99] = "%.4f", -- RIGHT_BOMB_Lamp + -- electric system + [83] = "%.4f", -- VoltAmperMeter {-1.0, 0.0, 3.0}{-1.0, 0.0, 1.0} + [244] = "%.4f", -- lamps_lightness + -- hydraulic system + [168] = "%.4f", -- HydraulicPressureMain {0.0, 250.0}{0.0, 1.0} + [139] = "%.4f", -- HydraulicPressureGain {0.0, 150.0}{0.0, 1.0} + [169] = "%.4f", -- HydraulicPressureAirFlaps {0.0, 80.0}{0.0, 1.0} + [165] = "%.4f", -- HydraulicPressureAirGears {0.0, 80.0}{0.0, 1.0} + [172] = "%.4f", -- HydraulicPressureMainAir {0.0, 250.0}{0.0, 1.0} + -- gear system + [121] = "%.4f", -- LeftBrakePressure {0.0, 12.0}{0.0, 1.0} + [122] = "%.4f", -- RightBrakePressure {0.0, 12.0}{0.0, 1.0} + -- fuel system + [47] = "%.4f", -- FuelQuantity {-100.0,0.0,100.0,200.0,300.0,400.0,500.0,600.0,700.0,800.0,1050.0}{0.0,0.047,0.136,0.22,0.38,0.52,0.631,0.755,0.869,0.921,1.0} + -- air system + [188] = "%.4f", -- CanopyAirValveIndication + [39] = "%.4f", -- CockpitAltitude {0.0,8000.0} {0.008,1.0} + [40] = "%.4f", -- PressureDifference {-0.04,0.0,0.6} {0.0,0.243,1.0} + -- oxygen system + [48] = "%.4f", -- OxygenPressure {0.0,250.0} {0.0,1.0} + [60] = "%.4f", -- FlowBlinker + [49] = "%.4f", -- FlowPressure {0.0,150.0,170.0} {0.0,0.9,1.0} + -- Engine + [42] = "%.4f", -- EngineTachometer {0.0,15000.0} {0.0,1.0} + [41] = "%.4f", -- EngineTemperature {300.0,900.0} {0.0,1.0} + [45] = "%.4f", -- OilTemperature {-50.0,150.0} {0.0,1.0} + [44] = "%.4f", -- OilPressure {0.0, 10.0} {0.0,1.0} + [43] = "%.4f", -- EngineFuelPressure {0.0,100.0} {0.0,1.0} + [46] = "%.4f", -- FuelPressure {0.0,10.0} {0.0,1.0} + -- radio compass + [238] = "%.4f", -- ARK5_Band {0.0, 2.0} {0.0, 0.4} + [176] = "%.4f", -- ARK5_TuningMeter + [175] = "%.4f", -- ARK5_Tuning {0.0, 0.2} {0.0, 1.0} + [38] = "%.4f", -- ARK5_Bearing + [239] = "%.4f", -- ARK5_FreqScale {0.0,0.5,1.0,1.5,2.0,2.5,3.0} {0.0,0.0695,0.14,0.2865,0.43,0.7155,1.0} + -- Radio RSI-6K + [235] = "%.4f", -- RadioAntennaPower + [128] = "%.4f", -- RadioReceiverKnob {0.0, 0.2}{0.0, 1.0} + [127] = "%.4f", -- RadioReceiverInd {0.0, 1.0}{0.036, 0.961} + [144] = "%.4f", -- RadioReceiverGauge {0.0, 1.0}{0.026, 0.957} + [245] = "%.4f", -- ASP_3N_Range + -- Lamps + -- electric system + [57] = "%.f", -- lamp_GeneratorOff {-1.0, 1.0}{-1.0, 1.0} + [58] = "%.f", -- lamp_Ignition {-1.0, 1.0}{-1.0, 1.0} + -- power plant + [119] = "%.f", -- lamp_IsolatingValve {-1.0, 1.0}{-1.0, 1.0} + -- gear system + [75] = "%.f", -- lamp_LeftGearExt {-1.0, 1.0}{-1.0, 1.0} + [74] = "%.f", -- lamp_LeftGearRet {-1.0, 1.0}{-1.0, 1.0} + [79] = "%.f", -- lamp_RightGearExt {-1.0, 1.0}{-1.0, 1.0} + [78] = "%.f", -- lamp_RightGearRet {-1.0, 1.0}{-1.0, 1.0} + [77] = "%.f", -- lamp_NoseGearExt {-1.0, 1.0}{-1.0, 1.0} + [76] = "%.f", -- lamp_NoseGearRet {-1.0, 1.0}{-1.0, 1.0} + [53] = "%.f", -- lamp_ExtendGears {-1.0, 1.0}{-1.0, 1.0} + -- fuel system + [56] = "%.f", -- lamp_Remain300 {-1.0, 1.0}{-1.0, 1.0} + [50] = "%.f", -- lamp_AftEmpty {-1.0, 1.0}{-1.0, 1.0} + [52] = "%.f", -- lamp_DropTanks {-1.0, 1.0}{-1.0, 1.0} + [51] = "%.f", -- lamp_BoostPressure {-1.0, 1.0}{-1.0, 1.0} + -- control system + [113] = "%.f", -- lamp_TrimmerNeutral {-1.0, 1.0}{-1.0, 1.0} + [59] = "%.f", -- lamp_FlapsExt {-1.0, 1.0}{-1.0, 1.0} + [124] = "%.f", -- lamp_AirBrakeExt {-1.0, 1.0}{-1.0, 1.0} + -- fire extinguisher system + [135] = "%.f", -- lamp_FireDetected {-1.0, 1.0}{-1.0, 1.0} + -- ARK-5 + [183] = "%.f", -- lamp_ARK_5 {-1.0, 1.0}{-1.0, 1.0} + [218] = "%.f", -- light_ARK_5_scale {-1.0, 1.0}{-1.0, 1.0} + -- MRP-48P + [54] = "%.f", -- lamp_Marker {-1.0, 1.0}{-1.0, 1.0} + -- Light System + [226] = "%.4f", -- light_LeftUV {-1.0, 1.0}{-1.0, 1.0} + [215] = "%.4f", -- light_CenterUV {-1.0, 1.0}{-1.0, 1.0} + [227] = "%.4f", -- light_RightUV {-1.0, 1.0}{-1.0, 1.0} + [217] = "%.4f", -- light_Panels {-1.0, 1.0}{-1.0, 1.0} + [216] = "%.4f", -- light_AuxLeftPanel {-1.0, 1.0}{-1.0, 1.0} + -- Gun Camera + [55] = "%.f" -- lamp_GunCamera {-1.0, 1.0}{-1.0, 1.0} +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + + -- Cockpit mechanics + [221] = "%.4f", -- Emergency Canopy Jettison - Pull to jettison + [223] = "%.4f", -- Left Canopy Lever, OPEN/CLOSE + [222] = "%.4f", -- Right Canopy Lever, OPEN/CLOSE + [224] = "%.4f", -- Aft Canopy Lever, OPEN/CLOSE + -- Control system + [114] = "%.4f", -- Elevator Trimmer Switch, PULL(CLIMB)/OFF/PUSH(DESCEND) + [142] = "%.4f", -- Aileron Trimmer Switch, LEFT/OFF/RIGHT + [207] = "%.4f", -- Wing Flaps Handle, RETRACT/NEUTRAL/20 degrees/55 degrees + [125] = "%.4f", -- Airbrake Switch, CLOSE/OPEN + [203] = "%.4f", -- Hydro Booster Lever, ON/OFF + [204] = "%.4f", -- Throttle Friction Lever + [198] = "%.4f", -- Airbrake Button, Hold to extend + -- Electric system + [84] = "%.4f", -- Ampere- & Voltmeter - Push to view Volts + [149] = "%.4f", -- Air Start Switch, ON/OFF + [81] = "%.4f", -- Pitot and Clock Heater Switch, ON/OFF + [200] = "%.4f", -- Engine Start Button - Push to start + [214] = "%.4f", -- Engine Start Button Cover + -- Circuit Breakers + [117] = "%.4f", -- Transfer Pump Switch, ON/OFF + [115] = "%.4f", -- Booster Pump Switch, ON/OFF + [120] = "%.4f", -- Ignition Switch, ON/OFF + [116] = "%.4f", -- Instruments and Lights Switch, ON/OFF + -- Right Panel + [152] = "%.4f", -- Accumulator Switch, ON/OFF + [153] = "%.4f", -- Generator Switch, ON/OFF + [151] = "%.4f", -- Nose Light Master Switch, ON/OFF + [154] = "%.4f", -- Trim Master Switch, ON/OFF + [155] = "%.4f", -- AGK-47B Artificial Horizon + DGMK-3 Switch, ON/OFF + [158] = "%.4f", -- Radio Switch, ON/OFF + [157] = "%.4f", -- Bombs Switch, ON/OFF + [156] = "%.4f", -- Emergency Drop Switch, ON/OFF + [159] = "%.4f", -- ARK Switch, ON/OFF + [160] = "%.4f", -- RV-2 Radio Altimeter Switch, ON/OFF + [161] = "%.4f", -- NR-23 Cannon Switch, ON/OFF + [162] = "%.4f", -- N-37D Cannon Switch, ON/OFF + [163] = "%.4f", -- ASP-3N Gunsight Switch, ON/OFF + [164] = "%.4f", -- S-13 Gun Camera Switch, ON/OFF + -- HydroSystem + [171] = "%.4f", -- Emergency Flaps Valve + [167] = "%.4f", -- Emergency Gears Valve + [170] = "%.4f", -- Emergency Flaps Valve Cover + [166] = "%.4f", -- Emergency Gears Valve Cover + [186] = "%.4f", -- Emergency System Filling Valve + [242] = "%.4f", -- Air Net Valve + [241] = "%.4f", -- Cockpit Filling Valve + -- Gear System + [71] = "%.4f", -- Landing Gear Handle, UP/DOWN + [72] = "%.4f", -- Gear Lamps Test Button - Push to test + [210] = "%.4f", -- Right Emergency Gear Release Handle + [209] = "%.4f", -- Left Emergency Gear Release Handle + [85] = "%.4f", -- Landing Gear Handle Lock, Lock/Unlock + -- Fuel System + [82] = "%.4f", -- Drop Tank Signal Switch, ON/OFF + [141] = "%.4f", -- Oxygen Supply Valve + [143] = "%.4f", -- Air Valve + [243] = "%.4f", -- Oxygen Emergency Valve + -- Conditioning and Heating System + [187] = "%.4f", -- Cockpit Air Valve + [86] = "%.4f", -- Ventilation Valve + -- Internal Lights System + [184] = "%.4f", -- Left UV Light Rheostat + [185] = "%.4f", -- Right UV Light Rheostat + [220] = "%.4f", -- Panels Light Rheostat + -- Nav Lights System + [111] = "%.4f", -- External Lights Switch, ON/OFF + [80] = "%.4f", -- Nose Light Switch, ON/OFF + -- Power Plant + [208] = "%.4f", -- Engine Stop, CLOSE/OPEN + [118] = "%.4f", -- Isolating Valve Switch, ON/OFF + -- Fire Extinguisher System + [136] = "%.4f", -- Engine Fire Extinguisher Button Cover + [137] = "%.4f", -- Engine Fire Extinguisher Button + [138] = "%.4f", -- Engine Fire Warning Light Test Button - Push to test + -- Signal Flares + [129] = "%.4f", -- Signal Flare Switch, ON/OFF + [130] = "%.4f", -- Signal Flare Yellow Button + [131] = "%.4f", -- Signal Flare Green Button + [132] = "%.4f", -- Signal Flare Red Button + [133] = "%.4f", -- Signal Flare White Button + ---------------------------------------------------- + -- Devices + -- AGK-47B + [12] = "%.4f", -- AGK-47B Artificial Horizon Cage - Pull to cage + [13] = "%.4f", -- AGK-47B Artificial Horizon Zero Pitch Trim Knob + --VD-15 + [30] = "%.4f", -- Barometric Pressure QFE Knob + --PRV-46 + [36] = "%.4f", -- PRV-46 Radar Altimeter Indicator Range Switch, 120m/1200m AGL + [37] = "%.4f", -- PRV-46 Radar Altimeter Indicator Power Switch, ON/OFF + --PDK-45 + [34] = "%.4f", -- Heading Knob + [61] = "%.4f", -- Fast Slave Button + -- CLOCK + [23] = "%.4f", -- AChS-1 Cockpit Chronograph Left Knob (button) + [24] = "%.4f", -- AChS-1 Cockpit Chronograph Left Knob (rotary) + [25] = "%.4f", -- AChS-1 Cockpit Chronograph Right Knob (button) + [26] = "%.4f", -- AChS-1 Cockpit Chronograph Right Knob (rotary) + -- Weapon System + [92] = "%.4f", -- N-37D Cannon Reload Button + [90] = "%.4f", -- NR-23 (Top) Cannon Reload Button + [91] = "%.4f", -- NR-23 (Bottom) Cannon Reload Button + [96] = "%.4f", -- Tactical Release Switch, ON/OFF + [97] = "%.4f", -- Emergency Release Button + [104] = "%.4f", -- Emergency Release Button Cover + --ASP-3N Gunsight + [101] = "%.4f", -- ASP-3N Gunsight Mode, GYRO/FIXED + [106] = "%.4f", -- ASP-3N Gunsight Fixed Reticle Mask Lever + [103] = "%.4f", -- ASP-3N Gunsight Fixed Reticle Mask Lever (rotary) + [102] = "%.4f", -- ASP-3N Gunsight Brightness Knob (rotary) + [201] = "%.4f", -- ASP-3N Gunsight Target Distance (rotary) + [105] = "%.4f", -- ASP-3N Gunsight Color Filter, ON/OFF + -- ARK-5 radio compass + [180] = "%.4f", -- ARK-5 Audio Volume Control (rotary) + [177] = "%.4f", -- ARK-5 Frequency Band Switch + [174] = "%.4f", -- ARK-5 Function Selector Switch, OFF/COMP/ANT./LOOP + [178] = "%.4f", -- ARK-5 LOOP L-R Switch + --[] = "%.4f", -- ARK-5 Tuning Crank (rotary) + [181] = "%.4f", -- ARK-5 Scale Light Control (rotary) + [173] = "%.4f", -- ARK-5 TLG-TLF Switch + [182] = "%.4f", -- ARK-5 Take Control Button + [123] = "%.4f", -- ARK-5 Near/Far NDB Switch + [146] = "%.4f", -- ARK-5 NDB 1 Switch + [147] = "%.4f", -- ARK-5 NDB 2 Switch + [148] = "%.4f", -- ARK-5 NDB 3 Switch + -- RSI-6K radio + [126] = "%.4f", -- RSI-6K Audio Volume Control (rotary) + [232] = "%.4f", -- RSI-6K Wave Control (rotary) + [230] = "%.4f", -- RSI-6K Antenna Control (rotary) + [231] = "%.4f", -- RSI-6K Wave Lock + [233] = "%.4f", -- RSI-6K Antenna Lock + [128] = "%.4f", -- RSI-6K Receiver Tuning (rotary) + [140] = "%.4f", -- RSI-6K Receive/ARK + [240] = "%.4f", -- RSI-6K Forced Mode, ON/OFF + [202] = "%.4f", -- Microphone Button +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- AGK_47B_sideslip negate + --[8] = "%.4f", -- AGK_47B_sideslip {-1.0, 1.0} + ExportScript.Tools.SendData(8, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(8)))) -- negate +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, 220) + -- Panels Light Rheostat +end + + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/MiG-21Bis.lua b/ExportsModules/MiG-21Bis.lua new file mode 100644 index 0000000..6cdac23 --- /dev/null +++ b/ExportsModules/MiG-21Bis.lua @@ -0,0 +1,730 @@ +-- MiG-21Bis Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.MiG21Bis = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + [239] = "%.1f", -- CANOPY_anti_ice +--ALCOHOL, COMPRESSED_AIR other similar stuff == == == == == == == == == == == == == == == == == == == == == == = + [411] = "%.1f", -- ALCOHOL + [413] = "%.1f", -- COMPRESSED_AIR_main + [414] = "%.1f", -- COMPRESSED_AIR_aux +-- OXYGENE SYSTEM (pilot only, engine O2 separated) == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [59] = "%.1f", -- OXYGENE_instrument_IK52 + [60] = "%.1f", -- OXYGENE_instrument_IK52_blinking_lungs + [58] = "%.1f", -- OXYGENE_instrument_M2000 +--GEAR LIGHTS == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + --[9] = "%.f", -- GEAR_NOSE_UP_LIGHT + [12] = "%.f", -- GEAR_NOSE_DOWN_LIGHT + --[10] = "%.f", -- GEAR_LEFT_UP_LIGHT + [13] = "%.f", -- GEAR_LEFT_DOWN_LIGHT + --[11] = "%.f", -- GEAR_RIGHT_UP_LIGHT + [14] = "%.f", -- GEAR_RIGHT_DOWN_LIGHT +-- AIRBRAKES == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [316] = "%.1f", -- AIRBRAKES_button + [7] = "%.1f", -- AIRBRAKES_3D +-- INSTRUMENTS == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [100] = "%.4f", -- IAS_indicator + [101] = "%.4f", -- TAS_indicator + [102] = "%.4f", -- M_indicator +-- Baro altimeter subgroup -------------------------------------------------------------------------------------------------------------------------- + [104] = "%.4f", -- H_indicator_needle_m + [112] = "%.4f", -- H_indicator_needle_km +--/N/ KSI subgroup (NPP) -------------------------------------------------------------------------------------------------------------------------- + [178] = "%.1f", -- KSI_switch + [258] = "%.1f", -- KSI_adjust_button + [111] = "%.4f", -- KSI_course_indicator + [68] = "%.4f", -- KSI_course_set_needle +-- RSBN subgroup ------------------------------------------------------------------------------------------------------------------------------------------------ + [176] = "%.1f", -- RSBN_switch + [548] = "%.1f", -- RSBN_azimut_korekcija_LIGHT + [549] = "%.1f", -- RSBN_dalnost_korekcija_LIGHT + [417] = "%.1f", -- RSBN_distance_meter + [355] = "%.1f", -- RSBN_distance_meter_Hundreds + [356] = "%.1f", -- RSBN_distance_meter_Tens + [357] = "%.1f", -- RSBN_distance_meter_Singles + [587] = "%.1f", -- RSBN_NPP_kurs_blinker + [588] = "%.1f", -- RSBN_NPP_glisada_blinker + [590] = "%.4f", -- RSBN_NPP_kurs_needle + [589] = "%.4f", -- RSBN_NPP_glisada_needle + [567] = "%.1f", -- RSBN_KPP_kren_blinker + [568] = "%.1f", -- RSBN_KPP_tangaz_blinker + --[565] = "%.4f", -- RSBN_KPP_kurs_director + --[566] = "%.4f", -- RSBN_KPP_glisada_director +--/N/ ARK subgroup --------------------------------------------------------------------------------------------------------------------------------- + [174] = "%.1f", -- ARK_switch + [254] = "%.1f", -- ARK_dal_bliz_selector + [36] = "%.4f", -- ARK_RSBN_needle +-- Radio-altimeter subgroup ------------------------------------------------------------------------------------------------------------------------------------------------------ + [175] = "%.1f", -- RADIO_ALTIMETER_MARKER_switch + [103] = "%.4f", -- RADIO_ALTIMETER_indicator + [500] = "%.f", -- LOW_ALT_LIGHT +-- UUA and SUA subgroup ----------------------------------------------------------------------------------------------------------------------------------------------------------- + [105] = "%.4f", -- UUA_indicator + [537] = "%.f", -- AOA_WARNING_LIGHT +-- DA-200 subgroup --------------------------------------------------------------------------------------------------------------------------------------------------------- + [107] = "%.6f", -- DA200_TurnNeedle + [106] = "%.4f", -- DA200_VerticalVelocity + [31] = "%.4f", -- DA200_Slipball + [177] = "%.1f", -- KPP_switch + [259] = "%.1f", -- KPP_ARRETIR + [535] = "%.1f", -- KPP_ARRETIR_light + [108] = "%.4f", -- KPP_Bank + [109] = "%.4f", -- KPP_Pitch +-- ACCELEROMETER == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [110] = "%.4f", -- ACCELEROMETER + [228] = "%.4f", -- RESET_G_needle + [113] = "%.4f", -- MAX_G_needle + [114] = "%.4f", -- MIN_G_needle +--TRIMMER == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [172] = "%.1f", -- TRIMMER_switch + [519] = "%.f", -- TRIMMER_light +--PITOT TUBES == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [229] = "%.1f", -- PITOT_TUBES_SELECTOR + [279] = "%.1f", -- PITOT_TUBES_HEATING_main + [280] = "%.1f", -- PITOT_TUBES_HEATING_aux + [406] = "%.1f", -- PITOT_TUBES_STATUS +-- FREEZING EFFECTS == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [410] = "%.1f", -- FREEZING_level_absolute + [543] = "%.1f", -- FREEZING_EFFECTS_canopy +--/N/ DC bus == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [124] = "%.4f", -- DC_BUS_V_needle + [165] = "%.1f", -- DC_BUS_battery + [155] = "%.1f", -- DC_BUS_battery_heat + [510] = "%.f", -- DC_GENERATOR_LIGHT + [16666] = "%.1f", -- DC_GENERATOR + [563] = "%.1f", -- DC_BUS + [55] = "%.1f", -- DC_BUS_ISA_K +--/N/ AC bus == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [564] = "%.1f", -- AC_BUS + [15366] = "%.1f", -- AC_BUS_PO7501 + [15466] = "%.1f", -- AC_BUS_PO7502 + [16466] = "%.1f", -- AC_BUS_Emerg_Inverter + [16966] = "%.1f", -- AC_GENERATOR + [511] = "%.f", -- AC_GENERATOR_LIGHT +--/N/ FUEL PUMPS & FUEL SYSTEM == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [159] = "%.1f", -- FUEL_PUMP_3 + [160] = "%.1f", -- FUEL_PUMP_1 + [161] = "%.1f", -- FUEL_PUMP_RASHOD + [402] = "%.4f", -- FUEL_PRESSURE { 0, 45 } ???? + [52] = "%.4f", -- FUEL_METER +--FUEL LIGHTS (in connection with previous) == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [501] = "%.f", -- FUEL_LIGHT_FUELPODC + [502] = "%.f", -- FUEL_LIGHT_1GR + [503] = "%.f", -- FUEL_LIGHT_450 + [504] = "%.f", -- FUEL_LIGHT_3GR + [505] = "%.f", -- FUEL_LIGHT_FUELPODW + [506] = "%.f", -- FUEL_LIGHT_RASHOD +--ENGINE START DEVICE == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [403] = "%.1f", -- ENGINE_START_DEVICE_STATUS { -1, 0, 1, 2 } + [509] = "%.f", -- START_DEVICE_ZAZIG_LIGHT + [415] = "%.1f", -- ENGINE_OXYGENE_STATUS + [61] = "%.4f", -- ENGINE_OXYGENE_manometer +-- ENGINE and THROTTLE == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [624] = "%.1f", -- SPS_state + [625] = "%.4f", -- KONUS_efficiency + [626] = "%.4f", -- SOPLO_efficiency + --[50] = "%.4f", -- ENGINE_RPM + [670] = "%.4f", -- ENGINE_RPM2 + [51] = "%.4f", -- ENGINE_TEMP + [404] = "%.4f", -- ENGINE_STRESS + [507] = "%.f", -- FORSAZ_1_LIGHT + [508] = "%.f", -- FORSAZ_2_LIGHT + [512] = "%.f", -- NOZZLE_LIGHT + [517] = "%.f", -- KONUS_LIGHT + [513] = "%.f", -- OIL_LIGHT + [627] = "%.4f", -- OIL_PRESSURE + [534] = "%.f", -- FIRE_LIGHT + [405] = "%.1f", -- ENGINE_SURGE_DOORS_POZITION { -1, 0, 1 } +-- GIDRO == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [418] = "%.4f", -- PRIMARY_GIDRO_Pressure + [419] = "%.4f", -- SECONDARY_GIDRO_Pressure + [126] = "%.4f", -- PRIMARY_GIDRO_Pressure_needle + [125] = "%.4f", -- SECONDARY_GIDRO_Pressure_needle + [171] = "%.1f", -- GIDRO_NR27_switch + [319] = "%.1f", -- GIDRO_ailerones_busters_switch + [515] = "%.f", -- HYDRAULIC_LIGHT + [514] = "%.f", -- BUSTER_LIGHT +--HELMET == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [306] = "%.1f", -- HELMET_heat_man_auto_switch + [310] = "%.1f", -- HELMET_quick_heat_button + [595] = "%.1f", -- HELMET_visor_switch +--AIR CONDITIONING == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [412] = "%.4f", -- AIR_CONDITION_cockpit_temperature +-- WARNING LIGHTS == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [541] = "%.f", -- CANOPY_WARNING_LIGHT + [542] = "%.f", -- SORC_LIGHT + [407] = "%.f", -- WARNING_LIGHTS_CHECK_STATE + [516] = "%.f", -- MARKER_LIGHT + [518] = "%.f", -- STABILISATOR_LIGHT + [520] = "%.f", -- CHECK_GEAR_LIGHT + [521] = "%.f", -- FLAPS_LIGHT + [522] = "%.f", -- AIRBRAKE_LIGHT + [523] = "%.f", -- CENTRAL_PYLON_LIGHT + [524] = "%.f", -- RATO_L_LIGHT + [525] = "%.f", -- RATO_R_LIGHT + [526] = "%.f", -- PYLON_1_ON_LIGHT + [527] = "%.f", -- PYLON_2_ON_LIGHT + [528] = "%.f", -- PYLON_3_ON_LIGHT + [529] = "%.f", -- PYLON_4_ON_LIGHT + [530] = "%.f", -- PYLON_1_OFF_LIGHT + [531] = "%.f", -- PYLON_2_OFF_LIGHT + [532] = "%.f", -- PYLON_3_OFF_LIGHT + [533] = "%.f", -- PYLON_4_OFF_LIGHT +-- GIRO DEVICES == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [536] = "%.1f", -- GIRO_ARRETIR + [408] = "%.1f", -- GIRO_AGD_KSI_SAU_RLS_STATE + [409] = "%.1f", -- GIRO_DA200_KSI_SAU_RLS_STATE + [162] = "%.1f", -- GIRO_AGD_KSI_SAU_RLS_switch + [163] = "%.1f", -- GIRO_DA200_KSI_SAU_RLS_switch +-- ASP == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [539] = "%.1f", -- ASP_TGT_ACQUIRED_LIGHT + [538] = "%.1f", -- ASP_LAUNCH + [540] = "%.1f", -- ASP_DISENGAGE + [67] = "%.1f", -- GUN_camera_3D + [551] = "%.1f", -- ASP_DISTANCE + [552] = "%.4f", -- ASP_DISTANCE_MISSILE + [553] = "%.1f", -- RADAR_ERROR + [554] = "%.1f", -- RADAR_LOW_ALT + [555] = "%.1f", -- RADAR_FIX_BEAM + [556] = "%.1f", -- ASP_SCALE_BASE + [557] = "%.1f", -- ASP_SCALE_ANGLE + [558] = "%.1f", -- RADAR_LAUNCH + [559] = "%.1f", -- RADAR_MISSILE_HEAD_RDY + [560] = "%.1f", -- RADAR_JAMMED + [561] = "%.1f", -- RADAR_BROKEN + [562] = "%.1f", -- RADAR_DISENGAGE + [571] = "%.1f", -- RADAR_19A_1 + [572] = "%.1f", -- RADAR_19A_2 + [573] = "%.1f", -- RADAR_19A_3 + [574] = "%.1f", -- RADAR_19A_4 + [575] = "%.1f", -- RADAR_19A_5 + [576] = "%.1f", -- RADAR_19A_6 + [577] = "%.1f", -- RADAR_19A_7 + [578] = "%.1f", -- RADAR_19A_8 + [579] = "%.1f", -- SEAT_HEIGHT + [580] = "%.1f", -- IAB_BOX + [581] = "%.1f", -- IAB_LIGHT_1 + [582] = "%.1f", -- IAB_LIGHT_2 + [583] = "%.1f", -- IAB_LIGHT_3 + [584] = "%.1f", -- MISSILE_55_1 + [585] = "%.1f", -- MISSILE_55_2 + [586] = "%.1f", -- MISSILE_62 + [63] = "%.1f", -- TACTICAL_DROP_ARMED + [591] = "%.1f", -- SPS_BOX + [592] = "%.1f", -- SPS_HIGH + [593] = "%.1f", -- SPS_ILLUMINATION + [594] = "%.1f", -- SPS_LAUNCH + [598] = "%.1f", -- GUV_BOX + [701] = "%.1f", -- GUV_LAUNCH +-- SARPP == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [193] = "%.1f", -- SARPP_switch +-- SAU == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [546] = "%.f", -- SAU_stabilization_LIGHT + [547] = "%.f", -- SAU_privedenie_LIGHT + [544] = "%.f", -- SAU_landing_COMMAND_LIGHT + [545] = "%.f", -- SAU_landing_AUTO_LIGHT +-- ARU == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [64] = "%.4f", -- ARU_3G_instrument +-- KONUS == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [66] = "%.4f", -- KONUS_UPES_3_instrument +-- DRAG CHUTE == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [550] = "%.f", -- GUN_GOTOVN_LIGHT +-- SPO == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + [601] = "%.f", -- SPO_L_F + [602] = "%.f", -- SPO_R_F + [603] = "%.f", -- SPO_R_B + [604] = "%.f", -- SPO_L_B + [605] = "%.f", -- SPO_MUTED +-- SOD == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + [606] = "%.1f", -- SOD_ANSWER + [607] = "%.1f", -- SRZO_ON + [608] = "%.1f", -- SRZO_CODE + [609] = "%.1f", -- SRZO_CIPH + [611] = "%.1f", -- SRZO_ERROR + [613] = "%.1f", -- ASP_BACKLIGHT_ON + [614] = "%.1f", -- ASP_BACKLIGHT_INTENSITY + [618] = "%.1f", -- NEEDLES_PHOSPHOR_LIGHT + [152] = "%.1f", -- RED_PANELLIGHT + [619] = "%.1f", -- RED_FLOODLIGHT + [620] = "%.1f", -- WHITE_PANELLIGHT + [621] = "%.1f", -- RED_INSTRUMENT + [622] = "%.1f", -- ASP_GLASS_LIGHT_INTENSITY + [652] = "%.4f", -- H_indicator_needle_max + [655] = "%.4f", -- COCKPIT_PRESSURE_ALTIMETER + [656] = "%.4f", -- COCKPIT_PRESSURE +-- Clock == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == + -- currtimeHours; currtimeMinutes; currtimeSeconds; flightTimeMeterStatus; + -- flightHours;flightMinutes; secondsMeterTimeMinutes; secondsMeterTimeSeconds; + -- 115; 116; 117; 118; 119; 120; 121; 122; + [115] = "%.4f", -- currtimeHours + [116] = "%.4f", -- currtimeMinutes + [117] = "%.4f", -- currtimeSeconds + [118] = "%.4f", -- flightTimeMeterStatus + [119] = "%.4f", -- flightHours + [120] = "%.4f", -- flightMinutes + [121] = "%.4f", -- secondsMeterTimeMinutes + [122] = "%.4f", -- secondsMeterTimeSeconds +-- Gear Brake + [56] = "%.4f", -- Gearbrake_needle2 + [57] = "%.4f", -- Gearbrake_needle1 +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- cockpit mechanics + --[718] = "%.1f", -- Canopy Switch, OPEN/OFF/CLOSE {-1.0, 1.0} + --[818] = "%.1f", -- Emergency Jettison Handle, IN/OUT {0.0, 1.0} + +-- DC & AC buses & giro devices + [165] = "%.1f", -- Battery On/Off + [155] = "%.1f", -- Battery Heat On/Off + [166] = "%.1f", -- DC Generator On/Off + [169] = "%.1f", -- AC Generator On/Off + [153] = "%.1f", -- PO-750 Inverter #1 On/Off + [154] = "%.1f", -- PO-750 Inverter #2 On/Off + [164] = "%.1f", -- Emergency Inverter +-- GIRO + [162] = "%.1f", -- Giro, NPP, SAU, RLS Signal, KPP Power On/Off + [163] = "%.1f", -- DA-200 Signal, Giro, NPP, RLS, SAU Power On/Off +-- FUEL_PUMPS & FUEL_SYSTEM (merged) + [159] = "%.1f", -- Fuel Tanks 3rd Group, Fuel Pump + [160] = "%.1f", -- Fuel Tanks 1st Group, Fuel Pump + [161] = "%.1f", -- Drain Fuel Tank, Fuel Pump + [274] = "%.2f", -- Fuel Quantity Set +-- ENGINE START DEVICE + [302] = "%.1f", -- APU On/Off + [288] = "%.1f", -- Engine Cold / Normal Start + [289] = "%.1f", -- Start Engine + [301] = "%.1f", -- Engine Emergency Air Start + [616] = "%.1f", -- Engine Stop/Lock +-- ACCELEROMETER + [228] = "%.1f", -- Accelerometer Reset +-- PITOT TUBES and related things that use dc bus for heating + [229] = "%.1f", -- Pitot tube Selector Main/Emergency + [279] = "%.1f", -- Pitot tube/Periscope/Clock Heat + [280] = "%.1f", -- Secondary Pitot Tube Heat +-- DA-200 + [261] = "%.4f", -- Variometer Set +-- ENGINE + [308] = "%.1f", -- Anti surge doors - Auto/Manual + [300] = "%.1f", -- Afterburner/Maximum Off/On + [320] = "%.1f", -- Emergency Afterburner Off/On +-- FIRE EXTINGUISHER + [303] = "%.1f", -- Fire Extinguisher Off/On + [324] = "%.1f", -- Fire Extinguisher Cover + [325] = "%.1f", -- Fire Extinguisher +-- LIGHTS + [612] = "%.1f", -- Cockpit Texts Back-light default_axis + [156] = "%.1f", -- Instruments Back-light default_axis + [157] = "%.1f", -- Main Red Lights default_axis + [222] = "%.1f", -- Main White Lights default_axis + [194] = "%.1f", -- Navigation Lights Off/Min/Med/Max + [323] = "%.2f", -- Landing Lights Off/Taxi/Land +-- LIGHTS WARNING AXIS + [195] = "%.1f", -- Set Warning Light Day/Night T4 + [196] = "%.1f", -- Set Warning Light Day/Night T10 + [273] = "%.1f", -- Set Warning Light Day/Night T4-2 + [282] = "%.1f", -- Set Warning Light Day/Night T4-3 + [283] = "%.1f", -- Set Warning Light Day/Night T10-2 + [322] = "%.1f", -- Set Warning Light Day/Night PPS + [657] = "%.1f", -- SORC +-- LIGHTS WARNING BUTTONS + [369] = "%.1f", -- Check Warning Lights T4 + [370] = "%.1f", -- Check Warning Lights T10 + [371] = "%.1f", -- Check Warning Lights T4-2 + [372] = "%.1f", -- Check Warning Lights T4-3 + [373] = "%.1f", -- Check Warning Lights T10-2 + [374] = "%.1f", -- Check Warning Lights PPS + [255] = "%.1f", -- SORC +-- Radio + [173] = "%.1f", -- Radio System On/Off + [208] = "%.1f", -- Radio / Compass + [209] = "%.1f", -- Squelch On/Off + [210] = "%.1f", -- Radio Volume + [211] = "%.2f", -- Radio Channel + [315] = "%.1f", -- Radio PTT +-- ARK + [174] = "%.1f", -- ARK On/Off + [198] = "%.1f", -- ARK Sound + [212] = "%.1f", -- ARK Change + [213] = "%.1f", -- ARK 1 - 9 {0.1,0.2,...,0.8,0.9} + [189] = "%.2f", -- ARK Zone + [197] = "%.1f", -- ARK Mode - Antenna / Compass + [254] = "%.1f", -- Marker Far/Near +-- RSBN + [176] = "%.1f", -- RSBN On/Off + [240] = "%.1f", -- RSBN Mode Land/Navigation/Descend + [340] = "%.1f", -- RSBN / ARK + [294] = "%.1f", -- RSBN Identify + [347] = "%.1f", -- RSBN self-test +--RSBN Panel + [345] = "%.1f", -- RSBN Sound + [351] = "%.2f", -- RSBN Navigation + [352] = "%.2f", -- PRMG Landing + [366] = "%.1f", -- RSBN Reset + [367] = "%.1f", -- RSBN Bearing + [368] = "%.1f", -- RSBN Distance +-- SAU + [179] = "%.1f", -- SAU On/Off + [180] = "%.1f", -- SAU Pitch On/Off + [343] = "%.1f", -- SAU - Stabilize + [376] = "%.1f", -- SAU cancel current mode + [377] = "%.1f", -- SAU - Recovery + [344] = "%.1f", -- SAU Preset - Limit Altitude + [341] = "%.1f", -- SAU - Landing - Command + [342] = "%.1f", -- SAU - Landing - Auto + [348] = "%.1f", -- SAU Reset/Off +-- SPO + [202] = "%.1f", -- SPO-10 RWR On/Off + [226] = "%.1f", -- SPO-10 Test + [227] = "%.1f", -- SPO-10 Night / Day + [225] = "%.1f", -- SPO-10 Volume +-- SRZO IFF + [188] = "%.1f", -- SRZO IFF Coder/Decoder On/Off + [192] = "%.1f", -- SRZO Codes + [346] = "%.1f", -- IFF System 'Type 81' On/Off + [190] = "%.1f", -- Emergency Transmitter Cover + [191] = "%.1f", -- Emergency Transmitter On/Off + [427] = "%.1f", -- SRZO Self Destruct Cover + [428] = "%.1f", -- SRZO Self Destruct +-- SOD + [200] = "%.1f", -- SOD IFF On/Off + [199] = "%.1f", -- SOD Identify + [201] = "%.1f", -- SOD Wave Selector 3/1/2 + [204] = "%.2f", -- SOD Modes +-- RADAR + [205] = "%.1f", -- Radar Off/Prep/On + [206] = "%.1f", -- Low Altitude Off/Comp/On + [207] = "%.1f", -- Locked Beam On/Off + [266] = "%.1f", -- Radar Screen Magnetic Reset + [330] = "%.1f", -- Radar Interferes - Continues + [331] = "%.1f", -- Radar Interferes - Temporary + [332] = "%.1f", -- Radar Interferes - Passive + [333] = "%.1f", -- Radar Interferes - Weather + [334] = "%.1f", -- Radar Interferes - IFF + [335] = "%.1f", -- Radar Interferes - Low Speed + [336] = "%.1f", -- Radar Interferes - Self-test + [337] = "%.1f", -- Radar Interferes - Reset + [378] = "%.1f", -- Lock Target + [623] = "%.1f", -- Radar Polar Filter +-- SPRD + [167] = "%.1f", -- SPRD (RATO) System On/Off + [168] = "%.1f", -- SPRD (RATO) Drop System On/Off + [252] = "%.1f", -- SPRD (RATO) Start Cover + [253] = "%.1f", -- SPRD (RATO) Start + [317] = "%.1f", -- SPRD (RATO)t Drop Cover + [318] = "%.1f", -- SPRD (RATO) Drop +-- CONTROL SYSTEM ------------- subsystems -------------------------------------------- +-- SPS + [293] = "%.1f", -- SPS System Off/On +-- ARU + [295] = "%.1f", -- ARU System - Manual/Auto + [296] = "%.1f", -- ARU System - Low Speed/Neutral/High Speed +-- Airbrake + [316] = "%.1f", -- Airbrake - Out/In +-- Gear brakes + [299] = "%.1f", -- ABS Off/On + [238] = "%.1f", -- Nosegear Brake Off/On + [237] = "%.1f", -- Emergency Brake +-- Gears + [326] = "%.1f", -- Gear Handle Fixator + [327] = "%.1f", -- Gear Up/Neutral/Down {-1.0,0.0,1.0} + [223] = "%.1f", -- Main Gears Emergency Release Handle + [281] = "%.1f", -- Nose Gear Emergency Release Handle +-- Flaps + [311] = "%.1f", -- Flaps Neutral + [312] = "%.1f", -- Flaps Take-Off + [313] = "%.1f", -- Flaps Landing + [314] = "%.1f", -- Flaps Reset buttons +-- Drag chute + [298] = "%.1f", -- Release Drag Chute + [304] = "%.1f", -- Drop Drag Chute Cover + [305] = "%.1f", -- Drop Drag Chute +--TRIMMER + [172] = "%.1f", -- Trimmer On/Off + [379] = "%.1f", -- Trimmer Pitch Up/Down +-- KONUS + [170] = "%.1f", -- Nosecone On/Off + [309] = "%.1f", -- Nosecone Control - Manual/Auto + [236] = "%.2f", -- Nosecone manual position controller +-- SOPLO + [291] = "%.1f", -- Engine Nozzle 2 Position Emergency Control +--MAIN_HYDRO and BUSTER_HYDRO == == == == == == == == == == == == == == == == == == == TEMPORARY MERGED == == == == == == == == == == == == == == == == == == == == == == + [171] = "%.1f", -- Emergency Hydraulic Pump On/Off + [319] = "%.1f", -- Aileron Booster - Off/On +--KPP + [177] = "%.1f", -- KPP Main/Emergency + [259] = "%.1f", -- KPP Cage + [260] = "%.4f", -- KPP Set +--IAS / TAS / KSI (NPP) + [178] = "%.1f", -- NPP On/Off + [258] = "%.1f", -- NPP Adjust + [263] = "%.1f", -- NPP Course set +-- ALTIMETER and radioALTIMETER + [175] = "%.1f", -- Radio Altimeter/Marker On/Off + [284] = "%.1f", -- Dangerous Altitude Warning Set + [262] = "%.1f", -- Altimeter pressure knob +-- OXYGENE_SYSTEM + [285] = "%.1f", -- Helmet Air Condition Off/On + [286] = "%.1f", -- Emergency Oxygen Off/On + [287] = "%.1f", -- Mixture/Oxygen +-- CANOPY + [328] = "%.1f", -- Hermetize Canopy + [329] = "%.1f", -- Secure Canopy + [375] = "%.1f", -- Canopy Open + [385] = "%.1f", -- Canopy Close + [239] = "%.1f", -- Canopy Anti Ice + [224] = "%.1f", -- Canopy Emergency Release Handle + [649] = "%.1f", -- Canopy Ventilation System +-- ASP Gunsight + [186] = "%.1f", -- ASP Optical sight On/Off + [241] = "%.1f", -- ASP Main Mode - Manual/Auto + [242] = "%.1f", -- ASP Mode - Bombardment/Shooting + [243] = "%.1f", -- ASP Mode - Missiles-Rockets/Gun + [244] = "%.1f", -- ASP Mode - Giro/Missile + [249] = "%.1f", -- Pipper On/Off + [250] = "%.1f", -- Fix net On/Off + [245] = "%.1f", -- Target Size + [246] = "%.1f", -- Intercept Angle + [247] = "%.1f", -- Scale Backlights control + [248] = "%.1f", -- Pipper light control + [251] = "%.1f", -- Fix Net light control + [384] = "%.1f", -- TDC Range / Pipper Span control +-- WEAPON_CONTROL + [181] = "%.1f", -- Missiles - Rockets Heat On/Off + [182] = "%.1f", -- Missiles - Rockets Launch On/Off + [183] = "%.1f", -- Pylon 1-2 Power On/Off + [184] = "%.1f", -- Pylon 3-4 Power On/Off + [185] = "%.1f", -- GS-23 Gun On/Off + [187] = "%.1f", -- Guncam On/Off + [277] = "%.1f", -- Tactical Drop Cover + [278] = "%.1f", -- Tactical Drop + [275] = "%.1f", -- Emergency Missile/Rocket Launcher Cover + [276] = "%.1f", -- Emergency Missile/Rocket Launcher + [256] = "%.1f", -- Drop Wing Fuel Tanks Cover + [257] = "%.1f", -- Drop Wing Fuel Tanks + [386] = "%.1f", -- Drop Center Fuel Tank + [269] = "%.1f", -- Drop Payload - Outer Pylons Cover + [270] = "%.1f", -- Drop Payload - Outer Pylons + [271] = "%.1f", -- Drop Payload - Inner Pylons Cover + [272] = "%.1f", -- Drop Payload - Inner Pylons + [230] = "%.1f", -- Weapon Mode - Air/Ground + [231] = "%.1f", -- Weapon Mode - IR Missile/Neutral/SAR Missile + [232] = "%.1f", -- Activate Gun Loading Pyro - 1 + [233] = "%.1f", -- Activate Gun Loading Pyro - 2 + [234] = "%.1f", -- Activate Gun Loading Pyro - 3 + [235] = "%.1f", -- Weapon Selector + [297] = "%.1f", -- Missile Seeker Sound + [381] = "%.1f", -- Fire Gun + [382] = "%.1f", -- Release Weapon + [383] = "%.1f", -- Release Weapon Cover +-- HELMET_VISOR + [306] = "%.1f", -- Helmet Heat - Manual/Auto + [310] = "%.1f", -- Helmet Quick Heat + [369] = "%.1f", -- Helmet visor - off/on +-- AIR CONDITIONING + [292] = "%.1f", -- Cockpit Air Condition Off/Cold/Auto/Warm +-- SARPP + [193] = "%.1f", -- SARPP-12 Flight Data Recorder On/Off +--avAChS Clock + [265] = "%.1f", -- Mech clock left lever + [264] = "%.1f", -- Mech clock left lever +-- Flight Control + +-- Dummy buttons/switches + [632] = "%.1f", -- Radar emission - Cover + [633] = "%.1f", -- Radar emission - Combat/Training + [634] = "%.1f", -- G-Suit Max/Min valve + [635] = "%.1f", -- Electric Bus Nr.1 - Cover + [636] = "%.1f", -- Electric Bus Nr.1 + [637] = "%.1f", -- Electric Bus Nr.2 + [638] = "%.1f", -- 1.5 Mach Test Button - Cover + [639] = "%.1f", -- 1.5 Mach Test Button + [640] = "%.1f", -- BU-45 Buster System Separation + [642] = "%.1f", -- SOD Control PBU-1 + [641] = "%.1f", -- SOD Control PBU-2 + [643] = "%.1f", -- Eject + [644] = "%.1f", -- Ejection Seat Emergency Oxygen + [645] = "%.1f", -- UK-2M Mic Amplifier M/L + [646] = "%.1f", -- UK-2M Mic Amplifier GS/KM + [647] = "%.1f", -- Suit Ventilation + [648] = "%.1f", -- Harness Separation + [650] = "%.1f", -- Harness Loose/Tight + [651] = "%.1f", -- Throttle Fixation +-- IAB PBK-3 + [387] = "%.1f", -- Emergency Jettison + [388] = "%.1f", -- Emergency Jettison Armed / Not Armed + [389] = "%.1f", -- Tactical Jettison + [390] = "%.1f", -- Special AB / Missile-Rocket-Bombs-Cannon + [391] = "%.1f", -- Brake Chute + [392] = "%.1f", -- Detonation Air / Ground +-- SPS 141-100 + [393] = "%.1f", -- "On / Off" + [394] = "%.1f", -- Transmit / Receive + [395] = "%.1f", -- Program I / II + [396] = "%.1f", -- Continuous / Impuls + [397] = "%.1f", -- Test + [398] = "%.1f", -- Dispenser Auto / Manual + [399] = "%.1f", -- Off / Parallel / Full + [400] = "%.1f", -- Manual Activation button - Cover + [401] = "%.1f", -- Manual Activation button +-- GUV Control Box -/N/ GUV is useless, it's mostly anti-infantry weapon + [420] = "%.1f", -- On / Off + [421] = "%.1f", -- MAIN GUN / UPK Guns + [422] = "%.1f", -- LOAD 1 + [425] = "%.1f", -- LOAD 2 + [424] = "%.1f", -- LOAD 3 +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- ADI/KPP correction + ExportScript.Tools.SendData(565, string.format("%.4f", (mainPanelDevice:get_argument_value(565) * 3))) -- RSBN_KPP_kurs_director + ExportScript.Tools.SendData(566, string.format("%.4f", (mainPanelDevice:get_argument_value(566) * 3))) -- RSBN_KPP_glisada_director +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --[50] = "%.4f", -- ENGINE_RPM + local lENGINE_RPM = mainPanelDevice:get_argument_value(50) + local ltmpENGINE_RPM = lENGINE_RPM + --ExportScript.Tools.WriteToLog('ENGINE_RPM: '..ExportScript.Tools.dump(lENGINE_RPM)) + --[[ + Export = Input = Anzeige = differenz +0.48699209094048 = 0.31 = 3,48 -- Idle +0.52623742818832 = 0.36 = 4 +0.59046465158463 = 0.455 = 5 +0.65491729974747 = 0.545 = 6 +0.71658140420914 = 0.635 = 7 +0.7799117565155 = 0.725 = 8 +0.84348386526108 = 0.82 = 9 +0.90568602085114 = 0.903 = 10 + idle 4 5 6 7 8 9 10 5 - 9 + y_min = 0,0 0,31 0,36 0,455 0,545 0,635 0,725 0,82 -- minimaler Ausgabewert + y_max = 0,31 0,36 0,455 0,545 0,635 0,725 0,82 0,903 -- maximaler Ausgabewert + x_min = 0 0,48699209094048 0,52623742818832 0,59046465158463 0,65491729974747 0,71658140420914 0,7799117565155 0,84348386526108 -- minimaler Eingangswert + x_max = 0,48699209094048 0,52623742818832 0,59046465158463 0,65491729974747 0,71658140420914 0,7799117565155 0,84348386526108 0,90568602085114 -- maximaler Eingangswert + + d_y = 0,31 0,05 0,095 0,09 0,09 0,09 0,095 0,083 0,09 -- Delta Ausgabewerte (y_max - y_min) + d_x = 0,48699209094048 0,03924533724784 0,06422722339631 0,06445264816284 0,06166410446167 0,06333035230636 0,06357210874558 0,06220215559006 0,063 -- Delta Eingangswerte (x_max - x_min) + m = 0,63656064598776 1,27403670107974 1,47912357060508 1,39637396701862 1,45952010145454 1,42111952203622 1,49436603369878 1,33435890143433 1,428571428571 -- Steigung der linearen Funktion (d_y / d_x) + n = -0,000000000000002 -0,3104457969937 -0,4183701837679 -0,3695094679175 -0,4108649637718 -0,3833478226497 -0,4404736382191 -0,3055102038274 -0,38915965216 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,0171875 0,636 -- Ergebnis (m * x + n) + ]] + if lENGINE_RPM < 0.48699209094048 then + ltmpENGINE_RPM = 0.63656064598776 * lENGINE_RPM + -0.000000000000002 + elseif lENGINE_RPM > 0.48699209094048 and lENGINE_RPM < 0.52623742818832 then + ltmpENGINE_RPM = 1.27403670107974 * lENGINE_RPM + -0.3104457969937 + elseif lENGINE_RPM > 0.52623742818832 and lENGINE_RPM < 0.84348386526108 then + ltmpENGINE_RPM = 1.428571428571 * lENGINE_RPM + -0.38915965216 + elseif lENGINE_RPM > 0.84348386526108 then + ltmpENGINE_RPM = 1.33435890143433 * lENGINE_RPM + -0.3055102038274 + end + + --ExportScript.Tools.WriteToLog('ENGINE_RPM: '..ExportScript.Tools.dump(ltmpENGINE_RPM)) + ExportScript.Tools.SendData(50, string.format("%.4f", ltmpENGINE_RPM)) -- ENGINE_RPM +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- logic error with upper landing gear lights + ExportScript.Tools.SendData(9, (mainPanelDevice:get_argument_value(9) == 0 and 1 or 0)) -- GEAR_NOSE_UP_LIGHT + ExportScript.Tools.SendData(10, (mainPanelDevice:get_argument_value(10) == 0 and 1 or 0)) -- GEAR_LEFT_UP_LIGHT + ExportScript.Tools.SendData(11, (mainPanelDevice:get_argument_value(11) == 0 and 1 or 0)) -- GEAR_RIGHT_UP_LIGHT +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/MiG-29A.lua b/ExportsModules/MiG-29A.lua new file mode 100644 index 0000000..9d59796 --- /dev/null +++ b/ExportsModules/MiG-29A.lua @@ -0,0 +1,314 @@ +-- MiG-29A Export + +ExportScript.FoundFCModule = true +ExportScript.Version.MiG29A = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / MiG-29A -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + + local lMachNumber = LoGetMachNumber() -- MACH + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-TAS Indicator + ExportScript.AF.FC_Russian_AirSpeed_1000hkm() + + -- AOA Indicator and Accelerometer + ExportScript.AF.FC_Russian_AOA_MiG29() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI, TurnIndicator, SlipBallPosition) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1000m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_30000() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempLeft, 70) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempRight, 71) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + + -- Machmeter + ExportScript.AF.FC_Russian_Mach_MiG29() + + -- Magnetic Compass + ExportScript.AF.FC_Russian_Compass2() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + -- Weapon Panel + --ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Mechanical Configuration Indicator + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake() -- Bug: Airintake.value always 1 + + -- Hydraulic Pressure Indicator + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 87) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 89) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + -- Oxygen Pressure Left + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 89) + + -- Oxygen Pressure Center + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 90) + + -- Oxygen Pressure Right + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 91) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 92) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 93) + end + + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + +--[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem_MiG29() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end \ No newline at end of file diff --git a/ExportsModules/MiG-29G.lua b/ExportsModules/MiG-29G.lua new file mode 100644 index 0000000..3027304 --- /dev/null +++ b/ExportsModules/MiG-29G.lua @@ -0,0 +1,314 @@ +-- MiG-29G Export + +ExportScript.FoundFCModule = true +ExportScript.Version.MiG29G = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / MiG-29G -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + + local lMachNumber = LoGetMachNumber() -- MACH + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-TAS Indicator + ExportScript.AF.FC_Russian_AirSpeed_1000hkm() + + -- AOA Indicator and Accelerometer + ExportScript.AF.FC_Russian_AOA_MiG29() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI, TurnIndicator, SlipBallPosition) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1000m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_30000() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempLeft, 70) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempRight, 71) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + + -- Machmeter + ExportScript.AF.FC_Russian_Mach_MiG29() + + -- Magnetic Compass + ExportScript.AF.FC_Russian_Compass2() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + -- Weapon Panel + --ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Mechanical Configuration Indicator + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake() -- Bug: Airintake.value always 1 + + -- Hydraulic Pressure Indicator + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 87) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 89) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + -- Oxygen Pressure Left + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 89) + + -- Oxygen Pressure Center + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 90) + + -- Oxygen Pressure Right + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 91) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 92) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 93) + end + + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + +--[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem_MiG29() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end \ No newline at end of file diff --git a/ExportsModules/MiG-29S.lua b/ExportsModules/MiG-29S.lua new file mode 100644 index 0000000..ed5ebcc --- /dev/null +++ b/ExportsModules/MiG-29S.lua @@ -0,0 +1,314 @@ +-- MiG-29S Export + +ExportScript.FoundFCModule = true +ExportScript.Version.MiG29S = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / MiG-29S -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + + local lMachNumber = LoGetMachNumber() -- MACH + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-TAS Indicator + ExportScript.AF.FC_Russian_AirSpeed_1000hkm() + + -- AOA Indicator and Accelerometer + ExportScript.AF.FC_Russian_AOA_MiG29() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI, TurnIndicator, SlipBallPosition) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1000m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_30000() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempLeft, 70) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempRight, 71) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + + -- Machmeter + ExportScript.AF.FC_Russian_Mach_MiG29() + + -- Magnetic Compass + ExportScript.AF.FC_Russian_Compass2() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + -- Weapon Panel + --ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Mechanical Configuration Indicator + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake() -- Bug: Airintake.value always 1 + + -- Hydraulic Pressure Indicator + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 87) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 89) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + -- Oxygen Pressure Left + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 89) + + -- Oxygen Pressure Center + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 90) + + -- Oxygen Pressure Right + --ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 91) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 92) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 16, 93) + end + + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + +--[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_MiG29(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.FC_Russian_MDI_MiG29(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator_MiG29(lFunctionTyp) + ExportScript.AF.FC_Russian_FlareChaff_MiG29(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_MiG29(lFunctionTyp) + + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem_MiG29() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end \ No newline at end of file diff --git a/ExportsModules/MosquitoFBMkVI calculations.xlsx b/ExportsModules/MosquitoFBMkVI calculations.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..32d554df46eb91b9b4fc4cb96dfb5576bd581fad GIT binary patch literal 100589 zcmeFZW0Wjwo3&fEZQEL9+qSXFwr$(CZEKZnyK0rW$~?9A+uf(n>359&{f%$OkBH2S z962&0;=bo|J#$9NO96wR0Du8N0000G0_5ntDx>IBQaB6CzH86EJ6YdapNg=Z^Snc=YcMacZMOQ$d!>ykbsdq_*w`go@(f zPh}}0O07B4xX9D{1crWCJ7z|m7$@F0An4cGw8QiDoNcOjuXM83jWQmCZ*f)bIWoO7ST$SHk z*3}LTHlvC1l{BV?w6sLg?HXSJ z;uaUkWrNK7LOylNvGf_M7S8>`6*XGN+C_S;-#UD&)8biM&bD?zKjz?`gD6IX`3=+w zehPv=I3dR83W4vvn$JswLGk?*e_IUSr7RW#YYM5Ue;~%XCP3uhetg|6osxI-qhsIhh6P{7Fu6S2TaV~p`6zn>E zHi^ZNIpUcRN#%R)nMboOL(FqFwIHz=9X!QIZ`po zI2D;gil}|n-Y-O#rH7@*bTLVH3YYF!s>-&qe5tV=V$p?L;d+D_IyEdv5KVv)KN!6)3q9}Q7giS7c3Pe zGY<1Q!yE@rB6q!?R(*ejGkcLgyl7>!Miq%zke-=l#70Q-9(*;MSZ*h>-G8w`4pxrd zj0HsEmu&<7yCOLo1lnl@1^|G91OR~lJ}_=p^scrJmWH;rmVaq{m5PpSAv=n zes;hMR9;CTN!*s?Wtj!@rBu;4;DS2nLX>U&F?R=hbxcqWiq6`|3eWQac#L%F_Lwiv#;jE`0T z{KUh*HOE=&t>bGYqK7aoC4jj|4}PRD9Lcqqar6hPBNLsEyWo;HSxRF!iitl{VpP$X z%POY0{xJUuKOhlII*V?(9syWAE$3g!=zFC}ZR!k-K&`3pQXwEyIGs3A8e-p7!T*Q` zI-D}d7KHDhZx>45zdToHk>Nn` zyJqJhYdEJGlYO&|^vfv;nS$m9-7FaK7*aPJn`T9Hq_UnvDrE;`R8N+XWZ&66R8QRC z9aIBh!pWsn%1(qtcl#)-MUh@}t;JaTk$S?1s77N>#csjB@Yeq2J)qRS2FX~c#N)@u zSF8rG0yn0YCviLA7ySY?J6G{fs{p+SoqW9k1;Xq4G4}wxod5zy9C|xizG$L}8Sb43 zoRRv0Mb`z2n=P7%-argIGLFG)?Q7|Rypa<4820s!;SB?D4hgYHS1enAYQ7XKKA6F6 zS5o!nK~G86{ViDw3oCpxrMhTV1&p-ebB3olXd*U`Cx0{t*bw1u2*KCpUPy0EVB^DK zJdl0udGv-pYIOxHZ4oD{p6D#Q0Gyp>(L$8FJsEFmS)LU^#*ArgTc-3jN10h({jxU( zh9$Maxn?D1z?wuD&7QM)&hwIfD2w`+p!4~$%E`>lWlxc&U- zt6QGS41e{QN}LJ>9hP_u4x1{XQB_^Y@>+Qa6eK?{Qzi$)9S0`*x_1hfY6z%}jF<9E z&_bH25`U&34<*tsvEJo}G?-fcA&2O8ZM!VK!N@-;NlG+*{hS7@H#{U1rEcA)0l(WB%!CxFXVwTY56}*96EFWQ1pse@wepz6~|#VPx4o z14-E^B|mL#@j-V1KcI3jy7~AT?p~Zf?7#k6t+cv*W>^t@m23VmFH`Uw#hbp_*ZZ#E z|0#s`58zzL-_@@H0sw#o00H=2%#DLV0Yl0 zw|#<*4yLomD#m?>GrYbPDV)rOzPs<;BQpmHbkYTq2c!7F&XZ6>7vFmm?3;yoaVI+$cy0c$mo zLZTjv*Zm_ZdFH~6_ehh26%6^d`@f@WQ$pOvK7C}~5S}o}p9l{JIi>?=c!T!Q|J^0k zkB-nI3l0Dv83C(GggUP zBtNs0aGF~#6jYg+61uRFfk-(X6e)^|Qw42#lIHn=VY}~RAxWA}@#n~=R*9>RNHVP? zHCdzX)69r{GI)Y*3*ML4?G&^_j5y?~p}}hz}6wqK)9-25zUJ zQ5P##V-P1i>joIgdwMew5?{b3OZs}2cggKB#tXtmQS7Ky)RX4d9}G4Kh6SG}Uf~k1 z-x=gEa^dZJ&OcEgA^DiSkbWGax6-4{sgemFfoTZY>TSw5)QTC)>msz{NgRQ(!RFYOFVms1|x?mLk=P#_f{~krXlRS1;Mo1OLAn5e zWE+A+rr)Ma2`j1cT+8eKSwbAq!oXCNtfL>Uj;;9UX83DNy5*fZZ;6e7K8MHi^XBwV zXfKcN{mILqUPF5`m6Q!QsglywQmo$B#|QehUhn74*)7}YBKhsWuip2UiPYY&Th52N z{Y_N*9`C!m(?s+g?}uZ#Slsmu9Ne@U!tnZ=nmwayvPc7exVKwCzU*HNg1-{@5l>vo zt|mr-bhQZ12Au0I2R3ljhe5lzdo9;G@Ne5mV$y3x>p?e-qFgXsId>~ECT?!*a-_Es z|Fnm9hR?=ZUeQTb0X!Wu=c(;0u0_`w|Avh~3NK;rpI7Rw7mC8I>=X(+TH#^Zm#z!H zze1=D3|k--a?mGLq-zo~44W7*CJ0);o7%Rn9W1k4;_>=PZ1DX(7<|IYkA^4A=oBs# zIfNO1;PyoRJY;h4?H41fp(hdch@kxQYD5zx^_w&F0ZX743g!Ur4NvD6Yl4)+$$Wbx z26H@*%WAYdx8u5W!sss_GB`q!c-KG)bg$SoE@2)a9Qg*u%~r^kfe#a+Hqb+hj3n}~ zSL12i`mU(-ZhUm7fVxQIb?%nc=BaRIF3vyY$?KgMN={M37@n=Xj_R`p%oE4$b81BT z$+#DiRn()?Di2xufW`?Gmdlh5sSwo0Pq#_db*8rV0d8m%;fOm$FId7`k~-{1S;`*S zF>o@wKY)(#4SS3pk~5;}V&&Z8kTOjAA3uDo>YsC{f3NA&f!c`kcEFug1=2_9P? zrw|k@1Go)BAfRB-w*taYKedIkD>bdIk}_8_S>b_EL{+=LRRm)%tyb(fyM-YQHMba`uyr!CX}XbwL- zJ_uN(cX|1blU?7P{ z;zp?*EtD!*a-zv|y!J;EbW52PcT4YZ|1xmaabMq&_Eq zmYT0AYJUX9V2z6EcJ#O_(tQ*vur3f{f|GP?gj(8^-W62?HJvW%k;q)04k&L(&rA^O zq_oyy?{492UePU5L`xjy)ELb$&k%sVN5eIh@}@D|ksi9pB-d`(j_tsF77dSRDMCcv z=1)eZH2aIo=B3#JqLqr6#qtID1Y>Z;4XmAbQ4765sm%pbBFE<0)gT2Ey&+UMiBmgK zb{vc`KFu@f7p)$xZ!#>)98Q5XwVEFSujWApKQ(@)J%SV0s2fv1v3bZAhC+@kzW<(5 zjooL(&<<`D$r{c;H-2<%H!$Zh8)A{VIz2UbOt@cUpu^b|qkm={YW&fQ>%RWD*-BT$ zJV#OtF=wQ_OF`PtoPi(VHIs94)c6>3YZ?9d=XBg@6~K?(a$9WpOXH4U=D$r#hN#XK zof1z&xej3~?}Qc`sETbqWN960Ea}?eke1vfyY?2nBZ2!FXmcl-WHh>D2O}CA6*iif zX&_+a7FnOIokiJsZfnT-Mzbe1o%w0bC9|Jj$2Yr{Ou$|JxjpQB*-I5qYEHKHMQx;V&bzkDdIz_%n_w9lNW;CJ=o z6|~_N&R+qw4Q54L%xgzh=&lZqXs3b^BO|5tCefSsUiW*n*Szen5ec&2n#c1rtX(XE zO`3TqK)PiMXD^mHgLSL5u3gI5`Z@P(L;ntUIilnjKoTAS_6YeF`_7p z%385M@;(Ttjr5Nwy?^!qJXv(MeEnN$<1~mgLjI<<=Whvy{g?bYI=NdJJN_lSMJm>| znG6V@yyjp1cdi3cex!)VU!>6MqA5Yo--&(v}^AY6z$n&(x zb4=WB0V)=&%qBgC@`emgOa-mN)Gl+o^0t|7u!unS?t zt~OgRJOiV}AS+!cG&r6DjZLeZWz8;c{gseX{(OX!znT~9v`TItLe*@kY+M>(MMY%@ z>NV+VGrO~hofz=$Jnnt;As}*7>qD|=cIiG|KQ<_Es1+l4Uy>M@ z7GN}61WDixn|fePl-aYIDBxDe7OpD)JYz3MKhHp{EY=Rw)I@F@?#zV)2zmIWTwjSI z?Z;2Z`;>gm-*p0mub=WlvPd}sGu53>lb6+G;Cx}aSF;q;k`soVSZWS7h^&FpV+k!N zMIfZrR>U=R=a|m9U|vadd(N?31#HHUrOAMma-fAHeu5iT6 zxm-)?`>G46^;9X?FtFF0ZX?Q9m#$A*ZS9}FboYsLWLfjW$-<-c@PQ?V?&)LQ-D;oc z;d|^5rzbW4mfJy*L4%}o!ZrW*t+kZ>xsuYIZpu8K-@NdK*G7k)vb+yoyRMQ!0RT|`qk7B?9E^V|IXRfynEqWvK}j;Uiwp>V%?yE0h!yFOLtCRK z!6!>bdgMc_JGe9oEf46qS#`WTv7Z%GU=qi;Z`U*DxSM8tnz6jW0wy=o)~=wM>Vvnc zxmdkyUD`As!4x)mmS+d2$oX|$>-Jh85KoxWw!9-0ei4AcfiobjOb1Sl!=pz}bM0Q0kGT2-8BW0cdF21>EEcr|wK(r7$T_b(xHRJyO^on@@*gfL>()g#th{+i5r z?j9idk*`Qz7U`r^WE**}6Q6^6>K?C)a@r!kld7jcds_^30{AG^Gtn%onQ)_Yw7saJ zQlFActy(*})2l;2SNd~J&0LHEa;H&iR;qK6mov1;noY7%i@^tz`wu-JLbzR)Xq{E* zmXUyATGx{Y5vfGpT5~f(%6MSpT)M+hxP8|oFMV#?cur6sZ)e8+sRmI_r-VIkve+59 zySWX0Wbl042yW^czQjH8GG9gthOrlJm6%%~ZzEJ{k7K`ZTiy*1S zL}KU{-j^*vyRWWX+EXHK5#C*rFuGm#A5>y?U`A;{YG|ga#Z9?u2Vvci%HxvzFr|%B=Kd%7ITf@1_@3YUw0sw&VuPflEgMsT`C!hX5 z9{h`8GPP{i#Zg9f)Yh;4-gynK&{4{`TTE5Vmo5jd!0VzY#r=p6$jU2xo_JVY+Je@K zVJUoeNf}*CV$yGCz8oh$LXVdmZqiaSMe6au58=QAy|PgkhF&MwpO0-rofuY?Pdzf| zBAt2RdX6%82M?ciu5wF{PRx;0fz$N6G5bgC8EPv+=j__Xe!oy{ZKA@zVAV`VI3%my z)W0)jrJN#5cWc5?4m-5DQ~Yu2NI!N*wXFrY^g5-VY>`Ai*Pq|icu*F8alou;bXTyE zn;JK4<{6JT3fh7{x0T0d1>W7QU9%eC_z~2jT`Bh?bz5U*!TOb0MUBShR8>WXcRs7MGBd{Fo z-k?ctX6O4=)Nm3hq#~qh7&USH9F6dz#9o+;UDZvjK6^VptLx5(P0!FHU|FwyCs%IF zauJ>?A4%!TnY-%1pQM;wIPjSRfW8;iuONZwa)B0}bZ67d@(zK^=|$fSykYZXo7DSK z%JDPW0McpEDTU6KHF|`m?DFhgn!MIGWc0Nam7baw<F_T;;qcFwW zb@!|tNhwDoht>0Qbs6Qlq`bcI2~VG6bRY!W&W4Uxog@fBP8ToD?z{t|7jQETkaCFezi_WuEb0Z5sHQ`{Taj8ud3RVl!liGVBysfH*s?8djmi!qV z7Y6)Jk%Yr*nDUD?gj#kp>>Bd+LMQyGZ5b!*$(;Lp%UjHIxsaG0gD;F6gmKYG!;K}! zptgeK?jF{4LU|`49TiU)Y8C)^$GuMx)g*{PF1-(t7Cfaf-AT8B$POsTv_X@gIQQ?27W0OKd(8fxcg*3o!Uxz%A%(g>^LpuIJyd{gkK{6X03OZ|-4~UX z@GY%6Zj47wx*c zD3&|Qhd$QaPJhwc^p3j>2B^t)Ko733Af9)1UBtp5!jf=C9IsGJjEFiv(>@IhV zyGM}S6N5p--Oc{?yvfgAC@70r>lnsZ{xd?qsNOFt$p{sy07tr zv21+%U885gNGW;W#Q?F_^+3}sMTG)_oLEMdLy~Y2tk)}r!~I|8Awrh6i%%i1l|S}= zT)sSfy-R<73&H=Ch~tc<1b}bxsK@!QL4wiuAi>Fz{_o9yOmS`5Zm=Tw;@5o%AV0FQ zr&z7UM6ZezkPOv1!R|M~dlr(eFAK&)NszikeqMJHQ@#||pO@g)<&OmtCyXq3f4Yff zcWE9@dgdt_2f%;aP~7m0BgdO~vEJ`&>9WRn%b5=-4SLir|zP5`K*lXUZ@t zF(tq^$^cLsEIurvS3n5-P@RRW`08o|37FhKWD z+nR$9sPUj#-hF~Xr94KH{D#SgF7W`Vft6qaSJM=hy-bJZNc6^VpAK2njeu!}f)@h9 zViXPAMNNby2PYvg9Ub#9KOB?3mr;Sn)a+>z*{h^^5?T=xm;c9rLt2=VJ1q|-3+IxO zh(o$Wac$WAim)I~D6dJf4>X?=8D1!_F^nN~;K_h{T}2$e*R?`|;YsCNg7}$d5IF-Z z-fRQbFRWq0br=#QkEjxsKp@jBUdrrkKbAA#I8ne+W=2Kh->o>WIEv^C>L#vn1KLqj ziPu{K^8IMy!i52Zxd{^~1d6gN4Cuwf(?`APolrJojI`#+gCMT`_(v3h8 z0wW?L#7bZljnl@)2G>l?OWxtPQ8WkK^&d5+Nm~{7(HHKQ9V3uJ$F8UODVdF(MWEuu zd?nBYc;eJo4LO{8c#7^VkpSX1B)s0D1jA&2=S9eYU{+OUkuC?4MIGiYL53_^9YOWB z>z8*xmZkM5vW7QSRq-KP`N!+y(Gt|4PEkq<0^cdqz6|-JGqV$bfP>t^W~wyhOgjzc znTSEtO%6GOU3}A z2!>w>g|T2QlaJWKtJ52xe9M<~oHyVKYMbhu#Q@Bl3r{=RbvPt1d!x+>%Ag(RIA~U4 zI$H0$$D<`R&aN%~?K%yxf%LAE;Jo07yp%cik~j8J@FRf0Wqt|_o~QwED=$VLJq*7Z zid)g1Br*HhWr2CMSph^$iygXwr^xEM2r@^8K006kwj>Hp^T7A0z<4Wz?(Ct^#}&O- zS7zlLL_YJXfXl^6Yu$iDS!)9>Dt5QtVPn1>zU~0>X=vE{rqcl*VfjjnaB37V`nKVe z5WyGD*&bLjKby6>dvjYzxf7GBC_BpnJ=8M{?(vqFEZO%-Lg~dNS2J0UuNA({?g)~r zOk1m6`AE>rm9>2!kgiT%w6!l$O|p!OZ}{@j9$`eG&~dvPK<@rvcuk~psqLhBTI)l% zb0OwH&N6#h?MY)!Gja|$iMx~j^ty)W4I+oZH`?X8VIyoeIJ)tM$l_P_?tYW6%OtF945}E?`(ApkSf74TPI9fWcX*|;T1~F8FL!G z(#zrdk6_29fT|y_jSfr(PTHw5CXggmBE*rBr?TW1&K{S#D?r=Jf?N?5-5bf2%I2le z%8umptAHvqlT9j2z#KA-R>{-MpCL3^v?~xwN>sKOAv86?mR97dqgn5?hnDH-1>+eW zg%wQ6+0_Q6vsnBbndtIn6ug0-VN-eT{i>%N){@UonGRm+nGWhARu&`HpwZ*48V;ew zy+2~jXQUSZhEW_=3PNNM;+tVPgfFUBs|wjTwXA?Yd7xWzS_p6`TfR1SPH@+ixR>nM zI_SE;q@tgsBp~3vLVU2V>~?i!vODNj@-#p-ZK64E`dr@WsdP>B>{bL zNtRAppnt22g!L1qtEB5T}L(_G;jOVk*dG>t=9q(L{` z-!8ea3{wz<#}doJyhkC|HKQ>{LF57w`H#^MaX|O_8MCp>lx=b6a!mpcQ~C0b1w&Nh zUI;2V7D0n|CP}+4*|djLZ|b%wCFQAy)TKilJG_K8oq2soBpVWfI%iuAfJ_;e_u@|u zGWSw3B9Wn02Iw6CyJe?`H1eUk{51+p1xf zuR>xoD~4)?qW*}S>wee_=E%C*i|tu+LuNZJ8Jxl;>>iM{p4bY`ZaF5g8!v}ZL$FO^ zVU;Dy2GL8KHxX=dCxRmSgFviLWK>QLLdMAL6ZwkHL>-Y3#x!Z z{MiZM!qto6+tWAN)_>#RKo{vud8mXu4{Rud6>?Sq91`sXSaYzjTCqWNXInts#KqWx%iusG+SGO!& z%!se|A(Uv8a8Jjrcln0I^L2zfNtb2uX1LvUl{^}sow56-nV%fU5UFXv+i!fuI3(fT zq}f^UnJM<{#NF`6 zcEpON!&CHWDt`ddlC+3>t_n`DmaEMePd*Z@EX9b_Kn;NAII_lnRh}3qSW)hw@8cGT zp-M>#R`3Ef#=b#Jc7>2-DXV*GQx3Q3~NYr^H(r;=|;b-w>DT@_ViK$-C zD>GKebyGjN$W@k@a=zy^`A}4cl)NN&Y~)(SI-PaE72~yD^0TicnOQI&S9#mIu4;N0 z`mJ9s^ql2)D<51~`>`nvY(tGfHkspv<&>^K-%Ij|C!%ImR-1$CfYt%^5Sz(9y66-T z3%8tfh|3n|Ev;#7UgL)I;N7jP4uWQYezY|=tQ8kLbu}ygSVZc06>}WlZlFu7*}B_% zMOwe?{kQE52c@*^<9mKS@LE=gh>5dZ|A))z9jT>YT_B2WH`;@aH1Q}yOzr#b(QQ- zt5CqaKcH~k69`3^vWk=`+zxiN)@bP)x^`Cspm~Bn^mp-tT?U2`6SDkwl^iyp2T#Pu zByIRLQZNwLGxiXh^}{VJQcSIygDT{Rd7Gpj^DM!_212rKLp2!-rbL@w!dfuq#$_X^ zw*r+AP}VXn(UpDE}8qy%!YZqIyN~Vshm$dee5@ zJ9m5@q0Yh|S4IaPV>6r%cdnZ`|E(uc1rks<2?hWF_wRv;>0g-u4ciTN1Rp*9uRzt4 zje&Za7txD>_(a3{Q`WEr-V1D*IaW55@;GI~))U{IJwm;yy%O3wvAf-{6|>(5lQ#z^ z&kszd{j~8BP`nV>VhR`tF(RTbUI;zCoR!Xl{N}%ye}Rw(+KDJXdp!S<8)=J07eABm zXMp5~Q1j-7K-Wb7@X*-<9gF8g0^MU^MP?Gi%5cz~A?X0# zQae8)JRh^|(6Xt-2_IXjQ+3^~XTPbn_s)nUtn4(z|C190Z zW~yXfF-biFNS{pz8Rb*g8)l<@8w8}`zE%pi)KhTf;CBo#S0vOx`K=`J1O|Q_A+`&@ z6cys7SsRQ=e&%9wFv$%H>DX3s;zp@iQSYGgDTw=Y&FZobT5!V9*&hZpr$2%i(2?Iz zz*csZ>p+0!GW1L3;)$X%7{MNlr$M!4g_4HSyqEZvK(j@HQBKN6(jMqun6C) z@a!F~j~3pa1~C@Ll1EMZ^Or{+8`QS`VH(sS1%|IfG79#+#^mq zQx7Vpuz5C+7@A)M;bDq~4ze#l#+FOBz6j1AbJCsk5-!QsRJSd+CV%c+>TCJ%C;!n& zNVgwcV?ejFQKa>8cfO-Cf1I*iIke@1(aj)Yuf9;0;)||?>n>e4&(uXwJ3)C)b;-F- zRLTb)?YJWN^|4{_Gi7U?xuA}tJ40VqfNPK9%B4^jU6%g~ov(>Rm)@K-+Xf!zWQ=so zL!xvms<5r~^PKxWr9^LjH5c$>6l8RfEzZMUayV-B>Iu^7Gkq45)F13_E7B5Fp z0IKMe62iY12gVRIXFPb8H}*{^g9f&oX; zyXc}6KlUZNBTSAw`a_{WEHwY`bkXtdzM5fb(Umqf?8v8m+{lyA_DfFO zj&Ejlv$xxYWQbSz@7^`y>|98vfAhB3MD4&p#1 zPKv<5BZpNs9R7G@W~$d$*QoAY0c9nx2dL**V`( zm*RcB;HHz0t-D<%#8Yi??wj^WoJVJ6n2)s%Cabby4Y{yTv8RpudjLV%QBJ>3y!eDN zGz(ku9>>vm%3UmHH3LI#Yz(IXzz*<*@1LW7xVEE`*7>{Kf}T4(>z`78W~KI75%qYG^v<_*n;zRT|2D_ypsr352G-Bv$~^y z+MDtIJZR4;sU}{g;jefBh)5=Ox~fO1618rfUSk(?h)B;6*bIu!p~!$T;X*cxi!fu} zi44-+Lb%Tbbb<-uAgu1J%YDSHM zGyKVon=Ky<3akie3f1QFI-Xl}ixYm{U zqST;EMc};{3gY!rp!47YY9QoRyaIMeHIL!M%zWd)6BgPuY@S21w%GR}yJ~@=Y!AVtXc*h6u)5`-%aY1+e+Ec?AfUav}tE!0dqP>gb2R@JIPw622tOFgUx2 zE)9BoDZFnK>@g&D-MG(4v53G788#uho-t1)eECi*OooOAV3Vj`g8k?le}WiJC~@Ph zx(_C_f3BwYGb*~X8RI=;`^lnDW>|b7(RePVP{;tPN0nY;4-q8B1d0U+0Y@9F+T3x3 zdWsn7N(xKXqbelC!a;P{45S|s(tG+bQ=ipsobu}Rgcbv_twt1sw8gS!GL{*AWLAE= zMd?KC4QGki97kk8cta%-ozxKco^88MMyOkMsjJgJh0#(Qv5$p@Z|rpX56`hfmt6E{ z?_Y2j2yp9}_$HD~ukV9Q5sGaYv^Bzj!fq6cp0nyKvzA)7z5tv$U={kGhAa zSYBBJtv>)&rd`9)*J05Uvj)2*P`*x&7jh3iA$&UHhix0b>4%`LdQvsf$3iWeUGB$5 zOCx`cJmjI?xQEYUhGx|R{=wsuJvqd-kKdsh=P}yTIu%E=`Xuu zo38;Ov4U4|l!pNVjAh?IA+h~eaU9r!yxW}Vd}1ta+P7|96!4pzv+Lb>UGJZ5Qm8CV zD&4pkf&E6tgHwSm(owXD*Va-9cZ`;B@KS_HvC#wGH|XdIkel`Keu@K{KQhJaCO~8EY16Fz^lT zZ@)mptmp+3MSqkYdCA^ZP5VqD*{L^%EGN%)*TK&Z1G{?I8Zexsooh+8rs@keI5#XC z;uV3C6S!++oQWgsE-ZGbo@CXvnq4}rt)`_%xr#BGdH3shbGGuQ7xJ~c5r>UMS5>$s z5GUrXDLVmT^8PG#2Ym7WDMjIUf@Fc9bIV=24sl(}3MN;{nv=4cfnulES86Ii*T}@# zL3G+I`%=v-qhS&OI?Ib5iiU~a$zFwUJ z9OSFm|B>)2pmT@n%zAH=mrEw6?QFSQE6C9rg1dgg^bSvxb)IQds=j3~Nd+?jP=_0` zWakF)eapzpW1G01or0?ueifXaUHzJdr$y{h57;3z-6!~4?9<*pD=o|JlXKg1vo)r8 zWJa~z$GiWiYgET#$D9IZu?9TaIlmvL1NC?p|_ z>q~9c*TAp!dq+NWkMUA~jjE6N6gCWHgc1{V0c0QZyJu9I#p~Cc&j#nkC!S|zgU|C=B9nf+mBP``nEVn$@E^2p8XBv%G@kUe+I?OIS?~Wg zPVv9+(Z2-pA3pkrkN)AKfB5MCd_MZSpZ&u}|HVfsRzJ~uzxk;1`|pJQBXa+rX4+q& zI+p)1haA7tbUxS8U%(S%T4HDt;T^+@q9qs7rLqV0S={%qM1+t(AZ7u~q^9qCUG3vI zsqpO+((#r9g|#QP;5#GXD-T*LvpibW#Rt}A;bVbz25F8k4I=ZuZqKUb{_vC|OduS= zz<>Nm`P`U`<-;irbP5m3K%*GKgD`N2gZn5}9LifuIz>7b$GZh$#>jMxCkBDk?S*6ZTC^ zOH{TSJ3ga0a$kU|i~=$+*sQ9?0u;woWWNBn{syFc{AZc1Z$Mgwo5aE|ZBhCUK&r#l z`tu!VD1m|oD?pk?F}u7O&kc5q`Q@y^!oLL+m4zs|xSn6;JVAHq~wb>I;Z{SI=lwoKok0HFi{+*>O9KbAa3YoWzo?1TqwuiLoH^GH! znQV&iQ4~cP(XKwq{3?0&Ed)=(ga?9PF<>U4c-A z^tO}4^>>75f^Aj-Nh?GP@^CG_?V<7#EXf55r`SgF!9U;j(DvY>3&87Sl~09Q{VVIjam-RAaag?a?hZhFd>vgU@FnjagfeI z74Oz3xJJv@0Lfd1HrrV9o$7%J=Y|dV${BJ+)-}>hGxoF?N2p^0#pgn1BHQIQK+l2v zu_g0gT*RI|sVv0STp5#9n(?^Bbx%9dV7;e)OjPacZp_#`rF13&nE8!vPDS!vo!9+DE z0_EI9)k<^{iB3d0&eCX?Svf57(&{q%^=LAM-i-(?iM!)v)cr_$giG41P0XaI&7@~^ zF%Die*=2U?p={AkUo^Jit=poxXioz#Bo|pOBe%|@s=P+~jd3U$qs!YYfk_F+5Zae5 z4&A=;N9yguaR#8P2C3Y9dVw>xq|Sq4BD`6?p?&=?&=BB)h{oy{@*^wJ+os>ZCJ-!D zDngaxC$cER-4tgJR!LXz_Zwth&CZ@l&?h5q#ZzALXjOg(UItgt0e(5Z(afT!Aw6SN z;U=oX)A#(i`tp`QUD;aFRhYzl?QUfe2GM91xt#jt(WIt-_qqF*9)V`%CD8gkFM!rL zc!Rq^e!;>2x!(Ts{Pd?Rhfw4Vj5n7YBca?KHLUHMcgXtDUE|H3=}61;zS=O5nrhj;$ro&WQB=kI>@ z5AXaJ?-T}i0XKZ}PRYOLoge=hhCBG?9s1d?JScB!9H|yB;jr$oqn`>a8?gHqy!X*1 zW|^=eR3yo(ovUBlf2ZNP{qVl;9nvjKk7XW=ElgCK2mo~zrlNW#h>9&>Ai#;tx_cq; za`oOm3H6^3I}U@C1>1`#yIHy!!I!m*_$v$-{&yIT5-$k4dZKAf+3h<)6C*6a9yJw2 z6BkmF#pW1(CE(VdQB85iS{*kF&96t0$Dg$F-@X0QA%Uw+N!m^8<3x-(130rYKJWa31tFd2S0%Y z?%Dx_yG?r6?%tq=hb1cRBM?pHahju=rye}3p^n4qDF@iVGONeV%QNj8?eJk5$2;QP zXO)=^@j%#r2vy>4s<=~zl2aV*XEA|!$9-gt%ZbJCNQ4rFHNjY8>rlh9@f-ug!5-Dv{G$Po78mb zxB?Hba$!&cTy8^4W8CrAN-_m@F+uoJx&@k($K-Vb25bVTdIGC!kPDRq5BCfUiMZLY zj`kTBAUqbw@XLcT1b4f5TH#sf2_~bhlrWM-neEd)^lLNa%aIDu)u|OQ(E;NH#)srh zNhfStY`{9jVI=MFTOpky_2DK|N;A|WzY~N3$g&r|IEYkKTUyr< zdbZMraeo>wr>Z4u?c_D$oU!q?anWjEy)%Sjj8)P_Jr0K3#LNlDDY*OLPYlHg)l@5w3%D%Z4j_A2_9HSt++_5+7r$?wyr1`Zm$}V}Cv0ai(`q#%s&&klIZkRhkEtJP95wHbngyzaW13BS z4lISeu8%eijs+svzluiWtZ!syO;_UV$~PnfX~5IyiUJ ze*Mk@0c?5vneO}IdACxtH|7ja_>B5Xwe|W&Y{!MT;CH?sEIn*NryN|zX+IbZ`F@@A z!-sVM)LQm7=jN4?_|9eaL62U%{hEk^tB>)KydFaq4!;lHSan^HA}`7tJ_~Gsgo+mFM?6j!GbeBfD1( zSU5!GwciJCcQ9lX)fd09q)01n<(#<<$^4`~1gZ;yAZJ8{UXsOfWoVuT!pFt_gr1P| zP1nS4CxkL9*|Sk4o@AUs8IkUBl4-0WxyjZcgBvzZ%hti>MhZ^wgVocRdEVxm-M>`^N+M{|0gXym4=c^M*KYi1UUx|M`gX`+N3=IDaD! z9R(pMAwZB|kN1y}4(mT6PSxijkt5;vePLM(R!GLT->qwemdwZ%hzftK_PpF8AP$Ib z{cs27j)oL{-!p+rz&jc)qgx8IxokjdClXxdz1fJ6M=@mAgxPdzMOr%V7$C$f7$DE( zFsIf~F2eg_lZ-G)vT3K0g~~}75X#Ttkf0Fn@1&U{sYPhpB_XA6HR|F^ynG?dxwQ`* zfRTgeqElZQ*q{RR00Im?Xxf@iP@O)q=Nj5aT?!+WJK<;GN9@8!eW@@#sn9;;-!4vl z5zExMdqHd{yaZJo0iy3UZB>Hp8^cIkxpphChadI*XQL&H7?O4(u$1O$o>63Vs1ds) zWqr(s}3yTmY?cdZ!($>fsOy5i4ycz=z08=wO_w{cZgoH~&IGESJV4 zSJm$>E{fh@;USbWRUA!8H1>daPeA8AQ8^MM?qk`a@&(P)Ftj^nQzBA_3c|j^*1B>p zZ^J04=*~ErGur07Ba*Z}=6ga{&ls_W+qf}4CZhboxQ9HY53}iTW99rf=fL>z+~dZ1 zwS(8zEDjVF+O-j`Ua*>pRfTPKX_`Q2)V>h~(&OL8B0GpxHCI4AGJW-k$6}kWA{OV^ ziIy9b%RHXp3PahbnG9C?L2X6Wid;A|QZ{6`;qYgVGIM;)0cUS@M2_1{KkV1zzCTLx zYYJi8VjfHDeI`|?WQ&4}9g()IA2YM{jkaO_ISszEegu>^g9MJ7a6IY-sqy+Su0F}>y0TY15VK7n1Z z>aP*4-suZ&l&-Lq%S4OEYq}m*Az`?o~Y8seLlhrdgMk!xN)7+j&p=+B?j*JM) zR@$BZI)NLdNjl7?S3bctn|E-$Lo$gz(tUdS#NN7QmytN?4Oe-!x}BV-aDm9P72Ezb z@cOmxUgW10Bk}UN6?tl|nw&Z6kS(40Z{I3Ntm3b>zMeX=A%r=tf!HqibS#_fcNj+G zUB?tiFc+=gK4ulocp?at`oEa3U*f7ENECcWCWw{;?c{}u<2ZTY7d)hgT>V}@Ef0T# z>iPbQ6VMtMt$Mgu z?r8-v#2IxG?PIi0U8TwSoCPLcsvEkNMR%1DPE^wm*lzHJ1_}$oASYr-#Sv z$H-{ZjwZ{RQ7PT)PZq&7$nP&34B*qAgH%PWo#}*tGWi^?R6+Kl5PORTO2ZxoAou1c z@^W|uZV;B=+x)!0G-LhXvbb&Q2E%NjBv`z-Pkz+PV3Rz;c0<}lST=W(KN!iHUK*PO zY1j!P){WjYy7h6tu-MtaA!>@v#L%96x93Z6164qD;4fulCxzCHUUcDZ}{ zFAW1zn#wJh-iIKH3EbtyDxRI5|dy5lXC1UC?eX|ArT?5PRp^H_on`R3!h zu{pSYyz-R04l!Lzf!mzyY$IJu!^#J)I?XFJs_Q_EU;b&+eJ-{!=w=s>96C>n5btt? zm!!2EpLsB>DJlzVSJsNyoDih9G;NIliIGG~3m+-B%0T1ct>8^#9H2t9yCqb*uedV0 zusMN$q>_KBo8on{C(!3HO>en3X1OZJ=PI*4#>t`vO<Egu*#5s8xdTm66mj`! zhImF+JYx<=>~A~U->s3L2MYLoAow&TNPo44`A^GBI;A?eEg&*Ne@bxoXr9-`Z`DAb zZtfO98SV9&NAN(b4&Mu)>3w-DuAc3<%@Lp$jb-AxQB`{=CtdS)j*X}?C!Vem!n*N+ zj>)z-(xp=V%7K@py#+GBO2^<2aOJ|}tgBFSH1gecv}C4{Lq&hp-{geY$AW_qQj?}j z7Z}^KkKRyBR|Yp4lpvxPhM^`b7pE|{QcwJ{FN+Hs4NZHmRm-H~KwYf?5YF9jM5w%@ zSNMvG5X^tHLd0usNB!sXG%buyCGH*t2HbLGWqZF!pOSv3kMdv=NMTxQ zD4BW--)0`ACZQFy#3&Srnc?&enP>-R>#iQ+Dax9Pklx3eYI>a%!WRWlu;H9YTIRc!BX7XTa|kX()Q$A+8vT4|Bwc0+%44LT#0Vu1y#|MrQ>zteZ1MR3z#*0=QAhbw8 zi3n}@2J26W2vBk&&L^JRWn=@Ch$I48iZz0a5KBYrx$4cu>42P6R*PKNGM09%TH(-H z7x?Xgr%qb|AcT8wW zix;?_zyZRKT0wEQ_@JgcttJq+srs;ss#sDnH4Sbr-pGNDxzM3=E+Ghk6hj2gpK?gt zXlspYBAr$Gg#PIrYzojxq*`w3Md>=E2HWN6&=&s517A(1 z2)fP-QO}SnIFvB{#WF=Hqe>fjYk0@IA-0FBYR+DbA}GtMjbFW=V^@2Ul!`fZY+#Hf$8c) zNk}a#`OdbEvJ{uve_`j=96{82_b|I-)?6?(HewLyfd{zU*~ zBd-7KqdptEwM_Fb{#iU8rh_)(CC94L33I)?>Qkc%8s1E7j|7)8efA7g+)?SQJ4D{} zCw3{3GaQIYnf2X|9n8WuT1l;WFVkvi>;=h|Kb6;2i%?24eq3d=A?6(Pg`I7yWrIMm zQP2MDh(uG!FZpnrO%lH7eyrU6VX-+|M6kX+L-P1#RcHI=sZq`KVK$Z{}-*e)c<~VyZwJxwP}OXEr;^Act$RruCdqlgw7vGBI@;g*G&XzB7#2FY|^~e4j#J8r#(2OGK@u-jiqN}Wdcu1*)3?d+5A*8F%>LuTUO>a zD7RyNG0f0@oyLmA*h$hxg|*|_!KHb2Vj+{UxN}c0xOACN_u!`vtY=_+?JLI}8lltW z1vWE$+GJf1s9}(Ebo8lfj_Awt-U=f|sIn;+BU~WRI1}SlDjWxWwyDHXR7`aQS6$>% zsa?%zj7njBlBK&kI()!0b6qvgem<#rru7mS0jt}OK2s?ZHP7bGDI-Og%0A6KOQUG*)%h|Xf$8d3@%Ss zG{f+;hBI;d()#=Mpbc0#jD0#beUO+s_PM_0RpJ9fvI-vs+En#u2A($?aQt;Km&D~Z zzx`}&dJ#+pPV>e2@>Vt(vt_z$T+Op56DUZQ9x1l3jC<~&e8BDm%V|Mm4B4x@i+?RL zP0#TgL$SRY0`$^O1u5RiKo}07W#k&wwk^zE#WTO!w%s!_v91^_geWbi3$QTQ_&o6G zER(}ZUpzLo+|}BXkcY7v*FQXfMxA0h=GKN;bE9zjs-H)2z24nPsJ8Htcov1(bMFQp z+Gh`f?T)a8Xp9RA0w}6;;%BeVrLLye$*h3veY}4Dh%QGpWH3zEG%D3yXa&9F6N?Bv z8Lz(%GOS`@yvg_c6IejgNNVy#5VnMOr1r55a!q5{`&qe^>T%whyaLE{%43{ z|NkKBwP-|_W_$|+AV|6EN5{{bQ@@&`7U2~bV$=Zm#wb}>8#!#?r+gloN+br7v1 zuSb1n*C)5QcY6r-Q4Ab*&mYDd>7~_@Cwlrly**bCo4-bW$@@YdDtdwqdwYG?NANX9 zze-3;1~yg?68-z9#PH?Z*q(|N^Z`K82)7bM(S_BROBBWGJ}b@60WoavPb!6Bdkj!9 zz;2Ug&v?AV-dpgDp?C~NGxjNA)3B3@`GNmnq!Oyt*mQP1>j`y@w;`R^!Y84&PU$I< z?)>DHuYGC;Cn6E`Qm+~Y{;OJu zGq+*O#1h6>iWHt*CfvD zF@uF)$)hjBVO@O#T7+;CdzPE zCr~1(1ts0aQFtGiJU+rh8k2J@l*G@J)7%}9*f1hhN=cGy1r5Cn8@(lVJLXslyVmMv zy-j$C@l3BWy8C6g;2C-~wQ7G2aH-~75VWA_sGlHXzN#W8V;?P%P2;;wPJu;s`QP8* z6ASpm!AIy{nU@sOOUL=gHY%Y4+}%)M%CGM3Edxh+edxGo?cx+gsfr&?`K*AA!|ecr z&mit265v>TQhvl>mL+0#KXo|A6NS`YZFIXqKqpALec=^p>%oEa^AuP{2WF5%;ra7T zosq%jBQ}ez(ppZZ#g^4V-DKaw^vbzwo|Bj_NGJeNWBv`UgteU6` zqLN^EoO&yEP==7qOqzHOexsMS&MvAz{v&n7kay(urokFB?ahs_gwcw`@x30OXk?PU z`iM3bPM%3@71N zqh?*f|CLHzfa!j|g2=!Aol12wiQfiVuzlA2uG%eCdFoVA%99D>q3Tkm$4;;ZH##C! zm7$Z?a^Y!R@ar1Q-yFEZG<>~fvWo*)Sr1RM#H@0JoLa3Plab!Ef|q`tE(f&5{A<@| z7q*+}8ct6M)Z`f|U`GTq-w*BL#0A2Bq)`><(42VIpaC18F%3_Y#emK|IOUpGxFJP^&)2i){2r=0MIVu9u3My{QUtd)zN97z%JSzS-v zlb<&7_=?Q|wWVoX7jeb!K@UOcKvzkbw`8PsD1Z#AGSxGPW~m^)^E6R&|EDRL+NyyR z6@sL11x@gb!~E|I%KLW))iec3wSb|sd;-E#OK>Guef63_wN3{Al|ixUJk6q`05T{` z4aaAqccJfmn^%khfnae0tY|NP-nFn9mE*RI96 zUV>wB!hN|k@2&m!e2+T%h@EoFF@HfgcJjj%}I%X_=& zpABChV4SDz@$O2peib9KKlmnNVG;x&gJT`+NeNW}n zzc6nVhy1#^sA0L{&V`nRewQlq1h4!ubO6vakZx^!UPKm)UjK0j>n7<8@FGJ;ME$r+}Y zi-#4*n#crpj6*BRiVyHyxDWW0PNG0wISm=ozZ9=Vf{Fy|eymYMK~6!E9F$FXVFjIX z=eyP`E^;?0Be&|tSs$Yi%avI-qio{&z0Fzh@H zU%xP5^oZfp_bD{c5tytT}#Y z4GL83n)f4~D@f_xb^H0ufxoN_kt5@m&HrDfS2A-zN&vDWj*PC_P1DdB{+n*smChu5j+^ zKW|!XDgr#-jAyi|kfktyUqw%dDM;IzC_-}DL|s6p^nhuK`AhV1vqpWGa`y@(n8K@0+wK65w++DK{Y9^i?n@SRw;W;z zZ@(IJd~N|PQ%6G{LyStP8(uPZ$*^wN^ysxaaAfsU{C&#Kq>OX1>3GEef*80`^CbwJ z;K_kBe?p`x>C4zhYX-{!`KoHZ5N)yPQGu-Rn5atSaMuV$v>gg;sF}cj6WN`AzaUXC zvkmdbGE`C|D}>$kgZ3n*sPt_`CTW6mkrH4AvkVunVqk@+q2#A&51P-JB=ymJ&sM4T ziR#W537nf`i(1?IzABQ!(a0uTX?3Il@&!UXAJRyAyq#E<*IY81IPz6whu!m;G~9m- z43ZRksAO>)7Wfusw}m(cI$K33uGKjtbB{Dt{ng{mUY+&TEp2sf=(a&=9pd(rDfEfI z5fg-CiMO*OMx>aLkhc1DVMH?YJK&5FX*A~qB%T`^qWNCRrVZMtG;t7Tm;QKge!3u<$ z=6L8aW6_)e?ictK*w@rKOnr^62GVs-Cvf1-346U#(_Rvlv{)7A44)YXp-YC~Wa_cq zW-Us_GY2OeqI1=A#Z8xPKRA1%;N|D>2fP{4hwf2wle6kunnb=*pzaMlV~l=}aw$%F z5ud(6+7!{_cbbpuV`~-}Hs#<{_6|2E1#lB9&DoRgHO`{ByE@KGPTvX|6iNY7?-Ka&$fL$XX4}wiAXUreA(}yDuWToVoJ*8VQR{4&M`@NNS=H6vk>Ff>Sbgg`%3r8zi4*rmoJ6NbaZd2Gh+)?e}hQHN|z>9Rv;X% zJ0l9j%^b#aCpj72hp}4GJwS*JMmuY?bV0Odm}rk$*7ioD_q+cXhd7#{*icbaV12|( zivcUL$D+d^*`Yszt*$D72xM{%p}&4Ia~x*g=_D7N5M{l0aGHq` zlt((wED*42lw6WVi-V)+FJF%;IJ?)S91EK=Z+8(KS^n8*JY4x2J(VGH(65g~&#oiN z6_~AQlZsqw9;OJQM7}ML2a2E!F-W!;F&#n}-ed{w?4Y5?NAHIx-zKAE8FG%MXR^Rx zhx_=;i!gj}N1%BwpyMQ28R1fICI@!poi@mcSnP4et^8tRx_sCSILV`o%IL&aLRpi; z608U3&^zp($xeJZq~4n?7-Cgp|0R=a?`eOOc*rT?8rQ8LHcuNob6_K@W6`qxxF>v* zicu;0Xu^G)ijmS4Wi#|L!eL*0nz5N}JIa3^$}J!dqU(b)Kun@)_Krnh8_FE70`AEDaZjQ(bDW>y2M>KcPF) zpK;$c=y{zp1*uo`*-l@7?+aEs%FKIZp-1JI%W=G5-!f&mSu_?xLe4JUU%!^w-|4A5|T77=`HILRB6M@8{0neK>>15zXp(c!XrAVz|wz%AX7b2W) z2Z)kp6;+tS>FWU=hu(;hq9DB-IC0z?zj)_w{T+x;L1x5XXr(~&YU>rJ`qhP*Qc1!U zZTd#<-XDMa@*~x+AV3~kL(?5iw#vo#&Qf`nZv_SYE`TD!wJF* zyRMGZ#Iq3CPbPcmONp+2rG7EpcCub|CjFObGo06o6D<-TN?N5{I)Yn;Te&F?3GS7v z22`9PUMo&Pzbj4)uN5bkpoduP?EoMA0@-~X!S33BsW=(`U2$?x72i>kjXe+^4Qvq- z&>=!#NAN^bzJUK-ak~4f;&iO1+`IO;3aB`BV7ykGZjq$FV{s8Sx{DEW1rHi!CPgY5 zN<7OIp*R0kal#L(1NpCt(-}oT8H_>tngEm{>x^@oGi;_G1=1HcXtz5!Xem3iL*RAL zYw!=QdBeE`N&s=4je$xd%r&M0TDiK>;-W3kW_X+Oxe*WBi1ZvB`s@O~IPesH3tu47 z^=reap9=KXp5N>j=1qEz{f>TzoXyM+XxN_%tl_eC4Wt82^Kf&9bF+}1Hs2#D0jKzt zM|_)!=te0bZk9(hcukUWSra9@w!i#Nk|ljL!a{L}SMcMoMC|KqBE zjglk*yGDPaq+Th}4rBY6sS}9TCru*hQXOExLmh7V{)S(|_F8nrPV@Q^K8Rypp^&?_!D zv(2lVMuM)fq*Gyz27~*1G9?`4W9-p&8P%7+XjBfay8*2;^H=B|bSC>yRv^%*Tvu39 zK~Womz)4{r0ZzUo5BOJEH1!wT2_VcCTUSXW(q>kGY7vXlt+@BEoXSUY(9@Dp7sUCw zk8Wh(&8#3;IMW&+#q8(A8%sxG8?cz2YY)=h!Ui+ke6O9FF(5mjmS;Fva$A!o;Xml% zEm3i?h ztj76`G);pmlyhs>g$sr>=3BCmS(@XIX5|9Aj`37DySQ;Jz29A?`OfmY%xxchpJOj9 z5KHLj_U~O*Q(rsyA5kx}k5w^QRT9#idNWk3u{x*V%O|xnH$+%!?82<-IrUNN;5lU< zA@PnYj1Nm?3#rB%CM0MsbEpZM`NGhfPBvfLOs3WQ@AJzi1{dv&_3|38()Gs=Ll*{} zjZkcSU-X{P##nwb=B;LHCqH0Ca|SO0-&x6nTp~FDgQKeRIcA#`mKPdyZ8=KanmP_o zkyn!@1jBl8v{$7{FYS}cS}QZ?9~Hv#Xb1URWAV;V=%ett7&yQnwd+3)dz7oF1or3} zU+gywaIQ^l_etJi3k9~li03{r6$XUv;ZVA;qxr>fFjP5K%XrfcE$~=WM^K)5_bm(P z%5wHy02>_IsX;(5?N&&0aK*jazF%CUxb}n{6qsF(GFe{9mA4fIKYioXP&TInuvBo`2S0|2&>=@bm^xZ}9X6Pybo)gbw)PxmeKsm%;ka z9PIB8+8aInO;069^t{V|B}xDO0Q~-cWB9WNt}glN{BCp3`{lcHH5(-?k)>lmVW9Ze zEgnKEAWEwImnbPyCl0qqJfH4SFN&~2>u9UHerQTHEY%fJsYvR~mmnRiP1N=MWcV1w zOY_nY0H0z>xk#jJ0GOn7UmgVLGbLZee2j9_iVScg3@G+uJlp#{2}@$1{Lb+`%;3g? z5+F=!h^uy^9QXh=rrwGScHD%#$qBrT1p)|@%v!mOS`%fe1HK9=?8cfG2j+yERQMzt z2Nva!=xegR5HpOSP{bx4#t3aYQk5*CLcwM~n5hcVD@ZWIyYmmZ6I!f8df`E0Z7^~2 zxgM{~BS^?!#O75-;x1P*@X9_IODO_8c+>z7URvu#Hg)gqXE#pZ>sB~apEFXqwnu|9z5M;$O!iK^b#{I9b*02jy zKR9sYhO{YQ*MgT0OCYsZppd@T){&HjiIBNgiqbMtIH1b9Vu?cP`~FQmcde_P;@vmU z3`U5`IDUr>b~WXG#I{>H8y)11|9{L8Jh2k|BS- z4*;L?0kg1mo8$|wd?B8Z1!<5WjQk=Gv-GIwptbsU?8(2E;qPd<+=)|LeDiXz(97Fj@ zhyBNhAweRPRcJ0leC)v)=mtJ_6|7_p@~{(rS@y9XQk1_5FmftxEkNe>_Le<`>C$VZ zp&{}Zx9t5cb8T&P0^;*oXnHwWmS#pQ5$=wfRe5nm;91DB1+rkt zopis==NQ|fc%MZ-XumnhBJ4H?rVWRqhdvd-9(d0vuLsa+`h_VH(RP18=$8VG1c;L^ z2c=lSQ2ibEKg~#Ke)H=P=Jp!~ zs7D+zD=}h8iO8JeW-f0`#;9H5N6adIFvr!H)Sx-2VZ#99zZ^&TAysUTxQ2W)>%AnY zH)d|Ih_eOOQ1VpeG09tbjrj63@&b+MR&gP{wH`i5HR8`iNmhd}T3~^H{gu_$P$LfZ z`^xuq8ILBupirFvs`6OAJD%PVBepMFDm2)&bY`WQ7;~d^$q|df`3z=P93ur-eHpA0 zsdTh98aT^sD|D_-x|11rBoAsmrZl0+@}=PAC22hy!ZciA%@_$0mpbm#&!78~CKf&` z)WYU0#Pj6%01u{C+Ml}!8`~Vd2sjsTarq`L<=xVwzk8+{SUFck{(woK*y#L}+~uom z_}u$+X~(GV(6ULji)_-M5J6oeUC&tx(4se4UElaS`2;MZA#=te?N2O#)Vs=|M~Y?Q zFe#4p!(A~e7p*v?pR;|gMAw#wm8UM-s|p9ku84svDd(0{9-fXK2Lhbz4v6D7O_QE1s{0596X zTvkyG%MEds_erk%J=8|r#K(ZU(s`p6O%`&LoA%M|h-cDM56PHQx(IViNT^>qDEEOS z{3PdSaSRTcnV@;2THK*$^#UJn!#Qd?yYAU2wf9pD_mp@Q2C3jAfdKVJB5!Xc+|&Q*Efymj^@ky+u}D~2aq^}+-+?A(Xr1SIkcV@MPSCWMvO>w+Q+6f zM{#SN?jyJ}?M=R}7BWF@F)6UW>hc1%0a;Q951Se(lrGB#m2k%4p|p{^djt+%t2fQ_ z@{T|s^Qoo#wPeclx?GYicOLfQE>ri`-fNbG@|qo0jUD;`JOlx_totV(`ZE!(uKs^FkN|!Mbc#^G22yX{@!x3@$bW4h z{Z5nQR7v`5Cl3sH)qd12KUXy0Rd9LLlB?Os=4AOHcHfc1fOb{(Q)Iw*JF{U#=wOmZ zxO`1q|BOi+0;3zz_Ui-_@eEg-n--ZA7;3}JCwN2ar`@;(B^MdEf@l^oZf~9dx|pEi zXmXvWnO~c&0HFInvIx+kNcyCyw02RA{aLD+M1h{VfIWpUwCq1y}mN zQtr+9XR13tNTd&nkqf3 z6=JLo<0f2ac6?=Bqg%Q11_%Qy|J|%!HG?aQBexa$iJ!iTIvXQmvYE*6>t&ruV_-97 z`Sw00d_zNKxG%m*$DN93^$F1wMdyQpX*P|CA;6Xw7(coGBaW%wzQ96T|lELNY1O;mZE^&gW zsFDeSK)`&&Mnv0aTp$EZ2oacnl{=typx!JVSGpE>LMv-5C-!3L3%#>0MBI&r_IwX* z=i7=JXNz@)84kFtGm738S+dIX|B?9w@hL_u0q6t(ihdygxdT6#O&4e~U7d$|f9jp( zS?KiYhzk(lvW_g!vZuG5c#O9>0m?v(dUnc*t;dM;9b^VHLX1gjm6^H}SSl6io<1eR zhfyJ6-aDbl2ZVN-Z>|d;l0Pawno@bTd47Afg0ud=R&Xo@d&mrpA}0M0>(z~gv#&`K z4K27PM<&}ci7od><(=z0tEFJ6z5BGW8LQR7{UPXWAg*;~TlxKtw1cF6A_?7h>{Uqq z#P2CX21s`5iFMPQe)*Ryc^gf7ir4-8tm$6v$Q0wr=5Kk9KQrnqo!1MWpDobQC|-NF z(Kkh~Rl`!jix<;*40bjJ*Xe3VrU_z}>bUJWBcpli*P&nxK%q;|jC2V+zEww2BK+lV z@2ihi|0u!1>=72BMQtZ5IgV0hG)5$%Ri;nzqT@?;bJJv|Ay12bX#~gDs7f}ajeyI? zTF?Q5&h|G138UhhM<#spOZ!+cGPVZi-E=^Fn^aQa{F; z@FEU#3sV7mYjOWrdaFl?cF~0Fdl&b5_tpK3-uwu!*;C;auXvrDR@rz_^|aEdITcKi zBbf)>F6D(S8(MtY0XT$y-F}3hLC9wXmZS)tSd;BpT^UL&!M-mHQSOiBP^mPIK32oL zrKImfda2CxgZaAS%uM8Q((;~bK#>>iMVCf_gshfuT837A22!cRf2-~EAeh{*e~ZE; z{)ocW!pg{Y<7KRX{n1ssbYDni20)%^x6Q?A&TZtZ84!oOaK}-o zeHDe{R7%U#mxTps{&I}0zY$!0j*mQT?_uTOA$p3js-|m!5&Na8_31l3NDrmsX8Bjv z=Na|UZ^#*z!+5uB?^}N^8RiS|BK<82k3&G*>G?f{^qJ0eB36;0)vXoaWT=`^gvER; za;JNpLRwx*z?iEUCv7hu3e(lR1k$KcS7jbMEp!`7%Ae(FlWyEaJxr`W{E>f-Mak_7 zOzLR_5QXytMB#b>QMfW)Ihtn)5L?nQ4XhRF+Dq+~eF7|Z?&t~ScU=wHpjS~i!-U*M zx;j2D8I)NA#(#;zrG#BX0HW}xY%6St-RcQ>Hn??8pJx_b+~1;bai|^k4?Qd@RRANy z0gv8MON$fm)-0?)=TV2Ub=d}{8jdsx+*;gzGxHMX;HJT zK-ew@duEd??gqU_iE zQ63dSiI~yw6A#pyZUof|{dmxqSR0CcLM?f`HvE^TDcea|bfF}185C?Er0t7YZHGug-XmmCJfiTGA%6gSnGLCHvje6Q7+ zhO>eu2#{Cn;g|Wb3@<0|%4_Q{f&Ly)D~j{kn%Br6d46YAfI>(a-{mvAs=L6CKlY`G z_5!9L#Xm~1H%VQ+x_g76|0@Q{6SCH1iXTN0q`rc=mDc!^2Bc7$S-r;X9!&3SvZtj= zDu=(BJYH#OS^HcOJ!z_}xLrisf<}u@Q&L~V<7kIAYxr3weK!S<7?hce3a8iHeIPb| zOk1Qu@5g=q2dyJGr6FXFl!+gy=KhO*Do$iybUC0Elgen7GIKfw;T_V$lO}glP3-wm zf7sIeC}BKZ9}6F9<`?@IJpTzvn;k(X?$7{pnIaldz*7-PxZCFoSkMMoIHm3<&{LKx zKoB$nrfsTghkJgLn0MmA50zJd%z~r z1;s=xlhifTrvFv#Hnp(x0>-d8w*AhsSv*T~5XORLQd6Z9)hqqHcV|m!+z|N)hhMkv zqtH?7uIpn;4pKdM0B2)}^pYF`!zP1E;{GnSAw=j@ns^Zc>wvRwzWlr_>wOQXfU`b& zS7R&|RFRMDM#&1+mLQg74*dm;u1Kt+U~4W;#DfYQ)$&Hc`E zh0MlGsZMAX^(=Ui&!F&SfLjOiP|UzL)w-0r3Kcc0zwtC`dUZ5ERQ3~zgU}moJ%k}u z9NubN&&HhJX2$lF`em;q8lnb(;RkXPmp^pVdgRG}^y&VxA84PUa}ZS{|4h6ZyQs}C zVbK+I7b%`JN=L@lZ0qB1%!Y5h5>*nxl_7vn<|+SqYZ$DIwvRDT%3bjL5fTC)A#B{Z zJ!zR~Q<>T?(Cs7cckH@A_MnM|HH-9uU@J0ZJCF(xYb0s{S0gHX%PdhUQ#Tvyc z^#piA`prO_%%pPmN1r6$GpGggs2o>~kV6ei!%+`5%-3H5_kncCsE$Uz9Mf|g*0|fu zr({6DG}X>$XqM2{>p9wMx*=N>UbFHxYwG%@e)j3sL< zo=q*yl08<15Y$1LK5%@tPKkPZld4%%in(t}CpWqu9#a3g5m}p7ipF!%7EWD9%zGh;gM{fKLCG4mT6m$+EuT`; zXx(K5ZvVYpDs`|xZVxUyQwHdF;fE*OLyhK)CMU$~vS0?vA?_P^t`=O)-heA`A+5@7 z?ECD?{GGdaSHD|=bmj_Z0heP3U?MLP=a8k*YpBNUZ}zUwUJ1@^`9r7ewaSb5NH5~` z^%w{s0e3jGmg7)9yWu?Nsw4sJEQ9wS4<{f_9lRBG1lO!Mb9cWg$bV9U@i}I&fDcAo z-<(bG@YdRaITIM@MBhSF!eZ!3cKLUL558-|FT5iDmvgWp6C= z#xid#^Tsm&3s~m&2knhz{$`n+OiD0+5Fns#C?FurKX-ti?ev{Zt&HvI{`$wCzh|io zS*6mWuBaaJ5}rcOC+0(B4Ff6XP!4200}UnmfVq559Tt**X|3}e$bLtG$D)9-0+-;v z$Kx@|-Eru#<~+;&&R{4QwSx&m%_6hKEO-g^=}CSOxk5xdDAd72kHSUo1N&H;m-;bP z)KRaNT2Ti*=^-n4MC{TJTam?z^l)R3Aqce6#{Ceb`pwxwu!X`&&ppC9_*7de%);Iv zh9p^J`neBeNMdKBSurZ19y}!#cuEkIDSw;@N?pR5=ts@jG!w-$ zwRn?b43auY!-aWm19$E9d0I4TaF`+Z3qP_nc>e&(x?GK#Av1j}i1zd4db81}xr^|N z)eXlLg}S4NMeHwl-PK7Kl@3El8_Tu&ST3wzxz@gV5G){HgoYtCe}vg0TmMYeC)KVs zLXihPPL_Vq=;j|HGbL$TF=)5awEjbdP!@)SmWmDO zW={w_5hOjF5M6>3X`Z>VCH#0-KeB5^$sN+CU+S^tsO?Y}rP~ale)mM*1;`|M;Ktq4 zmT7;K4TD{w#IWkh?2BZT(IA6$`!VfTcm!NYl9N_-1i+L8!7(hIP5RUm+tcQ zu{f>=>VXu|z?YYPuYW8vf4A@gO9w#s2f!rpzyId)=N|LVB)z)iD}=YvRs7ZX0itSCJJ9G!K z3tS<6KH>L@q(MWN7w;{{0;bzEFf_g6s zN4$8FqJAoRsNJUyP`6PSZE;C#?U^TmPopR#wZp^w?=PF)sbGP3VW&L|79q1!kOZ+J zWINeN-qDA5aUj^eH?r~xU3?6|QK~|vkTxg;!|m&R;KIVS7mNdvuSA8Yxp^7P*gj7! z_*qrp+XRmJ(J(bBmxU7-&-ciMwv(Wfq?IBm%MFt>;${*2xZII%y7=~|w0D`FMK<@i z(LfN`2i}1ggVHceQY)(QB$W`JcMP69*k!zk`s#j)t&e z2=U{x2@F$SB6u;2wy~cD=F8Zc#lP|^qcP%ZB3J>}o1vBU!eUV!Td<)yS zab^e}iyz_~xL5`&S6JB722! zM(+ees|ICw|6m%9OjMiWQAm1tVZC_p5g^r|jq=6<+pQn+RZRRLDPmWnLRprPQNH%! z&*9E!XcYKJO|aESqrZrD7k_Tn}j3n0`egp{-1)`Vr~- zMf{6zP6RSB+v+heM?z-8nt+wU4$yjhfgyF{vV<3sP^avGPi|PLT0CX$3ueoEWe0m? zz82tphjq1g;dCSl?lL&G))Np0k5N9NXEreVhCFd{R7ia&c_=bzi^-l>fJ;5l)fq%# z1aTA}2AnzF03YRF6;nrC*xv5BTo!1!$BWe2gv4j$M?|hOx6NlsB4|Je23dQfo^FMG zlOosIE{dkk;1rbzIGci`hD{Br%NBjW23^GJP;7>Z7}&>g456Ws0$avGYO54Y-@NBDxYaj!gbT*9QY-{ zne@?>%jf{KoKyT@bumcU48Cp#7#biUz8n{}W(lRD{A&82^yGRIa4>EIp@G=6DI_84 zv!Uu&G-BzfDOF)BzAk`6j(FYLT=i(4IcmHfB$Xq>up<^WBMz%x$s9mEOBcnsMT$9t3 z<)PLDw`WDhe3|Ejz`KsP`_SS;Q5DER7F80(wr`!IA?@kt0UYJXsY7sd7u=67R_VaX z#6(`P6QXv?GkTuyhpXqXFqzuIzj_~H>^OEDs){C@V3@TEMbP6WT8%i(Zky!Sc1A~q z+U@u6?h>XU$UDzLMwY2y`;lVjlXiAOebaC1cEU%KTqMy~6L4S^hidC^1<^4k*TVB; z22!6$W^j5ez@5uhDL3Lp*imAE>%n+pG2~`y5`jB+ne^KGYcsm-ac(b{U#476ruGv^ zD4QX8TAeiA0<|E2qxb-TU|W&Yl3`ZYcun=*1)L2YfCxNESXH-_Hlw195$s*;KGU9h z$|kIN_Y^yF<3GiexzPoH&tI}FpJkc@rQv!WohqZhP{v-`PiMpH0R74t3~pO-5*WeD z&FZQ^1zIwghe5dA*nIe~Mu2e-OZ%z(ypwYTme%UVA$<|Lq5S&VFYH(6=$vOmLtY^I zQyV-+dujY;)E&=^6Y7g+-!T5PXGv;&cDGxt2w_Yi@R)$tMk7L{t?jXu8zF$A_z zY-E?aFDRXHa8yY<+aB+AV)s3t`Mb8{xp_*dO=c)G(|3r)cBY}%i%S1XxZfzQ5s6hN zX$(N|HJ*J(0E*|?jl+VPL@)iS#Iq(_cJeR}9N!b5I58xFQ2Y(W-%$L20gC_rpuM5^-zc8SAWaDbI628C{AZ&1Yk~e>8fM$GQ6$lB z>VSsXloRQ1+xu(7jQsoG4KrH&Sn`=@G|nVbg~!ZD7i#BrPd(?T?77QSH)l1mu7z<# z1dX;}^)AJ(Ji%Yx*RI*8?g~Wl?+3B)A7H7U=dyLZKmH%~-ZH3;DBKpr-Q6`naCdii zOK?K)0Egi2?!nzP1Sb$&0wn0cgF74`xch5z?|b!ryf-ydH8nLgbE!H74RrVJEuXBl zzTH4dgNDq@rV$M6SGY|@e9v7PE!oJJOgx?>vJP*>k?x#C3t#(TQ3bvYaZ}JC{F`2j zZRBk{ls8Ne8MfXL;ltm(_j15y@5x+4D(~6g$`qhsKFguJ*HjL!L3)wpWQbb-Vtqih z;Wdr(H5BH9WciO2J2$ZOk$zyakV5 z#MlT$9aNfn@S8@EL8=P%%`6>`*-%hzr&4D`e(d=}VFDxk5{;R$H<`xHX7b4jst%f; zmmy7%A7(vVxFoES4tss@jf4e4jw0`zMpn91f`FG+jxjX_dfh6O^G%sYe7yQ%wc=TabhyGyLKNXkYLq*2bNs$ z8t&2zsG-Lv4Yx5~^sG`rTqV9meP{2Tl6Q;x0tXXQ-=tca@vG!%9eWQPG|0tFco*9L zqsYQUN=B+4U-OGP8l5sDEf9PRZ=9lF>yF&UhCPney& zbv{@e@CLEdV{LwcX1=&E^5V0M@poilUYept@;30QW{Y5Ar>3<9WRgj6Dsdx!0 z>sc%A=nszi!^jt-lD@awOZ+`gwPPH^J3e+$zdLYot+r<(f~nSNZRIR1>hz4QYyN^_ zeGm0Zu7Qdv!~oKw&rln@3gzFg!4PgmG9E!BN%AQzt4)s*ht@+b!}6;pm3{>gitx@C zi$m_PbE@1%Vt1}q(&o$W!pXh_^zW+)AeW0Q0!a6h-(@#GYq}CioOj-%es_pUGi+N* zYf4uJc60RCal^6taddNk=qlNT54s-cK~G3UAQ0xoCRP2pW{4}fr)ezFe3?OCbfnC* zU8v%N=2emLowYLY*pY1^$R(_HR8XJohifWq-l38{GiF|gmc+)bV0@83bNo`=xb02# zq$BxYTyi6T@?7;zpVkq&6$w0R*{Axt6_*$vV!I;J(YDa}A1ZyFNbTkAYkce2R9rVL zuz%$f_v|c;VQ{9%fYxrRl4R}4SEH?1IO1j)UIO}~l>Bw#_6a^u>iQXR)dsl-jcC<7 z8*1=F$+OH4<>Id}sDnfALMt zNL4R5dGtNEC%cp`<^7Ng>#m+b9qe#g<$eqjjBl1>I=&FYU-GP41$|U)?ZX=AklplU zw=(*)-(*i?uW!iG{a9$i9HU}u6$3`I^Qn-(fYGx4T?Sq+(1wUXOop`Y(bg+5uZZs- zu86OhZB@@&7}uZSgGXG@lRDnCAJYk_`pk`><3JtZLS$3?|OF+NzpU5V_KGUn4`(yyD?wwboMbHO0xG*Yj>eYbe{Y+gYs_c{!F z_x@-N6IT?M=UlZPT<4E^KHjhA${ty*N2rSPyA=Ah$z5md+OxMy6b5tf4x-eomC+~U zo5K;R>}fE6Fz1?uQN41TP2sRTCdBk6Uz_$=L=;^MQC7OB?ZV*2b#M2N@wF+lXS%jj ze9f7z-QBjf%uK(&7;@YLj`9Dx6!Sk_ri0U_0M;{eT7U$s>;89L?aFz((qxE3bIX(; zUleSY+ut0Av?ps{uyu_#aR~*JsNa z+lv>j9Oayo)|{v*GhAHOL9wF5vMdEA6~DejW%84t$*+17$+878$j(rE&nkI~XRvM%f9?yn?uK8uq(?Q2Xx{Nqv->AZ?H^|mO; zwu^bdfQXwK-#64qn0H@PAHuL9#y26&up4u$8D9DKg9uS8`xkqxfVd(Z-@KU4DV7#~ z3KkKi?wvWJDacZ?)cwGav@qtqWNP4l7POSubkAHg&t_~T0)eh*j?FKXO1~mt0v-$yh~);g-cRZ&nyfQ8 zo?h)fwO^G^-7S#u1j9^igIGWo4*3y<=IAFCKeR;CvA(4qSA-S&BQdK^Xtde)zlm0` z@gB3aBpE+4k6f>(cuKG%$H#FJ;r7w(f)@-MXoXH2TQ zU^J25t6=ojb618xxfF`NLMyg!s$dw16c>9xQQJ}S%5(BW?mm8SiX&&etdI@LAK_YH zO|T?MF@v{lQVv<+G={fq_!a*<;&VRBub6i7Z>dG+8IOT*BhR7_uc?{O9pMAOk)_+_#wze4`p4kuaDXoBnT-EoSY z=V>1zJW4#DzpYLE#o&&sIPN$Ix}4D7ifDx3e)ceK(U1Bp!#RN-lE7}L1<5P>p2nOg zLF6)zMO*($-fGb?XcA)-l_LD8^;z+tW!)w?T&25bYJ?3QCGLh`fsoM9k8th|pU!kD z<_G<^tE9)FvU&#Du|y^J5KXjEVn3E`j?M3U{1%8oR#AE!J>q>4E}#Ff^~wK#Dic8g zet!L;h7y=ooB~SKpk6nReXek(i~8fk<{@tIm$)$#Fw4BNeGEX4K~EX$5N0O2*Z?-<1Rvu=7?wh8XY2` zK&ByM{xic_Cx`lD&yF9t1Tu`{?H4#5IAYDDw~;8+#Fm=WNxBj=R1I(6UhBWOe099P zUP;bg?gIHwOe=a^8O-_}&Ir04%xIOEY+@g{Txhj;S1XCfwXm)yERXo=Zfsq-=-|~U4ov0!jfsXD9=+=P!Fc92 zb{g`ov=14$uv7_|$StbFQdh_qHE}w-I3}7Q-3+g>gCJwrJ7~b;e#sI@>t9hXt;JD~W zfRkfGaQIz-Ruz^>q{#?>=L7Bn97#qZ{vUVY|Ea%f-AGlvNib;ogzroIPA2sp94foV z*&^eF3bbIB#xYCh!7u{cDGkdqU!rkEPfP$b7K6WUe6-zvi@^-7yTuEY3}x>G3~JBfHb=hg7i?2Y2{XjFcYS?^1ZV*rd`jzxFx) zF}~Kr2&6K5y0W(Fmp)%d7T2Vyo4v45oh!;pKnM=U#J4iodkyKkZEV;6U;4KAbkkvk z4BFDU<1C&Tju5^al+52shhWE&mm#ZncFO0k@BkNr){zm~NVMl7;kQ0=NQeUV%Ue3aHlJS z*mrz`cB?c42V#%5hri2nN0{f%R|ITYuJRw)bcWoT<=8hunfzBA{Z2jgn@^+;C&R>j zroIyxz|QbGKNg=j-IN5Go>{l^T0mWwzJo1GF}z2!I*REO==6$_)O())F4~=D$nK`U zPblWVIT zwKvNYQ@c2m249wb_$t_&`+xO}8JrN5IHJs!5Y)egNXuM(c`NFJX2~Zg!QTCtmeB6~ z)J{>HWB=tctxv4*6j>?c2lK*^3&&0ak6qRC`~-?wx?1QHWx26Qcwm9hris1tW~U?!pdR8{D`a9H6Vx8%CARk_@nFKtqaN}f^v zay5x@&{EuVIP+$pJ0g|*aqthvuGYob+GBG*()6~3y9)1|w(GN97a z?&ThEUElna#e2j#{5MmsQr|?fa{jVtG~nZOr(}vOFadhMW$B!&x}L;cRl3fI{?$9~ zFH|zfxZzM;HOjxgYL6mY5owmw`b=7-o?Ur*rS98-f?1s@r7qg|-buC}nkj%W;j=zO z_4PuS=~)jXS}mNl;7$j=>Fus`ttE=P*`FyHJ^5j<++wl-p^7fs{vTcn64brx|E}p7xngmD4O!o0h`S1{Tv5nb5>5Szv zz1_hYIXy5fY?hZ8+@yp_IDM#9C%Tf@?$4yN&`!Gfhb#Pt(C+hpDBH}L+3>k3bkfi4 z1z2mFthwvF911>)z?+iEx5VbEHs&czBf^*2PW*0y>>$2*Q7 z90}Y6I`CN3RBn{*>VTmW_>lC+59t3s^AIG)*XM1HOnf!4Mlt`tIQ%fKF8(Cb{e1s* z6=xH9RhEVpaG9YQT3T9C`lf!oD}FaCLb8#BsDx}KxM~7HC@3h9mNozB%BZl{?)fmd zIS^CnwAR(}ydHvi9zgAH_cS-8#;B$daQae zxE(LQKf&G{%e2l@6ciM^+)5CinpPKAJ)Ezd_rZb1)(WPY$p9LdZ8e%9d9>70UR}+S z%hVcnSlgX<+;+&8#qUJXc{!zgIl|rz5j~aTce|vWLr?#jCD-wA+>Qznzbv=(-QkYB z@T9J;PNTey^0g&8*?te#lV9kRJ)ds6Uqo|14>NYKwI*03h^9p#1oE%>CVzKW8a#CT z*NWM)hK4U`Y{tWf>BjEFFNDj=C##)zFIBoR>gb&yHHw8iYM3@oXj!uGSJb5J+Hky1c<1Z0b?UHyYlY=7bP;FGVVxtYT{ym?f>+LcFgDn1RZStGZI@Q{?kgE8%u?W&k^rpmtVVB zA8fqOW)#C)LBY&$404i2ENygBzRRw1*%*S!-Vj8um9hW0UC$>t5?(tQhCEN2TEwE( z)(phdzU9kt;gdSsQ()wF;kP{gs$_D7i9KCv8#G#>AFZ_Om(z=x`d#7MC!W@13wyAw zcprYt$;;1IU-P>muO%HG8QEWZdFHRp_c{KdQ)?n>Qp~%^`(yGTtH1{~rSf zT^>d0e;YKfE_SzFfX_In+4&6M-($S>V1l0|>Mw;9nAJDNESYbVyRo z5^Ld=+fqOBii70_VkOE!p%NcaaL?9@V%Roc5H962pNTWzjtulzf)a1nUY<;|ILxKu z(ya6S(!M*cRMnD@*(5-R6zut#jQ7YGG5-CmYtcLDvh`7v9x% zsFk4^Y6B?!ZRl$Uyg-!6lrm^hsWchIV{v4(3YnpxdXn}@7M3a3nsi?3N{4U-D&mFMbl+~Gs`b0L9?r$hqgzq70*$;f zz!#ugd^~XyP0{)8w{cruFX4I(!eA&-Nfmcz6q;nR0X@+fFh{k93B;W8^ zH-lb}kMqw~&E`8Z(uE93HMwPsKcBojPfQ4N;9&Vdn+JpC^`=YxpYHFglAsxok=}uN z;R);N_^H@U{qN{%`)z+_NSkK?^Lx+c_H^SfzURYH%XGlYgXtY3cD zg`0(0^&Kq6lwtz+7zu;D*FQmn=UtDQ=g-@qQyZP5x(=$o-Y#a`KT^KjBFY~R^5AA1 z5x&Iv@C{-~(ki`KH*m69X=_gK5j2_Etjx4f}RVr-A*r?V)C;0)-nW~Oy zVUB4(dmKr4?|396h))IySPeWoN!5k+-*^Mo-%DlI^!c1n?JL{h0A<-C2pyH5N=m7M z+ibW8Z!Uw3J!!X5k;hCgWRHYKIP{RYiZNHnZS$p7y)~$%0&9$uC?D3P5PB;DOOf2j zd%u+BC)DWY>n>bedgQz?kS1cJQW8?l3__?Z7ZJZ}pg%vHKd)tIV5hqV0WbMX%vvtz zSYL|gxZvJtTQ;z`W{_>pis(c?PuAztSUUi-A!7AMog zQSOP$-3MUp+`M0_w}=p1B%CEWr6`AMSBs1N;j(w`rF47YErLbp+UsVvzWFl>ccFvh z^R_~!O9e&`S~XHPY$Nf9T~@>IDko8_NDHuIh#9?=y@A)Tte7F*=Fy?TLPnL?L*p6s zU%q^KG-}B0xr5n*x}2DqNh+w3BzkjM8Ar?=E=|W+s7mR33O#hi-Lp-s*c1nn^vk6> zM+{`-G%wSe>|=Ucq=?LG4*0QEf~VIm&SjdxpAfk~OMi;vU;V{;x@a~KjXxJgXkx?b zu*hRGLJ{JbdRou+V;kpiBH)=DbC}l*%r-vYfAuB!KQW#EjDob#MWzbyJ)uD3glH1bWsY>QY#G}CnkpnUu$zmPKmXFM8Dy zb49qW$8%+Z-7>PjCl-&lXRDWhWf;;jC|})5FjjC_`mS0YzW1$Vb<<_>yMsNeX_ry? zoG496XhongnRt$k!N;Tqw?jRrfC0d%6ljOF?Iy`nYwu- zr+t5aSnFnoe+`oV@#6;>1(LZRSVD?KimvnVd}I#r>Q}_iqnX@8LPt&0)kQ@#PL!lP zFg8|&<1VN%gzVR8y_CldjrON3BdpRx`<;6L5(x z`7_uU_b}^=2BbaX@m`@q?tc~dmq8(F_y<`_j_q+T7J5c1eD6r9K1=0``3aO@ip=C_ zOEfvH<-J(YNLO#Y#}b6TP^J!sL-PcZycKkTwVr8;3Le09{upizPQ%rV5ahNkkkpZaCNd~T27B-@D5&A6XQ$b5CF`L8#@57Lug2&%MIaEZ3L_fvq6RPW+0Vs_KH-D`fo{Y@F&MF& zB%)ffw5;rN;sR(F1h+mA>@VJ-%mSI0GI;Cq1jHW$Pe#2>%Wd=qnV<2VD@GB3%}-fp zI^KVh9)RU`hxLE3F^9Xjl|sUd4MO5QEMMy3wooJTr0zBRO%c9^aUS36M(^q`(!;Yt zq!GEGb;SA84h7-e2XBzd>h&+$1dy^Ij)uF9xm15Ye~?5m5oSnl);p{~ye)?;9$PJY z5;KQDk2nRG+q8}5um-uGaF36AwI*YEPGAHq%K|=_faj~)fKniei5A`90P&@rEULYK zPt4fcuZhm_jJ%itorOumWLAy4%6=YIfos*FO~vtyGT-y3&1^j{V~R#oVu30ep~#6! zjMD!l@+~%s?*oxVG~%LrOkx`C)F&8`k)lEhxBd)5L|4xKT~ z(W=esdbv=)1*BHjU6`{r;L2c)8vqVE&{61RhR5d@=`z#T{pL^;dfKl!l{X|o1gge1 z+uz?eNuSj)8-@F{TH)HyS~rQP)WQym8gP+85sA~t?7CjGH##Gk;PagL_P$Y$atFId z33uJ^R4>|n#*?Lzl^UMVd>d1_^|3Oov((^r?sTJ{wN!RrXXIe{N8=3%5Ffr>S~G06 z+fjA#F@@`L^0mg&Am#f6t|Zu--j=i_S#JHY6))Uj`*I=vQk)P=-rD^`tm6=l+T^w2 zGwqm@(b&Z(w8Na@XrumCQ*5zD{Mf0`9ieILrsIbhH*`3S7@NM-^aM5dj*^$K8O3Jq zLGO|CWIfq3-p0;jf3OW}NMF+Ii`|N$uHxKGW>g&|jX|>_Yp=v%61b;^%7Z?5*g!Z( z0;dxVug06DLu!M6Akdp>6ClZ<;v!1OglHDa)$b3?8R(7+(ORavjbvXxM3onumsn2-#i&9Feb&jVwIbd@vY z`)ZYY)AvZ{qu;ZdYs+_I?9xiD(VYY4gi`rUfjaKq&%Qf^+?gbSPk>F()wQkUG4F#r zR)&HUORs~!e8G7}@4<%C9GTpY>!QhlwI;ZzhTIN{D1&x}bkHFjLpe$UVk98b%Y-7% zu#3qd`#eT6D}UOJU$7`r)y{7Dcq;CL)uCOL7vsVSW0)L!m6WvQu+`a`=ZcDoX?B(e zqQ~%T1;0q2`#-|-Ym0~*sT^&n2UflDq$J2du!qe^j9qfBCV(4=#Y>j=aSbvnSkCct zuhROiBRe)Pk)H>B{GB6R4t6vOg4n!Q+J=hoMGmD4*18M4_VIkS*-H+ zXJc~f@=p|8#$=glHo>(K++8RG#j5PvMlzl};p0}?3gOP=*jTi=akDCE(6r4OWfP{S z8?@)8d5?vgrc|P8J#X$fv||T2@Tjcaras{2G%$pb1CIlJ)0oEWZwRK?ue8Vm8?B6D zBr9v1F;9N*XWFM4E^h9tEYKTh`>;#{y0q5ScFZ2h52x$BEZ=kodO1t~cHHe|o7iGt zcH0DoheO-fztj6>p!==W>~w}}qBgWv?J98Gb-F4d9mqTj$a@UYS4{!bhwK9a=NL?L zjfJ9vpxSc4%TtcLK=_|rY8q&2qgadI`{nsH+L)MFOXI$zw**Ddu+GjVZaj==cmwS{ zcU2o(TP1Ih+@ijcGoaNaNGro+^i#&8x`RLS3EYIi#1nx6dx#R>u|Rsl(Zxx?3klBh z2u*T--)`)Y|B6jxJ;wy|2R+9CSXPGgU4MO%5J`$5M;0yuixes0FTVl0!A$l_XS-J zLe4JdD5ZshvhuWjUWb(D>`c=RK`br;T$I;*P@pXy?LKuKb|qAvHP#=H3^Y-ojmMk> zPxS9(hDM9v?4X{oo}dLnE9Fwo#>Ad=hrmaYLNv4ZezYb9m%+{$cuz#RikLtg9F%XG z@TGjCepRxz#_kK2pS*k4Rb5F)IUrcO41c8&or=abqg!nTSzyaCGiuO?Y|t)9t}D}A zH6jujwaZR9Bh}L?cEtpcs4(9FP}Mi>r+Q4g!B5|aB;tItd1l{%<-G$lTeZv8(x#eR zqlJS)!hTBwF}zm}*=Q?0`c~0jGjD{F2$DYzUCb%!O&w3yORGK+q(;WZW+Wa$(MZS8 zC-er>J`RakyJDmCwlq&PZJY*Ppynqaq?fJ=zW&aa&F_>4YHTeES!#9YQ-m3ZwIS}u zhB==hcD?5SnhESwPVnk-@UU8E}zN z6*%`gtc+ziJKy@Bb#QE$zlGndfX)!mWaIF&Xocy*70{C5x@OjzcNPXqKre&sX+H?8 zVur`AdpJ;D(6z$8qd0x&15EN`b#VF>WJh9m-DnlUd@8U`1P~KH$&^6;iPzzbSHah+BNdGO9&Nc^h zkvNX?OI_Tv5E?``i!xi${-9ESsURq<-jBnlXfn*%EV3p1go6H)r{k*c#TZ!x*4BQa zxbI7n3b6@!3jM&#g!qf^^U44YlF?5Doh+JeX5XdYc8M3h(cch9iToO5`b4A|?QhdV zSKbo-e>x-79PxytoZKYL-s>#i7N~NlP7_|t>YF+X!4bwQ^MHrKm5?=A3pfj>NmBLf z?5gG&;rdV?V1ty<9d86E;t8AgC7^qwln`JOi;n_O;X{!OWPmD%GD2$(EQ6zlR>gW)FMu@< zKcQakQ54WCz>esex7pp3x-;hxyzj)y6wC5o1r=Zlii_tzteyJEa_q=tEbS}6&7pUY z!U@ZDq9`MhB)h53a1B^op{i9sl(_%>)9c3u8sKGXMZ~1o?hVVhfrI8dd*^q5so1(d z$Z3Z2#9mc&r4|zR%!l?z#x$miOuz}LhLkC9WdqCr&r$HsR#C*$ZL&yKh?fI0!2xS{ z)T2wXhR~HH^F|{NDx8eUR6Hz$ep%7Y7;NgjPba2st7*O_-DGx)6t1&Q+V?=PjP9>4 z>V3Hmy@^Y&0S?76$OON#Hq3p+Na6=k{9yq^qj+Cz)vSUjK_-24k zDOvS1xF!PvZv!%FkqzJjvpZa%oH}}Vh&w%=MhsG4H&*VQ{M}TyU(9K|TSto~whj%LB-=bYE zg>pPV4`B+#;u8Px2V%|)kEOu@Pfv1vrdi<|d&rX`o#(lUY$CsEwip$9;F>6pT2}23 zAWnab#pc#m`kqMq)Liz)uj2i1Xb?G3Imuw+@poH_NYcr?V4y!?$I;;3(obr}cfF16 zjVY~@FUFbv(a&RFRzbLosWQePOS_2X|Db`ltdfhu_$UG9M6<=%gRvp6=-F@%Cg2z8 zz@kS8vYDJx;fbY%r>q7!W zy*CL+Ng+1pU_Gitl>oeFX%KZ&QWPI0lFbkjfA|`a6eqEK+B@J?6lIgnD{k}TX-SWm z`rtqNi_Ofn{cRQ^;>M_?Pf}QiVvMnrK@Mbmlh;Q}K6|kTOD(lm8xfS}0>v`$TLm?3 z2TbFb!Jqro65QZ$20r=$P+qAR7f+cwiXSHAtD-9yGfG3`7cM{@9o@B6l(u8Jus3Q=T!o5-lu&o5)@mVp`1cM4vl8e-o}8@~{q5+5 zX=c)0J86cOlTnDPf@Lg0s4QjMf$4b~K4y!U8EG5vkqvTd7A!%++^Y;c!YYTDhmlyK z75;~P)s#r@8qLBZtl3psnt3046`Q!|95uo4rr>7p+XU z+D9-yj5TpaK7jSz*cfDv{!We{gN{h&2V z&~KtEl<+_^Pw5hFvYC|7$Y3@&1SWyyKlK%qH6Efl?-`N;zxouRvnt47#iOpNIn)6d z2;Xe+eUHxV#-C>U^wK7449qZ>FUiSw;woEJbQ3jKLzDp`6PaNz^F}V{6H=ho;59xg zWQov#6zP#P*1K*Tg}L^Vt`TEOAWWuU2l#^~w-MHs)6187gnmSjDT{JC+iYcX!l5xZ zY`x%u7}l=7=hAj=Bhk6lh8#qq*i;A~g(Q`*u~dnU#WF7wt{EKhf(T3fjl+yglXo3H zvQ8h#4PF(~%3+igffZ#nnnQilJHzjt?%X{}1R9_2Yp8wd73XWj7P!hGEVO$Ieq~4I>d7a1}xFiH5kFc(H zxJ8JCMFsEw^cGA*!y-SP|GT zNEU5qSS&=sh}5trx)wsA7g#*(0;qq=ArW_|@pzHWNVvo~>>Tr?63Y^?&@pqNu}Z{Q zN~&WJke!sqiULCa$y#^*2(75-%1}GLraP7jX+0ZtVl33q@&_a|G*(xXS+SJiXn8wr_XH{0y7@l8Lg%>#50P7;R7lOy#`Y5Vif>`! zprx8nGOD0>A~l{2K(pcDVFE6Zb&mHY1)@N5UZ7gh7TZD#uU*n{v+5&)>Z(e3!7@8= zj2HA=Vb(}X6pl$bZh)DiW{2~DZ5i&>GumeOk9X4fvnPohy)Rn+>&*O0M_1Izha)qTa7YlY`bAQ=0-&jTn?ycN;50l!)1u@WKEhoV zWI5vμ!G;~ZtElLrQxB+dC}AXcNWWh*|?l;ud;S%)F$O^{wBgr`h|BcG_qjXGXag)mGCm23US`Zt9IZ%78y>pQWyu#sO-<~G zC+JA~DCjOI0|F*TowideRD4vd8{em^c`x$S&-6ttOTAQ9#k`rBnVcZvn){y6XqaEL zgW4;u)2cI-+T{gSqRA$?`+TGCcseG=Idi@V&b^YY)J$f<+|&MMC~0QjJX^IbXk={U zK;3e9$STGmo&iuK@MJV5Ktz%!j&Zz=DRxVBgAWgDRr`uAq$TC%j?qilXh%WaPjV3a zy5B=k*z9foz>1)Ej`` zm;drut`>)uV);tT8_~V_2FMN|qRr|}T(Yl>m}aBr*$0fkXq2m~dDHpI=YlT-_3ENm zcoUM%J~xhPLqxd~Vh^!^DFD_QyZ&eCaJ0$F=AnbxuXjLMhqF^78kqpt8&Vi?sVPr@r3LQM zV560b1&jf-D#4x`1l+sWU>T$Kjr2eDa8ffpSH#Jmi(ZhPq)&~$vaXlKN!FZx4q?6r zSOqUh7I6WJ(1S)nvY=$R`+~X*F~-Z;-dr-|(2Pu^1NzN9QJ4h9bYyYPI%Zyp3fvTn0W|;bKp_)1Nx?YE|<bYU-=5j-cWIz zf!-m3XGse;!H{$G7aS0iNyu!EO#hEAGlY8ZY1=_fSX zKb|YR4`9yIhOZ*1B!%VBnRs&H3INk{1tOTKBH0)SpmZq#$h*@nKm$8z?6D&2vF6AB zPsAxt?~JPjE+}C9X7uArJRqF#2F%m%2A0(p+iChNK$el~f4|?s`YQL!1eA82_Xl5J z!-vK00C7J+MlkbLpIzu~JK1aPd}rh?;B~3KBuUtsFxw^R4<4p+b5{=Z&{S=+@@vZd zU^Ucqj9QJ2RAORvmRI|0NyeB;XSsT_zIvl2OCwTDB_j>A93Y--0U-*H&-Et)9Y6z9 zjH@n^bi-=gmhu7w+B=Ug3bd7b9}W1M3F-D7Zou)MyWT4cl3!ZAW2!VWV~R7a<;O+S zxg}>vJ7neWCX^KLjml0G+DXxdtoMdAxgQysFC z?-szFY!(_UT?dJ+H2_jjz+tV+?{X*IbV`=ccw1F?>XdhZ2se8#0JRe>XP*P|iMc4~ z`;)&F>z@A}XNPzK3drd%stwmU?@i_&3-8|P7x~h>&T3gpLR?m|%mbg!FCt54;~nc1 znFoTSoUM6XCn{?qx0&SqsX?%OFAE7nel1?t^#r_HqQ1@;ZZrGOWjx!H{$0P@BfvYj zP;7*I{u81dmUzda_v;T`B5(>Z4a;zaYW00}j{Pm(tk;jH{g|gIbwaKXGscadwy(@$ z)AQ5Ag?nFpGnfQSGhjzyL#$!rFdrfKUQF(YQhWFi(0VS!vo_0J+*wrbbbNcqC+C3K zVD$;T;oEo)XTgE@E=h6vzG~0jpQ%w7p9$p96SrHz+3P@>Wad3T(Iwr7F~RR05PLoH z;)_FVy)rbZ?S)KAmv~n3-Vq{*bxWyW0`jd%&V0)btM8qFb6QyNTFmcq>wtO`bLK*#@ zduqrku|-D6wN!SXKSf{k0Iphx@_8D% zkmDoUxGwd%A6+K$tFe|4r1FQOS6Iog@nJ-_#%l{%=NO;SzGy5(5zBoARM@GyVP zXfVBOy4OTV(X|;V-fK${7cbb|TY^*Bn@j@W^fRdcIgm)7#@> zyQvanxBV$uO1i+5-QJ&ubl;4NRqfo9RqZfXXXJIv`PHxVQmd1BlpKrnY3W!qvkqoY zKb1v)DEi&$FcDSSg2RCUvooJL$1|XFo5!V~?kpmrzmDI;r(Y+eT#HB@GAWwK|?uZk?e@hu%mIsP2sHR&?jbw z+hI!rp?usJ`YO|S4$rIdiB4 zkjLCWTzuiy;;DXSwjwinUP@w(<%{P7oStyoUY-v`{N)bQUc39{>EuciS%LLR5uPFH z9!+vh*@-fNHKEMx2Cp%@QzxcFO+`p;qwv8{>kig zy8Zq9Qn0Ye8*Giu!_`gIhmw9*4SZ9zv3r@SmszN^3UDgwqf3cE`TMl!#?RN+uj37R zcj}j>H)Em7#u_IPXdT}fzngvWN5z_3u@Eh7TkA&)T1w9^rs^pHUyam@8L8pzy>qfP z=T)~Rym*4uXR0u48N2RUQvN{P5T<@!-FZk7CMyGhm9qL8K@OWQoXO0I=3ep&M0Bsi z{p04HV(3txa29KA7@2kag;kXQZOl? zHuyOU5EI)G5)Cx}Dl{0J34!1TDHtoZHTwZ@^P#j6q1-qBiZVF7W0^Ym_T2B(D$ASStw?N6WT(3_#DRdLdd;2L&Vi2kg6S@yN^ zn>B0kl+bv<&ZvqVXI&)ImAe3qVAt*%;J?KH|4lC9nMlC$P6801mMJFFpLw^tAK3s} z6W2*uLg&RaR>OBAz(h$DJ3KA*yEZULUr}>Ho`mh4&t9E0bd%KrG}(@J>`GHh!Bjuf zfVF^B0L1a&S9NI|DSug~&&?DdxA6otG%NCqjEt`PrRh`X{L2!6W^~&XP-buZqH&aZ zP0GLf3`U=1LO;KfGU#LX*Gv{%}4vLrZ2cSxXi@`?wwQo z*@!jV!~qL`{vOA!ND+d1L~{BP#;}A=s-%QPN4@Uh)9a;cf7%C{K3}7 z|LJXKm;CoUYizq~Uj*|ks`C1y0!*sEh0Q^o@WSLw+*BxWpA7h;m7~AaQAeZcmODK^ zdm`vdkE41+FgcvkYOB@#bWQ4WCh60656BV)$PH#VhsgR50s6&adM!y2VP$Fh()Eqz z-r;oQT#ApuGM)C@c7YHpuZOxX73z*`rH8C#AH`JFMoI&`YJ;AWjfR!8rM5arBK!6- z+*7nOBvIwn&TPmujc6M~O!Vg=X|hdqzKz!0!PcyP0Vt&jW2ItoZoz`|0W?5~jbb!V z5iw&@s~u63qBx*a=!Bc+o+8K>M=;KOZO57lxSTNCc}?rC+TjO&d&Z$`O!&2aMFh7- z$}Q>8`BTQ}9xq-Q1HNETD-J)kuAZLUt7i3Te>wt?wJHI~+}0%^$w_~C0pgsL^mO@G z6wis$xr9zzyYryrvtQWD^Q+<4ho;odktRQ~DoU$VGK0XPebd%ywk}p|z@fr#($fu` z?Fx@OoiI?epMP7($2IGY*<7*Kwmyw%Fo!9g}YrllnKTf?2!g;r^bo*ce zydUi{1IrKT%%lp*1>M@q*$WP*H3=95vKnAbIsB;$dhs|~Ow9{;_PXEAcJd@O(2%TgR!?akA3ess#pod%jd=#Ug{h%DN-|xfYpr)3H+6G4`R>+`1J@B?-ox9tm!1 zD&K9fI18Lf+*Fy%?qX&Q|CBv5qt_}K@;(_WA+@m0+_0k+D2CAx%-3m00MnBVaF~Gf zv!)0zDpLSnR#8zADHlf~`~Lm=nPPd&>%Z;m!KgNXobT^lx(3g&to9QVUgytWx`LHn z4O1W{o8(oi@2SZvScOWe`vepkov^!ah3F1&ax2g@e>yC z=(~dnQ~AEkHV^wEP19R~SvnXjvRqSa-_dl2H;&$AyoM<)oimmTNWsFdardiO`_s%~ zv;9KM2~Z_aP;W6b1&F1T0pZqVd^!#cm^$Pk%-gfGgQ=2gXdW(Q#wF6OcPT;BhIPUk z%fT5#^yAH!!#FW4^)>aM^GLFPtW}G|q`4x`eIAUGJ9i&D&ZIUf!6Wk#bGm}+OcM)t zGMV#2L#1A$ITSkYbw;WQdU<_^jnd`k5}~p*tB2*VaMA&r1p;I^^>d+Jj9?%f6MFdD zSP8_+TzpJ#s?M|8LeJ+euQRX>%cdR=UC6EITsH}|%Bt2ocI9-<%kYGRt{XpB9*Ruw zO=b@dvDIgu({#uw(0I;aEHu?{^lypPoJ>1^Y?xAL_{x)8XTys8#7{j|MKOdSj)-)H zraXjWS)OGLQPru)GeqwCeIgGzC*S9t(#cHE=9(|-HG}t;h(yr>s$K^FBVPXJ%HIBWS2p@u|00!3y({)=W$Pqg0h0fFb6LQb zy*e&{@+k$t@$B8vOld&xw6Wlo?|s0S#bt@&uxcc%Z5?p8lYV)-l`stmyVU{TGFACn znZo?dpgFqh<=H2f21q1-#j8}XzI&p&kdBB+@N5=hRy-_L0L;tF;KDrs410;xAxvTEUWEZ8>OYY z1SC|tOS%!H8wu%b!~$4}?>Hi8}^NCL&z z?qda+M29SYr>y6j$|xwEM5nc!XjH@m#KVp8=F7(EI_K0jCDD|fOQ0OIj+8x8QJ>rc zsQ2%wUWgFO2dr`x4fk{A?a7Z?UbeslP!%04sW6{0;{xO`0*UoXlRUNUXsXJZlwet? z0t=xe4vDO+V%^kU)+pF4Tsv4ji{*UGtOq*`*g$i;T6gKm75C^foha>wMr^&%Xtpi2 z$FcJq1L;Ss>KrrPVK=0=0OgXXEI{!lGclo(HP{NNEdQHw(hM&s1e_o47J!2_0OZ2O zfqJ%l$sGK?n5)JVw?(#!DLrX z!T?#7|8xj$RGA%ujFadTfgrLsT}!!?5n!d%e$IbePyWM~=gi~MORM>9|HgRf0j4EE zfAYmXX&nZh1GF|wE3hkdUq(H9-i~JtUqq`>pKxiv(&r%&ge=L75r85SAxy2Z#3oJ? zB~RCae+Do2}z)~w_0*1v!rBTtv}tD8E7o47p98@Sy&g3 zWAd-m0>k5Upv#Vmin5FY)qj!U4pb|%6GN!N6@XI9<}Z0fr|3h3l6ROb?Y?>)#;lX4 zqt>hsqZ$_)`}p&Yo1w{4F~K~2xub-p+o)f+{OjIyARWj39*M8pmHWsxI%>YkLt{FD zbsLS$yxuUW*1O((_AJhrb$f1X>Gk1^hOKLzDNBz}Pxf9C?6Ru^M`RW4z!A<$Ozt{+ zWl!m`%N}>k*~Hd-xA_>u9`m};8KT#Pq>oY<-BLZE6#9V7n!&}{F<^?cZ>@mnL}p1Q zie5E-)uaGj5yuHzEe1T20fB*6En7^M-v#YRk(PuIxA{PP-#mdzf{ZAH_WSuSqrQocreFmI1%F^+od=n6z20JUX<1`Y49IF%@ z#n)oR91SU4En`O9SO=`g2c2i^hN#61`4*kd@Mc)N^z|zDOuVk5AYz6lv?mq0#*$Z7 zWIV^3iz`lloYnbPidFD~3zsf=cR0Q;-B8mH^e`qu6c*KD_#$~`gjK}|;`ufY*lkxt zV?`MYpxGnoK6A`lrx6Am#j&;6!Mi78ltq`LNR8`a>c8Zw`8v}SE_YTY!@<3{>QEFO z9ZQ=!ojNN7IIn$25Y={@T}`k}VBk*le)d4sy$ulX?E?bgB8K!XuQEQvnGb!Ci3|^K z^z!nGT?g7A1Vkr+XeVYr^XMyq#l^*hkPEVT2?K+HjKfo!pTcTqG_IPbGTC_qVaIHa zA7h=yY!uZvT^aDL-_tv@7LF5nQ9gdwqm|qo^!))`xvr5OT1FP?57@}H0rplI#AiS2 z@vWn{XaT4ELMb9zT;d>?Cq5@FhAh*uj}(C~jGF< z_ahPF**CZSC4y5emnsbdP$N7zS@yOwe{irK2oS`fA(y^WMnRo zD|qCf>Y`rbY)(N?(~=%VEu#|p+MM}^JkIKp3U^@tSfoC)Lbm04S!K313~4@|3B^m6 z+~+`u=tG0(yWKCoDjO3DkDEeBm>ZdlWXWr6Q)%8etuW;f3LdE2ax=g^+V;h&vBLm2 z0v>5R>6bT&1AzhI-~TG*fY-VSwIdyIK9X<@L*J-~qephXRC$LvE2JqLU!+t!dL1cJ$Tmq> z{%E1wQytwUZt=(xL$?178QQ42Gj%)!(O6s1!{$kB5R(UBkmq8^@?+Z&{Of>$lO1nX z?GJ1?g0yw}sLm)!j!UsuZLSXA`Wt~x*Ve51)xm5zAknk}_ybGE{0@+rDz38l5l)Dy z-QV%LzP>E@YWzrr_bTd?M+GeqEBZbMu6@)8Pu()1vF<`Zf#lHM*u|l}0Vbq2Xh?!c=55llP`AcC8qQWfgT}et z1kZcKChYo-Yj=>WsA0KM23M~w82{8yzf^d;Z3hJzuty%Kh8pduArP9I6~K z9axW@gpVDGABIv|pOt_l*-mie8tv2-?Y!NkL2=+Z=E&$zIF`VA^N!6k;C7qHdh0`$rV~P&flXKd!Lg3oCq6AiDzOp3W}xKt z0n?%c85B6pVpcsw325O2PPIsWGV&|W#P$Dvp6SLmUo@Os{$-h`0`_fm(tm7oyjJ<| zGC!_T89;np5-^WAf!vB%wo_KJM!6A&E6}FL{`~695G-K!1KwH2T(j>W&~oKxxUmW( zMY67{Wls(_#fXWCBNG!P+)pQGR5E zH=r&vK+4u4?kWsN04Q`q5FqmO8K(ybp$H!z9}iXA8UwAXU}`|@$!4b&tMpl^+qqK_ z2zD5uoiU^C}(&G%B;2&NcaP26O%ddJ_zRxpoyb%GGG#J_owmIEOhg z^REsiu@wdqIo&S62kT0#1u=e2xoX*k?ClpOkN})w8=%#4AoIPtXyud@T%yf@hz$_R zsRr7fl)*j2I=_5L2fU18C`<%k2WLxk+3j=*b=+IBoN!!D6b4#Tb%@HeTVW;FhjP&1 zI<9)aue|$e!2cd&@>{lf@?Y7mp-D5JtPBVo}Y>($|(-v@U6Auf_UT?ZRKF296^)n7tr zz3R{{AKRTYZ%`H`Qx>KBQ8A#IFDJz{EZgKU*qFrS{FCP=;C$o*(KsdG_LbFNoETqq zrBzhhZ<~=9h!UVY6s0VUOqtue>Xpj_j8_+~k6O)8Vlez-Fnq?Rhnvx;-q8b}s50x6 ziyAJfuQCZ!~*g zQj!gpzb58$5j|ou=zDYN1;hpWff$BCPaLxergv64!~@gulIOtC`(h$L&aKZT0S%H_ zK)uCqNWbss@dko z)CO?{$_I}T@I96IcXrwd_S`ci`maN3U*6L$UjhdW5oQiwr%;~=hwN`P0P&SiQeXBp zAY1f>c2zxN=S6piE;xNVGb3Q3Cd6f2g0>Gl<8r`a@jbJ~3s;%)*tQ>fj0g8vPg|QD zHJ8g;8xUd0*%_r66E);Ss)?6b=;o&9cU4jGa|!pIo`5n&Y;wQa@(>rRH*8B#Sz~^w zZCTIgnqc4HDEvv$JT8BPF^hXRvZm zCpC=vM#5gq zF-ut4GU{fuw!}yxT-M~Y5}CAz#_xoLRcQ2_wkJcX^~k9|yb4X8Kh^Kc->^$E?IViU z*CP+!Y*nfRN|mRRrlv1leO2N06ex%8G@NqT2+Tlc(bBV^4Ynhot_v0I_ zLA*mBMv;%wVp)pZQ6AZki*}GoZ3EKrOn$g>Em1hDJ1wlA7eBqq(ki$=lY34tBf6I& zh2u%+s{4vOK44nFwn#&d<{&0EjdY5c|9}~a2Dg_*gD-yHj?i^411tLtDS5@Y{<>0U3prfvu^l?}ar(Bv?^BRDj&J8Be9%EqpSMPy!)fSQi z@;%5$fqYNAmLB*90y|9Ns26I7n|U;^oteNq)0$Bk;+0piIcQ~X zvS{MzBvB=*SZh|~L9*`xTA4j(vkQa;p3YcM%cU=4J-$l+@=EiCVfR3)ATg0rHJm1H zr$6BgUXY=eF(8aK3kYq}5Uhv?Rix)8X{!A}N%;dwU{h;Ed ztX8Lw7`jUPK04P}oY|9dg23;}(_o{99Tf02>D_xk$Kz-iVZykLZ8Q@|1BB2|)@#k- z{Zx1zy2@N!$>tU4B0eargKT@v#L965dqy0K&i8{&L2nrBVFVgOkmH(ZdJjnope(ZB zA!Z9L%=@e0_REp1I`Zt z4s$`iI`}4^I`PKYuuKH}j8aN=Ob$sj-TW78Y~Bok)?^&XWP2*Un3|U;e5Kk&`Gf{? z&lQrzi7~{>2#U%wi10T%wl)`b#0T+>H#!&AiI-Pda!`}F4J7C|vPD(%6LNNC^9PE8 zhE`BAN)UbM#U{3lRW7x-W@;TMQajP|3S|P`da8%Qf9t?zYb9yf#E(n$Q38_J+X9QA z+pJ2C!a-_p@{HMgv_NsOB%5A6p~^C`%B?3oK;U5-FdINr+N^sA_bzeJz=r3V=hmRBSA8wFEz9(kx=LsmR7T$K`E)JsZ(C2XaOmpjaGZ$EC(gv zP@hU*@#mX29Q3|UIn~OM;8f?km{x34?I`^m*fFZ=R~NeBgy+-|8?$s(q1-r&Bstsnax=~)kknJAFhL4MA zWYpa(cq^xtO-Bkx30jwS;E8B!$B&MK7itcAw!;PPI2wDKxa@emRNOJ>smhHTWI!1g zOj%LLUSWDBQO^#4K5!z+)1WHa5yD)^1S&yZAl&`w{S(FO!nLhsKj!Piwyl&6gU`w( zcX@V1DDg` z*5f|B&~PF`6^t`%PacIPBg#5(WFfqi2x(G(!#N_Yu&bY#PB8P{Er3%;L=H6-Cp!HJ z1C z&mpj*Fq}gRC}3op6s{D|L5p0Run?7}#ubI@-{POYOw+5Mr1S36pJ!jrF(%#DX&>zrfPQ>57ULunO73*_s zA^yO?sOy!Dd8OP>nSUucHVbP#nORCrYrS8oMCJ87towYi%zDk7RU={yY|58Grsi*ax6A!FV~5De%gzQ+PV<^qc- zgtH})ca0Xvj$NY~dAa4A*L3J_qP09_u!ur=$BP-C!oNCkPu`z<9PcyN!S?wjocSmg z#}}GCjk1>|0VY1@xrfQv8l#waPd}p3h$=fKFbWVg&!%A6TFVfFfHov8Z0UK!M+m$; zsx4#A|2|CzFXTD~6>1i&useF}!DwshoxYBfnuMGF2`f`12A+3Cozz5S6z1SDTkRys zr$W%R=M+_xJ~c#_*H3>2rqbnQLDON zc1N4<%gEw+^v6vWkYgeRMIZA7psp{@_Y&~9U0iG~SB}01@*lm~?hTyfK>gFj@!@Fu z`|N$y%l*}coYTYeN}h|O)6mduo{N*?#hj|L^TG8m_6x28OPMgp+_URNqeJyB7Y8T1 z#~j7A;9o>do^Ey-iVW1ls;K)X^K~nX;DuwvyyPnja|~At%x(xMuIU*2TpLoiTGBn| zTp9FDqs=lYev{VSRZ&(QZuz4>IfQ2`dxOR2TG*i+jONAj19tT+KIkD;57^}eXeL1j zuqA~Qbr>cpu%7o-$=Qylld-8yu{gqM^p8>Kick?m(~39Vi;0$^9;&>^u@#JY{1{}9 zqUnQROfEE6A!yU!oDji{DJ@-u)QEg?opIr`SW_)sXqDt91t+(1cRk;o#0B7DvaV_&UY z`-6~tK`PvN&>Bs{W_)+i8|s0D=M=0|*{W73cZx+CDXK<~PWVqF91}FL0xmw)=#wfh z;^~+cnV&dD=pKa@8eA+`i)4jS5w7$_m=htrIsd*L2U(qg&q;DVTe!#Lp? zx`Gm4+>h`30ZHF;e!2K59xt;>83tdCEJ3VLCxbh1%hL!-;kv02SQh{-5Pp2xc@S~jk_88&V+ zWn$9-D`-_s&5CxIjq)D5&PJG^gkwRSROpn25Hs8gUz6x;#SdHfb@WNt+~XsP2s?9L zs>imDU1w9dI#0B1O67^ZY*#I=kAeC<&(P{{h_P#C*50U7hII@{az-?r0p6U`w<`*< zO*iA4hP_}{iqAXMOmvb^SwQm6HgPRG|RW_auR=-d;pjBqCg4vrz(Y6v!3YFq`l01wCh|>w8NiEfYvYl)`2# z7Z8s<1V@cR#miokCNq1(<5sDK!nfeW_Qoc^EKhyec5Yw}JVUb- z>X2)v0zjj}Y`Sth;y;{Zm*%&Ov7b5z{am)6od%cM(6yHST4fA>%(*Zf#=GnSp+Nc+ zqTeHve&Hl+(ubIEt1;r3ib@}zjeWsR2F9<(*eWdgp+E>il|A8$HFPWS`HSGJ4f+Lu zBCg1|P6u_+DOONPdzeh<=}Yglc5-wEq9e(Vl+FwE(w;s0KjRFo%vN-hrxK+0$*s^s z6eOo85Kn7CIksHF_0?d7z*C*@z)iDejR~b3RX-?;b z&Iqg5RuLo7(yVE%w37=*i75Q4q^24_QFe26`}d3Lf>h^7&vN@Sg_b7kZ@Gp5r@*op z4B?7OGfTpyRlpKPD0~qAqQM zt{<_Gu5z&6rG|f6!_3-ImW;4Z4R!}clCVNMhb>Jwns^jDsGEx_jmh=^7Qfcz@P~~M0+O4$& zk|#R8RhQlzS&^M1H*|=YcY1^3nOzy{6(+d>9?m(!)I4QIj_Nu<(#AOvmGk30)0uyG zU6cp?xK4%6nd;APPtj!q`A?M8$w`=UAfz>(B;$P)iGXI$%Nlzb1vtalnOsN;fx(8xygRH4EgUisn>4eyiS z_f{qv>B!pknQy_UYkt#K=#<~;2aNiV_sHcIaOB?Zk_fnk48oi{N!A%0Yq$`R=i`SX+_<#`Ho()Mt9wo9L)jb3R4);(#hJuE$Xz8r42v{+a;(&cVrEe<`4!lGAJuk zB~DSEC)~n(=TMIedIx$Kke{DY_oaXk8EEz)>Ty)SxV)=Z%uncllb#rokGikeC+X`G zm6k|sARYGx3hG;nv!gqL=L$(u_c|8l59ll?U#?mn*B>WERwbhl-ta?^2D%?5f;NrO zTb{kDu+5Y(fgCC!`8MUrjYL7`_pS~n2WME$^qCTA+aWWow%T_;J#C5<*|ITx6pxkl z8o`8(a_Qj@X?i21uS~4l%(P!mMgAljZIS2ABr9%anY&OG-FOWnZ^FwTIi>5>u5IBS zuAMy-`EzIVtvoLcyTtj_PP_pcDJm)LXzmwzA|Bihtn^cMNFpA84wZ726tfTbUawu= z99Sf-5F2H4!n4-Go}W~GdnEF@LLK=8O;|hFCS~wq(C+MOgc#IG&O;LxSBPlpZ<#0x zBJGZxV~^0y^}$Ed@Hz?TY;^00DIS3#AXI>@w($FRrJ;=loT&!sPbCq?JIF~()QTJk zrv&mT_xB~&5_a+Hg(q)FmTz@Hu$RP++YBKN(e+WNoESl*Vo4xZ5N2G zDXf4u%-0MI$W9(vI8`*^AXkj>J&sj=kND<~AN{6}C2`$RiC7XFW!Nh0*SwvwrO*7& z@`7W2S{D>_^_Upv@%FU(j1fjcr@U>Hq)%xm@*IQ7d>M~J0<8vDdZPcLc532ju%BGJ z-p64ID?2E**0Fjaz6I~i+T?il^7SDJrr}RMImZh$_7N1Ujzf1J(w-aCb7zD`XaRqqY^B5Yg%T} zb2{gQ#P-MNBw$q;Y3yD@X_>TAKhP5reMuCOoU-)5qgkGal0N@-V?@i7;gD`73^Q1z6+!k8)JyRn z{s7fi2>EDr2*csA8}iKOVC)Vo9%z=d{JsS!kLsz+S2zv=Jr_c%m>@3=;EL43VY%x- z3D`bW7JrnaFDVvOONSYGqk;-y$S~?6SPDvtqNxnO@7F)2*Vxq&h8PN40xTSxj`>e# zP(epi^;Xq9=AH*pL{+R1u^9yWiVJHy`7Ianc-9gvosVDafHC?XL6au8 zW$ES$1(#S0Vg06|zUoQJwlL$^Bx=vbo2iSD(1JfqK=OTmZA=!+X}9)ck@omg8~`wG zvQbio2r<4$P7KS5GEsLmuhSLOkwp=`XN)T>f_T4+y)#WY`|NRRE*I9JZQ()qs#*ks zq@PN^sZ~aFu}bgL04{_dvMAY*>fCQnU@K;+uAvMON*oYnF(59oQ+>{MDsO%gqra!5>-iB)ClsWh4ie-?UPjHCw4}ilkYPg=^st`VI*-g) z6lDje;S^r##UaGd`WpJDm^wn<$crfK#&wwHO=9$W-EaH~*IRMA{hm%;bc4Q)GHF7{ z76C&&9zVr+i%vQGYV2G%Mc&geGX>}^?v=}swp^NQs^1&q{eFR+>nqh!KVPblT2%2L+mxI3 zA6<~3z(jb76yhOF>H79x*~tVwYCzeNa68#=#q**rk;&I)>licKJ}B)15UZ4)3#4 zPJ9qlk`xRRKUT@O{{C{P3sZUv`!ss(2!ifDB$ca@%LNmUQE4g0nIs(qmBMNQG|S(#P!Rl#dlXmjFx>Up#RzPv^B9-3FB_vYm;#}fw)VZ4 z6s}WuMT;{Rs^s|W{62X?qo_=sv3_pFw+OT5X&V@uo zw91Av_rkiNlFgf?l$t($iZGjRfI}1P{>*0w<09ZgU`_5Y` zZ0L?DEZ4dAcb`^Y7`*@`o*CVW=XL|FD!>b9$2NUQW4KcSM)^@vW*Tljgu*5mdc!~B zn^!aYe0HOj@+Vko7Z2QzH18h;pcYq3=FKekFlv7aB44AOcfdPDGskT2*M0UJYs*{H z$O$^+b;nR(_5~}i`(?AHD_zmeoQ+i6H1nc^cfn`@2SM}>4R{=U_#9baqR5Owp{DK} z50$tvceLsa2H{iiD26O>lb#~ z_mlM044H$e$p}XXoepK+FHfayUEK&yT*wHlJ_~uz0#C9zPcJkj_O74h6GBAu&V3g8OWYOB22!7pR6c? zP7CNb#PBeL^?Tg-Q9wk$lCNy)?W2l#LuNmrp^wc$5hmF7WC$UTI=GSz!ibV|I%cy-p^<_I$>el9@V3*qTY^huQXVe3rkjnv4T}a|KJ~<2MmfVJbE$ z(K73|JwD@pDF^8K15Osatxm|MIRTZCFM^>}kb=!FTxdf+C`*;Z^QiBIMNiI$in2+W z3KX$D7|w^2VfeuMFeXSLEpO_hh8~q0h)8|-_w|@BO2neH&2F*9qLF-WdtRI1*Q2?E zUImkWshtiH*f(_Wy#0CJc%MO0_*9N)I0Z9{sS(4mf1DupeRH2lpy^w9nlbMgj9IRP z@yIg+*_tx>(iBBsagmEMV()1(j<=68V^^btr9C^?i{#qp4_$+|sm-Gg0tDGPuRr3h zR>3IB<*Wn#hY}dY6W}}WaGhJRPYo+QliLwcnycTvLwl~2qxZJwHu9m_fD>|fmb%~% ziUZJS-BT}9)RLWSb8{L`&so#g@6YwKCU~-CrpR|^6W_{W5_UW^e=utJiK%@U6N1zR zQ+WGDvpD>zQ`LvBOxj&iQ%D}qvsg#^veE5Ci&qW#qq)PrydP`UtYHXby2FuzY6r3k zt_hEHJTY+PCLMFu+_!o0Yh-E0Ux>8v{?u=SA6)iQG$74?mql%XCxq=E9WPq34t9A~ z3{Qg1);keEJ{SN-;M3e&8cLAmtiw`>()0vb<>hSKDGh1Mj*!6;|DZo+;ZU2=(p+Dm z|9ZaWu*Ew?Z=wDe0}@piR4eCDtu+-Z8Jzmzv;)!>*jCP=ZJhC{z^r4g1bw^GO)xW? z2Q8u$tD)cl;Y-I~s+pq;(Dz;a(AxSNn|zz>ZA2Io8agwGE8Aixd4WQt`WUaF@ pcv2;k2T$6+RP})|1VWV?{;Ci}>h8ZSGJ^zLFG?Fx__y z9Rrb2fvjpRJK5d?8E3w)2SuCEwrcnlhai*Ml`m`s>0>2)VNQr!r|Xo{-3VW{nVi7U zhLM3a!w@_0;P~;4`SbXr%>fsH#mb!cwaC@nyY}PIzsg!*0J+bk3 z*gFM#LYLf^tKx~sV_l#g4txV)k^`)d1O}X=7V>#($>#0fgRQ=mCFGv&{TamT;?AQx zHuq~WUQd|FsBdPTyvRNptrn2XpEo|9JzU`DMRSGar>`ps#-6Nq_5D=xHHPGSRP1*C z*N0!JT7UE(y|1n-)3dxd16qAUx)NJ|3@5!U_oB>9Xbl}Ot#rC9I89xbdS4C>+9s)N zlkUXWmGew`PDMz`d$a_aLx589iKMY4b2dUYeYUD3nxuU~78*k5!UDQh^q`DcqJ9&3 zza<#iNxsA*Fi0!*o^yC;^CQNlNOEDtubZ=+94`%kp#9o0%g}`V>*1POsjva;W%&syD_k?{I1@m3rAHtFXttCf-hQNru7p~J( zD5;k2BobZdc^a-R(|do%43z~#sn_ifpgr1@JUmyQK-tmpPqHLGe`bz3ZhWaSCqb5_ z5YGTnT>B9J1uU{M&-asYoYb-5^SoswspWCbG{>U{o$Wr>YVY%pak~w^eGo`Kb1pLr zCU+8}h=~&OVuJLh3PkHJhx*u?XwP7N@FZd~xKyO(T;E^@#{K$MTz_Huzpo*2bix<^ zm4>|56#vnXVD#`;8dBP-QVl~;x8_Piu7i6&JN2qDHC&sSocsc4Na}ZC=K5Xd)_5(6 zkB_DemAb$n*yc^QRS@2vd>Zqd_5S*O_K~3jN^^Z&ZxLAO8ZthMFVumND?v)kdm^DfJ0asl+a7-5;X)ZvErNbj0T0-$ft9~ zl7-I8*QbTJ)b$RhZ0Tb5LN7RC!mLtYxJVHAUnRG!>ya{GF1Y%t?C=c*M9}fSXpb%m zqpo7anExst>5anAj;=!_Pr#gmW{0DOh5pL%)=V)=RsA$QOS3Y@rQg894 zZAW~v!QOSA=WgS;L1s}*II)67W#b(<64FN)-J1+3 zq%S8sN@>1od<#11I|_|+XVe^{A9gJJyu1UlRuZjWua!L;>zy^>C>obV{xjI9J1O`4 z`=@&8r*1{YEkf3uI_0yKi7|y35a*SXXTGOGl&XOQdDC^4KY<7F{r#!KC|yoOga0Is zYp3RVV&#Vw8@15EzdhogX*4iT&?U=Euog(QFm`qYnIrROn`DS)qcPWbP2SUAoc{D; z`?P<~0Zv_wJaFD1#aKleojR1}D^&g0Z7JH63{AX#>!;w9FnGT0zReFDshFPziltEy z2Y6&g?&p?|`GAQw`)k*UCxAz@FDa9jVI_zhnV#nFnM1*IWU&WB?HX?IC63DX*l*05 z=+EUaMSCq7TG^%BeM`#S^sK5aUOrP+l!|)mn5F&MjAJ!k1$lpFYl~;fUS(Y6OzB`N zxS8eN#g^*OarBS!xKT5}^Z*tb{M&7>IyOoxpyG`*Cve7!=xth946ifj3(#37gI9VrFQM)f-ZIXJM3&8>@O*X*eB z)=&%<^NogUBlzxeu`(B``A2y$T{*pf&5z&YA=~x8O&(3(_D%m$9@kH{y;mM9|J&pt z2QS<6kMekS&-|zd){EtUz{6kb#rVJ0OT@!3lcTrR%j(%9uM>VusZL&Cz0k4YxWvJ` zOidpG>t&2-j28xhip*lmUMkxjz5-Y;+=01~Pob7%cLPVh>jx>~bj7UcJq@WC3MWl0 zI4wh46PUzjzSQS!(8~Ry`G&R`bjY-G`0R7YG(AjkrX@OaaJv2VdfC+fvKR%nQ%(g+ z*|Y22`bO2>%EXAT&%LJR(t^i8&vZv;IG*Lu{$BktUq6fckMdx-M;^cQhX9LEB0iLt zdd(JSQ2JB-3Oy>uxXNVfhhpQF!XjrgN9pscn6)QqR3Yha3k~^X$~Zr<8vguLznR1* zLT^cz^u$o<#q1CdHy-VRL=I7`8ma=h3{!Vz29{tkBjghV(tra7E5xiJda0P8b0)O8 zdQ+tTL;aDRg$Z#s`R&~IRFcv-kbu%`dd&Ua?UoCwO!r@zZZ~_(@6N5PGvM6T`OPY< zfm3xJKA3!}J3liSADBYuFgdQ*5StU%&gqZ)9KUYxV>BeRRoj)(0z8Sh9I_E6v9%L8 zAL;4aEOnY(Gzq|TL(;i6-QcfHH>kK@rrVxnTcq9wV7fIX$t$DdV(>hacBgOcH}Vs% zf$HZLu)F9zRAa%JaJEkD%p}0<5~^L+f9PMFox#_26fz?~4w!DXne`MSwD-=2=iz6b z|2P}i{yZDT{|{#a@BiJ|u>5al10M0`A6N1S2lg65;QRf?7u{`v+_Jv1$G!Yasvq!; z-4_1zDPH}_s@6#aG&YLlhUC7AVu+=?O~r9Qb5FffA;w2_Qiuam`M3} zAzapQk0=Pq=JRhm!JY-wPXl|?aESdqGDpsW$jnj=GUvr})JSOhN1jDLEVX^ffrfu_ zf%4^-xe*H0<;eM_I=?E`e5}8wsYz}VPk6y_*DT$rE;~)tB!?F7Q|&0Tbow}h9P?~N z;!3?S0_bJ*`eoRRgI?ZFdh53*zW3YqaQ)*1|16OIsX6+aK*)2YbYUW?V+tSmj1OY( zn#|4bp8S9i&Ha)d7}?(x0G2&>vGwz9|1f3*F}h4}L~E0*vEzu!nP;bnFr;;jcuVK- zv)%l_y_YQM-23P0OEd7;cH*}9)IY8Tk_iZe+<_!D$1W)%%MjKr9j7$gsDZVR7Ttel z9jCY-uUCosrzvThO##tL!{QRp0*m^%(V4-)R`?(6FY7O!2mdUP8)fky1I!0dpstn) z&DfceNIv{Us@EHe9AJQv0|pqIDLKa$ng8Xfn++?sCzgHp2APqx1RPj;W@D>J^XS3Z z38H79zt;}BOtU9^`-PtUPhN9Tgq;o4KvDmEEgIs@OkEBgx+&=Pp1vz) zVNBhaIFtYcvce*6`H*ShOP|Llnw+@gvBq(6aUDY{NRj!K4N(Onu_(J|RS6w(7gT}m zqKuABX^n*(ifVGWo@c6s7XlXxi{)*hie~uZ_bX6co_L&p7RYZF>8&L*m{0gPev1$J zFc|guilG$$)jc5gQM-iYy{#$qWW|Gu~^#b8ic;8>a zfNyUD{1UNH>@Zy4^y#@<7>mh0pPBZAhV^8TB7!+~BN#U^pC>Ft|75QyK*NZv8=U7n zX~g>Is1yS_#K0IYff&JFdn|gebBPzc&89_dTlr~#9)ensTLF4}h>-3o=XjanD{T6# zXJuXKY&v4O9VMBt+wf#OF=@HX-nlfqc-!2>mq1tjD#B($RgmudduTm&czRI!GIZt_ z#|b}57vN$|_*}6%FUc6({Xc}Vyhj4K{@rhDI(~lg&(q>J!~FKNpnCkjZCVT?yu$cr zf&6Bf|0WQ!|7`-HrP}ML2jY>ZCqrS3+RtdGLp|Fz_^y zgZs(a=ltx9$#qw#Aao7KN+I#_@aG8?H{pD{#TN?M-2?H&Q7;OTTXjfIpC|3uV%sUX zF>1PL=B6`BhnPXwRxg`fBqv4_D_y)eL{*+3fQ2uv;Rp*@*5@@2+5kIWNdNjBbQy-g zE&hJT_27x5{MCH;Z{s|yw=Ip|9C-oqJB~^8-yM^`8{&1FA-5d)t>k3M?f;=6uGbev z3pnzoB7kG^Cr92`nNuOI6Ac5w?ptSZ4kYNMo&DvUTVL12_x6B4IwtbkS%L|GJZgcz zK%xD$>7`|&BVeFqXm%w9&JdZal#<{jB#=^?$x;NYZXehrUck^Qhj|(wfsj^dkFsw) z{W*TM{bj(KzmEV3_-PiT&%!RA0lh_onmwuXE9#zS`uyPLy4b#(S@zGW11miuvHcK! zs*IM7Y;cl%kx&oMa9oHmiBiJsG3Mha70xGLD>Myd_Xl}9oujSE-r+#k=Mi89xgQEV ziQ|>u#WvzqeD3e6uP2_zPY{^YYG5EBC?L?Fy5>64R^}Ggv^wTidRJ5k(;z^}Qb2&W z{D1ou6wxCIM1j4xU(^aLIDcn72hD#P1-s@i`U1k^lk#CjxnE+(vkXV)gbW0}#n1g5 zr88d(6AD9e;p;yuDX+qZlL>(usKewOJ#->}Hb)JcucPv@WFRaRlS*ZA^d)%_c@aEk zY%bLN)3ML*$}(%e_BB?;X`38_qL+r-8_;f1q{r+@m9{g_6PO^e`p*+9&c-(yWigGq@s~LG-n);GNl2}dkG*Qwr+obVoY_cR%|eFbxK7jwbScqq$D;b*Ml_sA`SK_GZF3wH z30y%up6>Yy>_2UzQCUG>8vI6j$l)xnyzVVIH|D^;7e?~^mUL6!>v{t zh!OXD&71T+5GnkAV=Q&KurwK%R}z4)i+p?PX<1nO|1m$Z6~&h)7K-$zZXx>VRO|i^KhN(;>@=M7t-)Xbs%q5!D`Uhm%2TjfyldHb9_J zI?R_RDu2r=;ruYSOZgMhVV@_ddfa8)n{I8nZROGbm50!;t(&VX;)K^30T<-R7LE`n-&;q_Ow+qAb3VBdpbc3BAM#E z;xAxVvDGBcfd58-KN;NN_Rt$Y8#z(rtAloay{Y)yPyR1NF5y=pjY0T{tF)*P=W6Zo zYowgmm@F*D$8duPsa`$a!ef5JlN&6ukMw;p!9f$-Q8?k*?6y}r9ch9RJ$vq}@5c!{ z*(-Af6CDp4Y9{GuvRsU6z}Zg6{~I zvnnxCzT-@$;XDm@-t36)?pt54w(uokrX@dX;h12h0k}iI^eHG9HONi(Rg&6qY5<^3 zA#g!J&~EPHUq7h|n48(?nb~N_J6h;jt6j}=X|dk{$`$CI>;rEX2S9*4{;gLtP%iZ= zv2q;`y?fzWGuTWeu$W+BKtQex-J916knQ@b5<=VD-1xpv-9LE1fd;HbW#BV#ZmtA= z>IMb@T>R^UuZk)D3*z2EG-4swO9CI)MtGM#0Z`}#;Mf2`KfPaHuU+xGEZDUIbFLVZSY74&?n6-7 z(eB>_u4ZBSRX}lrF%1X>82x{eg}2j$cPT8#4M%_g!!O3WI}T8yYm~o|WH;%ty9i0O zwwZ~*otPlGi@->B8{t|O_lgk@9XK}|7`_=GNOFgG!`vc4B0AHwrv zH<0K;{2L7hn%^LexKY@FMfl#qH*o3 z{(Bm{QnwMVY21tOXBtTIw-J8PxECVbrxv^fppo@A8axWWL0r+e_AviFjVG^eBV5zC z7vaw|b~SG!{GxF$1T8rsI3cjatsmXJ8;`YrgSet`owE7&G;9oSBV5zC7vaw|1k7$D z{GxF$M1B5=89G42=x;Qvff(y8EpbKTI@9v+X;j(WM!2SNFT$T`0DVWd$8f#G?}ez8 z&Iv#QXej)R#wVBGAg*X!`>Fq)#|4Uw7kPhzWOug-Kv-sQyh; z{q+A0;)=#~rsLn!fDFHla82W0gg?_5in@*Pi^jbWrU{SiV1c^<4&063w;qW1zd>Bl zpubK~{C7Nlhu}-P4ROumeu&#dFmG*tfS;Rw8{!v{`!Vu2=y<07x*@+0gFoXpjB6(M zZlbq$^4}q3@@_-?VsbCUpP3MSybbXelY23I1zy{<15BWRsrCCXWQ%{pxMp(iKKf@S z;-79q{9+S@9e#M@}K3AK6D%6mptx;__I8$$8SUYC69YC66hr;uFU3i!n;f|CVs=XW^(Vg z{AVVkbGIRWF}WAw&rGtHZbSUVzT+N#i-Ro%Ht#!Wv{3?4F@EYotjBmX4 zyVbBaD7%VxQEm?*>dw^$%cwmfPLhxEnCjSAPJzRwDO~>~3M%4VbIi zAHc5H@x5SotFmsug4O>3c2lEucQM^9X}SSR)c6C~O@Y&0u)Fm@H(&*t*I>8S_pQnM z=R110#O4MtPwNk(yD7N2JG#5|DK}s>+J6B1Wrf{)7w#5!+@N*q{0Z&a61o@dZe_#` z+Be-lq5WBGcgqTH(6;pcg!bo^a5pD^gLbKZjds5V`SbAZrnheZAr1aCyg#q4ySd>T zG)%)kq5XMr-A%0CpphE=H)Q`Ty}PN(8$c4{KMe0Cad~$N-_7&gfITz$1$H~@clYYw zb89!(0za98g8VJhcK7n%^CPz}cQ(Iu`Cr)*X)#E^2m}F<1OE5|{*JU25C{eNe*g&! BOVj`W literal 0 HcmV?d00001 diff --git a/ExportsModules/MosquitoFBMkVI.lua b/ExportsModules/MosquitoFBMkVI.lua index 0c7964f..439e6cc 100644 --- a/ExportsModules/MosquitoFBMkVI.lua +++ b/ExportsModules/MosquitoFBMkVI.lua @@ -1123,9 +1123,50 @@ function ExportScript.fuelTanksTiles(mainPanelDevice) end +function ExportScript.VhfRadioTile(mainPanelDevice) --https://streamable.com/nnjgpt +--TODO find a way to always show three digits +--TODO assign actual number to these exports + --ExportScript.Tools.SendData(3051, GetDevice(27):get_frequency()) -- receiver raw + local switchPosition_R1155 = mainPanelDevice:get_argument_value(231) + local R1155_freq + + if switchPosition_R1155 < 0.05 then -- black/blue band + R1155_freq = (GetDevice(27):get_frequency())/1000000 + elseif switchPosition_R1155 < 0.15 then -- blue/red band + R1155_freq = (GetDevice(27):get_frequency())/1000000 + elseif switchPosition_R1155 < 0.25 then -- black1 band + R1155_freq = (GetDevice(27):get_frequency())/10000 + elseif switchPosition_R1155 < 0.35 then -- yellow band + R1155_freq = (GetDevice(27):get_frequency())/1000 + else --switchPosition_R1155 < 0.45 then -- black2 band + R1155_freq = (GetDevice(27):get_frequency())/1000 + end + + R1155_freq = round(R1155_freq,3) + ExportScript.Tools.SendData(3023, R1155_freq) -- receiver + + + --ExportScript.Tools.SendData(3050, GetDevice(26):get_frequency()) -- transmitter raw + local switchPosition_T1154 = mainPanelDevice:get_argument_value(215) + local T1154_freq + + if switchPosition_T1154 <= 0.05 then + T1154_freq = (GetDevice(26):get_frequency())/1000000 + elseif switchPosition_T1154 <= 0.15 then + T1154_freq = (GetDevice(26):get_frequency())/1000000 + else + T1154_freq = (GetDevice(26):get_frequency())/1000 + end + + T1154_freq = round(T1154_freq,3) + ExportScript.Tools.SendData(3024, T1154_freq) -- transmitter + + ExportScript.Tools.SendData(4016, "R1155 \n" .. R1155_freq .. "\n" + .. "T1154 \n" .. T1154_freq ) +end -function ExportScript.PilotRadioTile(mainPanelDevice) +function ExportScript.PilotRadioTile(mainPanelDevice) --TODO: When the radio is off, print OFF -- VHF_Radio local lVHF_Radio = GetDevice(24) local VhfRadioFreq @@ -1158,7 +1199,7 @@ function ExportScript.PilotRadioTile(mainPanelDevice) end ExportScript.Tools.SendData(3026, lVHF_Radio_PRESET) - ExportScript.Tools.SendData(4018, string.format("Radio " .. lVHF_Radio_PRESET .. "\n" .. VhfRadioFreq)) + ExportScript.Tools.SendData(4009, string.format("Radio " .. lVHF_Radio_PRESET .. "\n" .. VhfRadioFreq)) end @@ -1213,82 +1254,42 @@ function ExportScript.CrazyRadioTile(mainPanelDevice) end end - ExportScript.Tools.SendData(4011, "Blue Radio\n" .. + ExportScript.Tools.SendData(4010, "Blue Radio\n" .. "A " .. array_listOfPresets[1] .. "\n" .. "B " .. array_listOfPresets[2] .. "\n" .. "C " .. array_listOfPresets[3] .. "\n") - ExportScript.Tools.SendData(4012, "D " .. array_listOfPresets[4] .. "\n" .. + ExportScript.Tools.SendData(4011, "D " .. array_listOfPresets[4] .. "\n" .. "E " .. array_listOfPresets[5] .. "\n" .. "F " .. array_listOfPresets[6] .. "\n" .. "G " .. array_listOfPresets[7] .. "\n") - ExportScript.Tools.SendData(4013, "Red Radio\n" .. + ExportScript.Tools.SendData(4012, "Red Radio\n" .. "J " .. array_listOfPresets[8] .. "\n" .. "K " .. array_listOfPresets[9] .. "\n" .. "L " .. array_listOfPresets[10] .. "\n") - ExportScript.Tools.SendData(4014, "M " .. array_listOfPresets[11] .. "\n" .. + ExportScript.Tools.SendData(4013, "M " .. array_listOfPresets[11] .. "\n" .. "N " .. array_listOfPresets[12] .. "\n" .. "P " .. array_listOfPresets[13] .. "\n" .. "Q " .. array_listOfPresets[14] .. "\n") - ExportScript.Tools.SendData(4015, "Yellow Radio\n" .. + --TODO condider taking out 0s after the decimal + ExportScript.Tools.SendData(4014, "Yellow Radio\n" .. "S " .. array_listOfPresets[15] .. "\n" .. "T " .. array_listOfPresets[16] .. "\n" .. "U " .. array_listOfPresets[17] .. "\n") - ExportScript.Tools.SendData(4016, "V " .. array_listOfPresets[18] .. "\n" .. + ExportScript.Tools.SendData(4015, "V " .. array_listOfPresets[18] .. "\n" .. "W " .. array_listOfPresets[19] .. "\n" .. "X " .. array_listOfPresets[20] .. "\n" .. "Y " .. array_listOfPresets[21] .. "\n") end -function ExportScript.VhfRadioTile(mainPanelDevice) --https://streamable.com/nnjgpt ---TODO find a way to always show three digits ---TODO assign actual number to these exports - --ExportScript.Tools.SendData(3051, GetDevice(27):get_frequency()) -- receiver raw - local switchPosition_R1155 = mainPanelDevice:get_argument_value(231) - local R1155_freq - - if switchPosition_R1155 < 0.05 then -- black/blue band - R1155_freq = (GetDevice(27):get_frequency())/1000000 - elseif switchPosition_R1155 < 0.15 then -- blue/red band - R1155_freq = (GetDevice(27):get_frequency())/1000000 - elseif switchPosition_R1155 < 0.25 then -- black1 band - R1155_freq = (GetDevice(27):get_frequency())/10000 - elseif switchPosition_R1155 < 0.35 then -- yellow band - R1155_freq = (GetDevice(27):get_frequency())/1000 - else --switchPosition_R1155 < 0.45 then -- black2 band - R1155_freq = (GetDevice(27):get_frequency())/1000 - end - - R1155_freq = round(R1155_freq,3) - ExportScript.Tools.SendData(3023, R1155_freq) -- receiver - - - --ExportScript.Tools.SendData(3050, GetDevice(26):get_frequency()) -- transmitter raw - local switchPosition_T1154 = mainPanelDevice:get_argument_value(215) - local T1154_freq - - if switchPosition_T1154 <= 0.05 then - T1154_freq = (GetDevice(26):get_frequency())/1000000 - elseif switchPosition_T1154 <= 0.15 then - T1154_freq = (GetDevice(26):get_frequency())/1000000 - else - T1154_freq = (GetDevice(26):get_frequency())/1000 - end - - T1154_freq = round(T1154_freq,3) - ExportScript.Tools.SendData(3024, T1154_freq) -- transmitter - - ExportScript.Tools.SendData(4017, "R1155 \n" .. R1155_freq .. "\n" - .. "T1154 \n" .. T1154_freq ) -end --[[ Tiles diff --git a/ExportsModules/P-51D-30-NA.lua b/ExportsModules/P-51D-30-NA.lua new file mode 100644 index 0000000..9313f66 --- /dev/null +++ b/ExportsModules/P-51D-30-NA.lua @@ -0,0 +1,331 @@ +-- P-51D-30-NA Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.P51D30NA = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Flight Instruments + [11] = "%.4f", -- AirspeedNeedle {0,50,100,150,200,250,300,350,400,450,500,550,600,650,700} {0.0,0.05,0.10,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7} + [29] = "%.4f", -- Variometer {-6000,-4000,-2000,2000,4000,6000} {-0.6,-0.4,-0.2,0.2,0.4,0.6} + -- Altimeter + [97] = "%.4f", -- Altimeter_Pressure {28.1, 31.0}{0.0, 1.0} + [96] = "%.4f", -- Altimeter_10000_footPtr {0.0, 100000.0}{0.0, 1.0} + [24] = "%.4f", -- Altimeter_1000_footPtr {0.0, 10000.0}{0.0, 1.0} + [25] = "%.4f", -- Altimeter_100_footPtr{0.0, 1000.0}{0.0, 1.0} + -- Artificial horizon + [15] = "%.4f", -- AHorizon_Pitch {1.0, -1.0} + [14] = "%.4f", -- AHorizon_Bank {1.0, -1.0} + [16] = "%.1f", -- AHorizon_PitchShift {-1.0, 1.0} + [20] = "%.1f", -- AHorizon_Caged {0.0, 1.0} + -- directional gyro + [12] = "%.4f", -- GyroHeading + -- turn indicator + [27] = "%.4f", -- TurnNeedle {-1.0, 1.0} + [28] = "%.4f", -- Slipball {-1.0, 1.0} + -- oxygen pressure indicator + [34] = "%.4f", -- Oxygen_Pressure {0.0, 500.0} {0.0, 1.0} + [33] = "%.4f", -- Oxygen_Flow_Blinker + -- fuel system + [155] = "%.4f", -- Fuel_Tank_Left {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [156] = "%.4f", -- Fuel_Tank_Right {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [160] = "%.4f", -- Fuel_Tank_Fuselage {0.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,85.0} {0.0,0.12,0.28,0.40,0.51,0.62,0.72,0.83,0.96,1.0} + [32] = "%.4f", -- Fuel_Pressure {0.0, 25.0} {0.0, 1.0} + -- A-11 clock + [4] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0}{0.0, 1.0} + [5] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0}{0.0, 1.0} + [6] = "%.4f", -- CLOCK_currtime_seconds {0.0, 60.0}{0.0, 1.0} + -- AN5730 remote compass + [1] = "%.4f", -- CompassHeading + [2] = "%.4f", -- CommandedCourse + [3] = "%.4f", -- CommandedCourseKnob + -- TailRadarWarning + [161] = "%.f", -- Lamp TailRadarWarning + -- SCR-522A Control panel + [122] = "%.f", -- A_channel_light + [123] = "%.f", -- B_channel_light + [124] = "%.f", -- C_channel_light + [125] = "%.f", -- D_channel_light + [126] = "%.f", -- Transmit_light + -- hydraulic pressure + [78] = "%.4f", -- Hydraulic_Pressure {0.0, 2000.0} {0.0, 1.0} + -- Landing gears handle + [150] = "%.4f", -- Landing_Gear_Handle + [151] = "%.4f", -- Landing_Gear_Handle_Indoor + [80] = "%.f", -- LandingGearGreenLight + [82] = "%.f", -- LandingGearRedLight + -- gauges + [10] = "%.4f", -- Manifold_Pressure {10.0, 75.0} {0.0, 1.0} + [23] = "%.4f", -- Engine_RPM {0.0, 4500.0} {0.0, 1.0} + [9] = "%.4f", -- Vacuum_Suction {0.0, 10.0} {0.0, 1.0} + [21] = "%.4f", -- Carb_Temperature {-80, 150} {-0, 1} + [22] = "%.4f", -- Coolant_Temperature {-80, 150} {-0, 1} + [30] = "%.4f", -- Oil_Temperature {0.0, 100.0} {0, 1.0} + [31] = "%.4f", -- Oil_Pressure {0.0, 200.0} {0, 1.0} + [164] = "%.1f", -- Left_Fluor_Light + [165] = "%.1f", -- Right_Fluor_Light + [59] = "%.f", -- Hight_Blower_Lamp + -- Trimmer + [170] = "%.4f", -- Aileron_Trimmer {-1.0, 1.0} + [172] = "%.4f", -- Rudder_Trimmer {-1.0, 1.0} + [171] = "%.4f", -- Elevator_Trimmer {-1.0, 1.0} + [174] = "%.4f", -- Control_Lock_Bracket + [175] = "%.4f", -- Accelerometer_main {-5.0, 12.0} {0.0, 1.0} + [177] = "%.4f", -- Accelerometer_min {-5.0, 12.0} {0.0, 1.0} + [178] = "%.4f", -- Accelerometer_max {-5.0, 12.0} {0.0, 1.0} + [101] = "%.4f", -- Ammeter {0.0, 150.0} {0.0, 1.0} + -- light + [185] = "%.1f", -- Left_cockpit_light + [186] = "%.1f", -- Right_cockpit_light + [190] = "%.4f", -- warEmergencyPowerLimWire + ------------- + --[181] = "%.4f", -- Panel_Shake_Z + --[180] = "%.4f", -- Panel_Shake_Y + --[189] = "%.4f", -- Panel_Rot_X + --[162] = "%.1f", -- Canopy_Trucks + --[163] = "%.1f", -- Canopy_Visibility + -- Stick + --[50] = "%.4f", -- StickPitch + --[51] = "%.4f", -- StickBank + -- RudderPedals + --[54] = "%.4f", -- RudderPedals + --[55] = "%.4f", -- Left_Wheel_Brake + --[56] = "%.4f", -- Right_Wheel_Brake + -- K-14 gunsight + [36] = "%.4f", -- sightRange + --[188] = "%.4f", -- K_14_Shake_Z + --[187] = "%.4f", -- K_14_Shake_Y + ------------- + --[45] = "%.4f", -- ThrottleTwistGrip + ------------- + [77] = "%.4f", -- Rocket_Counter + ------------- + --[413] = "%.1f", -- WindShieldDamages + --[412] = "%.1f", -- WindShieldOil +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Right Swich Panel + [102] = "%d", -- Generator Connect/Disconnect + [103] = "%d", -- Battery Connect/Disconnect + [104] = "%d", -- Gun Heating ON/OFF + [105] = "%d", -- Pitot Heating ON/OFF + [106] = "%d", -- Wing Position Lights Bright/Off/Dim + [107] = "%d", -- Tail Position Lights Bright/Off/Dim + [108] = "%d", -- Red Recognition Light Key/Off/Steady + [109] = "%d", -- Green Recognition Light Key/Off/Steady + [110] = "%d", -- Amber Recognition Light Key/Off/Steady + [111] = "%d", -- Recognition Lights Key + [112] = "%d", -- Circuit Protectors Reset + [100] = "%.4f", -- Right Fluorescent Light (rotary) + [90] = "%.4f", -- Left Fluorescent Light (rotary) + -- Flight Instrument panel + [3] = "%.4f", -- Course Set (rotary) + [13] = "%.4f", -- Heading Set/Cage (rotary) + [179] = "%d", -- Heading Set/Cage Button + [17] = "%.4f", -- Pitch Adjustment (rotary) + [18] = "%.4f", -- Cage (rotary) + [19] = "%d", -- Cage Button + [8] = "%d", -- Winding/Adjustment Clock Button + [7] = "%.4f", -- Winding/Adjustment Clock (rotary) + [26] = "%.4f", -- Set Pressure (rotary) + -- SCR-522A Control panel + [117] = "%d", -- Radio ON/OFF + [118] = "%d", -- A Channel Activate + [119] = "%d", -- B Channel Activate + [120] = "%d", -- C Channel Activate + [121] = "%d", -- D Channel Activate + [127] = "%.4f", -- Radio Lights Dimmer (rotary) + [116] = "%.4f", -- Radio Audio Volume (rotary) + [44] = "%d", -- Microphone On + [200] = "%d", -- Arm rest + [129] = "%d", -- Switch Locking Lever + [128] = "%d", -- Radio Mode Transmit/Receive/Remote + ------------- + [71] = "%.4f", -- Cockpit Lights (rotary) + [66] = "%0.1f", -- Ignition Off/Right/Left/Both + [67] = "%d", -- Gun control Gun And Camera On/Gun And Camera OFF/Camera On + [72] = "%d", -- Silence Landing Gear Warning Horn Cut Off + -- Bomb Arm/Chemical + [69] = "%d", -- Left Bomb Arm/Chemical + [70] = "%d", -- Right Bomb Arm/Chemical + -- Release Mode + [68] = "%0.1f", -- Release Mode, Bombs and Rockets Safe/Bombs Train Release/Bombs Both Release/Rockets Arm + [73] = "%0.1f", -- Rockets Release Mode Off/Single/Auto + [74] = "%d", -- Rockets Delay Switch Delay/Int + [75] = "%0.4f", -- Rockets Counter Control + -- Engine Control Panel + [58] = "%d", -- Supercharger Switch Cover + [57] = "%0.1f", -- Supercharger AUTO/LOW/HIGH + [60] = "%d", -- High Blower Lamp Test + [61] = "%d", -- Fuel Booster On/Off + [62] = "%d", -- Oil Dilute Activate + [63] = "%d", -- Starter Activate + [64] = "%d", -- Starter Switch Cover + [65] = "%d", -- Primer Activate + -- Oxygen Regulator + [131] = "%d", -- Auto-Mix On-Off + [130] = "%0.4f", -- Oxygen Emergency By-pass + -- Fuel system + [85] = "%0.1f", -- Fuel Selector Valve, Select Right Combat Tank/Select Left Main Tank/Select Fuselage Tank/Select Right Main Tank/Select Left Combat Tank + [86] = "%d", -- Fuel Shut-Off Valve ON/OFF + -- AN/APS-13 + [114] = "%d", -- ail Warning Radar Power ON/OFF + [115] = "%d", -- Tail Warning Radar Test + [113] = "%.4f", -- Tail Warning Radar Light Control (rotary) + ------------- + [79] = "%d", -- Hydraulic Release Knob + [94] = "%.4f", -- Flaps Control Handle (rotary) + [84] = "%d", -- Parking Brake Handle + [81] = "%d", -- Safe Landing Gear Light Test + [83] = "%d", -- Unsafe Landing Gear Light Test + -- Detrola receiver + [137] = "%.4f", -- Detrola Frequency Selector (rotary) + [138] = "%.4f", -- Detrola Volume (rotary) + -- canopy + [147] = "%.4f", -- Canopy Hand Crank (rotary) + [149] = "%d", -- Canopy Emergency Release Handle + -- AN/ARA-8 + [152] = "%0.1f", -- Homing Adapter Mode TRANSMIT/COMM./HOMING + [153] = "%d", -- Homing Adapter Power On/Off + [154] = "%d", -- Homing Adapter's Circuit Breaker + -- SCR-695 + [139] = "%0.1f", -- IFF Code Selector Code 1/2/3/4/5/6 + [140] = "%d", -- IFF Power On/Off + [141] = "%d", -- IFF TIME/OFF/ON + [142] = "%d", -- IFF Detonator Circuit On/Off + [143] = "%d", -- IFF Distress Signal On/Off + [145] = "%d", -- IFF Detonator Left + [146] = "%d", -- IFF Detonator Right + -- Trimmers + [91] = "%.4f", -- Aileron Trim (rotary) + [92] = "%.4f", -- Elevator Trim (rotary) + [93] = "%.4f", -- Rudder Trim (rotary) + ------------- + [157] = "%.4f", -- Defroster (rotary) + [158] = "%.4f", -- Cold Air (rotary) + [159] = "%.4f", -- Hot Air (rotary) + ------------- + [89] = "%d", -- Landing Light On/Off + [168] = "%d", -- Coolant Control Cover + [87] = "%0.1f", -- Close Coolant Control/Automatic Coolant Control/Open Coolant Control + [169] = "%d", -- Oil Control Cover + [88] = "%0.1f", -- Close Oil Control/Automatic Oil Control/Open Oil Control + [134] = "%0.1f", -- Carburetor Cold Air Control (rotary) + [135] = "%0.1f", -- Carburetor Warm Air Control (rotary) + [47] = "%0.1f", -- Mixture Control Select IDLE CUT OFF/RUN/EMERGENCY FULL RICH + [43] = "%.4f", -- Throttle (rotary) + [46] = "%.4f", -- Propeller RPM (rotary) + [173] = "%d", -- Surface Control Lock Plunger. Left Button - Lock Stick in the Forward Position', Right Button - Lock Stick in the Neutral Position + [48] = "%.4f", -- Lock Throttle (rotary) + [49] = "%.4f", -- Lock Propeller & Mixture (rotary) + [176] = "%d", -- G-meter reset + [183] = "%d", -- Mirror +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/P-51D.lua b/ExportsModules/P-51D.lua new file mode 100644 index 0000000..3bb3158 --- /dev/null +++ b/ExportsModules/P-51D.lua @@ -0,0 +1,331 @@ +-- P-51D-25-NA Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.P51D25NA = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Flight Instruments + [11] = "%.4f", -- AirspeedNeedle {0,50,100,150,200,250,300,350,400,450,500,550,600,650,700} {0.0,0.05,0.10,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7} + [29] = "%.4f", -- Variometer {-6000,-4000,-2000,2000,4000,6000} {-0.6,-0.4,-0.2,0.2,0.4,0.6} + -- Altimeter + [97] = "%.4f", -- Altimeter_Pressure {28.1, 31.0}{0.0, 1.0} + [96] = "%.4f", -- Altimeter_10000_footPtr {0.0, 100000.0}{0.0, 1.0} + [24] = "%.4f", -- Altimeter_1000_footPtr {0.0, 10000.0}{0.0, 1.0} + [25] = "%.4f", -- Altimeter_100_footPtr{0.0, 1000.0}{0.0, 1.0} + -- Artificial horizon + [15] = "%.4f", -- AHorizon_Pitch {1.0, -1.0} + [14] = "%.4f", -- AHorizon_Bank {1.0, -1.0} + [16] = "%.1f", -- AHorizon_PitchShift {-1.0, 1.0} + [20] = "%.1f", -- AHorizon_Caged {0.0, 1.0} + -- directional gyro + [12] = "%.4f", -- GyroHeading + -- turn indicator + [27] = "%.4f", -- TurnNeedle {-1.0, 1.0} + [28] = "%.4f", -- Slipball {-1.0, 1.0} + -- oxygen pressure indicator + [34] = "%.4f", -- Oxygen_Pressure {0.0, 500.0} {0.0, 1.0} + [33] = "%.4f", -- Oxygen_Flow_Blinker + -- fuel system + [155] = "%.4f", -- Fuel_Tank_Left {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [156] = "%.4f", -- Fuel_Tank_Right {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [160] = "%.4f", -- Fuel_Tank_Fuselage {0.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,85.0} {0.0,0.12,0.28,0.40,0.51,0.62,0.72,0.83,0.96,1.0} + [32] = "%.4f", -- Fuel_Pressure {0.0, 25.0} {0.0, 1.0} + -- A-11 clock + [4] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0}{0.0, 1.0} + [5] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0}{0.0, 1.0} + [6] = "%.4f", -- CLOCK_currtime_seconds {0.0, 60.0}{0.0, 1.0} + -- AN5730 remote compass + [1] = "%.4f", -- CompassHeading + [2] = "%.4f", -- CommandedCourse + [3] = "%.4f", -- CommandedCourseKnob + -- TailRadarWarning + [161] = "%.f", -- Lamp TailRadarWarning + -- SCR-522A Control panel + [122] = "%.f", -- A_channel_light + [123] = "%.f", -- B_channel_light + [124] = "%.f", -- C_channel_light + [125] = "%.f", -- D_channel_light + [126] = "%.f", -- Transmit_light + -- hydraulic pressure + [78] = "%.4f", -- Hydraulic_Pressure {0.0, 2000.0} {0.0, 1.0} + -- Landing gears handle + [150] = "%.4f", -- Landing_Gear_Handle + [151] = "%.4f", -- Landing_Gear_Handle_Indoor + [80] = "%.f", -- LandingGearGreenLight + [82] = "%.f", -- LandingGearRedLight + -- gauges + [10] = "%.4f", -- Manifold_Pressure {10.0, 75.0} {0.0, 1.0} + [23] = "%.4f", -- Engine_RPM {0.0, 4500.0} {0.0, 1.0} + [9] = "%.4f", -- Vacuum_Suction {0.0, 10.0} {0.0, 1.0} + [21] = "%.4f", -- Carb_Temperature {-80, 150} {-0, 1} + [22] = "%.4f", -- Coolant_Temperature {-80, 150} {-0, 1} + [30] = "%.4f", -- Oil_Temperature {0.0, 100.0} {0, 1.0} + [31] = "%.4f", -- Oil_Pressure {0.0, 200.0} {0, 1.0} + [164] = "%.1f", -- Left_Fluor_Light + [165] = "%.1f", -- Right_Fluor_Light + [59] = "%.f", -- Hight_Blower_Lamp + -- Trimmer + [170] = "%.4f", -- Aileron_Trimmer {-1.0, 1.0} + [172] = "%.4f", -- Rudder_Trimmer {-1.0, 1.0} + [171] = "%.4f", -- Elevator_Trimmer {-1.0, 1.0} + [174] = "%.4f", -- Control_Lock_Bracket + [175] = "%.4f", -- Accelerometer_main {-5.0, 12.0} {0.0, 1.0} + [177] = "%.4f", -- Accelerometer_min {-5.0, 12.0} {0.0, 1.0} + [178] = "%.4f", -- Accelerometer_max {-5.0, 12.0} {0.0, 1.0} + [101] = "%.4f", -- Ammeter {0.0, 150.0} {0.0, 1.0} + -- light + [185] = "%.1f", -- Left_cockpit_light + [186] = "%.1f", -- Right_cockpit_light + [190] = "%.4f", -- warEmergencyPowerLimWire + ------------- + --[181] = "%.4f", -- Panel_Shake_Z + --[180] = "%.4f", -- Panel_Shake_Y + --[189] = "%.4f", -- Panel_Rot_X + --[162] = "%.1f", -- Canopy_Trucks + --[163] = "%.1f", -- Canopy_Visibility + -- Stick + --[50] = "%.4f", -- StickPitch + --[51] = "%.4f", -- StickBank + -- RudderPedals + --[54] = "%.4f", -- RudderPedals + --[55] = "%.4f", -- Left_Wheel_Brake + --[56] = "%.4f", -- Right_Wheel_Brake + -- K-14 gunsight + [36] = "%.4f", -- sightRange + --[188] = "%.4f", -- K_14_Shake_Z + --[187] = "%.4f", -- K_14_Shake_Y + ------------- + --[45] = "%.4f", -- ThrottleTwistGrip + ------------- + [77] = "%.4f", -- Rocket_Counter + ------------- + --[413] = "%.1f", -- WindShieldDamages + --[412] = "%.1f", -- WindShieldOil +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Right Swich Panel + [102] = "%d", -- Generator Connect/Disconnect + [103] = "%d", -- Battery Connect/Disconnect + [104] = "%d", -- Gun Heating ON/OFF + [105] = "%d", -- Pitot Heating ON/OFF + [106] = "%d", -- Wing Position Lights Bright/Off/Dim + [107] = "%d", -- Tail Position Lights Bright/Off/Dim + [108] = "%d", -- Red Recognition Light Key/Off/Steady + [109] = "%d", -- Green Recognition Light Key/Off/Steady + [110] = "%d", -- Amber Recognition Light Key/Off/Steady + [111] = "%d", -- Recognition Lights Key + [112] = "%d", -- Circuit Protectors Reset + [100] = "%.4f", -- Right Fluorescent Light (rotary) + [90] = "%.4f", -- Left Fluorescent Light (rotary) + -- Flight Instrument panel + [3] = "%.4f", -- Course Set (rotary) + [13] = "%.4f", -- Heading Set/Cage (rotary) + [179] = "%d", -- Heading Set/Cage Button + [17] = "%.4f", -- Pitch Adjustment (rotary) + [18] = "%.4f", -- Cage (rotary) + [19] = "%d", -- Cage Button + [8] = "%d", -- Winding/Adjustment Clock Button + [7] = "%.4f", -- Winding/Adjustment Clock (rotary) + [26] = "%.4f", -- Set Pressure (rotary) + -- SCR-522A Control panel + [117] = "%d", -- Radio ON/OFF + [118] = "%d", -- A Channel Activate + [119] = "%d", -- B Channel Activate + [120] = "%d", -- C Channel Activate + [121] = "%d", -- D Channel Activate + [127] = "%.4f", -- Radio Lights Dimmer (rotary) + [116] = "%.4f", -- Radio Audio Volume (rotary) + [44] = "%d", -- Microphone On + [200] = "%d", -- Arm rest + [129] = "%d", -- Switch Locking Lever + [128] = "%d", -- Radio Mode Transmit/Receive/Remote + ------------- + [71] = "%.4f", -- Cockpit Lights (rotary) + [66] = "%0.1f", -- Ignition Off/Right/Left/Both + [67] = "%d", -- Gun control Gun And Camera On/Gun And Camera OFF/Camera On + [72] = "%d", -- Silence Landing Gear Warning Horn Cut Off + -- Bomb Arm/Chemical + [69] = "%d", -- Left Bomb Arm/Chemical + [70] = "%d", -- Right Bomb Arm/Chemical + -- Release Mode + [68] = "%0.1f", -- Release Mode, Bombs and Rockets Safe/Bombs Train Release/Bombs Both Release/Rockets Arm + [73] = "%0.1f", -- Rockets Release Mode Off/Single/Auto + [74] = "%d", -- Rockets Delay Switch Delay/Int + [75] = "%0.4f", -- Rockets Counter Control + -- Engine Control Panel + [58] = "%d", -- Supercharger Switch Cover + [57] = "%0.1f", -- Supercharger AUTO/LOW/HIGH + [60] = "%d", -- High Blower Lamp Test + [61] = "%d", -- Fuel Booster On/Off + [62] = "%d", -- Oil Dilute Activate + [63] = "%d", -- Starter Activate + [64] = "%d", -- Starter Switch Cover + [65] = "%d", -- Primer Activate + -- Oxygen Regulator + [131] = "%d", -- Auto-Mix On-Off + [130] = "%0.4f", -- Oxygen Emergency By-pass + -- Fuel system + [85] = "%0.1f", -- Fuel Selector Valve, Select Right Combat Tank/Select Left Main Tank/Select Fuselage Tank/Select Right Main Tank/Select Left Combat Tank + [86] = "%d", -- Fuel Shut-Off Valve ON/OFF + -- AN/APS-13 + [114] = "%d", -- ail Warning Radar Power ON/OFF + [115] = "%d", -- Tail Warning Radar Test + [113] = "%.4f", -- Tail Warning Radar Light Control (rotary) + ------------- + [79] = "%d", -- Hydraulic Release Knob + [94] = "%.4f", -- Flaps Control Handle (rotary) + [84] = "%d", -- Parking Brake Handle + [81] = "%d", -- Safe Landing Gear Light Test + [83] = "%d", -- Unsafe Landing Gear Light Test + -- Detrola receiver + [137] = "%.4f", -- Detrola Frequency Selector (rotary) + [138] = "%.4f", -- Detrola Volume (rotary) + -- canopy + [147] = "%.4f", -- Canopy Hand Crank (rotary) + [149] = "%d", -- Canopy Emergency Release Handle + -- AN/ARA-8 + --[152] = "%0.1f", -- Homing Adapter Mode TRANSMIT/COMM./HOMING + --[153] = "%d", -- Homing Adapter Power On/Off + --[154] = "%d", -- Homing Adapter's Circuit Breaker + -- SCR-695 + --[139] = "%0.1f", -- IFF Code Selector Code 1/2/3/4/5/6 + --[140] = "%d", -- IFF Power On/Off + --[141] = "%d", -- IFF TIME/OFF/ON + --[142] = "%d", -- IFF Detonator Circuit On/Off + --[143] = "%d", -- IFF Distress Signal On/Off + --[145] = "%d", -- IFF Detonator Left + --[146] = "%d", -- IFF Detonator Right + -- Trimmers + [91] = "%.4f", -- Aileron Trim (rotary) + [92] = "%.4f", -- Elevator Trim (rotary) + [93] = "%.4f", -- Rudder Trim (rotary) + ------------- + [157] = "%.4f", -- Defroster (rotary) + [158] = "%.4f", -- Cold Air (rotary) + [159] = "%.4f", -- Hot Air (rotary) + ------------- + [89] = "%d", -- Landing Light On/Off + [168] = "%d", -- Coolant Control Cover + [87] = "%0.1f", -- Close Coolant Control/Automatic Coolant Control/Open Coolant Control + [169] = "%d", -- Oil Control Cover + [88] = "%0.1f", -- Close Oil Control/Automatic Oil Control/Open Oil Control + [134] = "%0.1f", -- Carburetor Cold Air Control (rotary) + [135] = "%0.1f", -- Carburetor Warm Air Control (rotary) + [47] = "%0.1f", -- Mixture Control Select IDLE CUT OFF/RUN/EMERGENCY FULL RICH + [43] = "%.4f", -- Throttle (rotary) + [46] = "%.4f", -- Propeller RPM (rotary) + [173] = "%d", -- Surface Control Lock Plunger. Left Button - Lock Stick in the Forward Position', Right Button - Lock Stick in the Neutral Position + [48] = "%.4f", -- Lock Throttle (rotary) + [49] = "%.4f", -- Lock Propeller & Mixture (rotary) + [176] = "%d", -- G-meter reset + [183] = "%d", -- Mirror +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/SA342L.lua b/ExportsModules/SA342L.lua new file mode 100644 index 0000000..07990a1 --- /dev/null +++ b/ExportsModules/SA342L.lua @@ -0,0 +1,726 @@ +-- SA342L + +ExportScript.FoundDCSModule = true +ExportScript.Version.SA342L = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Gyro Panel + [200] = "%.4f", -- Gyro_Needle_State {-1,1} Gyro Panel SYNC + [201] = "%.f", -- Gyro_voyant_test Lamp {0,1} + [202] = "%.f", -- Gyro_voyant_trim Lamp {0,1} + [203] = "%.f", -- Gyro_voyant_bpp Lamp {0,1} + -- Autopilot Panel + [37] = "%.4f", -- T_Needle_State {-1,1} Pitch correction Indicator + [38] = "%.4f", -- R_Needle_State {-1,1} Roll correction Indicator + [39] = "%.4f", -- L_Needle_State {-1,1} Yaw correction Indicator + --[196] = "%.4f", -- RWR_light {0,1} -- RWR background light + --[] = "%.4f", -- PE_fondbright {0,1} ??? + --[353] = "%.4f", -- NADIR_fondbright {0,1} ??? + -- Flare Dispenser Lamps + [233] = "%.f", -- Voyant_FD_On {0,1} Power On + [231] = "%.f", -- Voyant_FD_G {0,1} select Left + [232] = "%.f", -- Voyant_FD_D {0,1} select Right + [227] = "%.f", -- Voyant_FD_LEU {0,1} Status LEU + [223] = "%.f", -- Voyant_FD_G_vide1 {0,1} Status Left G + [224] = "%.f", -- Voyant_FD_G_vide2 {0,1} Status Left VIDE + [225] = "%.f", -- Voyant_FD_D_vide1 {0,1} Status Right G + [226] = "%.f", -- Voyant_FD_D_vide2 {0,1} Status Right VIDE + -- ADF Radio + [158] = "%0.1f", -- ADF_nav1_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [159] = "%0.1f", -- ADF_nav1_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [160] = "%0.1f", -- ADF_nav1_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [161] = "%0.1f", -- ADF_nav1_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [162] = "%0.1f", -- ADF_nav2_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [163] = "%0.1f", -- ADF_nav2_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [164] = "%0.1f", -- ADF_nav2_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [165] = "%0.1f", -- ADF_nav2_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- ADF Gauge + [113] = "%.4f", -- ADF_Fond Compass rose {0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360}{0.0,0.028,0.055,0.084,0.111,0.138,0.166,0.194,0.222,0.249,0.2775,0.305,0.332,0.36,0.388,0.415,0.4434,0.47,0.498,0.526,0.555,0.583,0.611,0.638,0.6665,0.694,0.722,0.75,0.776,0.805,0.833,0.861,0.8885,0.917,0.944,0.972,1.0} + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [103] = "%.4f", -- ADF_Aiguille_fine Heading Needle fine {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [107] = "%.1f", -- ADF_FlagCAP {0,1} + [109] = "%.1f", -- ADF_FlagBut {0,1} + [108] = "%.1f", -- ADF_FlagCompteur PX Flag {0,1} + [110] = "%0.1f", -- ADF_compteur_Cent {0,1} X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [111] = "%0.1f", -- ADF_compteur_Dix {0,1} 0X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [112] = "%0.1f", -- ADF_compteur_Unit {0,1} 00X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- CLOCK + [41] = "%.3f", -- CLOCK_HOUR {0,1,2,3,4,5,6,7,8,9,10,11,12}{0,0.081,0.162,0.245,0.33,0.415,0.501,0.587,0.672,0.756,0.838,0.919,1} + [42] = "%.3f", -- CLOCK_SECOND {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [43] = "%.3f", -- CLOCK_MINUTE {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [44] = "%.3f", -- CLOCK_MINI {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}{0,0.032,0.065,0.098,0.131,0.164,0.198,0.231,0.264,0.297,0.331,0.364,0.397,0.43,0.464,0.497,0.523,0.551,0.576,0.605,0.63,0.659,0.684,0.714,0.758,0.796,0.838,0.879,0.92,0.958,1} + [210] = "%.4f", -- Clock_ExtCouronne + -- Wipers + --[547] = "%.4f", -- EGPilote {-1,1} + --[546] = "%.4f", -- EGCopilote {-1,1} + -- LIGHTS + --[40] = "%.4f", -- Lum_Plafond {0,1} Main Panel Lights + --[142] = "%.4f", -- PBOIntensity {0,1} Main Panel Background lights + --[144] = "%.4f", -- PUPIntensity {0,1} Lower Panel Background lights + -- Baro altimetre + [87] = "%.4f", -- Baro_Altimeter_thousands Needle {0.0,1.0} + [573] = "%.4f", -- Baro_Altimeter_hundred Needle {0.0,1.0} + [88] = "%0.1f", -- Baro_Altimeter_press_unite 000X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [90] = "%0.1f", -- Baro_Altimeter_press_dix 00X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [92] = "%0.1f", -- Baro_Altimeter_press_cent 0X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [95] = "%0.1f", -- Baro_Altimeter_press_mille X000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- radar altimetre + [94] = "%.4f", -- Radar_Altimeter {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0,0.019,0.035,0.072,0.109,0.147,0.18,0.214,0.247,0.283,0.316,0.345,0.376,0.407,0.438,0.469,0.501,0.564,0.606,0.648,0.676,0.706,0.732,0.756,0.775,0.794,0.811,0.829,0.843,0.858,0.87} + [93] = "%.4f", -- DangerRALT_index {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0.0,0.0175,0.0338,0.0715,0.109,0.147,0.182,0.215,0.247,0.282,0.315,0.3445,0.377,0.407,0.439,0.47,0.5005,0.5628,0.6052,0.646,0.675,0.7058,0.7315,0.755,0.7747,0.793,0.8097,0.8272,0.8425,0.8575,0.8693} + --[97] = "%.f", -- RAltlamp {0,1} + [98] = "%.f", -- RAlt_flag_Panne OFF Flag{0,1} + [99] = "%.1f", -- RAlt_flag_MA A (Test) Flag{0,1} + [91] = "%.1f", -- RAlt_knob_MA Power/Test Knop{0,1} + -- TORQUE + [16] = "%.3f", -- Torque {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.085,0.13,0.172,0.214,0.253,0.289,0.326,0.362,0.395,0.43,0.466,0.501,0.537,0.573,0.607,0.639,0.676,0.71,0.746,0.785,0.826,0.865,0.908} + [55] = "%.3f", -- Torque_Bug {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.084,0.128,0.171,0.2134,0.252,0.2889,0.325,0.361,0.396,0.431,0.467,0.501,0.535,0.571,0.605,0.639,0.674,0.71,0.745,0.785,0.825,0.865,0.91} + [17] = "%.f", -- VOYANT_TORQUE Lamp {0,1} + -- Gyro_Compas + [26] = "%.3f", -- Gyro_Compas {0,30,60,90,120,150,180,210,240,270,300,330,360}{0,0.083,0.167,0.251,0.334,0.418,0.5,0.583,0.667,0.751,0.832,0.917,1} + -- Stby HA ADI + [214] = "%.4f", -- StbyHA_Roll {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.502,-0.335,-0.166,-0.11,-0.052,0,0.055,0.113,0.171,0.334,0.502,1} + [213] = "%.4f", -- StbyHA_Pitch {-180,-150,-120,-90,-60,-50,-40,-30,-20,-15,-10,-5,0,5,10,15,20,30,40,50,60,90,120,150,180}{-1,-0.833,-0.667,-0.5,-0.333,-0.278,-0.223,-0.167,-0.111,-0.084,-0.057,-0.003,0,0.028,0.056,0.083,0.111,0.167,0.223,0.278,0.333,0.5,0.667,0.833,1} + [211] = "%.1f", -- StdbyHA_Flag Fault Flag {0,1} + [212] = "%.4f", -- Stdby_HA_W W Sympol {0,1} + [217] = "%.4f", -- Stdby_HA_Curseur Knob Needle {0,1} + -- QComb Fuel Indicator + [137] = "%.3f", -- QComb {0,50,100,150,200,250,300,350,400,500}{0.093,0.243,0.354,0.428,0.521,0.621,0.692,0.771,0.834,0.932} + -- Horizon Artificiel Principal + [27] = "%.4f", -- Pitch_HA {-180,-170,-160,-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180}{-1,-0.946,-0.898,-0.838,-0.78,-0.723,-0.667,-0.61,-0.556,-0.501,-0.446,-0.393,-0.334,-0.277,-0.223,-0.166,-0.104,-0.054,0,0.054,0.102,0.161,0.22,0.277,0.333,0.389,0.443,0.498,0.553,0.607,0.666,0.722,0.776,0.834,0.896,0.946,1} + [28] = "%.4f", -- Roll_HA {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.498,-0.331,-0.162,-0.111,-0.053,0,0.058,0.112,0.168,0.331,0.498,1} + [20] = "%.4f", -- Bille_HA Slip Ball {-1,1} + [18] = "%.1f", -- flag_GS_HA GS Flag {0,1} + [19] = "%.1f", -- flag_HS_HA Fault Flag {0,1} + [29] = "%.1f", -- flag_Lock_HA Lock Flag {0,1} + [117] = "%.4f", -- Curseur_HA Knob Needle {0,1} + [120] = "%.4f", -- W_HA W Sympol {-1,1} + [118] = "%.4f", -- VerBar_HA Vertical Bar {-1,1} + [119] = "%.4f", -- HorBar_HA Horizon Bar {-1,1} + -- variometre + [24] = "%.4f", -- Variometre {-800,-700,-600,-500,-400,-300,-200,-100,-50,0,50,100,200,300,400,500,600,700,800}{-0.481,-0.436,-0.391,-0.338,-0.28,-0.218,-0.153,-0.075,-0.035,0.0,0.035,0.071,0.139,0.202,0.264,0.32,0.372,0.418,0.463} + -- IAS + [51] = "%.4f", -- IAS {0,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370}{0,0.1,0.133,0.172,0.207,0.243,0.277,0.316,0.35,0.38,0.41,0.439,0.465,0.491,0.517,0.541,0.565,0.587,0.611,0.63,0.651,0.671,0.692,0.712,0.731,0.75,0.77,0.791,0.809,0.829,0.849,0.867,0.886} + -- RPM + [135] = "%.4f", -- Turbine_RPM large Needle {0,5000,10000,15000,20000,25000,29000,35000,40000,43500,45000,50000}{0.095,0.181,0.263,0.346,0.424,0.505,0.572,0.665,0.748,0.802,0.828,0.909} + [52] = "%.4f", -- Rotor_RPM small Needle {0,50,100,150,200,250,262,316.29,361.05,387,400,450}{0.096,0.191,0.283,0.374,0.461,0.549,0.57,0.665,0.748,0.802,0.811,0.904} + -- Voltmetre + [14] = "%.3f", -- Voltmetre {0,5,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}{0.045,0.074,0.103,0.133,0.163,0.192,0.221,0.25,0.281,0.31,0.339,0.368,0.399,0.429,0.458,0.488,0.518,0.547,0.576,0.605,0.635,0.664,0.695,0.724} + -- TQuatre Engine temperature Indicator + [15] = "%.3f", -- TQuatre Engine Temp {0,100,200,300,400,500,600,700,800}{0.1575,0.228,0.3,0.3845,0.473,0.577,0.676,0.772,0.8625} + -- TempExt outside temperature + [25] = "%.3f", -- TempExt {-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70}{-0.758,-0.691,-0.625,-0.558,-0.492,-0.425,-0.359,-0.292,-0.224,-0.158,-0.09,-0.024,0.043,0.11,0.177,0.244,0.31,0.379,0.445,0.512,0.579,0.644,0.712} + -- TempThm Oil Temperature Indicator + [151] = "%.3f", -- TempThm Oil Temp {-20,-10,0,10,20,30,40,50,60,70,80,85,90,100}{0.046,0.102,0.157,0.213,0.268,0.323,0.38,0.435,0.492,0.547,0.603,0.63,0.659,0.715} + -- Fuel Tank Indicator + [152] = "%.3f", -- Gauge_RSupp {-1,0,0.25,0.5,0.75,1}{0,0.202,0.426,0.63,0.801,1} + -- VHF AM Radio + [133] = "%.1f", -- AM_Radio_freq_cent {0,1} X00.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [134] = "%.1f", -- AM_Radio_freq_dix {0,1} 0X0.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [136] = "%.1f", -- AM_Radio_freq_unite {0,1} 00X.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [138] = "%.1f", -- AM_Radio_freq_dixieme {0,1} 000.X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [139] = "%.2f", -- AM_Radio_freq_centieme {0,1} 000.0XX {00,25,50,75,00}{0.0,0.25,0.50,0.75,1.0} + -- Lamps + -- Voyant_DEM + [300] = "%.f", -- Voyant_DEM Start lamp{0,1} + -- Voyant_RLT + [301] = "%.f", -- Voyant_RLT Idle lamp {0,1} + -- Voyant_BLOC + [302] = "%.f", -- Voyant_BLOC Blocked Engine lamp {0,1} + -- RSUPP Fueltank + [320] = "%.f", -- Voyant_RSupp Fueltank lamp {0,1} + -- RCONV Convoy Fueltank + [321] = "%.f", -- Voyant_RConv Convoy Fueltank lamüp {0,1} + -- Voyant_FILTAS Sandfilter lamp + [322] = "%.f", -- Voyant_FILTAS sandfilter lamp {0,1} + -- Voyant_Alarme Master Alarme lamp + [303] = "%.f", -- Voyant_Alarme Master Alarme lamp {0,1} + -- AM_RADIO + [141] = "%.f", -- AM_Radio_lamp {0,1} + -- Tableau Alarme Lamps + [1] = "%.f", -- TA_Pitot {0,1} + [2] = "%.f", -- TA_Hmot {0,1} + [3] = "%.f", -- TA_Hbtp {0,1} + [4] = "%.f", -- TA_Hral {0,1} + [5] = "%.f", -- TA_Gene {0,1} + [6] = "%.f", -- TA_Alter {0,1} + [7] = "%.f", -- TA_Bat {0,1} + [8] = "%.f", -- TA_PA {0,1} + [9] = "%.f", -- TA_Nav {0,1} + [10] = "%.f", -- TA_Comb {0,1} + [11] = "%.f", -- TA_Bphy {0,1} + [12] = "%.f", -- TA_Lim {0,1} + [13] = "%.f", -- TA_Filt {0,1} + -- Intercomp Lamps + [455] = "%.f", -- Intercomp VHF Light + [456] = "%.f", -- Intercomp FM1 Light + [457] = "%.f", -- Intercomp UHF Light +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- WEAPONS PANEL 1 + [354] = "%1d", -- WP1 - Off/On/Stsnfby {-1.0,0.0,1.0} + [357] = "%.4f", -- WP1 - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- WEAPONS PANEL 2 + [372] = "%1d", -- WP2 - Ma Left + [373] = "%1d", -- WP2 - Ma Left Cover + [374] = "%1d", -- WP2 - Ma Right + [375] = "%1d", -- WP2 - Ma Right Cover + [376] = "%1d", -- WP2 - Seq Ripple selection + -- PILOTSIGHT + [171] = "%1d", -- PILOTSIGHT - Pilot Sight + -- PILOT STICK + --[50] = "%1d", -- PILOT STICK - Magnetic Brake + --[53] = "%1d", -- PILOT STICK - Wiper once + --[209] = "%1d", -- PILOT STICK - Autopilot Button + --[293] = "%1d", -- PILOT STICK - Slave + --[294] = "%1d", -- PILOT STICK - Auto-Hover + -- WSO LEFT SIDE STICK + [255] = "%1d", -- PE WSO STICK - Lasing Button Cover + [256] = "%1d", -- PE WSO STICK - Lasing Button + [257] = "%1d", -- PE WSO STICK - Missile Launch Cover + [258] = "%1d", -- PE WSO STICK - Missile Launch Button + [259] = "%1d", -- PE WSO STICK - Inversed Symbology Toggle + [260] = "%1d", -- PE WSO STICK - Inversed Image Toggle + [264] = "%.1f", -- PE WSO STICK - Image Focus {-1.0,1.0} + [262] = "%.1f", -- PE WSO STICK - Gain {-1.0,1.0} + [263] = "%.1f", -- PE WSO STICK - Image Brightness {-1.0,1.0} + [219] = "%.1f", -- PE WSO STICK - Symbology Brightness {-1.0,1.0} + -- GYRO + [197] = "%1d", -- GYRO - Test Cover + [198] = "%1d", -- GYRO - Test Switch On/Off + [199] = "%1d", -- GYRO - Left/Center/Right + [153] = "%.2f", -- GYRO - CM/A/GM/D/GD {0.0,0.25,0.50,0.75,1.0} + -- CLOCK + [45] = "%.4f", -- CLOCK - Winder (Axis) {0.0, 1.0} in 0.1 Steps + [46] = "%1d", -- CLOCK - Start/Stop + [47] = "%1d", -- CLOCK - Reset + -- PE SA342L/M/Mistral BCV (BOITIER DE COMMANDE VIDEO – video command box) + [362] = "%1d", -- PE BCV - Centering + [364] = "%1d", -- PE BCV - VDO/VTH + [365] = "%.1f", -- PE BCV - Zoom {-1.0,1.0} + [366] = "%.1f", -- PE BCV - CTH A/V/M {0.0,0.5,1.0} + [367] = "%1d", -- PE BCV - Power + [370] = "%.2f", -- PE BCV - Mode A/C/V/PIL/ASS {0.0,0.25,0.50,0.75,1.0} + -- NADIR + [330] = "%.4f", -- NADIR - Off/Brightness (Axis) {0.0, 1.0} in 0.1 Steps + [331] = "%.2f", -- NADIR - Mode Off/Stby/Ground/Sea/Air Speed Sensor/Ground Test {0.0,0.2,0.4,0.6,0.8,1.0} + [332] = "%.2f", -- NADIR - Parameter Wind/Magnetic Heading/Ground Speed/Calculated Time/Current Position/Waypoint {0.0,0.2,0.4,0.6,0.8,1.0} + [333] = "%1d", -- NADIR - ENT + [334] = "%1d", -- NADIR - DES + [335] = "%1d", -- NADIR - AUX + [336] = "%1d", -- NADIR - IC + [337] = "%1d", -- NADIR - DOWN + [351] = "%1d", -- NADIR - 0 + [338] = "%1d", -- NADIR - 1 + [339] = "%1d", -- NADIR - 2 + [340] = "%1d", -- NADIR - 3 + [342] = "%1d", -- NADIR - 4 + [343] = "%1d", -- NADIR - 5 + [344] = "%1d", -- NADIR - 6 + [346] = "%1d", -- NADIR - 7 + [347] = "%1d", -- NADIR - 8 + [348] = "%1d", -- NADIR - 9 + [341] = "%1d", -- NADIR - POL + [345] = "%1d", -- NADIR - GEO + [349] = "%1d", -- NADIR - POS + [350] = "%1d", -- NADIR - GEL + [352] = "%1d", -- NADIR - EFF + -- AM_RADIO + [128] = "%.2f", -- AM RADIO - Selector {0.0,0.33,0.66,0.99} + [129] = "%.4f", -- AM RADIO - Freq decimals (Axis) {0.0, 1.0} in 0.1 Steps + [130] = "%1d", -- AM RADIO - 25/50kHz Selector + [131] = "%.4f", -- AM RADIO - Freq dial (Axis) {0.0, 1.0} in 0.1 Steps + -- FM_RADIO + [272] = "%.2f", -- FM RADIO - Main Selector {0.0,0.25,0.50,0.75,1.0} + [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} + [274] = "%1d", -- FM RADIO - 7 + [275] = "%1d", -- FM RADIO - 8 + [276] = "%1d", -- FM RADIO - 9 + [277] = "%1d", -- FM RADIO - 0 + [278] = "%1d", -- FM RADIO - X + [279] = "%1d", -- FM RADIO - 4 + [280] = "%1d", -- FM RADIO - 5 + [281] = "%1d", -- FM RADIO - 6 + [282] = "%1d", -- FM RADIO - RC + [283] = "%1d", -- FM RADIO - UP + [284] = "%1d", -- FM RADIO - 1 + [285] = "%1d", -- FM RADIO - 2 + [286] = "%1d", -- FM RADIO - 3 + [287] = "%1d", -- FM RADIO - VAL + [288] = "%1d", -- FM RADIO - DOWN + -- TV + [124] = "%1d", -- TV - On/Off + [125] = "%.4f", -- TV - Contrast (Axis) {0.0, 1.0} in 0.1 Steps + [123] = "%.4f", -- TV - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + --[126] = "%.4f", -- TV - Cover (Axis) {0.0, 1.0} in 0.1 Steps + -- RWR + [148] = "%1d", -- RWR - Off/On/Croc {-1.0,0.0,1.0} + [149] = "%1d", -- RWR - Marker + [150] = "%1d", -- RWR - Page + [121] = "%.4f", -- RWR - Audio (Axis) {0.0, 1.0} in 0.1 Steps + [122] = "%.4f", -- RWR - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- ADI + [115] = "%.4f", -- ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [116] = "%1d", -- ADI - Unlock + -- Stby ADI + [215] = "%.4f", -- STDBY ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [216] = "%1d", -- STDBY ADI - Unlock + -- ArtVisVhfDop (Source selector for main artificial horizon vertical bar) + [218] = "%.2f", -- ADI - Source Off/Camera target point/ADF ermitter/NADIR Waypoint {0.0,0.33,0.66,0.99} + -- INTERCOM + [452] = "%1d", -- INTERCOM - VHF AM Radio + [68] = "%.4f", -- INTERCOM - VHF AM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [453] = "%1d", -- INTERCOM - FM Radio + [69] = "%.4f", -- INTERCOM - FM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [454] = "%1d", -- INTERCOM - UHF Radio + [70] = "%.4f", -- INTERCOM - UHF Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + -- TORQUE + [58] = "%1d", -- TORQUE Bug/Test + [54] = "%.4f", -- TORQUE Bug/Test (Axis) {0.0, 1.0} in 0.1 Steps + -- LIGHTS + [22] = "%.4f", -- LIGHTS - Main Dashboard Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [21] = "%.4f", -- LIGHTS - Console Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [145] = "%.4f", -- LIGHTS - UV Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [23] = "%1d", -- LIGHTS - NORM/BNL + [147] = "%.4f", -- LIGHTS - Roof Lamp Knob (Axis) {0.0, 1.0} in 0.1 Steps + [154] = "%1d", -- LIGHTS - Red Lens On/Off + -- ELECTRIC + [264] = "%1d", -- ELECTRIC - Battery + [265] = "%1d", -- ELECTRIC - Alternator + [268] = "%1d", -- ELECTRIC - Generator + [62] = "%1d", -- ELECTRIC - Voltmeter Test + [170] = "%1d", -- ELECTRIC - Pitot + [271] = "%1d", -- ELECTRIC - Fuel Pump + [267] = "%1d", -- ELECTRIC - Additionnal Fuel Tank + [56] = "%1d", -- ELECTRIC - Starter Start/Stop/Air {-1.0,0.0,1.0} + [57] = "%1d", -- ELECTRIC - Test + [48] = "%1d", -- ELECTRIC - Copilot Wiper {-1.0,0.0,1.0} + [49] = "%1d", -- ELECTRIC - Pilot Wiper {-1.0,0.0,1.0} + [61] = "%1d", -- ELECTRIC - Left from Pitot + [59] = "%1d", -- ELECTRIC - HYD Test + [66] = "%1d", -- ELECTRIC - Alter Rearm + [67] = "%1d", -- ELECTRIC - Gene Rearm + [63] = "%1d", -- ELECTRIC - Convoy Tank On/Off + [64] = "%1d", -- ELECTRIC - Sand Filter On/Off + -- NAVLIGHTS + [146] = "%1d", -- NAVLIGHTS - Navigation Lights CLI/OFF/FIX {-1.0,0.0,1.0} + [228] = "%1d", -- NAVLIGHTS - Anticollision Light NOR/OFF/ATT {-1.0,0.0,1.0} + [105] = "%1d", -- NAVLIGHTS - Landing Light Off/Vario/On {-1.0,0.0,1.0} + [106] = "%1d", -- NAVLIGHTS - Landing Light Extend/Retract + [382] = "%1d", -- NAVLIGHTS - Panels Lighting On/Off + [30] = "%.4f", -- NAVLIGHTS - AntiCollision Light Intensity (Axis) {0.0, 1.0} in 0.1 Steps + [229] = "%1d", -- NAVLIGHTS - Formation Lights On/Off + [230] = "%.4f", -- NAVLIGHTS - Formation Lights Intensity (Axis) {0.0, 1.0} in 0.1 Steps + -- FLARE DISPENSER + [220] = "%1d", -- FLARE DISPENSER - G/G+D/D {-1.0,0.0,1.0} + [221] = "%1d", -- FLARE DISPENSER - Mode + [222] = "%1d", -- FLARE DISPENSER - Off/Speed {-1.0,0.0,1.0} + [194] = "%1d", -- FLARE DISPENSER - Fire Button Cover + [195] = "%1d", -- FLARE DISPENSER - Fire Button + -- AUTOPILOT + [31] = "%1d", -- AUTOPILOT - Autopilot On/Off + [32] = "%1d", -- AUTOPILOT - Pitch On/Off + [33] = "%1d", -- AUTOPILOT - Roll On/Off + [34] = "%1d", -- AUTOPILOT - Yaw On/Off + [35] = "%1d", -- AUTOPILOT - Mode Speed/OFF/Altitude {-1.0,0.0,1.0} + [60] = "%1d", -- AUTOPILOT - Trim On/Off + [65] = "%1d", -- AUTOPILOT - Magnetic Brake On/Off + -- WEAPONS + [269] = "%1d", -- WEAPONS - Master arm On/Off + -- ROTORS + [556] = "%.4f", -- ROTORS - Rotor Brake (Axis) {0.0, 1.0} in 0.055 Steps + -- RADIOALTIMETER + [96] = "%.4f", -- RADIOALTIMETER - Radar Alt Bug (Axis) {0.0, 1.0} in 0.1 Steps + [100] = "%1d", -- RADIOALTIMETER - Radar Alt On/Off - Test + [91] = "%.4f", -- RADIOALTIMETER - Radar Alt On/Off - Test (Axis) {0.0, 1.0} in 0.1 Steps + -- BAROALTIMETER + [89] = "%.4f", -- BAROALTIMETER - Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.1 Steps + -- FUEL SYSTEM + [557] = "%.4f", -- FUEL SYSTEM - Fuel Flow Lever (Axis) {0.0, 1.0} in 0.2 Steps + -- ADF RADIO + [166] = "%1d", -- ADF RADIO - Select + [167] = "%1d", -- ADF RADIO - Tone + [178] = "%.2f", -- ADF RADIO - Mode {0.0,0.33,0.66,0.99} + [179] = "%.4f", -- ADF RADIO - Gain (Axis) {0.0, 1.0} in 0.2 Steps + [168] = "%.4f", -- ADF RADIO - Nav1 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [169] = "%.4f", -- ADF RADIO - Nav1 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [173] = "%.4f", -- ADF RADIO - Nav1 Unit (Axis) {0.0, 1.0} in 0.2 Steps + [174] = "%.4f", -- ADF RADIO - Nav2 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [175] = "%.4f", -- ADF RADIO - Nav2 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [176] = "%.4f", -- ADF RADIO - Nav2 Unit (Axis) {0.0, 1.0} in 0.2 Steps + -- UHF RADIO + [383] = "%.3f", -- UHF RADIO - MODE 0/FF/NA/SV/DL/G/EN {0.0,0.167,0.334,0.501,0.668,0.835,1.0} + [384] = "%1d", -- UHF RADIO - DRW + [385] = "%1d", -- UHF RADIO - VLD + [386] = "%.4f", -- UHF RADIO - PAGE (Axis) {0.0, 1.0} in 0.2 Steps + [387] = "%1d", -- UHF RADIO - CONF + [388] = "%1d", -- UHF RADIO - 1 + [389] = "%1d", -- UHF RADIO - 2 + [390] = "%1d", -- UHF RADIO - 3 + [391] = "%1d", -- UHF RADIO - 4 + [392] = "%1d", -- UHF RADIO - 5 + [393] = "%1d", -- UHF RADIO - 6 + [394] = "%1d", -- UHF RADIO - 7 + [395] = "%1d", -- UHF RADIO - 8 + [396] = "%1d", -- UHF RADIO - 9 + [397] = "%1d" -- UHF RADIO - 0 +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --[97] = "%.f", -- RAltlamp {0,1} + ExportScript.Tools.SendData(97, (mainPanelDevice:get_argument_value(97) > 0.009 and 1 or 0)) + + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + local ADF_Aiguille_large = mainPanelDevice:get_argument_value(102) + if ADF_Aiguille_large ~= 0 then + ADF_Aiguille_large = ADF_Aiguille_large + 0.5 + if ADF_Aiguille_large > 1 then + ADF_Aiguille_large = ADF_Aiguille_large - 1.0 + end + end + ExportScript.Tools.SendData(102, string.format("%.4f", ADF_Aiguille_large)) +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendData(2000, string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendData(2000, string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendData(2000, " ") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendData(2001, string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendData(2001, ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendData(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendData(2002, string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendData(2002, " ") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendData(2003, lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendData(2004, string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendData(2005, string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendData(2004, "-") + ExportScript.Tools.SendData(2005, "-") + end +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2000", string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2000", string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2000", "-") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2001", string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2001", ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendDataDAC(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2002", string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2002", "-") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendDataDAC("2003", lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2004", string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2005", string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendDataDAC("2004", "-") + ExportScript.Tools.SendDataDAC("2005", "-") + end + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "UHF Radio" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 31 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 225.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.167 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} + --ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + --ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + -- Load Button = VLD Button + ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3003 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "AM Radio" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 5 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 118.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 143.975 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.33 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 137 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} + --ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3006 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = "FM Radio" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 28 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 30.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 87.975 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 0.25 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 273 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3002 -- preset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="1",[0.143]="2",[0.286]="3",[0.429]="4",[0.572]="5",[0.715]="6",[0.858]="0",[1.0]="-"} + ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.143 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 148 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3004 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 149 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/SA342M.lua b/ExportsModules/SA342M.lua new file mode 100644 index 0000000..b1f4045 --- /dev/null +++ b/ExportsModules/SA342M.lua @@ -0,0 +1,743 @@ +-- SA342M + +ExportScript.FoundDCSModule = true +ExportScript.Version.SA342M = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Gyro Panel + [200] = "%.4f", -- Gyro_Needle_State {-1,1} Gyro Panel SYNC + [201] = "%.f", -- Gyro_voyant_test Lamp {0,1} + [202] = "%.f", -- Gyro_voyant_trim Lamp {0,1} + [203] = "%.f", -- Gyro_voyant_bpp Lamp {0,1} + -- Autopilot Panel + [37] = "%.4f", -- T_Needle_State {-1,1} Pitch correction Indicator + [38] = "%.4f", -- R_Needle_State {-1,1} Roll correction Indicator + [39] = "%.4f", -- L_Needle_State {-1,1} Yaw correction Indicator + --[196] = "%.4f", -- RWR_light {0,1} -- RWR background light + --[] = "%.4f", -- PE_fondbright {0,1} ??? + --[353] = "%.4f", -- NADIR_fondbright {0,1} ??? + -- Flare Dispenser Lamps + [233] = "%.f", -- Voyant_FD_On {0,1} Power On + [231] = "%.f", -- Voyant_FD_G {0,1} select Left + [232] = "%.f", -- Voyant_FD_D {0,1} select Right + [227] = "%.f", -- Voyant_FD_LEU {0,1} Status LEU + [223] = "%.f", -- Voyant_FD_G_vide1 {0,1} Status Left G + [224] = "%.f", -- Voyant_FD_G_vide2 {0,1} Status Left VIDE + [225] = "%.f", -- Voyant_FD_D_vide1 {0,1} Status Right G + [226] = "%.f", -- Voyant_FD_D_vide2 {0,1} Status Right VIDE + -- ADF Radio + [158] = "%0.1f", -- ADF_nav1_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [159] = "%0.1f", -- ADF_nav1_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [160] = "%0.1f", -- ADF_nav1_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [161] = "%0.1f", -- ADF_nav1_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [162] = "%0.1f", -- ADF_nav2_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [163] = "%0.1f", -- ADF_nav2_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [164] = "%0.1f", -- ADF_nav2_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [165] = "%0.1f", -- ADF_nav2_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- ADF Gauge + [113] = "%.4f", -- ADF_Fond Compass rose {0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360}{0.0,0.028,0.055,0.084,0.111,0.138,0.166,0.194,0.222,0.249,0.2775,0.305,0.332,0.36,0.388,0.415,0.4434,0.47,0.498,0.526,0.555,0.583,0.611,0.638,0.6665,0.694,0.722,0.75,0.776,0.805,0.833,0.861,0.8885,0.917,0.944,0.972,1.0} + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [103] = "%.4f", -- ADF_Aiguille_fine Heading Needle fine {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [107] = "%.1f", -- ADF_FlagCAP {0,1} + [109] = "%.1f", -- ADF_FlagBut {0,1} + [108] = "%.1f", -- ADF_FlagCompteur PX Flag {0,1} + [110] = "%0.1f", -- ADF_compteur_Cent {0,1} X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [111] = "%0.1f", -- ADF_compteur_Dix {0,1} 0X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [112] = "%0.1f", -- ADF_compteur_Unit {0,1} 00X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- CLOCK + [41] = "%.3f", -- CLOCK_HOUR {0,1,2,3,4,5,6,7,8,9,10,11,12}{0,0.081,0.162,0.245,0.33,0.415,0.501,0.587,0.672,0.756,0.838,0.919,1} + [42] = "%.3f", -- CLOCK_SECOND {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [43] = "%.3f", -- CLOCK_MINUTE {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [44] = "%.3f", -- CLOCK_MINI {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}{0,0.032,0.065,0.098,0.131,0.164,0.198,0.231,0.264,0.297,0.331,0.364,0.397,0.43,0.464,0.497,0.523,0.551,0.576,0.605,0.63,0.659,0.684,0.714,0.758,0.796,0.838,0.879,0.92,0.958,1} + [210] = "%.4f", -- Clock_ExtCouronne + -- Wipers + --[547] = "%.4f", -- EGPilote {-1,1} + --[546] = "%.4f", -- EGCopilote {-1,1} + -- LIGHTS + --[40] = "%.4f", -- Lum_Plafond {0,1} Main Panel Lights + --[142] = "%.4f", -- PBOIntensity {0,1} Main Panel Background lights + --[144] = "%.4f", -- PUPIntensity {0,1} Lower Panel Background lights + -- Baro altimetre + [87] = "%.4f", -- Baro_Altimeter_thousands Needle {0.0,1.0} + [573] = "%.4f", -- Baro_Altimeter_hundred Needle {0.0,1.0} + [88] = "%0.1f", -- Baro_Altimeter_press_unite 000X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [90] = "%0.1f", -- Baro_Altimeter_press_dix 00X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [92] = "%0.1f", -- Baro_Altimeter_press_cent 0X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [95] = "%0.1f", -- Baro_Altimeter_press_mille X000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- radar altimetre + [94] = "%.4f", -- Radar_Altimeter {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0,0.019,0.035,0.072,0.109,0.147,0.18,0.214,0.247,0.283,0.316,0.345,0.376,0.407,0.438,0.469,0.501,0.564,0.606,0.648,0.676,0.706,0.732,0.756,0.775,0.794,0.811,0.829,0.843,0.858,0.87} + [93] = "%.4f", -- DangerRALT_index {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0.0,0.0175,0.0338,0.0715,0.109,0.147,0.182,0.215,0.247,0.282,0.315,0.3445,0.377,0.407,0.439,0.47,0.5005,0.5628,0.6052,0.646,0.675,0.7058,0.7315,0.755,0.7747,0.793,0.8097,0.8272,0.8425,0.8575,0.8693} + --[97] = "%.f", -- RAltlamp {0,1} + [98] = "%.f", -- RAlt_flag_Panne OFF Flag{0,1} + [99] = "%.1f", -- RAlt_flag_MA A (Test) Flag{0,1} + [91] = "%.1f", -- RAlt_knob_MA Power/Test Knop{0,1} + -- TORQUE + [16] = "%.3f", -- Torque {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.085,0.13,0.172,0.214,0.253,0.289,0.326,0.362,0.395,0.43,0.466,0.501,0.537,0.573,0.607,0.639,0.676,0.71,0.746,0.785,0.826,0.865,0.908} + [55] = "%.3f", -- Torque_Bug {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.084,0.128,0.171,0.2134,0.252,0.2889,0.325,0.361,0.396,0.431,0.467,0.501,0.535,0.571,0.605,0.639,0.674,0.71,0.745,0.785,0.825,0.865,0.91} + [17] = "%.f", -- VOYANT_TORQUE Lamp {0,1} + -- Gyro_Compas + [26] = "%.3f", -- Gyro_Compas {0,30,60,90,120,150,180,210,240,270,300,330,360}{0,0.083,0.167,0.251,0.334,0.418,0.5,0.583,0.667,0.751,0.832,0.917,1} + -- Stby HA ADI + [214] = "%.4f", -- StbyHA_Roll {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.502,-0.335,-0.166,-0.11,-0.052,0,0.055,0.113,0.171,0.334,0.502,1} + [213] = "%.4f", -- StbyHA_Pitch {-180,-150,-120,-90,-60,-50,-40,-30,-20,-15,-10,-5,0,5,10,15,20,30,40,50,60,90,120,150,180}{-1,-0.833,-0.667,-0.5,-0.333,-0.278,-0.223,-0.167,-0.111,-0.084,-0.057,-0.003,0,0.028,0.056,0.083,0.111,0.167,0.223,0.278,0.333,0.5,0.667,0.833,1} + [211] = "%.1f", -- StdbyHA_Flag Fault Flag {0,1} + [212] = "%.4f", -- Stdby_HA_W W Sympol {0,1} + [217] = "%.4f", -- Stdby_HA_Curseur Knob Needle {0,1} + -- QComb Fuel Indicator + [137] = "%.3f", -- QComb {0,50,100,150,200,250,300,350,400,500}{0.093,0.243,0.354,0.428,0.521,0.621,0.692,0.771,0.834,0.932} + -- Horizon Artificiel Principal + [27] = "%.4f", -- Pitch_HA {-180,-170,-160,-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180}{-1,-0.946,-0.898,-0.838,-0.78,-0.723,-0.667,-0.61,-0.556,-0.501,-0.446,-0.393,-0.334,-0.277,-0.223,-0.166,-0.104,-0.054,0,0.054,0.102,0.161,0.22,0.277,0.333,0.389,0.443,0.498,0.553,0.607,0.666,0.722,0.776,0.834,0.896,0.946,1} + [28] = "%.4f", -- Roll_HA {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.498,-0.331,-0.162,-0.111,-0.053,0,0.058,0.112,0.168,0.331,0.498,1} + [20] = "%.4f", -- Bille_HA Slip Ball {-1,1} + [18] = "%.1f", -- flag_GS_HA GS Flag {0,1} + [19] = "%.1f", -- flag_HS_HA Fault Flag {0,1} + [29] = "%.1f", -- flag_Lock_HA Lock Flag {0,1} + [117] = "%.4f", -- Curseur_HA Knob Needle {0,1} + [120] = "%.4f", -- W_HA W Sympol {-1,1} + [118] = "%.4f", -- VerBar_HA Vertical Bar {-1,1} + [119] = "%.4f", -- HorBar_HA Horizon Bar {-1,1} + -- variometre + [24] = "%.4f", -- Variometre {-800,-700,-600,-500,-400,-300,-200,-100,-50,0,50,100,200,300,400,500,600,700,800}{-0.481,-0.436,-0.391,-0.338,-0.28,-0.218,-0.153,-0.075,-0.035,0.0,0.035,0.071,0.139,0.202,0.264,0.32,0.372,0.418,0.463} + -- IAS + [51] = "%.4f", -- IAS {0,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370}{0,0.1,0.133,0.172,0.207,0.243,0.277,0.316,0.35,0.38,0.41,0.439,0.465,0.491,0.517,0.541,0.565,0.587,0.611,0.63,0.651,0.671,0.692,0.712,0.731,0.75,0.77,0.791,0.809,0.829,0.849,0.867,0.886} + -- RPM + [135] = "%.4f", -- Turbine_RPM large Needle {0,5000,10000,15000,20000,25000,29000,35000,40000,43500,45000,50000}{0.095,0.181,0.263,0.346,0.424,0.505,0.572,0.665,0.748,0.802,0.828,0.909} + [52] = "%.4f", -- Rotor_RPM small Needle {0,50,100,150,200,250,262,316.29,361.05,387,400,450}{0.096,0.191,0.283,0.374,0.461,0.549,0.57,0.665,0.748,0.802,0.811,0.904} + -- Voltmetre + [14] = "%.3f", -- Voltmetre {0,5,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}{0.045,0.074,0.103,0.133,0.163,0.192,0.221,0.25,0.281,0.31,0.339,0.368,0.399,0.429,0.458,0.488,0.518,0.547,0.576,0.605,0.635,0.664,0.695,0.724} + -- TQuatre Engine temperature Indicator + [15] = "%.3f", -- TQuatre Engine Temp {0,100,200,300,400,500,600,700,800}{0.1575,0.228,0.3,0.3845,0.473,0.577,0.676,0.772,0.8625} + -- TempExt outside temperature + [25] = "%.3f", -- TempExt {-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70}{-0.758,-0.691,-0.625,-0.558,-0.492,-0.425,-0.359,-0.292,-0.224,-0.158,-0.09,-0.024,0.043,0.11,0.177,0.244,0.31,0.379,0.445,0.512,0.579,0.644,0.712} + -- TempThm Oil Temperature Indicator + [151] = "%.3f", -- TempThm Oil Temp {-20,-10,0,10,20,30,40,50,60,70,80,85,90,100}{0.046,0.102,0.157,0.213,0.268,0.323,0.38,0.435,0.492,0.547,0.603,0.63,0.659,0.715} + -- Fuel Tank Indicator + [152] = "%.3f", -- Gauge_RSupp {-1,0,0.25,0.5,0.75,1}{0,0.202,0.426,0.63,0.801,1} + -- VHF AM Radio + [133] = "%.1f", -- AM_Radio_freq_cent {0,1} X00.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [134] = "%.1f", -- AM_Radio_freq_dix {0,1} 0X0.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [136] = "%.1f", -- AM_Radio_freq_unite {0,1} 00X.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [138] = "%.1f", -- AM_Radio_freq_dixieme {0,1} 000.X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [139] = "%.2f", -- AM_Radio_freq_centieme {0,1} 000.0XX {00,25,50,75,00}{0.0,0.25,0.50,0.75,1.0} + -- Lamps + -- Voyant_DEM + [300] = "%.f", -- Voyant_DEM Start lamp{0,1} + -- Voyant_RLT + [301] = "%.f", -- Voyant_RLT Idle lamp {0,1} + -- Voyant_BLOC + [302] = "%.f", -- Voyant_BLOC Blocked Engine lamp {0,1} + -- RSUPP Fueltank + [320] = "%.f", -- Voyant_RSupp Fueltank lamp {0,1} + -- RCONV Convoy Fueltank + [321] = "%.f", -- Voyant_RConv Convoy Fueltank lamüp {0,1} + -- Voyant_FILTAS Sandfilter lamp + [322] = "%.f", -- Voyant_FILTAS sandfilter lamp {0,1} + -- Voyant_Alarme Master Alarme lamp + [303] = "%.f", -- Voyant_Alarme Master Alarme lamp {0,1} + -- AM_RADIO + [141] = "%.f", -- AM_Radio_lamp {0,1} + -- Tableau Alarme Lamps + [1] = "%.f", -- TA_Pitot {0,1} + [2] = "%.f", -- TA_Hmot {0,1} + [3] = "%.f", -- TA_Hbtp {0,1} + [4] = "%.f", -- TA_Hral {0,1} + [5] = "%.f", -- TA_Gene {0,1} + [6] = "%.f", -- TA_Alter {0,1} + [7] = "%.f", -- TA_Bat {0,1} + [8] = "%.f", -- TA_PA {0,1} + [9] = "%.f", -- TA_Nav {0,1} + [10] = "%.f", -- TA_Comb {0,1} + [11] = "%.f", -- TA_Bphy {0,1} + [12] = "%.f", -- TA_Lim {0,1} + [13] = "%.f", -- TA_Filt {0,1} + -- Intercomp Lamps + [455] = "%.f", -- Intercomp VHF Light + [456] = "%.f", -- Intercomp FM1 Light + [457] = "%.f", -- Intercomp UHF Light + -- SA342M HOT3 Weapon Panel Lamps + [183] = "%.f", -- HOT3 WP Lamps BON + [184] = "%.f", -- HOT3 WP Lamps MAUVAIS + [185] = "%.f", -- HOT3 WP Lamps ALIMENTATION + [186] = "%.f", -- HOT3 WP Lamps MISSILE PRET + [187] = "%.f", -- HOT3 WP Lamps TIR AUTOR. + [188] = "%.f", -- HOT3 WP Lamps DEFAUT + [189] = "%.f", -- HOT3 WP Lamps TEST I + [190] = "%.f", -- HOT3 WP Lamps JOUR + [191] = "%.f", -- HOT3 WP Lamps LUMINOSITE + [192] = "%.f", -- HOT3 WP Lamps TEST II + [193] = "%.f" -- HOT3 WP Lamps NUIT +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- WEAPONS PANEL 1 + [354] = "%1d", -- WP1 - Off/On/Stsnfby {-1.0,0.0,1.0} + [357] = "%.4f", -- WP1 - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- WEAPONS PANEL 2 + [372] = "%1d", -- WP2 - Ma Left + [373] = "%1d", -- WP2 - Ma Left Cover + [374] = "%1d", -- WP2 - Ma Right + [375] = "%1d", -- WP2 - Ma Right Cover + [376] = "%1d", -- WP2 - Seq Ripple selection + -- PILOTSIGHT + [171] = "%1d", -- PILOTSIGHT - Pilot Sight + -- PILOT STICK + --[50] = "%1d", -- PILOT STICK - Magnetic Brake + --[53] = "%1d", -- PILOT STICK - Wiper once + --[209] = "%1d", -- PILOT STICK - Autopilot Button + --[293] = "%1d", -- PILOT STICK - Slave + --[294] = "%1d", -- PILOT STICK - Auto-Hover + -- WSO LEFT SIDE STICK + [255] = "%1d", -- PE WSO STICK - Lasing Button Cover + [256] = "%1d", -- PE WSO STICK - Lasing Button + [257] = "%1d", -- PE WSO STICK - Missile Launch Cover + [258] = "%1d", -- PE WSO STICK - Missile Launch Button + [259] = "%1d", -- PE WSO STICK - Inversed Symbology Toggle + [260] = "%1d", -- PE WSO STICK - Inversed Image Toggle + [264] = "%.1f", -- PE WSO STICK - Image Focus {-1.0,1.0} + [262] = "%.1f", -- PE WSO STICK - Gain {-1.0,1.0} + [263] = "%.1f", -- PE WSO STICK - Image Brightness {-1.0,1.0} + [219] = "%.1f", -- PE WSO STICK - Symbology Brightness {-1.0,1.0} + -- GYRO + [197] = "%1d", -- GYRO - Test Cover + [198] = "%1d", -- GYRO - Test Switch On/Off + [199] = "%1d", -- GYRO - Left/Center/Right + [153] = "%.2f", -- GYRO - CM/A/GM/D/GD {0.0,0.25,0.50,0.75,1.0} + -- CLOCK + [45] = "%.4f", -- CLOCK - Winder (Axis) {0.0, 1.0} in 0.1 Steps + [46] = "%1d", -- CLOCK - Start/Stop + [47] = "%1d", -- CLOCK - Reset + -- SA342M HOT3 only + -- PH SA342M HOT3 + [180] = "%.2f", -- PH - Test II/Test I/Off/Day/Night {0.0,0.25,0.50,0.75,1.0} + [181] = "%.3f", -- PH - Station Select 0/1/0/2/0/3/0/4/0 {0.0,0.125,0.250,0,375,0.500,0.625,0.750,0.875,1.0} + [182] = "%.4f", -- PH - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- PE SA342L/M/Mistral BCV (BOITIER DE COMMANDE VIDEO – video command box) + [362] = "%1d", -- PE BCV - Centering + [364] = "%1d", -- PE BCV - VDO/VTH + [365] = "%.1f", -- PE BCV - Zoom {-1.0,1.0} + [366] = "%.1f", -- PE BCV - CTH A/V/M {0.0,0.5,1.0} + [367] = "%1d", -- PE BCV - Power + [370] = "%.2f", -- PE BCV - Mode A/C/V/PIL/ASS {0.0,0.25,0.50,0.75,1.0} + -- NADIR + [330] = "%.4f", -- NADIR - Off/Brightness (Axis) {0.0, 1.0} in 0.1 Steps + [331] = "%.2f", -- NADIR - Mode Off/Stby/Ground/Sea/Air Speed Sensor/Ground Test {0.0,0.2,0.4,0.6,0.8,1.0} + [332] = "%.2f", -- NADIR - Parameter Wind/Magnetic Heading/Ground Speed/Calculated Time/Current Position/Waypoint {0.0,0.2,0.4,0.6,0.8,1.0} + [333] = "%1d", -- NADIR - ENT + [334] = "%1d", -- NADIR - DES + [335] = "%1d", -- NADIR - AUX + [336] = "%1d", -- NADIR - IC + [337] = "%1d", -- NADIR - DOWN + [351] = "%1d", -- NADIR - 0 + [338] = "%1d", -- NADIR - 1 + [339] = "%1d", -- NADIR - 2 + [340] = "%1d", -- NADIR - 3 + [342] = "%1d", -- NADIR - 4 + [343] = "%1d", -- NADIR - 5 + [344] = "%1d", -- NADIR - 6 + [346] = "%1d", -- NADIR - 7 + [347] = "%1d", -- NADIR - 8 + [348] = "%1d", -- NADIR - 9 + [341] = "%1d", -- NADIR - POL + [345] = "%1d", -- NADIR - GEO + [349] = "%1d", -- NADIR - POS + [350] = "%1d", -- NADIR - GEL + [352] = "%1d", -- NADIR - EFF + -- AM_RADIO + [128] = "%.2f", -- AM RADIO - Selector {0.0,0.33,0.66,0.99} + [129] = "%.4f", -- AM RADIO - Freq decimals (Axis) {0.0, 1.0} in 0.1 Steps + [130] = "%1d", -- AM RADIO - 25/50kHz Selector + [131] = "%.4f", -- AM RADIO - Freq dial (Axis) {0.0, 1.0} in 0.1 Steps + -- FM_RADIO + [272] = "%.2f", -- FM RADIO - Main Selector {0.0,0.25,0.50,0.75,1.0} + [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} + [274] = "%1d", -- FM RADIO - 7 + [275] = "%1d", -- FM RADIO - 8 + [276] = "%1d", -- FM RADIO - 9 + [277] = "%1d", -- FM RADIO - 0 + [278] = "%1d", -- FM RADIO - X + [279] = "%1d", -- FM RADIO - 4 + [280] = "%1d", -- FM RADIO - 5 + [281] = "%1d", -- FM RADIO - 6 + [282] = "%1d", -- FM RADIO - RC + [283] = "%1d", -- FM RADIO - UP + [284] = "%1d", -- FM RADIO - 1 + [285] = "%1d", -- FM RADIO - 2 + [286] = "%1d", -- FM RADIO - 3 + [287] = "%1d", -- FM RADIO - VAL + [288] = "%1d", -- FM RADIO - DOWN + -- TV + [124] = "%1d", -- TV - On/Off + [125] = "%.4f", -- TV - Contrast (Axis) {0.0, 1.0} in 0.1 Steps + [123] = "%.4f", -- TV - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + --[126] = "%.4f", -- TV - Cover (Axis) {0.0, 1.0} in 0.1 Steps + -- RWR + [148] = "%1d", -- RWR - Off/On/Croc {-1.0,0.0,1.0} + [149] = "%1d", -- RWR - Marker + [150] = "%1d", -- RWR - Page + [121] = "%.4f", -- RWR - Audio (Axis) {0.0, 1.0} in 0.1 Steps + [122] = "%.4f", -- RWR - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- ADI + [115] = "%.4f", -- ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [116] = "%1d", -- ADI - Unlock + -- Stby ADI + [215] = "%.4f", -- STDBY ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [216] = "%1d", -- STDBY ADI - Unlock + -- ArtVisVhfDop (Source selector for main artificial horizon vertical bar) + [218] = "%.2f", -- ADI - Source Off/Camera target point/ADF ermitter/NADIR Waypoint {0.0,0.33,0.66,0.99} + -- INTERCOM + [452] = "%1d", -- INTERCOM - VHF AM Radio + [68] = "%.4f", -- INTERCOM - VHF AM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [453] = "%1d", -- INTERCOM - FM Radio + [69] = "%.4f", -- INTERCOM - FM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [454] = "%1d", -- INTERCOM - UHF Radio + [70] = "%.4f", -- INTERCOM - UHF Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + -- TORQUE + [58] = "%1d", -- TORQUE Bug/Test + [54] = "%.4f", -- TORQUE Bug/Test (Axis) {0.0, 1.0} in 0.1 Steps + -- LIGHTS + [22] = "%.4f", -- LIGHTS - Main Dashboard Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [21] = "%.4f", -- LIGHTS - Console Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [145] = "%.4f", -- LIGHTS - UV Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [23] = "%1d", -- LIGHTS - NORM/BNL + [147] = "%.4f", -- LIGHTS - Roof Lamp Knob (Axis) {0.0, 1.0} in 0.1 Steps + [154] = "%1d", -- LIGHTS - Red Lens On/Off + -- ELECTRIC + [264] = "%1d", -- ELECTRIC - Battery + [265] = "%1d", -- ELECTRIC - Alternator + [268] = "%1d", -- ELECTRIC - Generator + [62] = "%1d", -- ELECTRIC - Voltmeter Test + [170] = "%1d", -- ELECTRIC - Pitot + [271] = "%1d", -- ELECTRIC - Fuel Pump + [267] = "%1d", -- ELECTRIC - Additionnal Fuel Tank + [56] = "%1d", -- ELECTRIC - Starter Start/Stop/Air {-1.0,0.0,1.0} + [57] = "%1d", -- ELECTRIC - Test + [48] = "%1d", -- ELECTRIC - Copilot Wiper {-1.0,0.0,1.0} + [49] = "%1d", -- ELECTRIC - Pilot Wiper {-1.0,0.0,1.0} + [61] = "%1d", -- ELECTRIC - Left from Pitot + [59] = "%1d", -- ELECTRIC - HYD Test + [66] = "%1d", -- ELECTRIC - Alter Rearm + [67] = "%1d", -- ELECTRIC - Gene Rearm + [63] = "%1d", -- ELECTRIC - Convoy Tank On/Off + [64] = "%1d", -- ELECTRIC - Sand Filter On/Off + -- NAVLIGHTS + [146] = "%1d", -- NAVLIGHTS - Navigation Lights CLI/OFF/FIX {-1.0,0.0,1.0} + [228] = "%1d", -- NAVLIGHTS - Anticollision Light NOR/OFF/ATT {-1.0,0.0,1.0} + [105] = "%1d", -- NAVLIGHTS - Landing Light Off/Vario/On {-1.0,0.0,1.0} + [106] = "%1d", -- NAVLIGHTS - Landing Light Extend/Retract + [382] = "%1d", -- NAVLIGHTS - Panels Lighting On/Off + [30] = "%.4f", -- NAVLIGHTS - AntiCollision Light Intensity (Axis) {0.0, 1.0} in 0.1 Steps + [229] = "%1d", -- NAVLIGHTS - Formation Lights On/Off + [230] = "%.4f", -- NAVLIGHTS - Formation Lights Intensity (Axis) {0.0, 1.0} in 0.1 Steps + -- FLARE DISPENSER + [220] = "%1d", -- FLARE DISPENSER - G/G+D/D {-1.0,0.0,1.0} + [221] = "%1d", -- FLARE DISPENSER - Mode + [222] = "%1d", -- FLARE DISPENSER - Off/Speed {-1.0,0.0,1.0} + [194] = "%1d", -- FLARE DISPENSER - Fire Button Cover + [195] = "%1d", -- FLARE DISPENSER - Fire Button + -- AUTOPILOT + [31] = "%1d", -- AUTOPILOT - Autopilot On/Off + [32] = "%1d", -- AUTOPILOT - Pitch On/Off + [33] = "%1d", -- AUTOPILOT - Roll On/Off + [34] = "%1d", -- AUTOPILOT - Yaw On/Off + [35] = "%1d", -- AUTOPILOT - Mode Speed/OFF/Altitude {-1.0,0.0,1.0} + [60] = "%1d", -- AUTOPILOT - Trim On/Off + [65] = "%1d", -- AUTOPILOT - Magnetic Brake On/Off + -- WEAPONS + [269] = "%1d", -- WEAPONS - Master arm On/Off + -- ROTORS + [556] = "%.4f", -- ROTORS - Rotor Brake (Axis) {0.0, 1.0} in 0.055 Steps + -- RADIOALTIMETER + [96] = "%.4f", -- RADIOALTIMETER - Radar Alt Bug (Axis) {0.0, 1.0} in 0.1 Steps + [100] = "%1d", -- RADIOALTIMETER - Radar Alt On/Off - Test + [91] = "%.4f", -- RADIOALTIMETER - Radar Alt On/Off - Test (Axis) {0.0, 1.0} in 0.1 Steps + -- BAROALTIMETER + [89] = "%.4f", -- BAROALTIMETER - Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.1 Steps + -- FUEL SYSTEM + [557] = "%.4f", -- FUEL SYSTEM - Fuel Flow Lever (Axis) {0.0, 1.0} in 0.2 Steps + -- ADF RADIO + [166] = "%1d", -- ADF RADIO - Select + [167] = "%1d", -- ADF RADIO - Tone + [178] = "%.2f", -- ADF RADIO - Mode {0.0,0.33,0.66,0.99} + [179] = "%.4f", -- ADF RADIO - Gain (Axis) {0.0, 1.0} in 0.2 Steps + [168] = "%.4f", -- ADF RADIO - Nav1 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [169] = "%.4f", -- ADF RADIO - Nav1 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [173] = "%.4f", -- ADF RADIO - Nav1 Unit (Axis) {0.0, 1.0} in 0.2 Steps + [174] = "%.4f", -- ADF RADIO - Nav2 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [175] = "%.4f", -- ADF RADIO - Nav2 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [176] = "%.4f", -- ADF RADIO - Nav2 Unit (Axis) {0.0, 1.0} in 0.2 Steps + -- UHF RADIO + [383] = "%.3f", -- UHF RADIO - MODE 0/FF/NA/SV/DL/G/EN {0.0,0.167,0.334,0.501,0.668,0.835,1.0} + [384] = "%1d", -- UHF RADIO - DRW + [385] = "%1d", -- UHF RADIO - VLD + [386] = "%.4f", -- UHF RADIO - PAGE (Axis) {0.0, 1.0} in 0.2 Steps + [387] = "%1d", -- UHF RADIO - CONF + [388] = "%1d", -- UHF RADIO - 1 + [389] = "%1d", -- UHF RADIO - 2 + [390] = "%1d", -- UHF RADIO - 3 + [391] = "%1d", -- UHF RADIO - 4 + [392] = "%1d", -- UHF RADIO - 5 + [393] = "%1d", -- UHF RADIO - 6 + [394] = "%1d", -- UHF RADIO - 7 + [395] = "%1d", -- UHF RADIO - 8 + [396] = "%1d", -- UHF RADIO - 9 + [397] = "%1d" -- UHF RADIO - 0 +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --[97] = "%.f", -- RAltlamp {0,1} + ExportScript.Tools.SendData(97, (mainPanelDevice:get_argument_value(97) > 0.009 and 1 or 0)) + + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + local ADF_Aiguille_large = mainPanelDevice:get_argument_value(102) + if ADF_Aiguille_large ~= 0 then + ADF_Aiguille_large = ADF_Aiguille_large + 0.5 + if ADF_Aiguille_large > 1 then + ADF_Aiguille_large = ADF_Aiguille_large - 1.0 + end + end + ExportScript.Tools.SendData(102, string.format("%.4f", ADF_Aiguille_large)) +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendData(2000, string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendData(2000, string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendData(2000, " ") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendData(2001, string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendData(2001, ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendData(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendData(2002, string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendData(2002, " ") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendData(2003, lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendData(2004, string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendData(2005, string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendData(2004, "-") + ExportScript.Tools.SendData(2005, "-") + end +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2000", string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2000", string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2000", "-") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2001", string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2001", ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendDataDAC(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2002", string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2002", "-") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendDataDAC("2003", lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2004", string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2005", string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendDataDAC("2004", "-") + ExportScript.Tools.SendDataDAC("2005", "-") + end + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "UHF Radio" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 31 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 225.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.167 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} + --ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + --ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + -- Load Button = VLD Button + ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3003 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "AM Radio" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 5 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 118.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 143.975 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.33 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 137 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} + --ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3006 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = "FM Radio" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 28 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 30.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 87.975 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 0.25 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 273 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3002 -- preset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="1",[0.143]="2",[0.286]="3",[0.429]="4",[0.572]="5",[0.715]="6",[0.858]="0",[1.0]="-"} + ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.143 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 148 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3004 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 149 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/SA342Mistral.lua b/ExportsModules/SA342Mistral.lua new file mode 100644 index 0000000..393fc32 --- /dev/null +++ b/ExportsModules/SA342Mistral.lua @@ -0,0 +1,731 @@ +-- SA342Mistral + +ExportScript.FoundDCSModule = true +ExportScript.Version.SA342Mistral = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Gyro Panel + [200] = "%.4f", -- Gyro_Needle_State {-1,1} Gyro Panel SYNC + [201] = "%.f", -- Gyro_voyant_test Lamp {0,1} + [202] = "%.f", -- Gyro_voyant_trim Lamp {0,1} + [203] = "%.f", -- Gyro_voyant_bpp Lamp {0,1} + -- Autopilot Panel + [37] = "%.4f", -- T_Needle_State {-1,1} Pitch correction Indicator + [38] = "%.4f", -- R_Needle_State {-1,1} Roll correction Indicator + [39] = "%.4f", -- L_Needle_State {-1,1} Yaw correction Indicator + --[196] = "%.4f", -- RWR_light {0,1} -- RWR background light + --[] = "%.4f", -- PE_fondbright {0,1} ??? + --[353] = "%.4f", -- NADIR_fondbright {0,1} ??? + -- Flare Dispenser Lamps + [233] = "%.f", -- Voyant_FD_On {0,1} Power On + [231] = "%.f", -- Voyant_FD_G {0,1} select Left + [232] = "%.f", -- Voyant_FD_D {0,1} select Right + [227] = "%.f", -- Voyant_FD_LEU {0,1} Status LEU + [223] = "%.f", -- Voyant_FD_G_vide1 {0,1} Status Left G + [224] = "%.f", -- Voyant_FD_G_vide2 {0,1} Status Left VIDE + [225] = "%.f", -- Voyant_FD_D_vide1 {0,1} Status Right G + [226] = "%.f", -- Voyant_FD_D_vide2 {0,1} Status Right VIDE + -- ADF Radio + [158] = "%0.1f", -- ADF_nav1_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [159] = "%0.1f", -- ADF_nav1_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [160] = "%0.1f", -- ADF_nav1_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [161] = "%0.1f", -- ADF_nav1_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [162] = "%0.1f", -- ADF_nav2_centaine {0,1} X00.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [163] = "%0.1f", -- ADF_nav2_dizaine {0,1} 0X0.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [164] = "%0.1f", -- ADF_nav2_unite {0,1} 00X.0 khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [165] = "%0.1f", -- ADF_nav2_dec {0,1} 000.X khz {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- ADF Gauge + [113] = "%.4f", -- ADF_Fond Compass rose {0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360}{0.0,0.028,0.055,0.084,0.111,0.138,0.166,0.194,0.222,0.249,0.2775,0.305,0.332,0.36,0.388,0.415,0.4434,0.47,0.498,0.526,0.555,0.583,0.611,0.638,0.6665,0.694,0.722,0.75,0.776,0.805,0.833,0.861,0.8885,0.917,0.944,0.972,1.0} + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [103] = "%.4f", -- ADF_Aiguille_fine Heading Needle fine {-360.0,0.0,360.0}{-1.0,0.0,1.0} + [107] = "%.1f", -- ADF_FlagCAP {0,1} + [109] = "%.1f", -- ADF_FlagBut {0,1} + [108] = "%.1f", -- ADF_FlagCompteur PX Flag {0,1} + [110] = "%0.1f", -- ADF_compteur_Cent {0,1} X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [111] = "%0.1f", -- ADF_compteur_Dix {0,1} 0X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [112] = "%0.1f", -- ADF_compteur_Unit {0,1} 00X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- CLOCK + [41] = "%.3f", -- CLOCK_HOUR {0,1,2,3,4,5,6,7,8,9,10,11,12}{0,0.081,0.162,0.245,0.33,0.415,0.501,0.587,0.672,0.756,0.838,0.919,1} + [42] = "%.3f", -- CLOCK_SECOND {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [43] = "%.3f", -- CLOCK_MINUTE {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60}{0,0.017,0.033,0.049,0.065,0.08,0.098,0.115,0.131,0.147,0.163,0.18,0.195,0.213,0.23,0.246,0.262,0.279,0.296,0.313,0.33,0.346,0.363,0.38,0.397,0.415,0.431,0.449,0.466,0.483,0.501,0.518,0.535,0.552,0.569,0.586,0.604,0.621,0.638,0.655,0.672,0.688,0.705,0.722,0.739,0.755,0.771,0.788,0.804,0.821,0.838,0.853,0.87,0.885,0.902,0.919,0.934,0.95,0.967,0.984,1} + [44] = "%.3f", -- CLOCK_MINI {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}{0,0.032,0.065,0.098,0.131,0.164,0.198,0.231,0.264,0.297,0.331,0.364,0.397,0.43,0.464,0.497,0.523,0.551,0.576,0.605,0.63,0.659,0.684,0.714,0.758,0.796,0.838,0.879,0.92,0.958,1} + [210] = "%.4f", -- Clock_ExtCouronne + -- Wipers + --[547] = "%.4f", -- EGPilote {-1,1} + --[546] = "%.4f", -- EGCopilote {-1,1} + -- LIGHTS + --[40] = "%.4f", -- Lum_Plafond {0,1} Main Panel Lights + --[142] = "%.4f", -- PBOIntensity {0,1} Main Panel Background lights + --[144] = "%.4f", -- PUPIntensity {0,1} Lower Panel Background lights + -- Baro altimetre + [87] = "%.4f", -- Baro_Altimeter_thousands Needle {0.0,1.0} + [573] = "%.4f", -- Baro_Altimeter_hundred Needle {0.0,1.0} + [88] = "%0.1f", -- Baro_Altimeter_press_unite 000X {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [90] = "%0.1f", -- Baro_Altimeter_press_dix 00X0 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [92] = "%0.1f", -- Baro_Altimeter_press_cent 0X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [95] = "%0.1f", -- Baro_Altimeter_press_mille X000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + -- radar altimetre + [94] = "%.4f", -- Radar_Altimeter {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0,0.019,0.035,0.072,0.109,0.147,0.18,0.214,0.247,0.283,0.316,0.345,0.376,0.407,0.438,0.469,0.501,0.564,0.606,0.648,0.676,0.706,0.732,0.756,0.775,0.794,0.811,0.829,0.843,0.858,0.87} + [93] = "%.4f", -- DangerRALT_index {0,5,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850}{0.0,0.0175,0.0338,0.0715,0.109,0.147,0.182,0.215,0.247,0.282,0.315,0.3445,0.377,0.407,0.439,0.47,0.5005,0.5628,0.6052,0.646,0.675,0.7058,0.7315,0.755,0.7747,0.793,0.8097,0.8272,0.8425,0.8575,0.8693} + --[97] = "%.f", -- RAltlamp {0,1} + [98] = "%.f", -- RAlt_flag_Panne OFF Flag{0,1} + [99] = "%.1f", -- RAlt_flag_MA A (Test) Flag{0,1} + [91] = "%.1f", -- RAlt_knob_MA Power/Test Knop{0,1} + -- TORQUE + [16] = "%.3f", -- Torque {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.085,0.13,0.172,0.214,0.253,0.289,0.326,0.362,0.395,0.43,0.466,0.501,0.537,0.573,0.607,0.639,0.676,0.71,0.746,0.785,0.826,0.865,0.908} + [55] = "%.3f", -- Torque_Bug {0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110}{0.084,0.128,0.171,0.2134,0.252,0.2889,0.325,0.361,0.396,0.431,0.467,0.501,0.535,0.571,0.605,0.639,0.674,0.71,0.745,0.785,0.825,0.865,0.91} + [17] = "%.f", -- VOYANT_TORQUE Lamp {0,1} + -- Gyro_Compas + [26] = "%.3f", -- Gyro_Compas {0,30,60,90,120,150,180,210,240,270,300,330,360}{0,0.083,0.167,0.251,0.334,0.418,0.5,0.583,0.667,0.751,0.832,0.917,1} + -- Stby HA ADI + [214] = "%.4f", -- StbyHA_Roll {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.502,-0.335,-0.166,-0.11,-0.052,0,0.055,0.113,0.171,0.334,0.502,1} + [213] = "%.4f", -- StbyHA_Pitch {-180,-150,-120,-90,-60,-50,-40,-30,-20,-15,-10,-5,0,5,10,15,20,30,40,50,60,90,120,150,180}{-1,-0.833,-0.667,-0.5,-0.333,-0.278,-0.223,-0.167,-0.111,-0.084,-0.057,-0.003,0,0.028,0.056,0.083,0.111,0.167,0.223,0.278,0.333,0.5,0.667,0.833,1} + [211] = "%.1f", -- StdbyHA_Flag Fault Flag {0,1} + [212] = "%.4f", -- Stdby_HA_W W Sympol {0,1} + [217] = "%.4f", -- Stdby_HA_Curseur Knob Needle {0,1} + -- QComb Fuel Indicator + [137] = "%.3f", -- QComb {0,50,100,150,200,250,300,350,400,500}{0.093,0.243,0.354,0.428,0.521,0.621,0.692,0.771,0.834,0.932} + -- Horizon Artificiel Principal + [27] = "%.4f", -- Pitch_HA {-180,-170,-160,-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180}{-1,-0.946,-0.898,-0.838,-0.78,-0.723,-0.667,-0.61,-0.556,-0.501,-0.446,-0.393,-0.334,-0.277,-0.223,-0.166,-0.104,-0.054,0,0.054,0.102,0.161,0.22,0.277,0.333,0.389,0.443,0.498,0.553,0.607,0.666,0.722,0.776,0.834,0.896,0.946,1} + [28] = "%.4f", -- Roll_HA {-180,-90,-60,-30,-20,-10,0,10,20,30,60,90,180}{-1,-0.498,-0.331,-0.162,-0.111,-0.053,0,0.058,0.112,0.168,0.331,0.498,1} + [20] = "%.4f", -- Bille_HA Slip Ball {-1,1} + [18] = "%.1f", -- flag_GS_HA GS Flag {0,1} + [19] = "%.1f", -- flag_HS_HA Fault Flag {0,1} + [29] = "%.1f", -- flag_Lock_HA Lock Flag {0,1} + [117] = "%.4f", -- Curseur_HA Knob Needle {0,1} + [120] = "%.4f", -- W_HA W Sympol {-1,1} + [118] = "%.4f", -- VerBar_HA Vertical Bar {-1,1} + [119] = "%.4f", -- HorBar_HA Horizon Bar {-1,1} + -- variometre + [24] = "%.4f", -- Variometre {-800,-700,-600,-500,-400,-300,-200,-100,-50,0,50,100,200,300,400,500,600,700,800}{-0.481,-0.436,-0.391,-0.338,-0.28,-0.218,-0.153,-0.075,-0.035,0.0,0.035,0.071,0.139,0.202,0.264,0.32,0.372,0.418,0.463} + -- IAS + [51] = "%.4f", -- IAS {0,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370}{0,0.1,0.133,0.172,0.207,0.243,0.277,0.316,0.35,0.38,0.41,0.439,0.465,0.491,0.517,0.541,0.565,0.587,0.611,0.63,0.651,0.671,0.692,0.712,0.731,0.75,0.77,0.791,0.809,0.829,0.849,0.867,0.886} + -- RPM + [135] = "%.4f", -- Turbine_RPM large Needle {0,5000,10000,15000,20000,25000,29000,35000,40000,43500,45000,50000}{0.095,0.181,0.263,0.346,0.424,0.505,0.572,0.665,0.748,0.802,0.828,0.909} + [52] = "%.4f", -- Rotor_RPM small Needle {0,50,100,150,200,250,262,316.29,361.05,387,400,450}{0.096,0.191,0.283,0.374,0.461,0.549,0.57,0.665,0.748,0.802,0.811,0.904} + -- Voltmetre + [14] = "%.3f", -- Voltmetre {0,5,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}{0.045,0.074,0.103,0.133,0.163,0.192,0.221,0.25,0.281,0.31,0.339,0.368,0.399,0.429,0.458,0.488,0.518,0.547,0.576,0.605,0.635,0.664,0.695,0.724} + -- TQuatre Engine temperature Indicator + [15] = "%.3f", -- TQuatre Engine Temp {0,100,200,300,400,500,600,700,800}{0.1575,0.228,0.3,0.3845,0.473,0.577,0.676,0.772,0.8625} + -- TempExt outside temperature + [25] = "%.3f", -- TempExt {-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70}{-0.758,-0.691,-0.625,-0.558,-0.492,-0.425,-0.359,-0.292,-0.224,-0.158,-0.09,-0.024,0.043,0.11,0.177,0.244,0.31,0.379,0.445,0.512,0.579,0.644,0.712} + -- TempThm Oil Temperature Indicator + [151] = "%.3f", -- TempThm Oil Temp {-20,-10,0,10,20,30,40,50,60,70,80,85,90,100}{0.046,0.102,0.157,0.213,0.268,0.323,0.38,0.435,0.492,0.547,0.603,0.63,0.659,0.715} + -- Fuel Tank Indicator + [152] = "%.3f", -- Gauge_RSupp {-1,0,0.25,0.5,0.75,1}{0,0.202,0.426,0.63,0.801,1} + -- VHF AM Radio + [133] = "%.1f", -- AM_Radio_freq_cent {0,1} X00.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [134] = "%.1f", -- AM_Radio_freq_dix {0,1} 0X0.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [136] = "%.1f", -- AM_Radio_freq_unite {0,1} 00X.000 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [138] = "%.1f", -- AM_Radio_freq_dixieme {0,1} 000.X00 {0,1,2,3,4,5,6,7,8,9,0}{0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0} + [139] = "%.2f", -- AM_Radio_freq_centieme {0,1} 000.0XX {00,25,50,75,00}{0.0,0.25,0.50,0.75,1.0} + -- Lamps + -- Voyant_DEM + [300] = "%.f", -- Voyant_DEM Start lamp{0,1} + -- Voyant_RLT + [301] = "%.f", -- Voyant_RLT Idle lamp {0,1} + -- Voyant_BLOC + [302] = "%.f", -- Voyant_BLOC Blocked Engine lamp {0,1} + -- RSUPP Fueltank + [320] = "%.f", -- Voyant_RSupp Fueltank lamp {0,1} + -- RCONV Convoy Fueltank + [321] = "%.f", -- Voyant_RConv Convoy Fueltank lamüp {0,1} + -- Voyant_FILTAS Sandfilter lamp + [322] = "%.f", -- Voyant_FILTAS sandfilter lamp {0,1} + -- Voyant_Alarme Master Alarme lamp + [303] = "%.f", -- Voyant_Alarme Master Alarme lamp {0,1} + -- AM_RADIO + [141] = "%.f", -- AM_Radio_lamp {0,1} + -- Tableau Alarme Lamps + [1] = "%.f", -- TA_Pitot {0,1} + [2] = "%.f", -- TA_Hmot {0,1} + [3] = "%.f", -- TA_Hbtp {0,1} + [4] = "%.f", -- TA_Hral {0,1} + [5] = "%.f", -- TA_Gene {0,1} + [6] = "%.f", -- TA_Alter {0,1} + [7] = "%.f", -- TA_Bat {0,1} + [8] = "%.f", -- TA_PA {0,1} + [9] = "%.f", -- TA_Nav {0,1} + [10] = "%.f", -- TA_Comb {0,1} + [11] = "%.f", -- TA_Bphy {0,1} + [12] = "%.f", -- TA_Lim {0,1} + [13] = "%.f", -- TA_Filt {0,1} + -- Intercomp Lamps + [455] = "%.f", -- VHF Light + [456] = "%.f", -- FM1 Light + [457] = "%.f", -- UHF Light +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- WEAPONS PANEL 1 + [354] = "%1d", -- WP1 - Off/On/Stsnfby {-1.0,0.0,1.0} + [357] = "%.4f", -- WP1 - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- WEAPONS PANEL 2 + [372] = "%1d", -- WP2 - Ma Left + [373] = "%1d", -- WP2 - Ma Left Cover + [374] = "%1d", -- WP2 - Ma Right + [375] = "%1d", -- WP2 - Ma Right Cover + [376] = "%1d", -- WP2 - Seq Ripple selection + -- PILOTSIGHT + [171] = "%1d", -- PILOTSIGHT - Pilot Sight + -- PILOT STICK + --[50] = "%1d", -- PILOT STICK - Magnetic Brake + --[53] = "%1d", -- PILOT STICK - Wiper once + --[209] = "%1d", -- PILOT STICK - Autopilot Button + --[293] = "%1d", -- PILOT STICK - Slave + --[294] = "%1d", -- PILOT STICK - Auto-Hover + -- WSO LEFT SIDE STICK + [255] = "%1d", -- PE WSO STICK - Lasing Button Cover + [256] = "%1d", -- PE WSO STICK - Lasing Button + [257] = "%1d", -- PE WSO STICK - Missile Launch Cover + [258] = "%1d", -- PE WSO STICK - Missile Launch Button + [259] = "%1d", -- PE WSO STICK - Inversed Symbology Toggle + [260] = "%1d", -- PE WSO STICK - Inversed Image Toggle + [264] = "%.1f", -- PE WSO STICK - Image Focus {-1.0,1.0} + [262] = "%.1f", -- PE WSO STICK - Gain {-1.0,1.0} + [263] = "%.1f", -- PE WSO STICK - Image Brightness {-1.0,1.0} + [219] = "%.1f", -- PE WSO STICK - Symbology Brightness {-1.0,1.0} + -- GYRO + [197] = "%1d", -- GYRO - Test Cover + [198] = "%1d", -- GYRO - Test Switch On/Off + [199] = "%1d", -- GYRO - Left/Center/Right + [153] = "%.2f", -- GYRO - CM/A/GM/D/GD {0.0,0.25,0.50,0.75,1.0} + -- CLOCK + [45] = "%.4f", -- CLOCK - Winder (Axis) {0.0, 1.0} in 0.1 Steps + [46] = "%1d", -- CLOCK - Start/Stop + [47] = "%1d", -- CLOCK - Reset + -- SA342M HOT3 only + -- PH SA342M HOT3 + [180] = "%.2f", -- PH - Test/On/Off {0.0,0.25,0.50,0.75,1.0} + [181] = "%.3f", -- PH - Station Select {0.0,0.125,0.250,0,375,0.500,0.625,0.750,0.875,1.0} + [182] = "%.4f", -- PH - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- PE SA342L/M/Mistral BCV (BOITIER DE COMMANDE VIDEO – video command box) + [362] = "%1d", -- PE BCV - Centering + [364] = "%1d", -- PE BCV - VDO/VTH + [365] = "%.1f", -- PE BCV - Zoom {-1.0,1.0} + [366] = "%.1f", -- PE BCV - CTH A/V/M {0.0,0.5,1.0} + [367] = "%1d", -- PE BCV - Power + [370] = "%.2f", -- PE BCV - Mode A/C/V/PIL/ASS {0.0,0.25,0.50,0.75,1.0} + -- NADIR + [330] = "%.4f", -- NADIR - Off/Brightness (Axis) {0.0, 1.0} in 0.1 Steps + [331] = "%.2f", -- NADIR - Mode Off/Stby/Ground/Sea/Air Speed Sensor/Ground Test {0.0,0.2,0.4,0.6,0.8,1.0} + [332] = "%.2f", -- NADIR - Parameter Wind/Magnetic Heading/Ground Speed/Calculated Time/Current Position/Waypoint {0.0,0.2,0.4,0.6,0.8,1.0} + [333] = "%1d", -- NADIR - ENT + [334] = "%1d", -- NADIR - DES + [335] = "%1d", -- NADIR - AUX + [336] = "%1d", -- NADIR - IC + [337] = "%1d", -- NADIR - DOWN + [351] = "%1d", -- NADIR - 0 + [338] = "%1d", -- NADIR - 1 + [339] = "%1d", -- NADIR - 2 + [340] = "%1d", -- NADIR - 3 + [342] = "%1d", -- NADIR - 4 + [343] = "%1d", -- NADIR - 5 + [344] = "%1d", -- NADIR - 6 + [346] = "%1d", -- NADIR - 7 + [347] = "%1d", -- NADIR - 8 + [348] = "%1d", -- NADIR - 9 + [341] = "%1d", -- NADIR - POL + [345] = "%1d", -- NADIR - GEO + [349] = "%1d", -- NADIR - POS + [350] = "%1d", -- NADIR - GEL + [352] = "%1d", -- NADIR - EFF + -- AM_RADIO + [128] = "%.2f", -- AM RADIO - Selector {0.0,0.33,0.66,0.99} + [129] = "%.4f", -- AM RADIO - Freq decimals (Axis) {0.0, 1.0} in 0.1 Steps + [130] = "%1d", -- AM RADIO - 25/50kHz Selector + [131] = "%.4f", -- AM RADIO - Freq dial (Axis) {0.0, 1.0} in 0.1 Steps + -- FM_RADIO + [272] = "%.2f", -- FM RADIO - Main Selector {0.0,0.25,0.50,0.75,1.0} + [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} + [274] = "%1d", -- FM RADIO - 7 + [275] = "%1d", -- FM RADIO - 8 + [276] = "%1d", -- FM RADIO - 9 + [277] = "%1d", -- FM RADIO - 0 + [278] = "%1d", -- FM RADIO - X + [279] = "%1d", -- FM RADIO - 4 + [280] = "%1d", -- FM RADIO - 5 + [281] = "%1d", -- FM RADIO - 6 + [282] = "%1d", -- FM RADIO - RC + [283] = "%1d", -- FM RADIO - UP + [284] = "%1d", -- FM RADIO - 1 + [285] = "%1d", -- FM RADIO - 2 + [286] = "%1d", -- FM RADIO - 3 + [287] = "%1d", -- FM RADIO - VAL + [288] = "%1d", -- FM RADIO - DOWN + -- TV + [124] = "%1d", -- TV - On/Off + [125] = "%.4f", -- TV - Contrast (Axis) {0.0, 1.0} in 0.1 Steps + [123] = "%.4f", -- TV - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + --[126] = "%.4f", -- TV - Cover (Axis) {0.0, 1.0} in 0.1 Steps + -- RWR + [148] = "%1d", -- RWR - Off/On/Croc {-1.0,0.0,1.0} + [149] = "%1d", -- RWR - Marker + [150] = "%1d", -- RWR - Page + [121] = "%.4f", -- RWR - Audio (Axis) {0.0, 1.0} in 0.1 Steps + [122] = "%.4f", -- RWR - Brightness (Axis) {0.0, 1.0} in 0.1 Steps + -- ADI + [115] = "%.4f", -- ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [116] = "%1d", -- ADI - Unlock + -- Stby ADI + [215] = "%.4f", -- STDBY ADI - Unlock (Axis) {0.0, 1.0} in 0.1 Steps + [216] = "%1d", -- STDBY ADI - Unlock + -- ArtVisVhfDop (Source selector for main artificial horizon vertical bar) + [218] = "%.2f", -- ADI - Source Off/Camera target point/ADF ermitter/NADIR Waypoint {0.0,0.33,0.66,0.99} + -- INTERCOM + [452] = "%1d", -- INTERCOM - VHF AM Radio + [68] = "%.4f", -- INTERCOM - VHF AM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [453] = "%1d", -- INTERCOM - FM Radio + [69] = "%.4f", -- INTERCOM - FM Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + [454] = "%1d", -- INTERCOM - UHF Radio + [70] = "%.4f", -- INTERCOM - UHF Radio Volume (Axis) {0.0, 1.0} in 0.1 Steps + -- TORQUE + [58] = "%1d", -- TORQUE Bug/Test + [54] = "%.4f", -- TORQUE Bug/Test (Axis) {0.0, 1.0} in 0.1 Steps + -- LIGHTS + [22] = "%.4f", -- LIGHTS - Main Dashboard Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [21] = "%.4f", -- LIGHTS - Console Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [145] = "%.4f", -- LIGHTS - UV Lighting (Axis) {0.0, 1.0} in 0.1 Steps + [23] = "%1d", -- LIGHTS - NORM/BNL + [147] = "%.4f", -- LIGHTS - Roof Lamp Knob (Axis) {0.0, 1.0} in 0.1 Steps + [154] = "%1d", -- LIGHTS - Red Lens On/Off + -- ELECTRIC + [264] = "%1d", -- ELECTRIC - Battery + [265] = "%1d", -- ELECTRIC - Alternator + [268] = "%1d", -- ELECTRIC - Generator + [62] = "%1d", -- ELECTRIC - Voltmeter Test + [170] = "%1d", -- ELECTRIC - Pitot + [271] = "%1d", -- ELECTRIC - Fuel Pump + [267] = "%1d", -- ELECTRIC - Additionnal Fuel Tank + [56] = "%1d", -- ELECTRIC - Starter Start/Stop/Air {-1.0,0.0,1.0} + [57] = "%1d", -- ELECTRIC - Test + [48] = "%1d", -- ELECTRIC - Copilot Wiper {-1.0,0.0,1.0} + [49] = "%1d", -- ELECTRIC - Pilot Wiper {-1.0,0.0,1.0} + [61] = "%1d", -- ELECTRIC - Left from Pitot + [59] = "%1d", -- ELECTRIC - HYD Test + [66] = "%1d", -- ELECTRIC - Alter Rearm + [67] = "%1d", -- ELECTRIC - Gene Rearm + [63] = "%1d", -- ELECTRIC - Convoy Tank On/Off + [64] = "%1d", -- ELECTRIC - Sand Filter On/Off + -- NAVLIGHTS + [146] = "%1d", -- NAVLIGHTS - Navigation Lights CLI/OFF/FIX {-1.0,0.0,1.0} + [228] = "%1d", -- NAVLIGHTS - Anticollision Light NOR/OFF/ATT {-1.0,0.0,1.0} + [105] = "%1d", -- NAVLIGHTS - Landing Light Off/Vario/On {-1.0,0.0,1.0} + [106] = "%1d", -- NAVLIGHTS - Landing Light Extend/Retract + [382] = "%1d", -- NAVLIGHTS - Panels Lighting On/Off + [30] = "%.4f", -- NAVLIGHTS - AntiCollision Light Intensity (Axis) {0.0, 1.0} in 0.1 Steps + [229] = "%1d", -- NAVLIGHTS - Formation Lights On/Off + [230] = "%.4f", -- NAVLIGHTS - Formation Lights Intensity (Axis) {0.0, 1.0} in 0.1 Steps + -- FLARE DISPENSER + [220] = "%1d", -- FLARE DISPENSER - G/G+D/D {-1.0,0.0,1.0} + [221] = "%1d", -- FLARE DISPENSER - Mode + [222] = "%1d", -- FLARE DISPENSER - Off/Speed {-1.0,0.0,1.0} + [194] = "%1d", -- FLARE DISPENSER - Fire Button Cover + [195] = "%1d", -- FLARE DISPENSER - Fire Button + -- AUTOPILOT + [31] = "%1d", -- AUTOPILOT - Autopilot On/Off + [32] = "%1d", -- AUTOPILOT - Pitch On/Off + [33] = "%1d", -- AUTOPILOT - Roll On/Off + [34] = "%1d", -- AUTOPILOT - Yaw On/Off + [35] = "%1d", -- AUTOPILOT - Mode Speed/OFF/Altitude {-1.0,0.0,1.0} + [60] = "%1d", -- AUTOPILOT - Trim On/Off + [65] = "%1d", -- AUTOPILOT - Magnetic Brake On/Off + -- WEAPONS + [269] = "%1d", -- WEAPONS - Master arm On/Off + -- ROTORS + [556] = "%.4f", -- ROTORS - Rotor Brake (Axis) {0.0, 1.0} in 0.055 Steps + -- RADIOALTIMETER + [96] = "%.4f", -- RADIOALTIMETER - Radar Alt Bug (Axis) {0.0, 1.0} in 0.1 Steps + [100] = "%1d", -- RADIOALTIMETER - Radar Alt On/Off - Test + [91] = "%.4f", -- RADIOALTIMETER - Radar Alt On/Off - Test (Axis) {0.0, 1.0} in 0.1 Steps + -- BAROALTIMETER + [89] = "%.4f", -- BAROALTIMETER - Baro pressure QFE knob (Axis) {0.0, 1.0} in 0.1 Steps + -- FUEL SYSTEM + [557] = "%.4f", -- FUEL SYSTEM - Fuel Flow Lever (Axis) {0.0, 1.0} in 0.2 Steps + -- ADF RADIO + [166] = "%1d", -- ADF RADIO - Select + [167] = "%1d", -- ADF RADIO - Tone + [178] = "%.2f", -- ADF RADIO - Mode {0.0,0.33,0.66,0.99} + [179] = "%.4f", -- ADF RADIO - Gain (Axis) {0.0, 1.0} in 0.2 Steps + [168] = "%.4f", -- ADF RADIO - Nav1 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [169] = "%.4f", -- ADF RADIO - Nav1 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [173] = "%.4f", -- ADF RADIO - Nav1 Unit (Axis) {0.0, 1.0} in 0.2 Steps + [174] = "%.4f", -- ADF RADIO - Nav2 Hundred (Axis) {0.0, 1.0} in 0.2 Steps + [175] = "%.4f", -- ADF RADIO - Nav2 Ten (Axis) {0.0, 1.0} in 0.2 Steps + [176] = "%.4f", -- ADF RADIO - Nav2 Unit (Axis) {0.0, 1.0} in 0.2 Steps + -- UHF RADIO + [383] = "%.3f", -- UHF RADIO - MODE 0/FF/NA/SV/DL/G/EN {0.0,0.167,0.334,0.501,0.668,0.835,1.0} + [384] = "%1d", -- UHF RADIO - DRW + [385] = "%1d", -- UHF RADIO - VLD + [386] = "%.4f", -- UHF RADIO - PAGE (Axis) {0.0, 1.0} in 0.2 Steps + [387] = "%1d", -- UHF RADIO - CONF + [388] = "%1d", -- UHF RADIO - 1 + [389] = "%1d", -- UHF RADIO - 2 + [390] = "%1d", -- UHF RADIO - 3 + [391] = "%1d", -- UHF RADIO - 4 + [392] = "%1d", -- UHF RADIO - 5 + [393] = "%1d", -- UHF RADIO - 6 + [394] = "%1d", -- UHF RADIO - 7 + [395] = "%1d", -- UHF RADIO - 8 + [396] = "%1d", -- UHF RADIO - 9 + [397] = "%1d" -- UHF RADIO - 0 +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + --[97] = "%.f", -- RAltlamp {0,1} + ExportScript.Tools.SendData(97, (mainPanelDevice:get_argument_value(97) > 0.009 and 1 or 0)) + + --[102] = "%.4f", -- ADF_Aiguille_large Heading Needle large {-360.0,0.0,360.0}{-1.0,0.0,1.0} + local ADF_Aiguille_large = mainPanelDevice:get_argument_value(102) + if ADF_Aiguille_large ~= 0 then + ADF_Aiguille_large = ADF_Aiguille_large + 0.5 + if ADF_Aiguille_large > 1 then + ADF_Aiguille_large = ADF_Aiguille_large - 1.0 + end + end + ExportScript.Tools.SendData(102, string.format("%.4f", ADF_Aiguille_large)) +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendData(2000, string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendData(2000, string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendData(2000, " ") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendData(2001, string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendData(2001, ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendData(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendData(2002, string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendData(2002, " ") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendData(2003, lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendData(2004, string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendData(2005, string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendData(2004, "-") + ExportScript.Tools.SendData(2005, "-") + end +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- UHF Radio + --------------------------------------------------- + local lUHFRadio = GetDevice(31) + if lUHFRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2000", string.format("%.3f", lUHFRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('UHF_Freq: '..ExportScript.Tools.dump(list_indication(5))) + + local lUHFRadioFreq = ExportScript.Tools.getListIndicatorValue(5) + + if lUHFRadioFreq ~= nil and lUHFRadioFreq.UHF_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2000", string.format("%s", lUHFRadioFreq.UHF_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2000", "-") + end + + -- AM Radio + --------------------------------------------------- + local lAMRadio = GetDevice(5) + if lAMRadio:is_on() then + --ExportScript.Tools.SendDataDAC("2001", string.format("%.3f", lAMRadio:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2001", ExportScript.Tools.RoundFreqeuncy(lAMRadio:get_frequency()/1000000)) + end + + -- FM Radio PR4G + --------------------------------------------------- + local lFMRadio = GetDevice(28) + if lFMRadio:is_on() then + --ExportScript.Tools.SendDataDAC(2002, string.format("%.3f", lFMRadio:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('FM_Freq: '..ExportScript.Tools.dump(list_indication(4))) + + local lFMRadioFreq = ExportScript.Tools.getListIndicatorValue(4) + + if lFMRadioFreq ~= nil and lFMRadioFreq.FM_Freq ~= nil then + ExportScript.Tools.SendDataDAC("2002", string.format("%s", lFMRadioFreq.FM_Freq)) + end + else + ExportScript.Tools.SendDataDAC("2002", "-") + end + + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + -- [273] = "%.1f", -- FM RADIO - Chanel Selector {0.0,0.2,0.3,0.5,0.6,0.8,0.9,1.1} -- gerundet + local lFM_RADIO_PRESET = {[0.0]="1",[0.2]="2",[0.3]="3",[0.5]="4",[0.6]="5",[0.8]="6",[0.9]="0",[1.1]="R"} + ExportScript.Tools.SendDataDAC("2003", lFM_RADIO_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(273), 1, "ceil")]) + + -- Weapon Panel + --------------------------------------------------- + if mainPanelDevice:get_argument_value(354) >= 0.0 then -- Weapon panel is On + local lWeaponPanelDisplays = ExportScript.Tools.getListIndicatorValue(8) + + if lWeaponPanelDisplays ~= nil then + if lWeaponPanelDisplays.LEFT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2004", string.format("%s", lWeaponPanelDisplays.LEFT_screen)) + end + if lWeaponPanelDisplays.RIGHT_screen ~= nil then + ExportScript.Tools.SendDataDAC("2005", string.format("%s", lWeaponPanelDisplays.RIGHT_screen)) + end + end + else + ExportScript.Tools.SendDataDAC("2004", "-") + ExportScript.Tools.SendDataDAC("2005", "-") + end + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "UHF Radio" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 31 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 225.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.167 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} + --ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + --ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + -- Load Button = VLD Button + ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3003 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "AM Radio" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 5 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 118.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 143.975 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.33 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + --ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 137 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + --ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} + --ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3006 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = "FM Radio" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 28 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 30.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 87.975 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 0.25 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + --ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3005 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 273 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3002 -- preset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + -- [273] = "%.3f", -- FM RADIO - Chanel Selector {0.0,0.143,0.286,0.429,0.572,0.715,0.858,1.0} -- laut clickabledata.lua + ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="1",[0.143]="2",[0.286]="3",[0.429]="4",[0.572]="5",[0.715]="6",[0.858]="0",[1.0]="-"} + ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.143 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.01 -- minimal step for preset change + --ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active + --ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 148 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + --ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua + --ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset + --ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3004 -- load button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active + --ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 149 -- ManualPreset argument id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua + --ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/SpitfireLFMkIXCW.lua b/ExportsModules/SpitfireLFMkIXCW.lua new file mode 100644 index 0000000..2c4170c --- /dev/null +++ b/ExportsModules/SpitfireLFMkIXCW.lua @@ -0,0 +1,269 @@ +-- Spitfire LFMk IX CW + +ExportScript.FoundDCSModule = true +ExportScript.Version.SpitfireLFMkIXCW = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Flight Instruments + [11] = "%.4f", -- OxygenDeliveryGauge {0.0, 0.4}{0.0, 4000.0} + [12] = "%.4f", -- OxygenSupplyGauge + [17] = "%.4f", -- TrimGauge {-1.0, 1.0} + [18] = "%.4f", -- PneumaticPressureGauge {0.0, 1.0}{0.0, 600.0} + [19] = "%.4f", -- Left wheel brake pressure gauge {0.0, 1.0}{0.0, 130.0} + [20] = "%.4f", -- Right wheel brake pressure gauge {0.0, 1.0}{0.0, 130.0} + [21] = "%.4f", -- Airspeed gauge {0.0, 0.5}{0.0, 500.0} + [23] = "%.4f", -- Attitude Horizon Bank {-1.0, 1.0} + [24] = "%.4f", -- Attitude Horizon Pitch {-1.0, 1.0} + [25] = "%.4f", -- Variometer gauge {-1.0, 1.0}{-4000.0, 4000.0} + [26] = "%.4f", -- Altimeter gauge Hundreds {0.0, 1.0}{0.0, 10.0} + [27] = "%.4f", -- Altimeter gauge Thousands {0.0, 1.0}{0.0, 10.0} + [28] = "%.4f", -- Altimeter gauge Tens Thousabds {0.0, 1.0}{0.0, 10.0} + [29] = "%.4f", -- Altimeter gauge Pressure {0.0, 1.0}{800.0, 1050.0} + [31] = "%.4f", -- DI gauge {0.0, 1.0}{0.0, 2.0 * 3.1415926} + [33] = "%.4f", -- Sideslip gauge {-1.0, 1.0} + [34] = "%.4f", -- Turn gauge {-1.0, 1.0} + [35] = "%.4f", -- Voltmeter {0.0, 1.0}{0.0, 20.0} + [37] = "%.4f", -- Tachometer {0.0, 0.5}{0.0, 5000.0} + [39] = "%.4f", -- Boost gauge {0.0, 1.0}{-7.0, 24.0} + [40] = "%.4f", -- Oil pressure gauge {0.0, 1.0}{0.0, 150.0} + [41] = "%.4f", -- Oil temperature gauge {0.0, 1.0}{0.0, 100.0} + [42] = "%.4f", -- Radiator temperature gauge {0.0, 0.7}{0.0, 140.0} + [43] = "%.4f", -- Fuel contents gauge {0.0, 0.1, 1.0}{-1.0, 0.0, 37.0} + [51] = "%.4f", -- Clock Hour + [52] = "%.4f", -- Clock Minute + [53] = "%.4f", -- Clock Second + [71] = "%.4f", -- Magnetic compass CompassRoseRoll {-1.0, 1.0}{-20.0, 20.0} + [72] = "%.4f", -- Magnetic compass CompassRosePitch {-1.0, 1.0}{-20.0, 20.0} + [73] = "%.4f", -- Magnetic compass CompassHeading{0.0, 1.0} + [120] = "%1d", -- Radio Lamp A + [121] = "%1d", -- Radio Lamp B + [122] = "%1d", -- Radio Lamp C + [123] = "%1d", -- Radio Lamp D + [124] = "%1d", -- Radio Lamp R + --[131] = "%1d", -- UC_DOWN_C ??? + [49] = "%1d", -- Gear Lamp Down + [48] = "%1d", -- Gear Lamp Up + --[62] = "%.4f", -- ??? + --[63] = "%.4f", -- ??? + --[59] = "%.4f", -- ??? + --[45] = "%.4f" -- GUNSIGHT_RANGE ??? +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + [13] = "%1d", -- Oxygen Apparatus Controls Valve + -- Main Panel + [30] = "%.1f", -- Altimeter (Axis) {0.0, 1.0} in 0.1 Steps + [32] = "%.1f", -- DI (Axis) {0.0, 1.0} in 0.1 Steps + [44] = "%1d", -- Fuel Gauge Button + [46] = "%1d", -- Nav. Lights Toggle + [47] = "%1d", -- Flaps Lever + [50] = "%1d", -- U/C Indicator Blind + [54] = "%1d", -- Clock Setter Pinion + [55] = "%.1f", -- Clock Setter Pinion (Axis) {0.0, 1.0} in 0.1 Steps + [56] = "%1d", -- Magnetos Toggles 1 + [57] = "%1d", -- Magnetos Toggles 2 + [58] = "%1d", -- Supercharger Mode Toggle + [60] = "%.1f", -- Illumination Controls Left (Axis) {0.0, 1.0} in 0.1 Steps + [61] = "%.1f", -- Illumination Controls Right (Axis) {0.0, 1.0} in 0.1 Steps + [65] = "%1d", -- Starter Button + [67] = "%1d", -- Booster Coil Button + [69] = "%1d", -- Primer Pump + [68] = "%.2f", -- Primer Pump (Axis) {0.0, 1.0} in 0.04 Steps + [70] = "%1d", -- Tank Pressurizer Lever + [74] = "%.4f", -- Magnetic Compass Ring (Axis) {0.0, 1.0} in 0.0333 Steps + -- Gun Sight and Tertiary Weapons Controls + [77] = "%.2f", -- Gun Sight Setter Rings Range (Axis) {0.0, 1.0} in 0.15 Steps + [78] = "%.2f", -- Gun Sight Setter Rings Base (Axis) {0.0, 1.0} in 0.15 Steps + [79] = "%1d", -- Gun Sight Tint Screen + [80] = "%1d", -- Gun Sight Master Switch + [81] = "%.1f", -- Gun Sight Dimmer (Axis) {0.0, 1.0} in 0.1 Steps + -- Port Wall + [145] = "%.2f", -- Elevator Trim Wheel (Axis) {-1.0, 1.0} in 0.01 Steps + [146] = "%.1f", -- Rudder Trim Wheel (Axis) {-1.0, 1.0} in 0.1 Steps + -- Radio Remote Channel Switcher + [115] = "%1d", -- Off Button + [116] = "%1d", -- A Button + [117] = "%1d", -- B Button + [118] = "%1d", -- C Button + [119] = "%1d", -- D Button + [125] = "%1d", -- Dimmer Toggle + [155] = "%1d", -- Transmit Lock Toggle + [156] = "%1d", -- Mode Selector + -- Throttle Quadrant + [126] = "%.1f", -- Throttle Lever (Axis) {-1.0, 1.0} in 0.1 Steps + [128] = "%1d", -- Bomb Drop Button + [129] = "%.1f", -- Airscrew Lever (Axis) {-1.0, 1.0} in 0.1 Steps + [130] = "%1d", -- Mix Cut-Off Lever + [131] = "%1d", -- U/C Indicator Cut-Off Toggle + -- + [133] = "%1d", -- Radiator Control Toggle + [134] = "%1d", -- Pitot Heater Toggle + [135] = "%1d", -- Fuel Pump Toggle + [137] = "%1d", -- Carb. Air Control Lever + [158] = "%1d", -- Oil Diluter Button + [160] = "%1d", -- Supercharger Mode Test Button + [162] = "%1d", -- Radiator Flap Test Button + -- Stbd. Wall + [87] = "%1d", -- De-Icer Lever + [88] = "%1d", -- U/C Emergency Release Lever + [90] = "%1d", -- Wobble Type Fuel Pump + -- Wobble Type Fuel Pump + [92] = "%.1f", -- Upward Lamp Mode Selector {0.0,0.5,1.0} + [93] = "%.1f", -- Downward Lamp Mode Selector {0.0,0.5,1.0} + [94] = "%1d", -- Morse Key + -- + [148] = "%1d", -- U/C Lever + -- I.F.F. Control Box + [106] = "%1d", -- I.F.F. Upper Toggle (Type B) + [107] = "%1d", -- I.F.F. Lower Toggle (Type D) + [109] = "%1d", -- I.F.F. Fore Button (0) + [110] = "%1d", -- I.F.F. Aft Button (1) + -- Fuel Cocks & Tertiary + [100] = "%1d", -- Fuel Cock + [98] = "%1d", -- Droptank Cock + [99] = "%1d", -- Droptank Release Handle + -- Canopy Controls + [149] = "%1d", -- Cockpit Open/Close Control + [140] = "%1d", -- Cockpit Jettison Pull Ball + [147] = "%1d" -- Cockpit Side Door Open/Close Control +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {163, 62, 63}) + -- Gauges light, left panel light, right panel light +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] + + -- VHF_Radio + local lVHF_Radio = GetDevice(15) + if lVHF_Radio:is_on() then + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", lVHF_Radio:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy(lVHF_Radio:get_frequency()/1000000)) + else + ExportScript.Tools.SendDataDAC("2000", " ") + end + + --[[ + [115] = "%1d", -- Off Button + [116] = "%1d", -- A Button + [117] = "%1d", -- B Button + [118] = "%1d", -- C Button + [119] = "%1d", -- D Button]] + local lVHF_Radio_PRESET = "" + if mainPanelDevice:get_argument_value(116) > 0.8 then + lVHF_Radio_PRESET = 1 + elseif mainPanelDevice:get_argument_value(117) > 0.8 then + lVHF_Radio_PRESET = 2 + elseif mainPanelDevice:get_argument_value(118) > 0.8 then + lVHF_Radio_PRESET = 3 + elseif mainPanelDevice:get_argument_value(119) > 0.8 then + lVHF_Radio_PRESET = 4 + else + lVHF_Radio_PRESET = "" + end + ExportScript.Tools.SendDataDAC("2001", lVHF_Radio_PRESET) +end + +----------------------------- +-- Custom functions -- +----------------------------- \ No newline at end of file diff --git a/ExportsModules/Su-25.lua b/ExportsModules/Su-25.lua new file mode 100644 index 0000000..0e692f7 --- /dev/null +++ b/ExportsModules/Su-25.lua @@ -0,0 +1,488 @@ +-- Su-25A Export + +ExportScript.FoundFCModule = true +ExportScript.Version.Su25 = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / Su-25A -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lMachNumber = LoGetMachNumber() -- MACH + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-TAS Indicator + ExportScript.AF.FC_Russian_AirSpeed_1100hkm() + + -- AOA Indicator and Accelerometer (AOA, GLoad) + ExportScript.AF.FC_Russian_AOA_Su25() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI_old() + + -- Vertical Velocity Indicator (VVI, TurnIndicator, SlipBallPosition) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1500m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_late_special() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempLeft, 70) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempRight, 71) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + + -- HSI Distance + ExportScript.AF.FC_Russian_HSI_Distance_old(lDistanceToWay) + + -- Mach {max, Mach} + local lMachTmp = 0 + if lMachNumber > 0.475 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0.475 -- minimaler Eingangswert + x_max = 1.0 -- maximaler Eingangswert + x = 0.65 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 0.525 -- Delta Eingangswerte (x_max - x_min) + m = 1.9047619047619047619047619047619 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.9047619047619047619047619047619 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,333333333333333333333333333334 -- Ergebnis (m * x + n) + ]] + lMachTmp = 1.9047619047619047619047619047619 * lMachNumber + -0.9047619047619047619047619047619 + else + lMachTmp = 0 + end + + ExportScript.Tools.SendData(72, string.format("%0.4f", 0.665)) + ExportScript.Tools.SendData(73, string.format("%0.4f", lMachTmp)) + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU25(lFunctionTyp) + + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + end + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Mechanical Configuration Indicator (GearWarningLight, NoseGear, LeftGear, RightGear, Airbreaks, Flaps1, Flaps2) + ExportScript.AF.FC_Russian_MDI_SU25(lFunctionTyp) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 87) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 88) + end + + --(x < 0 and 'negative' or 'non-negative') + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + ExportScript.AF.FC_WeaponPanel_SU25(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.FC_Russian_MDI_SU25(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.FlareChaff() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "128" + --[flare] = number: "128" +end + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --WriteToLog('lEngineInfo: '..dump(lEngineInfo)) + ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine 1 (0|1) + ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine 1 (0|1) + end + + local lAoA = LoGetAngleOfAttack() + if lAoA ~= nil then + lAoA = lAoA * 57.3 + ExportScript.Tools.SendDataDAC("730", (lAoA > 20.0 and 1 or 0) ) -- lamp start AOA warning (0|1) + end +end + +function ExportScript.AF.FuelQuantityIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + local lTotalFuel = lEngineInfo.fuel_internal + local lFuel_leftbar = 1.0 + local lFuel_rightbar = 1.0 + local lExtTank1 = 1.0 -- external tanks + local lExtTank2 = 1.0 -- inner tanks + + if lTotalFuel < 5000 then + if lTotalFuel > 1500 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 1500 -- minimaler Eingangswert + x_max = 5000 -- maximaler Eingangswert + x = 3500 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 3500 -- Delta Eingangswerte (x_max - x_min) + m = 2.8571428571428571428571428571429e-4 -- Steigung der linearen Funktion (d_y / d_x) + n = -0.42857142857142857142857142857143 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0,57142857142857142857142857142857 -- Ergebnis (m * x + n) + ]] + lFuel_leftbar = 2.8571428571428571428571428571429e-4 * lTotalFuel + -0.42857142857142857142857142857143 + else + lFuel_leftbar = 0.0 + end + else + lFuel_leftbar = 1.0 + end + if lTotalFuel < 1200 then + lFuel_rightbar = lTotalFuel / 1200 + else + lFuel_rightbar = 1.0 + end + + local lPayloadInfo = LoGetPayloadInfo() + if lPayloadInfo ~= nil then + --WriteToLog('lPayloadInfo: '..dump(lPayloadInfo)) + if lPayloadInfo.Stations[10].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" or + lPayloadInfo.Stations[9].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" then -- external tanks presend and full (panel 6 and 5) + lExtTank1 = ((lEngineInfo.fuel_external < 1240.0 ) and 1.0 or 0.0) + end + if lPayloadInfo.Stations[5].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" or + lPayloadInfo.Stations[6].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" then-- inner tanks presend and full (panel 3 and 8) + lExtTank2 = ((lEngineInfo.fuel_external < 1.0 ) and 1.0 or 0.0) + end + end + -- Fuel_leftbar + -- Fuel_rightbar + -- Light1 + -- Light2 + -- Light3 + -- Light4 + -- Light5 + -- BingoLight + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(300, string.format("%0.4f", lFuel_leftbar)) + ExportScript.Tools.SendData(301, string.format("%0.4f", lFuel_rightbar)) + ExportScript.Tools.SendData(302, lExtTank1) -- external tanks + ExportScript.Tools.SendData(303, lExtTank2) -- inner tanks + ExportScript.Tools.SendData(304, (lEngineInfo.fuel_internal < 2790.0 and 1 or 0)) -- inner wing tank + ExportScript.Tools.SendData(305, (lEngineInfo.fuel_internal < 1840.0 and 1 or 0)) -- inner hull tank + ExportScript.Tools.SendData(306, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC(300, string.format("%d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10)) -- total fuel in kg + ExportScript.Tools.SendDataDAC(303, lExtTank1) -- external tanks + ExportScript.Tools.SendDataDAC(304, lExtTank2) -- inner tanks + ExportScript.Tools.SendDataDAC(305, (lEngineInfo.fuel_internal < 2790.0 and 1 or 0)) -- inner wing tank + ExportScript.Tools.SendDataDAC(306, (lEngineInfo.fuel_internal < 1840.0 and 1 or 0)) -- inner hull tank + ExportScript.Tools.SendDataDAC(307, (lEngineInfo.fuel_internal < 1.0 and 1 or 0)) -- central hull tank + ExportScript.Tools.SendDataDAC(308, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end +end \ No newline at end of file diff --git a/ExportsModules/Su-25T.lua b/ExportsModules/Su-25T.lua new file mode 100644 index 0000000..6fb8b50 --- /dev/null +++ b/ExportsModules/Su-25T.lua @@ -0,0 +1,443 @@ +-- Su-25T Export + +ExportScript.FoundFCModule = true +ExportScript.Version.Su25T = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / Su-25T -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ?C + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ?C + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-TAS Indicator + ExportScript.AF.FC_Russian_AirSpeed_1100hkm() + + -- AOA Indicator and Accelerometer + ExportScript.AF.FC_Russian_AOA_Su25() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI, TurnIndicator, SlipBallPosition) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1500m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_late_special() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempLeft, 70) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, ExportID) + ExportScript.AF.FC_Russian_EGT_1000gc(lEngineTempRight, 71) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + -- Weapon Panel + ExportScript.AF.FC_WeaponPanel_SU25(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Mechanical Configuration Indicator + ExportScript.AF.FC_Russian_MDI_SU25(lFunctionTyp) + + -- Fuel Quantity Indicator + ExportScript.AF.FC_FuelQuantityIndicator(lFunctionTyp) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + end + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 87) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 88) + end + + -- (x < 0 and 'negative' or 'non-negative') + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + -- local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + -- ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + -- Weapon Panel + ExportScript.AF.FC_WeaponPanel_SU25(lFunctionTyp) + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + -- Mechanical Configuration Indicator + ExportScript.AF.FC_Russian_MDI_SU25(lFunctionTyp) + -- Fuel + ExportScript.AF.FC_FuelQuantityIndicator(lFunctionTyp) + + ExportScript.AF.FC_StatusLamp() + ExportScript.AF.FC_SightingSystem() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.FC_SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.FC_FlareChaff() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "128" + --[flare] = number: "128" +end + +function ExportScript.AF.FC_StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ExportScript.Tools.SendDataDAC("728", lEngineInfo.EngineStart.left ) -- lamp start left engine 1 (0|1) + ExportScript.Tools.SendDataDAC("729", lEngineInfo.EngineStart.right ) -- lamp start right engine 1 (0|1) + end + + local lAoA = LoGetAngleOfAttack() + if lAoA ~= nil then + lAoA = lAoA * 57.3 + ExportScript.Tools.SendDataDAC("730", (lAoA > 20.0 and 1 or 0) ) -- lamp start AOA warning (0|1) + end +end + +function ExportScript.AF.FC_FuelQuantityIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + local lTotalFuel = lEngineInfo.fuel_internal + --local lTotalFuel = string.format("%3d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10) + --local lTotalFuel = string.format("%4d", lEngineInfo.fuel_internal) -- total fuel in kg + --local lTotalFuel = string.format("%4d", lEngineInfo.fuel_external) -- external fuel in kg + local lFuelCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} + lTotalFuel = string.format("%03d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil")) -- auf drei stellen bringen + + local lExtTank1 = 1.0 -- external tanks + local lExtTank2 = 1.0 -- inner tanks + + local lPayloadInfo = LoGetPayloadInfo() + if lPayloadInfo ~= nil then + --ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + if lPayloadInfo.Stations[10].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" or + lPayloadInfo.Stations[9].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" then -- external tanks presend and full (panel 6 and 5) + lExtTank1 = ((lEngineInfo.fuel_external < 1240.0 ) and 1.0 or 0.0) + end + if lPayloadInfo.Stations[5].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" or + lPayloadInfo.Stations[6].CLSID == "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}" then-- inner tanks presend and full (panel 3 and 8) + lExtTank2 = ((lEngineInfo.fuel_external < 1.0 ) and 1.0 or 0.0) + end + end + -- TotalFuel_100 + -- TotalFuel_10 + -- TotalFuel_1 + -- Light1 + -- Light2 + -- Light3 + -- Light4 + -- Light5 + -- BingoLight + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + ExportScript.Tools.SendData(300, string.format("%0.2f", lFuelCounter[tonumber(string.sub(lTotalFuel, 1, 1))])) + ExportScript.Tools.SendData(301, string.format("%0.2f", lFuelCounter[tonumber(string.sub(lTotalFuel, 2, 2))])) + ExportScript.Tools.SendData(302, string.format("%0.2f", lFuelCounter[tonumber(string.sub(lTotalFuel, 3, 3))])) + ExportScript.Tools.SendData(303, lExtTank1) -- external tanks + ExportScript.Tools.SendData(304, lExtTank2) -- inner tanks + ExportScript.Tools.SendData(305, (lEngineInfo.fuel_internal < 2800.0 and 1 or 0)) -- inner wing tank + ExportScript.Tools.SendData(306, (lEngineInfo.fuel_internal < 1840.0 and 1 or 0)) -- inner hull tank + ExportScript.Tools.SendData(307, (lEngineInfo.fuel_internal < 1.0 and 1 or 0)) -- central hull tank + ExportScript.Tools.SendData(308, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10)) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("301", string.format("%d", lEngineInfo.fuel_internal)) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("302", string.format("%d", lEngineInfo.fuel_external)) -- external fuel in kg + ExportScript.Tools.SendDataDAC(303, lExtTank1) -- external tanks + ExportScript.Tools.SendDataDAC(304, lExtTank2) -- inner tanks + ExportScript.Tools.SendDataDAC(305, (lEngineInfo.fuel_internal < 2800.0 and 1 or 0)) -- inner wing tank + ExportScript.Tools.SendDataDAC(306, (lEngineInfo.fuel_internal < 1840.0 and 1 or 0)) -- inner hull tank + ExportScript.Tools.SendDataDAC(307, (lEngineInfo.fuel_internal < 1.0 and 1 or 0)) -- central hull tank + ExportScript.Tools.SendDataDAC(308, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end +end \ No newline at end of file diff --git a/ExportsModules/Su-27.lua b/ExportsModules/Su-27.lua new file mode 100644 index 0000000..e47e89c --- /dev/null +++ b/ExportsModules/Su-27.lua @@ -0,0 +1,727 @@ +-- Su-27 Export + +ExportScript.FoundFCModule = true +ExportScript.Version.Su27 = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / Su-27 -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-MACH Indicator + ExportScript.AF.FC_Russian_AirSpeed_1600hkm() + + -- AOA Indicator and Accelerometer (AOA, GLoad) + ExportScript.AF.FC_Russian_AOA_Su2733() + + -- ADI + ExportScript.AF.FC_Russian_ADI_Old() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI) + ExportScript.AF.FC_Russian_VVI_Old() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1500m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_20000() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempLeft, 1200, 100, 70, 71) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempRight, 1200, 100, 72, 73) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU27(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 240, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.right, 240, 86) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + + -- Mechanical Configuration Indicator + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 87) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 240, 88) + + --ExportScript.Tools.WriteToLog('lMechInfo.noseflap.value: '..ExportScript.Tools.dump(lMechInfo.noseflap.value)) -- Vorfluegel, Balkenanzeige neben dem Radarhoehenmesser (0=oben bis 30=unten) + end + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake() + + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + --local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + --ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU27(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem() + ExportScript.AF.PPDSPPanel() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.PPDSPPanel() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "96" + --[flare] = number: "96" + + local lChaffLED = ExportScript.Tools.round(lSnares.chaff / 12, 0, "ceil") + 1 + local lFlareLED = ExportScript.Tools.round(lSnares.flare / 12, 0, "ceil") + 1 + + ExportScript.Tools.SendDataDAC("800", (lChaffLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("801", (lChaffLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("802", (lChaffLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("803", (lChaffLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("804", (lChaffLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("805", (lChaffLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("806", (lChaffLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("807", (lChaffLED <= 8 and 0 or 1) ) + + ExportScript.Tools.SendDataDAC("810", (lFlareLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("811", (lFlareLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("812", (lFlareLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("813", (lFlareLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("814", (lFlareLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("815", (lFlareLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("816", (lFlareLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("817", (lFlareLED <= 8 and 0 or 1) ) +end + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end + +function ExportScript.AF.FuelQuantityIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- Fuel quantity shows the fuel remaining in all tanks + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10) ) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("301", string.format("%d", lEngineInfo.fuel_internal)) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("302", string.format("%d", lEngineInfo.fuel_external)) -- external fuel in kg + + ExportScript.Tools.SendDataDAC("304", (lEngineInfo.fuel_internal < 5600.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendDataDAC("305", (lEngineInfo.fuel_internal < 4500.0 and 1 or 0) ) -- Tank warning 2 + ExportScript.Tools.SendDataDAC("306", (lEngineInfo.fuel_internal < 1500.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendDataDAC("307", (lEngineInfo.fuel_internal < 800.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendDataDAC("308", (lEngineInfo.fuel_internal < 600.0 and 1 or 0) ) -- Bingo Fuel + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lTotalFuel_9_3 = 0 + local lTotalFuel_5_0 = 0 + local lTotalFuel = lEngineInfo.fuel_internal + + if lTotalFuel < 9000 then + if lTotalFuel > 3000 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 3000 -- minimaler Eingangswert + x_max = 9000 -- maximaler Eingangswert + x = 8000 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 6000 -- Delta Eingangswerte (x_max - x_min) + m = 1.66666666666666666666666666667e-4 -- Steigung der linearen Funktion (d_y / d_x) + n = -0,5 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.83333 -- Ergebnis (m * x + n) + ]] + lTotalFuel_9_3 = 1.6666666666666666666666666666667e-4 * lTotalFuel + -0.5 + else + lTotalFuel_9_3 = 0.0 + end + else + lTotalFuel_9_3 = 1.0 + end + if lTotalFuel < 5000 then + lTotalFuel_5_0 = lTotalFuel / 5000 + else + lTotalFuel_5_0 = 1.0 + end + + -- TotalFuel_5_0 + -- TotalFuel_9_3 + -- Light1 + -- Light2 + -- Light3 + -- Light4 + -- BingoLight + ExportScript.Tools.SendData(300, lTotalFuel_5_0) + ExportScript.Tools.SendData(301, lTotalFuel_9_3) + ExportScript.Tools.SendData(302, (lEngineInfo.fuel_internal < 5600.0 and 1 or 0)) -- Tank warning 1 + ExportScript.Tools.SendData(303, (lEngineInfo.fuel_internal < 4500.0 and 1 or 0)) -- Tank warning 2 + ExportScript.Tools.SendData(304, (lEngineInfo.fuel_internal < 1500.0 and 1 or 0)) -- Tank warning 3 + ExportScript.Tools.SendData(305, (lEngineInfo.fuel_internal < 800.0 and 1 or 0)) -- Tank warning 4 + ExportScript.Tools.SendData(306, (lEngineInfo.fuel_internal < 600.0 and 1 or 0)) -- Bingo Fuel + end +end + +function ExportScript.AF.MechanicalDevicesIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + --[[ + [hook] = { + [status] = number: "0" + [value] = number: "0" + } + [parachute] = { + [status] = number: "0" + [value] = number: "0" + } + [controlsurfaces] = { + [eleron] = { + [left] = number: "0" + [right] = number: "-0.21084336936474" + } + [elevator] = { + [left] = number: "-0" + [right] = number: "-0" + } + [rudder] = { + [left] = number: "0" + [right] = number: "0" + } + } + [airintake] = { + [status] = number: "0" + [value] = number: "0" + } + [canopy] = { + [status] = number: "0" + [value] = number: "0" + } + [refuelingboom] = { + [status] = number: "0" + [value] = number: "0" + } + [wing] = { + [status] = number: "0" + [value] = number: "0" + } + [noseflap] = { + [status] = number: "0" + [value] = number: "0" + } + [gear] = { + [value] = number: "0" + [nose] = { + [rod] = number: "0" + } + [main] = { + [left] = { + [rod] = number: "0" + } + [right] = { + [rod] = number: "0" + } + } + [status] = number: "0" + } + [speedbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [wheelbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [flaps] = { + [status] = number: "0" + [value] = number: "0" + }]] + --local lTrueAirSpeed = LoGetTrueAirSpeed() + --ExportScript.Tools.WriteToLog('lTrueAirSpeed: '..ExportScript.Tools.dump(lTrueAirSpeed)) + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("500", (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1 or 0 ) ) -- gear warning light + ExportScript.Tools.SendDataDAC("501", (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC("502", (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC("503", (lMechInfo.gear.value > 0.97 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendDataDAC("510", (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + ExportScript.Tools.SendDataDAC("531", (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap + ExportScript.Tools.SendDataDAC("532", ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0) ) -- Intake FOD shields + ExportScript.Tools.SendDataDAC("533", ((lMechInfo.gear.status == 0 and lMechInfo.flaps.value > 0.93) and 1 or 0) ) -- Flaps Warning, same light as gear warning light, but blinking light + + ExportScript.Tools.SendDataDAC("541", (lMechInfo.parachute.value < 0.5 and 1 or 0) ) -- Parachute + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lWarningLight = 0.0 + + --lWarningLight = ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 0.5 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = ((lMechInfo.gear.status == 0 and lMechInfo.flaps.value > 0.93) and 1.0 or lWarningLight ) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1.0 or lWarningLight ) -- gear warning light + + ExportScript.Tools.SendData(500, string.format("%.1f", lWarningLight)) + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap + ExportScript.Tools.SendData(532, ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0)) -- Intake FOD shields + end +end + +function ExportScript.AF.FC_WeaponPanel_SU27(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + if ExportScript.AF.TmpWeaponPanelPresend == nil then + ExportScript.AF.TmpWeaponPanelPresend = {[101] = 0, [102] = 0, [103] = 0, [104] = 0, [105] = 0, [106] = 0, [107] = 0, [108] = 0, [109] = 0, [110] = 0} + end + + if ExportScript.AF.TmpWeaponPanelActive == nil then + ExportScript.AF.TmpWeaponPanelActive = {[201] = 0, [202] = 0, [203] = 0, [204] = 0, [205] = 0, [206] = 0, [207] = 0, [208] = 0, [209] = 0, [210] = 0} + end + + if ExportScript.AF.TmpWeaponPanel == nil then + ExportScript.AF.TmpWeaponPanel = {[231] = 0, [232] = 0, [233] = 0, [234] = 0, [235] = 0} + end + + if ExportScript.AF.EventNumberFC_WeaponPanel == nil then + ExportScript.AF.EventNumberFC_WeaponPanel = 0 + end + + if(ExportScript.AF.EventNumberFC_WeaponPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_WeaponPanel = ExportScript.AF.EventNumber + + -- defination + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo ~= nil then + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201 } -- left + ExportScript.AF.TmpStationToPanel[2] = {Panel = 10, StationID = 110, CurrentID = 210 } -- right + ExportScript.AF.TmpStationToPanel[3] = {Panel = 2, StationID = 102, CurrentID = 202 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 9, StationID = 109, CurrentID = 209 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 3, StationID = 103, CurrentID = 203 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 8, StationID = 108, CurrentID = 208 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 4, StationID = 104, CurrentID = 204 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 7, StationID = 107, CurrentID = 207 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 5, StationID = 105, CurrentID = 205 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 6, StationID = 106, CurrentID = 206 } + + -- ExportScript.AF.TmpWeaponPanelActive reset + for i = 201, 210, 1 do + ExportScript.AF.TmpWeaponPanelActive[i] = 0 + end + + if ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation] ~= nil then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID] = 1 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation) -- corresponding station + end + end + + local lWeaponType = 0.0 -- transversely striped + if ExportScript.AF.PayloadInfo.CurrentStation > 0 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level1 == 4 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 4 then -- Weapon type Missle + lWeaponType = 0.1 -- MSL + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 7 then -- Weapon type NURS with Container + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level3 == 33 then -- Weapon type Rocket + lWeaponType = 0.2 -- RCT + end + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 5 then -- Weapon type Bomb + lWeaponType = 0.3 -- BB + end + end + end + + --[[ + Weapon Panel + | + --------------------------------------------------- + | | | | | | | | | | | + 1 2 3 4 5 C 6 7 8 9 10 -- display + 1 3 5 7 9 10 8 6 4 2 -- Paylod ID + ]] + -- Payload Info + -- weapon stations (panel) 1 (left) - 10 (right), no lamp for center station + + -- WeaponPresend1 {0, 1} + -- WeaponPresend2 {0, 1} + -- WeaponPresend3 {0, 1} + -- WeaponPresend4 {0, 1} + -- WeaponPresend5 {0, 1} + -- WeaponPresend6 {0, 1} + -- WeaponPresend7 {0, 1} + -- WeaponPresend8 {0, 1} + -- WeaponPresend9 {0, 1} + -- WeaponPresend10 {0, 1} + -- WeaponActive1 {0, 1} + -- WeaponActive2 {0, 1} + -- WeaponActive3 {0, 1} + -- WeaponActive4 {0, 1} + -- WeaponActive5 {0, 1} + -- WeaponActive6 {0, 1} + -- WeaponActive7 {0, 1} + -- WeaponActive8 {0, 1} + -- WeaponActive9 {0, 1} + -- WeaponActive10 {0, 1} + + ExportScript.AF.TmpWeaponPanelPresend[101] = (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) -- weapon presend panel 1 + ExportScript.AF.TmpWeaponPanelPresend[102] = (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) -- weapon presend panel 2 + ExportScript.AF.TmpWeaponPanelPresend[103] = (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) -- weapon presend panel 3 + ExportScript.AF.TmpWeaponPanelPresend[104] = (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) -- weapon presend panel 4 + ExportScript.AF.TmpWeaponPanelPresend[105] = (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) -- weapon presend panel 5 + ExportScript.AF.TmpWeaponPanelPresend[106] = (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) -- weapon presend panel 6 + ExportScript.AF.TmpWeaponPanelPresend[107] = (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) -- weapon presend panel 7 + ExportScript.AF.TmpWeaponPanelPresend[108] = (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) -- weapon presend panel 8 + ExportScript.AF.TmpWeaponPanelPresend[109] = (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) -- weapon presend panel 9 + ExportScript.AF.TmpWeaponPanelPresend[110] = (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) -- weapon presend panel 10 + --ExportScript.AF.TmpWeaponPanelActive[201] -- weapon active panel 1 + --ExportScript.AF.TmpWeaponPanelActive[202] -- weapon active panel 2 + --ExportScript.AF.TmpWeaponPanelActive[203] -- weapon active panel 3 + --ExportScript.AF.TmpWeaponPanelActive[204] -- weapon active panel 4 + --ExportScript.AF.TmpWeaponPanelActive[205] -- weapon active panel 5 + --ExportScript.AF.TmpWeaponPanelActive[206] -- weapon active panel 6 + --ExportScript.AF.TmpWeaponPanelActive[207] -- weapon active panel 7 + --ExportScript.AF.TmpWeaponPanelActive[208] -- weapon active panel 8 + --ExportScript.AF.TmpWeaponPanelActive[209] -- weapon active panel 9 + --ExportScript.AF.TmpWeaponPanelActive[210] -- weapon active panel 10 + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendData(key, value) + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendDataDAC(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendDataDAC(key, value) + end + end +end \ No newline at end of file diff --git a/ExportsModules/Su-33.lua b/ExportsModules/Su-33.lua new file mode 100644 index 0000000..5b33765 --- /dev/null +++ b/ExportsModules/Su-33.lua @@ -0,0 +1,720 @@ +-- Su-33 Export + +ExportScript.FoundFCModule = true +ExportScript.Version.Su33 = "1.2.1" + +-- auxiliary function +dofile(ExportScript.Config.ExportModulePath.."FC_AuxiliaryFuntions.lua") + +----------------------------------------- +-- FLAMING CLIFFS AIRCRAFT / Su-33 -- +-- FC aircraft don't support GetDevice -- +----------------------------------------- + +function ExportScript.ProcessIkarusFCHighImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + local myData = LoGetSelfData() + + if (myData) then + local lLatitude = myData.LatLongAlt.Lat -- LATITUDE + local lLongitude = myData.LatLongAlt.Long -- LONGITUDE + + local lEngineTempLeft = LoGetEngineInfo().Temperature.left -- ENG1 EGT ºC + local lEngineTempRight = LoGetEngineInfo().Temperature.right -- ENG2 EGT ºC + --[[ + local lBasicAtmospherePressure = LoGetBasicAtmospherePressure() -- BAROMETRIC PRESSURE + local lAltBar = LoGetAltitudeAboveSeaLevel() -- ALTITUDE SEA LEVEL (Meter) + local lAltRad = LoGetAltitudeAboveGroundLevel() -- ALTITUDE GROUND LEVEL (Meter) + local lTrueAirSpeed = LoGetTrueAirSpeed() -- TRUE AIRSPEED (Meter/Second) + local lPitch, lBank, lYaw = LoGetADIPitchBankYaw() -- PITCH, BANK, YAW (Radian) + + local lHeading = myData.Heading -- HEADING (Radian) + local lVVI = LoGetVerticalVelocity() -- VERTICAL SPEED (Meter/Second) + local lIAS = LoGetIndicatedAirSpeed() -- INDICATED AIRSPEED (Meter/Second) + local lMachNumber = LoGetMachNumber() -- MACH + local lAoA = LoGetAngleOfAttack() -- ANGLE OF ATTACK AoA (Radian) + + local lGlide = LoGetGlideDeviation() -- VOR1 HORIZONTAL DEFLECTION (-1 +1) + local lSide = LoGetSideDeviation() -- VOR1 VERTICAL DEFLECTION (-1 +1) + local lSlipBallPosition = LoGetSlipBallPosition() -- SLIP BALL (-1 +1) + local lAccelerationUnits = LoGetAccelerationUnits().y -- G-LOAD + + local lNavInfoPitch = LoGetNavigationInfo().Requirements.pitch -- AP REQUIRED PITCH (Radian) + local lNavInfoRoll = LoGetNavigationInfo().Requirements.roll -- AP REQUIRED BANK (Radian) + local lNavInfoSpeed = LoGetNavigationInfo().Requirements.speed -- AP SPEED (Meter/Second) + local lNavInfoAltitude = LoGetNavigationInfo().Requirements.altitude -- AP ALTITUDE (Meter) + local lNavInfoVerticalSpeed = LoGetNavigationInfo().Requirements.vertical_speed -- AP VERTICAL SPEED (Meter/Second) + + local lControlPanel_HSI = LoGetControlPanel_HSI() -- HSI Data + local lHSI_RMI = LoGetControlPanel_HSI().RMI_raw -- VOR1 OBS (Radian) + local lHSI_ADF = LoGetControlPanel_HSI().ADF_raw -- ADF OBS (Radian) + local lHSI_Heading = LoGetControlPanel_HSI().Heading_raw -- Heading (Radian) + + local lEngineRPMleft = LoGetEngineInfo().RPM.left -- ENG1 RPM % + local lEngineRPMright = LoGetEngineInfo().RPM.right -- ENG2 RPM % + + local lEngineFuelInternal = LoGetEngineInfo().fuel_internal -- TANK1 (INT) (KG) + local lEngineFuelExternal = LoGetEngineInfo().fuel_external -- TANK2 (EXT) (KG) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + local lPayloadInfo = LoGetPayloadInfo() -- Paylod, e.g. bombs, guns, rockets, fuel tanks,... + ]] + + local lDistanceToWay = 999 + local lRoute = LoGetRoute() + + if (myData and lRoute) then -- if neither are nil + local myLoc = LoGeoCoordinatesToLoCoordinates(lLongitude, lLatitude) + --lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.y - lRoute.goto_point.world_point.y)^2) + lDistanceToWay = math.sqrt((myLoc.x - lRoute.goto_point.world_point.x)^2 + (myLoc.z - lRoute.goto_point.world_point.z)^2) + end + + -- IAS-MACH Indicator + ExportScript.AF.FC_Russian_AirSpeed_1600hkm() + + -- AOA Indicator and Accelerometer + ExportScript.AF.FC_Russian_AOA_Su2733() + + -- ADI + ExportScript.AF.FC_Russian_ADI_New() + + -- HSI + ExportScript.AF.FC_Russian_HSI(lDistanceToWay) + + -- Vertical Velocity Indicator (VVI) + ExportScript.AF.FC_Russian_VVI_New() + + -- Radar Altimeter (below 100m is warning light on) + ExportScript.AF.FC_Russian_RadarAltimeter_1500m(100) + + -- Barometric Altimeter + ExportScript.AF.FC_Russian_BarometricAltimeter_late() + + -- Tachometer (RPM) + ExportScript.AF.FC_Russian_EngineRPM() + + -- Left Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempLeft, 1200, 100, 70, 71) + + -- Right Jet Engine Turbine Temperature Indicator (EngineTemp, main scala, second scala, ExportID) + ExportScript.AF.FC_TwoNeedlesGauge(lEngineTempRight, 1200, 100, 72, 73) + + -- Clock from Ka-50 + ExportScript.AF.FC_Russian_Clock_late() + else + ExportScript.Tools.WriteToLog("Unknown FC Error, no LoGetSelfData.") + end +end + +function ExportScript.ProcessDACConfigHighImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + -- your script + +end + +function ExportScript.ProcessIkarusFCLowImportanceConfig() + local lFunctionTyp = "Ikarus" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU33(lFunctionTyp) + + -- SPO15 Radar Warning Reciver + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + + -- EKRAN Message + ExportScript.AF.FC_EKRAN() + + -- Fuel Quantity Indicator + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo ~= nil then + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + -- Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 300, 85) + + -- Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.HydraulicPressure.left, 300, 86) + end + + -- Engine Lamps, Start and Afterburner + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + if lMechInfo ~= nil then + -- Wheelbrakes Hydraulic Pressure Left + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 300, 87) + + -- Wheelbrakes Hydraulic Pressure Right + ExportScript.AF.FC_OneNeedleGauge(lMechInfo.wheelbrakes.value, 300, 88) + + --ExportScript.Tools.WriteToLog('lMechInfo.noseflap.value: '..ExportScript.Tools.dump(lMechInfo.noseflap.value)) -- Vorfluegel, Balkenanzeige neben dem Radarhoehenmesser (0=oben bis 30=unten) + end + + -- Airintake + ExportScript.AF.FC_Russian_AirIntake(20) + + -- (x < 0 and 'negative' or 'non-negative') + --[[ + local lPayloadInfo = LoGetPayloadInfo() + ExportScript.Tools.WriteToLog('lPayloadInfo: '..ExportScript.Tools.dump(lPayloadInfo)) + + local lSnares = LoGetSnares() -- Flare and Chaff + ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + local lSightingSystemInfo = LoGetSightingSystemInfo() + ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)) + + local lTWSInfo = LoGetTWSInfo() -- SPO Informationen, z.B. Radarwarner F15C + ExportScript.Tools.WriteToLog('lTWSInfo: '..ExportScript.Tools.dump(lTWSInfo)) + + local lTargetInformation = LoGetTargetInformation() -- detalierte Radar Infos z.B. F15C + ExportScript.Tools.WriteToLog('lTargetInformation: '..ExportScript.Tools.dump(lTargetInformation)) + + local lLockedTargetInformation = LoGetLockedTargetInformation() + ExportScript.Tools.WriteToLog('lLockedTargetInformation: '..ExportScript.Tools.dump(lLockedTargetInformation)) + + local lF15_TWS_Contacs = LoGetF15_TWS_Contacts() -- the same information but only for F-15 in TWS mode + ExportScript.Tools.WriteToLog('lF15_TWS_Contacs: '..ExportScript.Tools.dump(lF15_TWS_Contacs)) + + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + + local lMCPState = LoGetMCPState() -- Warnlichter + ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + + local lControlPanel_HSI = LoGetControlPanel_HSI() + ExportScript.Tools.WriteToLog('lControlPanel_HSI: '..ExportScript.Tools.dump(lControlPanel_HSI)) + + local lRadioBeaconsStatus = LoGetRadioBeaconsStatus() + ExportScript.Tools.WriteToLog('lRadioBeaconsStatus: '..ExportScript.Tools.dump(lRadioBeaconsStatus)) + + local lEngineInfo = LoGetEngineInfo() + ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + ]] + -- Weapon Control System + -- local lNameByType = LoGetNameByType () -- args 4 (number : level1,level2,level3,level4), result string + -- values from LoGetTargetInformation().type + -- ExportScript.Tools.WriteToLog('lNameByType: '..ExportScript.Tools.dump(lNameByType)) +end + +function ExportScript.ProcessDACConfigLowImportance() + local lFunctionTyp = "DAC" -- function type for shared function + + ExportScript.AF.FC_WeaponPanel_SU33(lFunctionTyp) + ExportScript.AF.FC_SPO15RWR(lFunctionTyp) + ExportScript.AF.MechanicalDevicesIndicator(lFunctionTyp) + ExportScript.AF.FuelQuantityIndicator(lFunctionTyp) + ExportScript.AF.FC_EngineLamps_SU2733(lFunctionTyp) + ExportScript.AF.StatusLamp() + ExportScript.AF.SightingSystem() + ExportScript.AF.PPDSPPanel() +end + +----------------------------- +-- Custom functions -- +----------------------------- + +function ExportScript.AF.SightingSystem() + local lSightingSystemInfo = LoGetSightingSystemInfo() + if lSightingSystemInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lSightingSystemInfo: '..ExportScript.Tools.dump(lSightingSystemInfo)9 + --[[ + [PRF] = { + [selection] = string: "ILV" + [current] = string: "MED" + } + [laser_on] = boolean: "false" + [scale] = { + [azimuth] = number: "0.52359873056412" + [distance] = number: "10000" + } + [radar_on] = boolean: "false" + [optical_system_on] = boolean: "false" + [LaunchAuthorized] = boolean: "false" + [ECM_on] = boolean: "false" + [Manufacturer] = string: "RUS" + [TDC] = { + [y] = number: "0" + [x] = number: "0" + } + [ScanZone] = { + [coverage_H] = { + [min] = number: "0" + [max] = number: "20000" + } + [size] = { + [azimuth] = number: "1.0471974611282" + [elevation] = number: "0.17453290522099" + } + [position] = { + [exceeding_manual] = number: "0" + [distance_manual] = number: "0" + [azimuth] = number: "0" + [elevation] = number: "0" + } + } + ]] + ExportScript.Tools.SendDataDAC("600", lSightingSystemInfo.ECM_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("601", lSightingSystemInfo.laser_on == true and 1 or 0 ) + --ExportScript.Tools.SendDataDAC("602", lSightingSystemInfo.optical_system_on == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("603", lSightingSystemInfo.LaunchAuthorized == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("604", lSightingSystemInfo.radar_on == true and 1 or 0 ) +end + +function ExportScript.AF.PPDSPPanel() + local lSnares = LoGetSnares() -- Flare and Chaff + if lSnares == nil then + return + end + --ExportScript.Tools.WriteToLog('lSnares: '..ExportScript.Tools.dump(lSnares)) + + --[chaff] = number: "48" + --[flare] = number: "48" + + local lChaffLED = ExportScript.Tools.round(lSnares.chaff / 6, 0, "ceil") + 1 + local lFlareLED = ExportScript.Tools.round(lSnares.flare / 6, 0, "ceil") + 1 + + ExportScript.Tools.SendDataDAC("800", (lChaffLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("801", (lChaffLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("802", (lChaffLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("803", (lChaffLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("804", (lChaffLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("805", (lChaffLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("806", (lChaffLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("807", (lChaffLED <= 8 and 0 or 1) ) + + ExportScript.Tools.SendDataDAC("810", (lFlareLED <= 1 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("811", (lFlareLED <= 2 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("812", (lFlareLED <= 3 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("813", (lFlareLED <= 4 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("814", (lFlareLED <= 5 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("815", (lFlareLED <= 6 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("816", (lFlareLED <= 7 and 0 or 1) ) + ExportScript.Tools.SendDataDAC("817", (lFlareLED <= 8 and 0 or 1) ) +end + +function ExportScript.AF.StatusLamp() + local lMCPState = LoGetMCPState() -- Warning Lights + if lMCPState == nil then + return + end + --ExportScript.Tools.WriteToLog('lMCPState: '..ExportScript.Tools.dump(lMCPState)) + --[[ + [RightTailPlaneFailure] = boolean: "false" + [EOSFailure] = boolean: "false" + [ECMFailure] = boolean: "false" + [RightAileronFailure] = boolean: "false" + [MasterWarning] = boolean: "false" + [RightEngineFailure] = boolean: "false" + [CannonFailure] = boolean: "false" + [MLWSFailure] = boolean: "false" + [ACSFailure] = boolean: "false" + [RadarFailure] = boolean: "false" + [HelmetFailure] = boolean: "false" + [HUDFailure] = boolean: "false" + [LeftMainPumpFailure] = boolean: "false" + [RightWingPumpFailure] = boolean: "false" + [LeftWingPumpFailure] = boolean: "false" + [MFDFailure] = boolean: "false" + [RWSFailure] = boolean: "false" + [GearFailure] = boolean: "false" + [HydraulicsFailure] = boolean: "false" + [AutopilotFailure] = boolean: "true" + [FuelTankDamage] = boolean: "false" + [LeftAileronFailure] = boolean: "false" + [CanopyOpen] = boolean: "false" + [RightMainPumpFailure] = boolean: "false" + [StallSignalization] = boolean: "false" + [LeftEngineFailure] = boolean: "false" + [AutopilotOn] = boolean: "false" + [LeftTailPlaneFailure] = boolean: "false" + ]] + + ExportScript.Tools.SendDataDAC("700", lMCPState.LeftTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("701", lMCPState.RightTailPlaneFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("702", lMCPState.MasterWarning == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("703", lMCPState.LeftEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("704", lMCPState.RightEngineFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("705", lMCPState.LeftAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("706", lMCPState.RightAileronFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("707", lMCPState.LeftMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("708", lMCPState.RightMainPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("709", lMCPState.LeftWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("710", lMCPState.RightWingPumpFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("711", lMCPState.EOSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("712", lMCPState.ECMFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("713", lMCPState.CannonFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("714", lMCPState.MLWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("715", lMCPState.ACSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("716", lMCPState.RadarFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("717", lMCPState.HelmetFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("718", lMCPState.HUDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("719", lMCPState.MFDFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("720", lMCPState.RWSFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("721", lMCPState.GearFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("722", lMCPState.HydraulicsFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("723", lMCPState.AutopilotFailure == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("724", lMCPState.FuelTankDamage == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("725", lMCPState.CanopyOpen == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("726", lMCPState.StallSignalization == true and 1 or 0 ) + ExportScript.Tools.SendDataDAC("727", lMCPState.AutopilotOn == true and 1 or 0 ) + + local lAccelerationUnits = LoGetAccelerationUnits() + if lAccelerationUnits ~= nil then + --ExportScript.Tools.WriteToLog('lAccelerationUnits: '..ExportScript.Tools.dump(lAccelerationUnits)) + ExportScript.Tools.SendDataDAC("732", (lAccelerationUnits.y > 8.0 and 1 or 0) ) -- lamp Over-G warning + end +end + +function ExportScript.AF.FuelQuantityIndicator(FunctionTyp) +-- Fuel quantity shows the fuel remaining in all tanks + local lFunctionTyp = FunctionTyp or "Ikarus" + local lEngineInfo = LoGetEngineInfo() + if lEngineInfo == nil then + return + end + --ExportScript.Tools.WriteToLog('lEngineInfo: '..ExportScript.Tools.dump(lEngineInfo)) + --[[ + [fuel_external] = number: "0" + [Temperature] = { + [left] = number: "626.99444580078" + [right] = number: "626.99444580078" + } + [RPM] = { + [left] = number: "87.453765869141" + [right] = number: "87.453758239746" + } + [FuelConsumption] = { + [left] = number: "0.1500396137767" + [right] = number: "0.1500396137767" + } + [fuel_internal] = number: "3773.2749023438" + [EngineStart] = { + [left] = number: "0" + [right] = number: "0" + } + [HydraulicPressure] = { + [left] = number: "210" + [right] = number: "210" + } + lPayloadInfo.Stations[8].CLSID == E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF -- ext 800l Fuel Tank + ]] + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + lTotalFuel = lEngineInfo.fuel_internal + --ExportScript.Tools.WriteToLog('lTotalFuel: '..ExportScript.Tools.dump(lTotalFuel)) + --lTotalFuel = string.format("%3d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10) + --lTotalFuel = string.format("%4d", lEngineInfo.fuel_internal) -- total fuel in kg + --lTotalFuel = string.format("%4d", lEngineInfo.fuel_external) -- external fuel in kg + local lTotalFuel_12_0 = 1.0 + + if lTotalFuel < 12000 then + --[[ + y_min = 0.0 -- minimaler Ausgabewert + y_max = 1.0 -- maximaler Ausgabewert + x_min = 0 -- minimaler Eingangswert + x_max = 12000 -- maximaler Eingangswert + x = 8000 -- aktueller Eingangswert + + d_y = 1 -- Delta Ausgabewerte (y_max - y_min) + d_x = 12000 -- Delta Eingangswerte (x_max - x_min) + m = 8.3333333333333333333333333333333e-5 -- Steigung der linearen Funktion (d_y / d_x) + n = 4.e-33 -- Schnittpunkt der Funktion mit y-Achse (y_max - m * x_max) + + y = 0.66666666666666666666666666666667 -- Ergebnis (m * x + n) + ]] + lTotalFuel_12_0 = 8.3333333333333333333333333333333e-5 * lTotalFuel + 4.e-33 + end + + ExportScript.Tools.SendData("301", string.format("%.4f", lTotalFuel_12_0) ) + ExportScript.Tools.SendData("304", (lEngineInfo.fuel_internal < 6900.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendData("305", (lEngineInfo.fuel_internal < 5400.0 and 1 or 0) ) -- Tank warning 2 + ExportScript.Tools.SendData("306", (lEngineInfo.fuel_internal < 4700.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendData("307", (lEngineInfo.fuel_internal < 1500.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendData("308", (lEngineInfo.fuel_internal < 600.0 and 1 or 0) ) -- Bingo Fuel + + ExportScript.AF.FC_OneNeedleGauge(lEngineInfo.fuel_internal, 10000, 302) -- Standby Fuel Indicator + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("300", string.format("%d", ExportScript.Tools.round((lEngineInfo.fuel_internal / 10), 0, "ceil") * 10) ) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("301", string.format("%d", lEngineInfo.fuel_internal) ) -- total fuel in kg + --ExportScript.Tools.SendDataDAC("302", string.format("%d", lEngineInfo.fuel_external) ) -- external fuel in kg + + ExportScript.Tools.SendDataDAC("304", (lEngineInfo.fuel_internal < 6900.0 and 1 or 0) ) -- Tank warning 1 + ExportScript.Tools.SendDataDAC("305", (lEngineInfo.fuel_internal < 5400.0 and 1 or 0) ) -- Tank warning 2 + ExportScript.Tools.SendDataDAC("306", (lEngineInfo.fuel_internal < 4700.0 and 1 or 0) ) -- Tank warning 3 + ExportScript.Tools.SendDataDAC("307", (lEngineInfo.fuel_internal < 1500.0 and 1 or 0) ) -- Tank warning 4 + ExportScript.Tools.SendDataDAC("308", (lEngineInfo.fuel_internal < 600.0 and 1 or 0) ) -- Bingo Fuel + end +end + +function ExportScript.AF.MechanicalDevicesIndicator(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" +-- The mechanical devices indicator shows the position of the landing gear, flaps, leading edge flaps and airbrake + local lMechInfo = LoGetMechInfo() -- mechanical components, e.g. Flaps, Wheelbrakes,... + --ExportScript.Tools.WriteToLog('lMechInfo: '..ExportScript.Tools.dump(lMechInfo)) + if lMechInfo == nil then + return + end + --[[ + [hook] = { + [status] = number: "0" + [value] = number: "0" + } + [parachute] = { + [status] = number: "0" + [value] = number: "0" + } + [controlsurfaces] = { + [eleron] = { + [left] = number: "0" + [right] = number: "-0.21084336936474" + } + [elevator] = { + [left] = number: "-0" + [right] = number: "-0" + } + [rudder] = { + [left] = number: "0" + [right] = number: "0" + } + } + [airintake] = { + [status] = number: "0" + [value] = number: "0" + } + [canopy] = { + [status] = number: "0" + [value] = number: "0" + } + [refuelingboom] = { + [status] = number: "0" + [value] = number: "0" + } + [wing] = { + [status] = number: "0" + [value] = number: "0" + } + [noseflap] = { + [status] = number: "0" + [value] = number: "0" + } + [gear] = { + [value] = number: "0" + [nose] = { + [rod] = number: "0" + } + [main] = { + [left] = { + [rod] = number: "0" + } + [right] = { + [rod] = number: "0" + } + } + [status] = number: "0" + } + [speedbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [wheelbrakes] = { + [status] = number: "0" + [value] = number: "0" + } + [flaps] = { + [status] = number: "0" + [value] = number: "0" + }]] + --local lTrueAirSpeed = LoGetTrueAirSpeed() + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + ExportScript.Tools.SendDataDAC("500", (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1 or 0 ) ) -- gear warning light + ExportScript.Tools.SendDataDAC("501", (lMechInfo.gear.value > 0.85 and 1 or 0) ) -- nose gear + ExportScript.Tools.SendDataDAC("502", (lMechInfo.gear.value > 0.95 and 1 or 0) ) -- left gear + ExportScript.Tools.SendDataDAC("503", (lMechInfo.gear.value > 0.97 and 1 or 0) ) -- right gear + + ExportScript.Tools.SendDataDAC("510", (lMechInfo.speedbrakes.value > 0.1 and 1 or 0) ) -- speedbreakes on > 0.1 (0 - 1) + + ExportScript.Tools.SendDataDAC("531", (lMechInfo.flaps.value > 0.93 and 1 or 0) ) -- flap + ExportScript.Tools.SendDataDAC("532", ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0) ) -- Intake FOD shields + ExportScript.Tools.SendDataDAC("533", ((lMechInfo.gear.status == 0 and lMechInfo.flaps.status > 0) and 1 or 0) ) -- Flaps Warning, same light as gear warning light, but blinking light + + ExportScript.Tools.SendDataDAC("541", (lMechInfo.hook.value > 0.8 and 1 or 0) ) -- Hook + ExportScript.Tools.SendDataDAC("551", (lMechInfo.noseflap.value > 20.0 and 1 or 0) ) + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + local lWarningLight = 0.0 + + --lWarningLight = ((lMechInfo.flaps.value > 0.93 and lTrueAirSpeed > 340) and 1.0 or 0.0) -- Speed Warning for Flaps, same light as gear warning light, but blinking light + lWarningLight = ((lMechInfo.gear.status == 0 and lMechInfo.flaps.status > 0) and 1.0 or lWarningLight ) -- Flaps Warning, same light as gear warning light, but blinking light + lWarningLight = (((lMechInfo.gear.status == 1 and lMechInfo.gear.value < 1) or (lMechInfo.gear.status == 0 and lMechInfo.gear.value > 0)) and 1.0 or lWarningLight ) -- gear warning light + + ExportScript.Tools.SendData(500, string.format("%.1f", lWarningLight)) + ExportScript.Tools.SendData(501, (lMechInfo.gear.value > 0.85 and 1 or 0)) -- nose gear + ExportScript.Tools.SendData(502, (lMechInfo.gear.value > 0.95 and 1 or 0)) -- left gear + ExportScript.Tools.SendData(503, (lMechInfo.gear.value == 1 and 1 or 0)) -- right gear + ExportScript.Tools.SendData(510, (lMechInfo.speedbrakes.value > 0.1 and 1 or 0)) -- speedbreakes on > 0.1 (0 - 1) + ExportScript.Tools.SendData(531, (lMechInfo.flaps.value > 0.93 and 1 or 0)) -- flap + ExportScript.Tools.SendData(532, ((lMechInfo.gear.value > 0.5 and lMechInfo.gear.nose.rod > 0.02) and 1 or 0)) -- Intake FOD shields + ExportScript.Tools.SendData(541, (lMechInfo.hook.value > 0.8 and 1 or 0)) -- Hook + end +end + +function ExportScript.AF.FC_WeaponPanel_SU33(FunctionTyp) + local lFunctionTyp = FunctionTyp or "Ikarus" + + if ExportScript.AF.TmpWeaponPanelPresend == nil then + ExportScript.AF.TmpWeaponPanelPresend = {[101] = 0, [102] = 0, [103] = 0, [104] = 0, [105] = 0, [106] = 0, [107] = 0, [108] = 0, [109] = 0, [110] = 0} + end + + if ExportScript.AF.TmpWeaponPanelActive == nil then + ExportScript.AF.TmpWeaponPanelActive = {[201] = 0, [202] = 0, [203] = 0, [204] = 0, [205] = 0, [206] = 0, [207] = 0, [208] = 0, [209] = 0, [210] = 0} + end + + if ExportScript.AF.TmpWeaponPanel == nil then + ExportScript.AF.TmpWeaponPanel = {[231] = 0, [232] = 0, [233] = 0, [234] = 0, [235] = 0} + end + + if ExportScript.AF.EventNumberFC_WeaponPanel == nil then + ExportScript.AF.EventNumberFC_WeaponPanel = 0 + end + + if(ExportScript.AF.EventNumberFC_WeaponPanel < ExportScript.AF.EventNumber) then + ExportScript.AF.EventNumberFC_WeaponPanel = ExportScript.AF.EventNumber + + -- defination + ExportScript.AF.PayloadInfo = LoGetPayloadInfo() + if ExportScript.AF.PayloadInfo ~= nil then + if ExportScript.AF.CurrentStationTmp == nil then + ExportScript.AF.CurrentStationTmp = -1 + end + + if ExportScript.AF.PayloadInfo.CurrentStation > 0 and + ExportScript.AF.CurrentStationTmp ~= ExportScript.AF.PayloadInfo.CurrentStation then + ExportScript.AF.CurrentStationTmp = ExportScript.AF.PayloadInfo.CurrentStation + + ExportScript.AF.TmpStationToPanel = {} + --ExportScript.AF.TmpStationToPanel[1] = {Panel = 1, StationID = 101, CurrentID = 201 } -- L + --ExportScript.AF.TmpStationToPanel[2] = {Panel = 10, StationID = 110, CurrentID = 210 } -- L + ExportScript.AF.TmpStationToPanel[3] = {Panel = 10, StationID = 110, CurrentID = 210 } + ExportScript.AF.TmpStationToPanel[4] = {Panel = 1, StationID = 101, CurrentID = 201 } + ExportScript.AF.TmpStationToPanel[5] = {Panel = 2, StationID = 102, CurrentID = 202 } + ExportScript.AF.TmpStationToPanel[6] = {Panel = 9, StationID = 109, CurrentID = 209 } + ExportScript.AF.TmpStationToPanel[7] = {Panel = 3, StationID = 103, CurrentID = 203 } + ExportScript.AF.TmpStationToPanel[8] = {Panel = 8, StationID = 108, CurrentID = 208 } + ExportScript.AF.TmpStationToPanel[9] = {Panel = 4, StationID = 104, CurrentID = 204 } + ExportScript.AF.TmpStationToPanel[10] = {Panel = 7, StationID = 107, CurrentID = 207 } + ExportScript.AF.TmpStationToPanel[11] = {Panel = 6, StationID = 106, CurrentID = 206 } + ExportScript.AF.TmpStationToPanel[12] = {Panel = 5, StationID = 105, CurrentID = 205 } + + -- ExportScript.AF.TmpWeaponPanelActive reset + for i = 201, 210, 1 do + ExportScript.AF.TmpWeaponPanelActive[i] = 0 + end + + if ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation] ~= nil then + ExportScript.AF.TmpWeaponPanelActive[ExportScript.AF.TmpStationToPanel[ExportScript.AF.PayloadInfo.CurrentStation].CurrentID] = 1 -- currrent value + + table.foreach(ExportScript.AF.PayloadInfo.Stations, ExportScript.AF.WeaponStatusPanel_selectCurrentPayloadStation) -- corresponding station + end + end + + local lWeaponType = 0.0 -- transversely striped + if ExportScript.AF.PayloadInfo.CurrentStation > 0 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level1 == 4 then + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 4 then -- Weapon type Missle + lWeaponType = 0.1 -- MSL + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 7 then -- Weapon type NURS with Container + if ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level3 == 33 then -- Weapon type Rocket + lWeaponType = 0.2 -- RCT + end + elseif ExportScript.AF.PayloadInfo.Stations[ExportScript.AF.PayloadInfo.CurrentStation].weapon.level2 == 5 then -- Weapon type Bomb + lWeaponType = 0.3 -- BB + end + end + end + + --[[ + Weapon Panel (Numper = Station number) + | + ------------------------------------------------------- + | | | | | | | | | | | | + L 1 2 3 4 5 6 7 8 9 10 R -- Panel ID + 1 4 5 7 9 12 11 10 8 6 3 2 -- gES_PayloadInfo.Station.ID + ]] + -- Payload Info + -- weapon stations L and R not on Panel + -- weapon station 1 (left) to 10 (right), 5 and 6 center station + + -- WeaponPresend1 {0, 1} + -- WeaponPresend2 {0, 1} + -- WeaponPresend3 {0, 1} + -- WeaponPresend4 {0, 1} + -- WeaponPresend5 {0, 1} + -- WeaponPresend6 {0, 1} + -- WeaponPresend7 {0, 1} + -- WeaponPresend8 {0, 1} + -- WeaponPresend9 {0, 1} + -- WeaponPresend10 {0, 1} + -- WeaponActive1 {0, 1} + -- WeaponActive2 {0, 1} + -- WeaponActive3 {0, 1} + -- WeaponActive4 {0, 1} + -- WeaponActive5 {0, 1} + -- WeaponActive6 {0, 1} + -- WeaponActive7 {0, 1} + -- WeaponActive8 {0, 1} + -- WeaponActive9 {0, 1} + -- WeaponActive10 {0, 1} + + --ExportScript.AF.TmpWeaponPanelPresend[] = (ExportScript.AF.PayloadInfo.Stations[1].count > 0 and 1 or 0) -- L + --ExportScript.AF.TmpWeaponPanelPresend[] = (ExportScript.AF.PayloadInfo.Stations[2].count > 0 and 1 or 0) -- R + ExportScript.AF.TmpWeaponPanelPresend[110] = (ExportScript.AF.PayloadInfo.Stations[3].count > 0 and 1 or 0) -- weapon presend panel 1 + ExportScript.AF.TmpWeaponPanelPresend[101] = (ExportScript.AF.PayloadInfo.Stations[4].count > 0 and 1 or 0) -- weapon presend panel 10 + ExportScript.AF.TmpWeaponPanelPresend[102] = (ExportScript.AF.PayloadInfo.Stations[5].count > 0 and 1 or 0) -- weapon presend panel 2 + ExportScript.AF.TmpWeaponPanelPresend[109] = (ExportScript.AF.PayloadInfo.Stations[6].count > 0 and 1 or 0) -- weapon presend panel 9 + ExportScript.AF.TmpWeaponPanelPresend[103] = (ExportScript.AF.PayloadInfo.Stations[7].count > 0 and 1 or 0) -- weapon presend panel 3 + ExportScript.AF.TmpWeaponPanelPresend[108] = (ExportScript.AF.PayloadInfo.Stations[8].count > 0 and 1 or 0) -- weapon presend panel 8 + ExportScript.AF.TmpWeaponPanelPresend[104] = (ExportScript.AF.PayloadInfo.Stations[9].count > 0 and 1 or 0) -- weapon presend panel 4 + ExportScript.AF.TmpWeaponPanelPresend[107] = (ExportScript.AF.PayloadInfo.Stations[10].count > 0 and 1 or 0) -- weapon presend panel 7 + ExportScript.AF.TmpWeaponPanelPresend[106] = (ExportScript.AF.PayloadInfo.Stations[11].count > 0 and 1 or 0) -- weapon presend panel 5 + ExportScript.AF.TmpWeaponPanelPresend[105] = (ExportScript.AF.PayloadInfo.Stations[12].count > 0 and 1 or 0) -- weapon presend panel 6 + --ExportScript.AF.TmpWeaponPanelActive[201] -- weapon active panel 1 + --ExportScript.AF.TmpWeaponPanelActive[202] -- weapon active panel 2 + --ExportScript.AF.TmpWeaponPanelActive[203] -- weapon active panel 3 + --ExportScript.AF.TmpWeaponPanelActive[204] -- weapon active panel 4 + --ExportScript.AF.TmpWeaponPanelActive[205] -- weapon active panel 5 + --ExportScript.AF.TmpWeaponPanelActive[206] -- weapon active panel 6 + --ExportScript.AF.TmpWeaponPanelActive[207] -- weapon active panel 7 + --ExportScript.AF.TmpWeaponPanelActive[208] -- weapon active panel 8 + --ExportScript.AF.TmpWeaponPanelActive[209] -- weapon active panel 9 + --ExportScript.AF.TmpWeaponPanelActive[210] -- weapon active panel 10 + end + end + + if ExportScript.Config.IkarusExport and lFunctionTyp == "Ikarus" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendData(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendData(key, value) + end + end + + if ExportScript.Config.DACExport and lFunctionTyp == "DAC" then + for key, value in pairs(ExportScript.AF.TmpWeaponPanelPresend) do + ExportScript.Tools.SendDataDAC(key, value) + end + for key, value in pairs(ExportScript.AF.TmpWeaponPanelActive) do + ExportScript.Tools.SendDataDAC(key, value) + end + end +end \ No newline at end of file diff --git a/ExportsModules/TF-51D.lua b/ExportsModules/TF-51D.lua new file mode 100644 index 0000000..8354261 --- /dev/null +++ b/ExportsModules/TF-51D.lua @@ -0,0 +1,310 @@ +-- TF-51D Export + +ExportScript.FoundDCSModule = true +ExportScript.Version.TF51D = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Flight Instruments + [11] = "%.4f", -- AirspeedNeedle {0,50,100,150,200,250,300,350,400,450,500,550,600,650,700} {0.0,0.05,0.10,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7} + [29] = "%.4f", -- Variometer {-6000,-4000,-2000,2000,4000,6000} {-0.6,-0.4,-0.2,0.2,0.4,0.6} + -- Altimeter + [97] = "%.4f", -- Altimeter_Pressure {28.1, 31.0}{0.0, 1.0} + [96] = "%.41f", -- Altimeter_10000_footPtr {0.0, 100000.0}{0.0, 1.0} + [24] = "%.4f", -- Altimeter_1000_footPtr {0.0, 10000.0}{0.0, 1.0} + [25] = "%.4f", -- Altimeter_100_footPtr{0.0, 1000.0}{0.0, 1.0} + -- Artificial horizon + [15] = "%.4f", -- AHorizon_Pitch {1.0, -1.0} + [14] = "%.4f", -- AHorizon_Bank {1.0, -1.0} + [16] = "%.1f", -- AHorizon_PitchShift {-1.0, 1.0} + [20] = "%.1f", -- AHorizon_Caged {0.0, 1.0} + -- directional gyro + [12] = "%.4f", -- GyroHeading + -- turn indicator + [27] = "%.4f", -- TurnNeedle {-1.0, 1.0} + [28] = "%.4f", -- Slipball {-1.0, 1.0} + -- oxygen pressure indicator + [34] = "%.4f", -- Oxygen_Pressure {0.0, 500.0} {0.0, 1.0} + [33] = "%.4f", -- Oxygen_Flow_Blinker + -- fuel system + [155] = "%.4f", -- Fuel_Tank_Left {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [156] = "%.4f", -- Fuel_Tank_Right {0.0,5.0,15.0,30.0,45.0,60.0,75.0,92.0} {0.0,0.2,0.36,0.52,0.65,0.77,0.92,1.0} + [32] = "%.4f", -- Fuel_Pressure {0.0, 25.0} {0.0, 1.0} + -- A-11 clock + [4] = "%.4f", -- CLOCK_currtime_hours {0.0, 12.0}{0.0, 1.0} + [5] = "%.4f", -- CLOCK_currtime_minutes {0.0, 60.0}{0.0, 1.0} + [6] = "%.4f", -- CLOCK_currtime_seconds {0.0, 60.0}{0.0, 1.0} + -- AN5730 remote compass + [1] = "%.4f", -- CompassHeading + [2] = "%.4f", -- CommandedCourse + [3] = "%.4f", -- CommandedCourseKnob + -- TailRadarWarning + [161] = "%.f", -- Lamp TailRadarWarning + -- SCR-522A Control panel + [122] = "%.f", -- A_channel_light + [123] = "%.f", -- B_channel_light + [124] = "%.f", -- C_channel_light + [125] = "%.f", -- D_channel_light + [126] = "%.f", -- Transmit_light + -- hydraulic pressure + [78] = "%.4f", -- Hydraulic_Pressure {0.0, 2000.0} {0.0, 1.0} + -- Landing gears handle + [150] = "%.4f", -- Landing_Gear_Handle + [151] = "%.4f", -- Landing_Gear_Handle_Indoor + [80] = "%.f", -- LandingGearGreenLight + [82] = "%.f", -- LandingGearRedLight + -- gauges + [10] = "%.4f", -- Manifold_Pressure {10.0, 75.0} {0.0, 1.0} + [23] = "%.4f", -- Engine_RPM {0.0, 4500.0} {0.0, 1.0} + [9] = "%.4f", -- Vacuum_Suction {0.0, 10.0} {0.0, 1.0} + [21] = "%.4f", -- Carb_Temperature {-80, 150} {-0, 1} + [22] = "%.4f", -- Coolant_Temperature {-80, 150} {-0, 1} + [30] = "%.4f", -- Oil_Temperature {0.0, 100.0} {0, 1.0} + [31] = "%.4f", -- Oil_Pressure {0.0, 200.0} {0, 1.0} + [164] = "%.1f", -- Left_Fluor_Light + [165] = "%.1f", -- Right_Fluor_Light + [59] = "%.f", -- Hight_Blower_Lamp + -- Trimmer + [170] = "%.4f", -- Aileron_Trimmer {-1.0, 1.0} + [172] = "%.4f", -- Rudder_Trimmer {-1.0, 1.0} + [171] = "%.4f", -- Elevator_Trimmer {-1.0, 1.0} + [174] = "%.4f", -- Control_Lock_Bracket + [175] = "%.4f", -- Accelerometer_main {-5.0, 12.0} {0.0, 1.0} + [177] = "%.4f", -- Accelerometer_min {-5.0, 12.0} {0.0, 1.0} + [178] = "%.4f", -- Accelerometer_max {-5.0, 12.0} {0.0, 1.0} + [101] = "%.4f", -- Ammeter {0.0, 150.0} {0.0, 1.0} + -- light + [185] = "%.1f", -- Left_cockpit_light + [186] = "%.1f", -- Right_cockpit_light + [190] = "%.4f", -- warEmergencyPowerLimWire +} + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Right Swich Panel + [102] = "%d", -- Generator Connect/Disconnect + [103] = "%d", -- Battery Connect/Disconnect + [104] = "%d", -- Gun Heating ON/OFF + [105] = "%d", -- Pitot Heating ON/OFF + [106] = "%d", -- Wing Position Lights Bright/Off/Dim + [107] = "%d", -- Tail Position Lights Bright/Off/Dim + [108] = "%d", -- Red Recognition Light Key/Off/Steady + [109] = "%d", -- Green Recognition Light Key/Off/Steady + [110] = "%d", -- Amber Recognition Light Key/Off/Steady + [111] = "%d", -- Recognition Lights Key + [112] = "%d", -- Circuit Protectors Reset + [100] = "%.4f", -- Right Fluorescent Light (rotary) + [90] = "%.4f", -- Left Fluorescent Light (rotary) + -- Flight Instrument panel + [3] = "%.4f", -- Course Set (rotary) + [13] = "%.4f", -- Heading Set/Cage (rotary) + [179] = "%d", -- Heading Set/Cage Button + [17] = "%.4f", -- Pitch Adjustment (rotary) + [18] = "%.4f", -- Cage (rotary) + [19] = "%d", -- Cage Button + [8] = "%d", -- Winding/Adjustment Clock Button + [7] = "%.4f", -- Winding/Adjustment Clock (rotary) + [26] = "%.4f", -- Set Pressure (rotary) + -- SCR-522A Control panel + [117] = "%d", -- Radio ON/OFF + [118] = "%d", -- A Channel Activate + [119] = "%d", -- B Channel Activate + [120] = "%d", -- C Channel Activate + [121] = "%d", -- D Channel Activate + [127] = "%.4f", -- Radio Lights Dimmer (rotary) + [116] = "%.4f", -- Radio Audio Volume (rotary) + [44] = "%d", -- Microphone On + [129] = "%d", -- Switch Locking Lever + [128] = "%d", -- Radio Mode Transmit/Receive/Remote + ------------- + [71] = "%.4f", -- Cockpit Lights (rotary) + [66] = "%0.1f", -- Ignition Off/Right/Left/Both + [67] = "%d", -- Gun control Gun And Camera On/Gun And Camera OFF/Camera On + [72] = "%d", -- Silence Landing Gear Warning Horn Cut Off + -- Bomb Arm/Chemical + [69] = "%d", -- Left Bomb Arm/Chemical + [70] = "%d", -- Right Bomb Arm/Chemical + -- Release Mode + [68] = "%0.1f", -- Release Mode, Bombs and Rockets Safe/Bombs Train Release/Bombs Both Release/Rockets Arm + -- Engine Control Panel + [58] = "%d", -- Supercharger Switch Cover + [57] = "%0.1f", -- Supercharger AUTO/LOW/HIGH + [60] = "%d", -- High Blower Lamp Test + [61] = "%d", -- Fuel Booster On/Off + [62] = "%d", -- Oil Dilute Activate + [63] = "%d", -- Starter Activate + [64] = "%d", -- Starter Switch Cover + [65] = "%d", -- Primer Activate + -- Oxygen Regulator + [131] = "%d", -- Auto-Mix On-Off + [130] = "%0.4f", -- Oxygen Emergency By-pass + -- Fuel system + [85] = "%0.1f", -- Fuel Selector Valve, Select Right Combat Tank/Select Left Main Tank/Select Fuselage Tank/Select Right Main Tank/Select Left Combat Tank + [86] = "%d", -- Fuel Shut-Off Valve ON/OFF + -- AN/APS-13 + [114] = "%d", -- ail Warning Radar Power ON/OFF + [115] = "%d", -- Tail Warning Radar Test + [113] = "%.4f", -- Tail Warning Radar Light Control (rotary) + ------------- + [79] = "%d", -- Hydraulic Release Knob + [94] = "%.4f", -- Flaps Control Handle (rotary) + [84] = "%d", -- Parking Brake Handle + [81] = "%d", -- Safe Landing Gear Light Test + [83] = "%d", -- Unsafe Landing Gear Light Test + -- Detrola receiver + [137] = "%.4f", -- Detrola Frequency Selector (rotary) + [138] = "%.4f", -- Detrola Volume (rotary) + -- canopy + [147] = "%.4f", -- Canopy Hand Crank (rotary) + [149] = "%d", -- Canopy Emergency Release Handle + -- AN/ARA-8 + [152] = "%0.1f", -- Homing Adapter Mode TRANSMIT/COMM./HOMING + [153] = "%d", -- Homing Adapter Power On/Off + [154] = "%d", -- Homing Adapter's Circuit Breaker + -- SCR-695 + [139] = "%0.1f", -- IFF Code Selector Code 1/2/3/4/5/6 + [140] = "%d", -- IFF Power On/Off + [141] = "%d", -- IFF TIME/OFF/ON + [142] = "%d", -- IFF Detonator Circuit On/Off + [143] = "%d", -- IFF Distress Signal On/Off + [145] = "%d", -- IFF Detonator Left + [146] = "%d", -- IFF Detonator Right + -- Trimmers + [91] = "%.4f", -- Aileron Trim (rotary) + [92] = "%.4f", -- Elevator Trim (rotary) + [93] = "%.4f", -- Rudder Trim (rotary) + ------------- + [157] = "%.4f", -- Defroster (rotary) + [158] = "%.4f", -- Cold Air (rotary) + [159] = "%.4f", -- Hot Air (rotary) + ------------- + [89] = "%d", -- Landing Light On/Off + [168] = "%d", -- Coolant Control Cover + [87] = "%0.1f", -- Close Coolant Control/Automatic Coolant Control/Open Coolant Control + [169] = "%d", -- Oil Control Cover + [88] = "%0.1f", -- Close Oil Control/Automatic Oil Control/Open Oil Control + [134] = "%0.1f", -- Carburetor Cold Air Control (rotary) + [135] = "%0.1f", -- Carburetor Warm Air Control (rotary) + [47] = "%0.1f", -- Mixture Control Select IDLE CUT OFF/RUN/EMERGENCY FULL RICH + [43] = "%.4f", -- Throttle (rotary) + [46] = "%.4f", -- Propeller RPM (rotary) + [173] = "%d", -- Surface Control Lock Plunger. Left Button - Lock Stick in the Forward Position', Right Button - Lock Stick in the Neutral Position + [48] = "%.4f", -- Lock Throttle (rotary) + [49] = "%.4f", -- Lock Propeller & Mixture (rotary) + [176] = "%d", -- G-meter reset + [183] = "%d", -- Mirror + --Gunsight Selector + [41] = "%d", -- Sight On/Off + [39] = "%d", -- Fixed Reticle Mask Lever + [40] = "%0.1f", -- Sight Mode, Fixed Sight/Fixed-Gyro Sight/Gyro Sight + [42] = "%.1f", -- Gun Sight Brightness + [35] = "%.1f", -- Wing Span Selector + ------------- + [132] = "%.4f", -- Left Payload Salvo + [133] = "%.4f" -- Right Payload Salvo +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + every frame export to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + --===================================================================================== + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- diff --git a/ExportsModules/UH-1H.lua b/ExportsModules/UH-1H.lua new file mode 100644 index 0000000..a6644f7 --- /dev/null +++ b/ExportsModules/UH-1H.lua @@ -0,0 +1,907 @@ +-- Uh-1H + +ExportScript.FoundDCSModule = true +ExportScript.Version.UH1H = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + -- Controlls Pilot + --[184] = "%.4f", -- rudder + --[187] = "%.4f", -- stick_roll + --[186] = "%.4f", -- stick_pitch + --[200] = "%.4f", -- collective_position + -- Controlls CoPilot + --[185] = "%.4f", -- rudder_add + --[191] = "%.4f", -- stick_roll_sec + --[190] = "%.4f", -- stick_pitch_sec + --[207] = "%.4f", -- collective_position_operator + -- Gauges Pilot + [117] = "%0.4f", -- AIRSPEED_Nose {0.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 120.0, 150.0} {0.0, 0.075, 0.19, 0.32, 0.395, 0.44, 0.55, 0.825, 1.0} + [118] = "%0.4f", -- AIRSPEED_Roof {0.0, 20.0, 30.0, 40.0, 50.0, 60.0, 80.0, 120.0, 150.0} {0.0, 0.075, 0.19, 0.32, 0.395, 0.44, 0.55, 0.825, 1.0} + -- Course Indicator ID-1347 + [151] = "%.4f", -- VerticalBar {-1.0, 1.0} {-0.7, 0.7} + [152] = "%.4f", -- HorisontalBar {-1.0, 1.0} {-0.7, 0.7} + [153] = "%.4f", -- ToMarker + [154] = "%.4f", -- FromMarker + [156] = "%.4f", -- RotCourseCard + [157] = "%.1f", -- VerticalOFF + [158] = "%.1f", -- HorisontalOFF + -- ADF_ARN83 + [45] = "%0.2f", -- ADF_ARN83_Frequency {0.0, 1.0} {0.0, 0.55} + [40] = "%.4f", -- ARN83_SignalLevel + -- GMC + [159] = "%.4f", -- GMC_CoursePointer1 + [160] = "%.4f", -- GMC_CoursePointer2 + [162] = "%.4f", -- GMC_HeadingMarker + [165] = "%.4f", -- GMC_Heading + [166] = "%.4f", -- GMC_Annunciator {-1.0, 1.0} {0.0, 1.0} + [167] = "%.2f", -- GMC_PowerFail + -- Copilot RMI + [266] = "%.4f", -- RMI_CoursePointer1 + [267] = "%.4f", -- RMI_CoursePointer2 + [269] = "%.4f", -- RMI_Heading + -- Altimeter Indicator AAU-32/A (operator) + [168] = "%.4f", -- Pointer {0.0, 1000.0} {0.0, 1.0} + [169] = "%.4f", -- Alt1AAU_10000_footCount {0.0, 10.0} {0.0, 1.0} + [170] = "%.4f", -- Alt1AAU_1000_footCount {0.0, 10.0} {0.0, 1.0} + [171] = "%.4f", -- Alt1AAU_100_footCount {0.0, 10.0} {0.0, 1.0} + [174] = "%.2f", -- AAU_32_Drum_Counter {-2.0, 1.0} {0.0, 0.3} + [175] = "%.2f", -- AAU_32_Drum_Counter {0.0, 10.0} {0.0, 1.0} + [176] = "%.2f", -- AAU_32_Drum_Counter {0.0, 10.0} {0.0, 1.0} + [177] = "%.1f", -- CodeOff_flag + -- Altimeter Indicator AAU-7/A (pilot) (AAU-31/A) + [178] = "%.4f", -- Alt_10000_AAU_7A {0.0, 100000.0} {0.0, 1.0} + [179] = "%.4f", -- Alt_1000_AAU_7A {0.0, 10000.0} {0.0, 1.0} + [180] = "%.4f", -- Alt_100_AAU_7A {0.0, 1000.0} {0.0, 1.0} + [182] = "%.4f", -- Press_AAU_7A {28.1, 31.0} {0.0, 1.0} + -- Gauges + [113] = "%.4f", -- EngOilPress {-3.0, 0.0, 100.0} {0.0, 0.029, 1.0} + [114] = "%.4f", -- EngOilTemp {-70.0, -50.0, 0.0, 100.0, 150.0} {0.0, 0.13, 0.38, 0.71, 1.0} + [115] = "%.4f", -- TransmOilPress {-3.0, 0.0, 100.0} {0.0, 0.029, 1.0} + [116] = "%.4f", -- TransmOilTemp {-70.0, -50.0, 0.0, 100.0, 150.0} {0.0, 0.13, 0.38, 0.71, 1.0} + --[117] = "%.4f", -- AIRSPEED_Nose + --[118] = "%.4f", -- AIRSPEED_Roof + [121] = "%.4f", -- ExhaustTemp {0.0, 500.0, 600.0, 900.0, 1000.0} {0.0, 0.508, 0.604, 0.904, 1.0} + [122] = "%.4f", -- EngineTach {0.0, 7200.0} {0.0, 1.0} + [123] = "%.4f", -- RotorTach {0.0, 360.0} {0.0, 1.0} + [119] = "%.4f", -- GasProducerTach {0.0, 101.5} {0.0, 1.0} + [120] = "%.4f", -- GasProducerTach_U {0.0, 10.0} {0.0, 1.0} + [124] = "%.4f", -- TorquePress {-3.0, 0.0, 100.0} {0.0, 0.029, 1.0} + [149] = "%.4f", -- VoltageDC {0.0, 30.0} {0.0, 1.0} + [150] = "%.4f", -- VoltageAC {0.0, 150.0} {0.0, 1.0} + [436] = "%.4f", -- LoadmeterMainGen {-1.5, 0.0, 12.5} {0.0, 0.156, 1.0} + [125] = "%.4f", -- LoadmeterSTBYGen {-1.5, 0.0, 12.5} {0.0, 0.09, 1.0} + [126] = "%.4f", -- FuelPress {-2.0, 0.0, 50.0} {0.0, 0.015, 1.0} + [239] = "%.4f", -- FuelQuantity {0.0, 1580.0} {0.0, 1.0} + -- Mechanic clock + [127] = "%.4f", -- CLOCK_hours {0.0, 12.0} {0.0, 1.0} + [128] = "%.4f", -- CLOCK_minutes {0.0, 60.0} {0.0, 1.0} + [129] = "%.4f", -- CLOCK_seconds {0.0, 60.0} {0.0, 1.0} + -- + [132] = "%.4f", -- TurnPtr {-1.0, 1.0} + [133] = "%.4f", -- SideSlip {-1.0, 1.0} + [134] = "%.4f", -- VertVelocPilot {-4000.0, -3000.0, -1500.0, -1000.0, 1000.0, 1500.0, 3000.0, 4000.0} {-1.0, -0.81, -0.54, -0.36, 0.36, 0.54, 0.81, 1.0} + [251] = "%.4f", -- VertVelocCopilot {-4000.0, -3000.0, -1500.0, -1000.0, 1000.0, 1500.0, 3000.0, 4000.0} {-1.0, -0.81, -0.54, -0.36, 0.36, 0.54, 0.81, 1.0} + -- ADI - pilot + [142] = "%.4f", -- Attitude_Roll {1.0, -1.0} + [143] = "%.4f", -- Attitude_Pitch {1.0, -1.0} + [148] = "%.1f", -- Attitude_Off_flag + -- ADI - operator + [135] = "%.4f", -- Attitude_Roll_left {1.0, -1.0} + [136] = "%.4f", -- Attitude_Pitch_left {1.0, -1.0} + --[141] = "%.1f", -- Attitude_Off_flag_left {0.0, 1.0} {1.0, 0.0} + [138] = "%.4f", -- Attitude_PitchShift {0.0, 1.0} {-1.0, 1.0} + -- operator + --[149] = "%.4f", -- DCVoltmeter + --[150] = "%.4f", -- ACVoltmeter + -- UHF_ARC51 + [10] = "%.4f", -- UHF_ARC51_Freq1 {2.0, 3.0} {0.0, 1.0} + [11] = "%.4f", -- UHF_ARC51_Freq2 {0.0, 10.0} {0.0, 1.0} + [12] = "%.4f", -- UHF_ARC51_Freq3 {0.0, 10.0} {0.0, 1.0} + [13] = "%.4f", -- UHF_ARC51_Freq4 {0.0, 10.0} {0.0, 1.0} + [14] = "%.4f", -- UHF_ARC51_Freq5 {0.0, 10.0} {0.0, 1.0} + -- NAV_ARN82 + [46] = "%.4f", -- NAV_ARN82_Freq1 {0.0, 10.0} {0.0, 1.0} + [47] = "%.4f", -- NAV_ARN82_Freq2 {0.0, 10.0} {0.0, 1.0} + [48] = "%.4f", -- NAV_ARN82_Freq3 {0.0, 10.0} {0.0, 1.0} + [49] = "%.4f", -- NAV_ARN82_Freq4 {0.0, 10.0} {0.0, 1.0} + [50] = "%.4f", -- NAV_ARN82_Freq5 {0.0, 10.0} {0.0, 1.0} + -- VHF_ARC134 + [1] = "%.4f", -- VHF_ARC134_Freq1 {0.0, 10.0} {0.0, 1.0} + [2] = "%.4f", -- VHF_ARC134_Freq2 {0.0, 10.0} {0.0, 1.0} + [3] = "%.4f", -- VHF_ARC134_Freq3 {0.0, 10.0} {0.0, 1.0} + [4] = "%.4f", -- VHF_ARC134_Freq4 {0.0, 10.0} {0.0, 1.0} + -- + [56] = "%.1f", -- Marker_Beacon_Lamp {0.0, 1.0} {0.0, 0.9} + -- Panel_Shake + --[264] = "%.1f", -- Panel_Shake_Z + --[265] = "%.1f", -- Panel_Shake_Y + --[282] = "%.1f", -- Panel_Rot_X + -- Wiper + --[284] = "%.4f", -- Wiper_Pilot + --[283] = "%.4f", -- Wiper_Operator + -- Pilot Model + --[242] = "%.1f", -- Pilot_Model + --[245] = "%.1f", -- Operator_Model + -- Flexible sight station + --[263] = "%.2f", -- FlexSightHeight + --[261] = "%.4f", -- FlexSightAzimuth + --[262] = "%.4f", -- FlexSightElevation + -- Pilot sight station + --[438] = "%.4f", -- PilotSightHeight + --[442] = "%.2f", -- PilotSightGlass + -- Light + [279] = "%.4f", -- light_ConsoleLight + [410] = "%.4f", -- light_DomeLight + [411] = "%.4f", -- light_DomeLightGreen + -- Damage + --[248] = "%.1f", -- DeadPilot + --[249] = "%.1f", -- DeadCoPilot + --[414] = "%.4f", -- LeftWindShield + --[413] = "%.4f", -- RightWindShield + --[412] = "%.4f", -- DownBlisters + --[417] = "%.4f", -- UpRightBlister + --[418] = "%.4f", -- UpLeftBlister + --[415] = "%.4f", -- RightWindow + --[416] = "%.4f", -- LeftWindow + --[422] = "%.4f", -- RightDoor + --[420] = "%.4f", -- LeftDoor + -- + [437] = "%.3f", -- RamTemp + -- Radar Altimeter + [443] = "%.4f", -- RALT_Needle {0.0, 0.98} {0.0, 0.98} + [467] = "%.1f", -- RALT_Off_Flag + [447] = "%.f", -- RALT_LO_Lamp + [465] = "%.f", -- RALT_HI_Lamp + [444] = "%.4f", -- RALT_LO_Index {-0.02, -0.01, -0.0001,0.0, 0.744} {0.97, 0.99, 1.0, 0.0, 0.744} + [466] = "%.4f", -- RALT_HI_Index {0.0, 0.744} {0.0, 0.744} + [468] = "%0.1f", -- RALT_Digit_1 {0.0, 10.0} {0.0, 1.0} + [469] = "%0.1f", -- RALT_Digit_2 {0.0, 10.0} {0.0, 1.0} + [470] = "%0.1f", -- RALT_Digit_3 {0.0, 10.0} {0.0, 1.0} + [471] = "%0.1f", -- RALT_Digit_4 {0.0, 10.0} {0.0, 1.0} + -- FLARE CHAFF + [460] = "%.1f", -- FLARE_Digit_1 {0.0, 10.0} {0.0, 1.0} + [461] = "%.1f", -- FLARE_Digit_2 {0.0, 10.0} {0.0, 1.0} + [462] = "%.1f", -- CHAFF_Digit_1 {0.0, 10.0} {0.0, 1.0} + [463] = "%.1f", -- CHAFF_Digit_2 {0.0, 10.0} {0.0, 1.0} + -- XM130 Chaff Flare + [458] = "%.f", -- lamp_XM130_ARMED + -- SIGHTS_FOR_CIVIL + [473] = "%.1f", -- SIGHTS_FOR_CIVIL + -- Main Panel Lights + [277] = "%.f", -- lamp_MASTER + [276] = "%.f", -- lamp_LOW_RPM + [275] = "%.f", -- lamp_FIRE + -- Caution Panel Lights + [91] = "%.f", -- lamp_ENGINE_OIL_PRESS + [92] = "%.f", -- lamp_ENGINE_ICING + [93] = "%.f", -- lamp_ENGINE_ICE_JET + [94] = "%.f", -- lamp_ENGINE_CHIP_DET + [95] = "%.f", -- lamp_LEFT_FUEL_BOOST + [96] = "%.f", -- lamp_RIGHT_FUEL_BOOST + [97] = "%.f", -- lamp_ENG_FUEL_PUMP + [98] = "%.f", -- lamp_20_MINUTE + [99] = "%.f", -- lamp_FUEL_FILTER + [100] = "%.f", -- lamp_GOV_EMERG + [101] = "%.f", -- lamp_AUX_FUEL_LOW + [102] = "%.f", -- lamp_XMSN_OIL_PRESS + [103] = "%.f", -- lamp_XMSN_OIL_HOT + [104] = "%.f", -- lamp_HYD_PRESSURE + [105] = "%.f", -- lamp_ENGINE_INLET_AIR + [106] = "%.f", -- lamp_INST_INVERTER + [107] = "%.f", -- lamp_DC_GENERATOR + [108] = "%.f", -- lamp_EXTERNAL_POWER + [109] = "%.f", -- lamp_CHIP_DETECTOR + [110] = "%.f", -- lamp_IFF + -- M21 + [254] = "%.f", -- lamp_M21_ARMED + [255] = "%.f", -- lamp_M21_SAFE + -- + [76] = "%.f", -- lamp_IFF_REPLY + [77] = "%.f", -- lamp_IFF_TEST + -- Electic Gauges + [526] = "%.4f", -- DC_voltage {0.0, 30.0} {0.0, 1.0} + [532] = "%.2f", -- AC_voltage {0.0, 100.0, 150.0, 200.0, 250.0} {0.0, 0.14, 0.31, 0.56, 1.0} + [527] = "%.4f", -- DC_battery_I_current {0.0, 400.0} {0.0, 1.0} + [528] = "%.4f", -- DC_battery_II_current {0.0, 400.0} {0.0, 1.0} + [529] = "%.4f", -- DC_VU_I_current {0.0, 400.0} {0.0, 1.0} + [530] = "%.4f", -- DC_VU_II_current {0.0, 400.0} {0.0, 1.0} + [531] = "%.4f", -- DC_VU_III_current {0.0, 400.0} {0.0, 1.0} + [533] = "%.2f", -- AC_generator_I_current {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + [534] = "%.2f", -- AC_generator_II_current {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + [371] = "%.2f", -- AntiIce_ampermeter {0.0, 50, 70, 90, 120, 130, 140, 150} {0.0, 0.1, 0.2, 0.36, 0.63, 0.75, 0.86, 1.0} + -- Magnetic Compass + --[272] = "%.4f", -- Heading + [273] = "%.4f", -- Roll + [274] = "%.4f" -- Pitch +} +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + -- Electrosystem + [219] = "%1d", -- Battery + [220] = "%1d", -- Starter/Stdby GEN + [218] = "%.1f", -- DC Voltmeter Selector BAT, MAIN GEN, STBY GEN, ESS BUS, NON-ESS BUS {0.0,0.1,0.2,0.3,0.4} + [221] = "%1d", -- Non Essential bus + [214] = "%.1f", -- AC Voltmeter Selector AB, AC PHASE, BC {0.0,0.1,0.2} + [215] = "%1d", -- Inverter MAIN/OFF/SPARE {-1.0,0.0,1.0} + -- Electrosystem circuit breakers + -- Essential BUS. line 1 + [285] = "%1d", -- CB IFF APX 1 (N/F) + [287] = "%1d", -- CB IFF APX 2 (N/F) + [289] = "%1d", -- CB Prox. warn.(N/F) + [291] = "%1d", -- CB Marker beacon + [293] = "%1d", -- CB VHF Nav. (ARN-82) + [295] = "%1d", -- CB LF Nav. (ARN-83) + [297] = "%1d", -- CB Intercom CPLT(N/F) + [299] = "%1d", -- CB Intercom PLT + [349] = "%1d", -- CB ARC-102 HF Static INVTR(N/F) + [351] = "%1d", -- CB HF ANT COUPLR(N/F) + [353] = "%1d", -- CB HF ARC-102(N/F) + [355] = "%1d", -- CB FM Radio + [357] = "%1d", -- CB UHF Radio + [359] = "%1d", -- CB FM 2 Radio(N/F) + [361] = "%1d", -- CB VHF AM Radio + [321] = "%1d", -- CB Pitot tube(N/F) + [345] = "%1d", -- CB Rescue hoist CTL(N/F) + [347] = "%1d", -- CB Rescue hoist cable cutter (N/F) + -- Essential BUS. line 2 + [303] = "%1d", -- CB Wind wiper PLT + [301] = "%1d", -- CB Wind wiper CPLT + [305] = "%1d", -- CB KY-28 voice security(N/F) + [403] = "%1d", -- CB Starter Relay(N/F) + [307] = "%1d", -- CB Search light power(N/F) + [309] = "%1d", -- CB Landing light power(N/F) + [311] = "%1d", -- CB Landing & Search light control(N/F) + [313] = "%1d", -- CB Anticollision light(N/F) + [363] = "%1d", -- CB Fuselage lights(N/F) + [365] = "%1d", -- CB Navigation lights(N/F) + [367] = "%1d", -- CB Dome lights(N/F) + [369] = "%1d", -- CB Cockpit lights(N/F) + [371] = "%1d", -- CB Caution lights(N/F) + [373] = "%1d", -- CB Console lights(N/F) + [375] = "%1d", -- CB INST Panel lights(N/F) + [377] = "%1d", -- CB INST SEC lights(N/F) + [323] = "%1d", -- CB Cabin heater (Outlet valve)(N/F) + [325] = "%1d", -- CB Cabin heater (Air valve)(N/F) + [343] = "%1d", -- CB Rescue hoist PWR(N/F) + -- Essential BUS. line 3 + [327] = "%1d", -- CB RPM Warning system(N/F) + [329] = "%1d", -- CB Engine anti-ice(N/F) + [331] = "%1d", -- CB Fire detector(N/F) + [333] = "%1d", -- CB LH fuel boost pump(N/F) + [335] = "%1d", -- CB Turn & Slip indicator + [337] = "%1d", -- CB TEMP indicator(N/F) + [339] = "%1d", -- CB HYD Control(N/F) + [341] = "%1d", -- CB FORCE Trim(N/F) + [379] = "%1d", -- CB Cargo hook release(N/F) + [381] = "%1d", -- CB EXT Stores jettison(N/F) + [383] = "%1d", -- CB Spare inverter PWR(N/F) + [385] = "%1d", -- CB Inverter CTRL (N/F) + [387] = "%1d", -- CB Main inverter PWR(N/F) + [389] = "%1d", -- CB Generator & Bus Reset(N/F) + [391] = "%1d", -- CB STBY Generator Field(N/F) + [393] = "%1d", -- CB Governor Control(N/F) + [395] = "%1d", -- CB IDLE Stop release(N/F) + [397] = "%1d", -- CB RH fuel boost pump(N/F) + [399] = "%1d", -- CB Fuel TRANS(N/F) + [401] = "%1d", -- CB Fuel valves(N/F) + -- Non Essential BUS + [315] = "%1d", -- CB Heated blanket 1(N/F) + [317] = "%1d", -- CB Heated blanket 2(N/F) + [319] = "%1d", -- CB Voltmeter Non Ess Bus(N/F) + -- other circuit breakers + [405] = "%1d", -- CB Ignition system(N/F) + -- AC BUS circuit breakers + [423] = "%1d", -- CB Pilot ATTD1(N/F) + [424] = "%1d", -- CB Pilot ATTD2(N/F) + [425] = "%1d", -- CB Copilot ATTD1(N/F) + [426] = "%1d", -- CB Copilot ATTD2(N/F) + [427] = "%1d", -- CB Gyro Cmps(N/F) + [428] = "%1d", -- CB Fuel Quantity(N/F) + [429] = "%1d", -- CB 28V Trans(N/F) + [430] = "%1d", -- CB Fail Relay(N/F) + [431] = "%1d", -- CB Pressure Fuel(N/F) + [432] = "%1d", -- CB Pressure Torque(N/F) + [433] = "%1d", -- CB Pressure XMSN(N/F) + [434] = "%1d", -- CB Pressure Eng(N/F) + [435] = "%1d", -- CB Course Ind(N/F) + -- + [238] = "%1d", -- Pitot Heater + [216] = "%1d", -- Main generator (ON/OFF/RESET) {-1, 0, 1} + [217] = "%1d", -- Main generator switch cover + -- + [111] = "%1d", -- Reset/Test switch {-1, 0, 1} + [112] = "%1d", -- Bright/Dim switch {-1, 0, 1} + -- Fuel system + [81] = "%1d", -- Main Fuel + [240] = "%1d", -- Test Fuel Gauge + --Transponder APX-72 + [58] = "%.1f", -- Code ZERO/B/A/HOLD input{-1.0,0.0,1.0} output{0.0,0.1,0.2,0.3} + [59] = "%.1f", -- Master OFF/STBY/LOW/NOMR/EMER {0.0,0.1,0.2,0.3,0.4} + [60] = "%1d", -- Audio/light + + [61] = "%1d", -- Test M-1 {-1, 0, 1} + [62] = "%1d", -- Test M-2 {-1, 0, 1} + [63] = "%1d", -- Test M-3A {-1, 0, 1} + [64] = "%1d", -- Test M-C {-1, 0, 1} + -- + [65] = "%1d", -- RAD Test/Mon {-1, 0, 1} + [66] = "%1d", -- Ident/Mic {-1, 0, 1} + -- IFF + [67] = "%1d", -- IFF On/Out + + [68] = "%.2f", -- MODE1-WHEEL1 0/1/2/3 {0.0,0.33,0.66,0.99} + [69] = "%.2f", -- MODE1-WHEEL2 0/1/2/3/4/5/6/7 {0.0,0.11,0.22,0.33,0.44,0.55,0.66,0.77} + + [70] = "%.2f", -- MODE3A-WHEEL1 0/1/2/3/4/5/6/7 {0.0,0.11,0.22,0.33,0.44,0.55,0.66,0.77} + [71] = "%.2f", -- MODE3A-WHEEL2 0/1/2/3/4/5/6/7 {0.0,0.11,0.22,0.33,0.44,0.55,0.66,0.77} + [72] = "%.2f", -- MODE3A-WHEEL3 0/1/2/3/4/5/6/7 {0.0,0.11,0.22,0.33,0.44,0.55,0.66,0.77} + [73] = "%.2f", -- MODE3A-WHEEL4 0/1/2/3/4/5/6/7 {0.0,0.11,0.22,0.33,0.44,0.55,0.66,0.77} + + [74] = "%1d", -- Reply test, Button + [78] = "%.4f", -- Reply test, (Axis) {0.0,1.0} in 0.1 steps + + [75] = "%1d", -- Test test, Button + [79] = "%4f", -- Test test, (Axis) {0.0,1.0} in 0.1 steps + + [130] = "%1d", -- Winding/Adjustment Clock (Axis) {0.0,1.0} in 0.04 steps + [131] = "%1d", -- Winding/Adjustment Clock, Button + -- ENGINE INTERFACE + [250] = "%.4f", -- Throttle (Axis) {-1.0, 0.4} in -0.1 steps + [206] = "%1d", -- Throttle Stop + + [84] = "%1d", -- De-Ice On/Off + [80] = "%1d", -- Low RPM Warning + [86] = "%1d", -- Chip Detector {-1, 0, 1} + [85] = "%1d", -- Governor Emer/Auto + [90] = "%1d", -- Hydraulic Control + [89] = "%1d", -- Force Trim + [203] = "%1d", -- Governor {-1, 0, 1} + [278] = "%1d", -- Fire Test + -- ADI OPERATOR + -- Copilot's attutude indicator + [140] = "%1d", -- Cage Copilot's Attitude Indicator, Button + [146] = "%.4f", -- Attitude Indicator Pitch Trim Knob (Axis) {0.0,1.0} in 0.1 steps + -- ADI PILOT + [145] = "%.4f", -- Attitude Indicator Pitch Trim Knob (Axis) {0.0,1.0} in 0.1 steps + [144] = "%.4f", -- Attitude Indicator Roll Trim Knob (Axis) {0.0,1.0} in 0.1 steps + -- AAU32 + -- Copilot's altimeter + [172] = "%.4f", -- Pressure Adjustment (Axis) {0.0,1.0} in 0.2 steps + -- AAU7 + -- Pilot's altimeter + [181] = "%.4f", -- Pressure Adjustment (Axis) {0.0,1.0} in 0.2 steps + -- VHF ARC-134 + [6] = "%1d", -- Comm Test Button + [7] = "%.2f", -- Frequency MHz / Power. Right mouse click to cycle power. Rotate mouse wheel to change frequency value, Button {0.85, 1.0} + [5] = "%.1f", -- Frequency MHz / Power. Right mouse click to cycle power. Rotate mouse wheel to change frequency value (Axis) {0.0, 1.0} in 0.1 Steps + [8] = "%.2f", -- Frequency kHz / Volume. Rotate mouse wheel to change frequency value. Left or Right click to adjust volume (Axis) {0.0, 0.65} in 0.05 Steps + [9] = "%.1f", -- Frequency kHz / Volume. Rotate mouse wheel to change frequency value. Left or Right click to adjust volume (Axis) {0.0, 1.0} in 0.1 Steps + -- Intercom Control Panel + [29] = "%.4f", -- Intercom volume (Axis) {0.3,1.0} in 0.1 Steps + [23] = "%1d", -- VHF AM Radio Receiver + [24] = "%1d", -- UHF Radio Receiver + [25] = "%1d", -- VHF FM Radio Receiver + [26] = "%1d", -- Receiver 4 N/F + [27] = "%1d", -- INT Receiver + [28] = "%1d", -- Receiver NAV + [30] = "%.1f", -- Intercom Mode (PVT - hot line; INT - interphone; 1 - VHF FM transmitter; 2 - UHF transmitter; 3 - VHF AM transmitter; 4 - Not used) {0.0,0.1,0.2,0.3,0.4,0.5} + [194] = "%.1f", -- Radio/ICS + -- ARC 51BX UHF Raido + [16] = "%.2f", -- Preset Channel Selector 1/2/.../19/20 {0.0,0.05,...,0.90,0.95} + [18] = "%.4f", -- 10 MHz Selector (Axis) {0.0,1.0} in 0.1 Steps + [19] = "%.4f", -- 1 MHz Selector (Axis) {0.0,1.0} in 0.1 Steps + [20] = "%.4f", -- 50 kHz Selector (Axis) {0.0,1.0} in 0.1 Steps + + [15] = "%.1f", -- Frequency Mode Dial {0.0,0.1,0.2} + [17] = "%.1f", -- Function Dial {0.0,0.1,0.2,0.3} + [22] = "%1d", -- Squelch + [21] = "%.4f", -- Volume (Axis) {0.0,1.0} in 0.1 Steps + -- VHF ARC 131 + [31] = "%.1f", -- Frequency Tens MHz {0.3,0.4,0.5,0.6,0.7} + [32] = "%.1f", -- Frequency Ones MHz {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9} + [33] = "%.1f", -- Frequency Decimals MHz {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9} + [34] = "%.1f", -- Frequency Hundredths MHz {0.0,0.1} + [35] = "%.1f", -- Mode OFF/TR/RETRAN(N/F)/HOME(N/F) {0.0,0.1,0.2,0.3} + [36] = "%.1f", -- quelch Mode {0.0,0.1,0.2} + [37] = "%.4f", -- Volume (Axis) {0.0,1.0} in 0.1 Steps + -- ARN-82 + [52] = "%.2f", -- Frequency MHz / Power. Right mouse click to cycle power. Rotate mouse wheel to change frequency value, Button {0.8, 1.0} + [51] = "%.4f", -- Frequency MHz / Power. Right mouse click to cycle power. Rotate mouse wheel to change frequency value (Axis) {0.0,1.0} in 0.1 Steps + [53] = "%.4f", -- Frequency kHz / Volume. Rotate mouse wheel to change frequency value. Left or Right click to adjust volume (Axis) {0.0, 0.65} in 0.15 Steps + [54] = "%.4f", -- Frequency kHz / Volume. Rotate mouse wheel to change frequency value. Left or Right click to adjust volume (Axis) {0.0,1.0} in 0.1 Steps + -- Marker beakon + [57] = "%.4f", -- Marker beacon On/Off/Volume (Axis) {0.0,1.0} in 0.1 Steps + [55] = "%1d", -- Marker beacon sensing + -- AN/ARN-83 + [42] = "%.1f", -- ADF Loop Antenna speed Left/Nom/Right {0.1,0.2,0.3} + [41] = "%1d", -- BFO (N/F) + [43] = "%.1f", -- Gain control / Mode. Right mouse click to cycle mode. Rotate mouse wheel to adjust gain (Axis) OFF/ADF/ANT/LOOP {0.0,0.3} in 0.1 Steps + [44] = "%.4f", -- Gain control / Mode. Right mouse click to cycle mode. Rotate mouse wheel to adjust gain (Axis) {0.0,1.0} in 0.1 Steps + [38] = "%1d", -- Tune control / Band selection. Right mouse click to select a band. Rotate mouse wheel to adjust tune 190/400/800 {-1.0,0.0,1.0} + [39] = "%.4f", -- Tune control / Band selection. Right mouse click to select a band. Rotate mouse wheel to adjust tune (Axis) {0.0,1.0} in 0.1 Steps + -- Nav lights + [222] = "%.1f", -- Navigation lights, OFF/1/2/3/4/BRT {0.0,0.1,0.2,0.3,0.4,0.5} + [223] = "%1d", -- Position Lights, STEADY/OFF/FLASH {-1.0,0.0,1.0} + [224] = "%1d", -- Position Lights, DIM/BRIGHT + [225] = "%1d", -- Anti-Collision Lights, ON/OFF + [202] = "%1d", -- Landing Light + [201] = "%1d", -- Search Light + [205] = "%1d", -- Landing Light Ctrl + -- Light System + [230] = "%.4f", -- Overhead Console Panel Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [231] = "%.4f", -- Pedestal Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [232] = "%.4f", -- Secondary Instrument Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [233] = "%.4f", -- Engine Instrument Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [234] = "%.4f", -- Copilot Instrument Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [235] = "%.4f", -- Pilot Instrument Lights Brightness Rheostat (Axis) {0.0,1.0} in 0.2 Steps + [226] = "%1d", -- Dome Light Ctrl + -- HEATING SYSTEM + [236] = "%.1f", -- Bleed Air, OFF/1/2/3/4 {0.0,0.1,0.2,0.3,0.4} + -- GCI(ID-998/ASN) + [163] = "%.4f", -- Heading Set Knob (Axis) {0.0,1.0} in 0.1 Steps + [161] = "%.4f", -- Compass Synchronizing (Axis) {0.0,1.0} in 0.05 Steps + [164] = "%1d", -- ADF/VOR control + [241] = "%1d", -- DG/Slave gyro mode + -- COURSE IND + [155] = "%.4f", -- Course select knob (Axis) {0.0,1.0} in 0.1 Steps + -- weapon system + [252] = "%1d", -- Armed/Safe/Off {-1.0,0.0,1.0} + [253] = "%1d", -- Left/Right/All {-1.0,0.0,1.0} + [256] = "%1d", -- 7.62/2.75/40 {-1.0,0.0,1.0} + [257] = "%.1f", -- Rocket Pair {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7} + [258] = "%1d", -- Rocket Reset + [259] = "%1d", -- Jettison Cover + [260] = "%1d", -- Jettison + -- sighting station + [281] = "%.4f", -- Sighting Station Intensity (Axis) {0.0,1.0} in 0.1 Steps + [408] = "%1d", -- Sighting Station Lamp Switch BACKUP/OFF/MAIN {-1.0,0.0,1.0} + + --[0] = "%1d", -- Pilot Sight Armed/Safe ?? + [439] = "%1d", -- Pilot Sight On/Off + [440] = "%.4f", -- Pilot Sighting Station Intensity (Axis) {0.0,1.0} in 0.1 Steps + [441] = "%.4f", -- Sight Elevation (Axis) {-1.0,1.0} in 0.1 Steps + -- Windshield Wipers + [227] = "%1d", -- Pilot/Both/Operator {-1.0,0.0,1.0} + [229] = "%.1f", -- Wipers Speed PARK/OFF/LOW/MED/HIGH input{-1.0,0.0,1.0} output{0.0,0.1,0.2,0.3,0.4} + -- Stick + [189] = "%1d", -- Force Trim ON/OFF (Pilot) + [193] = "%1d", -- Force Trim ON/OFF (CoPilot) + -- Cargo Equipment + [195] = "%1d", -- Cargo Release Pilot + [198] = "%1d", -- Cargo Release CoPilot + [228] = "%1d", -- Cargo Safety + -- XM 130 Chaff Flare + [450] = "%1d", -- Ripple Fire Cover + [451] = "%1d", -- Ripple Fire + [456] = "%1d", -- SAFE/ARMED Switcher + [459] = "%1d", -- MAN/PGRM Mode + [464] = "%1d", -- Flare Dispense + [457] = "%1d", -- Armed lamp Test + [453] = "%1d", -- Flare counter Reset. Rotate mouse wheel to set Number, Button + [452] = "%.4f", -- Flare counter Reset. Rotate mouse wheel to set Number (Axis) {0.0,1.0} in 0.2 Steps + [455] = "%1d", -- Chaff counter Reset. Rotate mouse wheel to set Number, Button + [454] = "%.4f", -- Chaff counter Reset. Rotate mouse wheel to set Number (Axis) {0.0,1.0} in 0.2 Steps + -- Radar Altimeter + [449] = "%1d", -- Radar Altimeter Power + [445] = "%.4f", -- Turn On. Low Set. + [446] = "%1d", -- Test / Hight Set. Left mouse click to Test. Rotate mouse wheel to set Hight, Button + [464] = "%.4f", -- Test / Hight Set. Left mouse click to Test. Rotate mouse wheel to set Hight (Axis) {0.0,1.0} in 0.2 Steps + -- Doors + [419] = "%1d", -- Open Left Doors + [421] = "%1d" -- Open Right Doors +} + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + --[[ + export in low tick interval to Ikarus + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- Magnetic Compass + --[272] = "%.4f", -- Heading + ExportScript.Tools.SendData(272, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(272)))) -- negate +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + --[[ + every frame export to DAC + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + -- ADI Pilot + --[142] = "%.4f", -- Attitude_Roll {1.0, -1.0} + --ExportScript.Tools.SendData(142, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(142)))) -- negate + -- ADI - operator + --[135] = "%.4f", -- Attitude_Roll_left {1.0, -1.0} + --ExportScript.Tools.SendData(135, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(135)))) -- negate +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + --[[ + export in low tick interval to GlassCockpit + Example from A-10C + Get Radio Frequencies + get data from device + local lUHFRadio = GetDevice(54) + ExportScript.Tools.SendData("ExportID", "Format") + ExportScript.Tools.SendData(2000, string.format("%7.3f", lUHFRadio:get_frequency()/1000000)) -- <- special function for get frequency data + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Cockpit Light + ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {230, 231, 232, 233, 234, 235}) + -- Overhead Console Panel Lights Brightness Rheostat, Pedestal Lights Brightness Rheostat, Secondary Instrument Lights Brightness Rheostat, Engine Instrument Lights Brightness Rheostat, Copilot Instrument Lights Brightness Rheostat, Pilot Instrument Lights Brightness Rheostat, Axis + + -- ADI, disable needles and flags + ExportScript.Tools.SendData(2100, -1.0) -- Horizontal yellow needle + ExportScript.Tools.SendData(2101, -1.0) -- Vertical yellow needle + ExportScript.Tools.SendData(2102, -1.0) -- Left white needle + + -- ADI - operator + --[141] = "%.1f", -- Attitude_Off_flag_left {0.0, 1.0} {1.0, 0.0} + ExportScript.Tools.SendData(141, string.format("%.4f", ExportScript.Tools.negate(mainPanelDevice:get_argument_value(141)))) -- negate + + -- Radio + local lVHF_ARC_134 = GetDevice(20) + --ExportScript.Tools.SendData(2003, string.format("%7.3f", lVHF_ARC_134:get_frequency()/1000000)) + ExportScript.Tools.SendData(2003, ExportScript.Tools.RoundFreqeuncy(lVHF_ARC_134:get_frequency()/1000000)) + + local lUHF_ARC_51 = GetDevice(22) + --ExportScript.Tools.SendData(2000, string.format("%6.2f", lUHF_ARC_51:get_frequency()/1000000)) + ExportScript.Tools.SendData(2000, ExportScript.Tools.RoundFreqeuncy(lUHF_ARC_51:get_frequency()/1000000, "6.2", false, 0.050)) + + local lVHF_ARC_131 = GetDevice(23) + --ExportScript.Tools.SendData(2002, string.format("%5.2f", lVHF_ARC_131:get_frequency()/1000000)) + ExportScript.Tools.SendData(2002, ExportScript.Tools.RoundFreqeuncy(lVHF_ARC_131:get_frequency()/1000000, "5.2")) + + ExportScript.Tools.SendData(2005, string.format("%02d", ExportScript.Tools.round(mainPanelDevice:get_argument_value(460) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(461) * 10, 0))) -- FLARE_Digit_1 -- FLARE_Digit_2 + ExportScript.Tools.SendData(2006, string.format("%02d", ExportScript.Tools.round(mainPanelDevice:get_argument_value(462) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(463) * 10, 0))) -- CHAFF_Digit_1 -- CHAFF_Digit_2 + + --[[ + -- ARN_82 VHF Navigation Set NOT FUNCTIONAL + --local lARN_82 = GetDevice(26) + --ExportScript.Tools.WriteToLog('lARN_82: '..ExportScript.Tools.dump(lARN_82)) + --ExportScript.Tools.WriteToLog('lARN_82 (metatable): '..ExportScript.Tools.dump(getmetatable(lARN_82))) + --ExportScript.Tools.SendData(2004, string.format("%6.2f", lVHF_ARC_134:get_frequency()/1000000)) + ]] + --[[ + -- ADF_ARN83 + local lpos1, pos2, lpos3, pos4 + local lADF_ARN83 = "" + local lCockpitParams = list_cockpit_params() + if lCockpitParams ~= nil then + --ExportScript.Tools.WriteToLog('lCockpitParams: '..ExportScript.Tools.dump(lCockpitParams)) + lpos1, pos2 = lCockpitParams:find("ADF_FREQ:", 1) + if pos2 ~= nil then + lpos3, pos4 = lCockpitParams:find("%c", pos2) + if lpos3 ~= nil then + lADF_ARN83 = lCockpitParams:sub(pos2 + 1, lpos3 - 2) + else + lADF_ARN83 = lCockpitParams:sub(pos2 + 1) + end + --ExportScript.Tools.WriteToLog('lADF_ARN83: '..ExportScript.Tools.dump(lADF_ARN83)) + lADF_ARN83 = ExportScript.Tools.round(tonumber(lADF_ARN83) / 1000, 2) + end + end + ExportScript.Tools.SendData(2007, string.format("%s", lADF_ARN83)) + ]] +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + --[[ + every frame export to hardware + Example from A-10C + Get Radio Frequencies + get data from device + local UHF_RADIO = GetDevice(54) + ExportScript.Tools.SendDataDAC("ExportID", "Format") + ExportScript.Tools.SendDataDAC("ExportID", "Format", HardwareConfigID) + ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy((UHF_RADIO:get_frequency()/1000000))) -- ExportScript.Tools.RoundFreqeuncy(frequency (MHz|KHz), format ("7.3"), PrefixZeros (false), LeastValue (0.025)) + ]] + + -- Radio comunication + -- UHF_ARC_51 + local lUHF_ARC_51 = GetDevice(22) + --ExportScript.Tools.SendDataDAC("2000", string.format("%7.3f", lUHF_ARC_51:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2000", ExportScript.Tools.RoundFreqeuncy(lUHF_ARC_51:get_frequency()/1000000, "7.3", false, 0.050)) + + local lUHF_ARC_51_PRESET = {[0.00]="1",[0.05]="2",[0.10]="3",[0.15]="4",[0.20]="5",[0.25]="6",[0.30]="7",[0.35]="8",[0.40]="9",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20"} + ExportScript.Tools.SendDataDAC("2001", lUHF_ARC_51_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(16), 2)]) + + -- VHF_ARC_131 + local lVHF_ARC_131 = GetDevice(23) + --ExportScript.Tools.SendDataDAC("2002", string.format("%7.3f", lVHF_ARC_131:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2002", ExportScript.Tools.RoundFreqeuncy(lVHF_ARC_131:get_frequency()/1000000)) + + -- VHF_ARC_134 + local lVHF_ARC_134 = GetDevice(20) + --ExportScript.Tools.SendDataDAC("2003", string.format("%7.3f", lVHF_ARC_134:get_frequency()/1000000)) + ExportScript.Tools.SendDataDAC("2003", ExportScript.Tools.RoundFreqeuncy(lVHF_ARC_134:get_frequency()/1000000)) + + -- ARN_82 VHF Navigation Set NOT FUNCTIONAL + --local lARN_82 = GetDevice(26) + --ExportScript.Tools.WriteToLog('lARN_82: '..ExportScript.Tools.dump(lARN_82)) + --ExportScript.Tools.WriteToLog('lARN_82 (metatable): '..ExportScript.Tools.dump(getmetatable(lARN_82))) + --ExportScript.Tools.SendDataDAC("2004", string.format("%7.3f", lVHF_ARC_134:get_frequency()/1000000)) + + -- XM130 FLARE CHAFF + ExportScript.Tools.SendDataDAC("2005", string.format("%1d", ExportScript.Tools.round(mainPanelDevice:get_argument_value(460) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(461) * 10, 0))) -- FLARE_Digit_1 -- FLARE_Digit_2 + ExportScript.Tools.SendDataDAC("2006", string.format("%1d", ExportScript.Tools.round(mainPanelDevice:get_argument_value(462) * 10, 0)..ExportScript.Tools.round(mainPanelDevice:get_argument_value(463) * 10, 0))) -- CHAFF_Digit_1 -- CHAFF_Digit_2 + + -- ADF_ARN83 + local lpos1, pos2, lpos3, pos4 + local lADF_ARN83 = "" + local lCockpitParams = list_cockpit_params() + if lCockpitParams ~= nil then + lpos1, pos2 = lCockpitParams:find("ADF_FREQ:", 1) + if pos2 ~= nil then + lpos3, pos4 = lCockpitParams:find("%c", pos2) + if lpos3 ~= nil then + lADF_ARN83 = lCockpitParams:sub(pos2 + 1, lpos3 - 2) + else + lADF_ARN83 = lCockpitParams:sub(pos2 + 1) + end + lADF_ARN83 = ExportScript.Tools.round(tonumber(lADF_ARN83) / 1000, 2) + end + end + + ExportScript.Tools.SendDataDAC("2007", string.format("%s", lADF_ARN83)) + + -- Radar Altimeter - AN/APN-209 + -- [468] = "%0.1f", -- RALT_Digit_1 + -- {0.0, 1.0} 0.0=0, 0.1=1, 0.2=2,..., 0.9=9, 1.0=' ' + -- [469] = "%0.1f", -- RALT_Digit_2 + -- {0.0, 1.0} 0.0=0, 0.1=1, 0.2=2,..., 0.9=9, 1.0=' ' + -- [470] = "%0.1f", -- RALT_Digit_3 + -- {0.0, 1.0} 0.0=0, 0.1=1, 0.2=2,..., 0.9=9, 1.0=' ' + -- [471] = "%0.1f", -- RALT_Digit_4 + -- {0.0, 1.0} 0.0=0, 0.1=1, 0.2=2,..., 0.9=9, 1.0=' ' + local lAN_APN_209_PRESET = {[0.0]="0",[0.1]="1",[0.2]="2",[0.3]="3",[0.4]="4",[0.5]="5",[0.6]="6",[0.7]="7",[0.8]="8",[0.9]="9",[1.0]=" "} + local lAN_APN_209 = "" + lAN_APN_209 = lAN_APN_209_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(468), 2)] + lAN_APN_209 = lAN_APN_209 .. lAN_APN_209_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(469), 2)] + lAN_APN_209 = lAN_APN_209 .. lAN_APN_209_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(470), 2)] + lAN_APN_209 = lAN_APN_209 .. lAN_APN_209_PRESET[ExportScript.Tools.round(mainPanelDevice:get_argument_value(471), 2)] + ExportScript.Tools.SendDataDAC("2008", string.format("%s", lAN_APN_209)) + + --ExportScript.Tools.WriteToLog('VHF_ARC_134: '..string.format("%7.3f", lVHF_ARC_134:get_frequency()/1000000)) + --ExportScript.Tools.WriteToLog('VHF_ARC134_Freq1: '..mainPanelDevice:get_argument_value(1)) + --ExportScript.Tools.WriteToLog('VHF_ARC134_Freq2: '..mainPanelDevice:get_argument_value(2)) + --ExportScript.Tools.WriteToLog('VHF_ARC134_Freq3: '..mainPanelDevice:get_argument_value(3)) + --ExportScript.Tools.WriteToLog('VHF_ARC134_Freq4: '..mainPanelDevice:get_argument_value(4)) + + -- generic Radio display and frequency rotarys + ------------------------------------------------- + -- genericRadioConf + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 3 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "AN/ARC-131 VHF FM" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 23 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 100.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3008 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3006 -- volume button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active +-- ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua +-- ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} +-- ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 36 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3005 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.1 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua +-- ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset +-- ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active +-- ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua +-- ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[2] = {} -- secound radio + ExportScript.genericRadioConf[2]['Name'] = "AN/ARC-51BX UHF AM" -- name of radio + ExportScript.genericRadioConf[2]['DeviceID'] = 22 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[2]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[2]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[2]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[2]['FrequencyStep'] = 50 -- minimal step for frequency change + ExportScript.genericRadioConf[2]['minFrequency'] = 225.000 -- lowest frequency + ExportScript.genericRadioConf[2]['maxFrequency'] = 399.950 -- highest frequency + ExportScript.genericRadioConf[2]['Power'] = {} -- power button active + ExportScript.genericRadioConf[2]['Power']['ButtonID'] = 3006 -- power button id from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[2]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[2]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[2]['Volume']['ButtonID'] = 3008 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[2]['Preset']['ArgumentID'] = 16 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[2]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20"} + ExportScript.genericRadioConf[2]['Preset']['Step'] = 0.05 -- minimal step for preset change + ExportScript.genericRadioConf[2]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[2]['Squelch']['ArgumentID'] = 134 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ButtonID'] = 3007 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOn'] = 1.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[2]['Squelch']['ValueOff'] = 0.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[2]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[2]['Load']['ButtonID'] = 3006 -- load button id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[2]['ManualPreset']['ArgumentID'] = 135 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ButtonID'] = 3005 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValueManual'] = 0.1-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[2]['ManualPreset']['ValuePreset'] = 0.0-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadioConf[3] = {} -- secound radio + ExportScript.genericRadioConf[3]['Name'] = "AN/ARC-134 VHF AM" -- name of radio + ExportScript.genericRadioConf[3]['DeviceID'] = 20 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[3]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[3]['FrequencyMultiplicator'] = 1000000 -- Multiplicator from Hz to MHz + ExportScript.genericRadioConf[3]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[3]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[3]['minFrequency'] = 100.000 -- lowest frequency + ExportScript.genericRadioConf[3]['maxFrequency'] = 399.975 -- highest frequency + ExportScript.genericRadioConf[3]['Power'] = {} -- power button active + ExportScript.genericRadioConf[3]['Power']['ButtonID'] = 3001 -- power button id from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOn'] = 1.0 -- power on value from cklickable.lua + ExportScript.genericRadioConf[3]['Power']['ValueOff'] = 0.85 -- power off value from cklickable.lua + ExportScript.genericRadioConf[3]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[3]['Volume']['ButtonID'] = 3003 -- volume button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Preset'] = {} -- preset knob active +-- ExportScript.genericRadioConf[3]['Preset']['ArgumentID'] = 151 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua +-- ExportScript.genericRadioConf[3]['Preset']['List'] = {[0.0]="01",[0.01]="02",[0.02]="03",[0.03]="04",[0.04]="05",[0.05]="06",[0.06]="07",[0.07]="08",[0.08]="09",[0.09]="10",[0.10]="11",[0.11]="12",[0.12]="13",[0.13]="14",[0.14]="15",[0.15]="16",[0.16]="17",[0.17]="18",[0.18]="19",[0.19]="20",[0.20]="01"} +-- ExportScript.genericRadioConf[3]['Preset']['Step'] = 0.01 -- minimal step for preset change +-- ExportScript.genericRadioConf[3]['Preset']['Step2'] = -0.01 -- minimal step for preset change +-- ExportScript.genericRadioConf[3]['Squelch'] = {} -- squelch switch active +-- ExportScript.genericRadioConf[3]['Squelch']['ArgumentID'] = 148 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Squelch']['ButtonID'] = 3008 -- squelch button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua +-- ExportScript.genericRadioConf[3]['Squelch']['ValueOff'] = -1.0 -- squelch off value from cklickable.lua +-- ExportScript.genericRadioConf[3]['Load'] = {} -- load button preset +-- ExportScript.genericRadioConf[3]['Load']['ButtonID'] = 3004 -- load button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['ManualPreset'] = {} -- switch manual or preset active +-- ExportScript.genericRadioConf[3]['ManualPreset']['ArgumentID'] = 149 -- ManualPreset argument id from cklickable.lua +-- ExportScript.genericRadioConf[3]['ManualPreset']['ButtonID'] = 3004 -- ManualPreset button id from cklickable.lua +-- ExportScript.genericRadioConf[3]['ManualPreset']['ValueManual'] = 0.2-- ManualPreset Manual value from cklickable.lua +-- ExportScript.genericRadioConf[3]['ManualPreset']['ValuePreset'] = 0.3-- ManualPreset Preset value from cklickable.lua + + ExportScript.genericRadio(nil, nil) + + --[[ + -- ENGINE_INTERFACE + local lENGINE_INTERFACE = GetDevice(3) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_eng_rpm '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_eng_rpm())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_fire_lamp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_fire_lamp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_gas_prod_tach '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_gas_prod_tach())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_fire_test_lamp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_fire_test_lamp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_trans_oil_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_trans_oil_temp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_eng_torq '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_eng_torq())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_trans_oil_press '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_trans_oil_press())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_exhaust_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_exhaust_temp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_low_rpm_lamp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_low_rpm_lamp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_eng_oil_temp '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_eng_oil_temp())) + ExportScript.Tools.WriteToLog('lENGINE_INTERFACE:get_eng_oil_press '..ExportScript.Tools.dump(lENGINE_INTERFACE:get_eng_oil_press())) + + -- ADI_PILOT + local lADI_PILOT = GetDevice(6) + ExportScript.Tools.WriteToLog('lADI_PILOT:get_sideslip '..ExportScript.Tools.dump(lADI_PILOT:get_sideslip())) + ExportScript.Tools.WriteToLog('lADI_PILOT:get_bank '..ExportScript.Tools.dump(lADI_PILOT:get_bank())) + ExportScript.Tools.WriteToLog('lADI_PILOT:get_pitch '..ExportScript.Tools.dump(lADI_PILOT:get_pitch())) + + -- RADAR_ALTIMETER + local lRADAR_ALTIMETER = GetDevice(13) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_distance_limit '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_distance_limit())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_aperture_size '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_aperture_size())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_mode '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_mode())) + ExportScript.Tools.WriteToLog('lRADAR_ALTIMETER:get_altitude '..ExportScript.Tools.dump(lRADAR_ALTIMETER:get_altitude())) + ]] + --[[ + -- VHF_ARC_134 + local lVHF_ARC_134 = GetDevice(20) + ExportScript.Tools.WriteToLog('lVHF_ARC_134:is_on '..ExportScript.Tools.dump(lVHF_ARC_134:is_on())) + ExportScript.Tools.WriteToLog('lVHF_ARC_134:get_frequency '..ExportScript.Tools.dump(lVHF_ARC_134:get_frequency())) + --ExportScript.Tools.WriteToLog('lVHF_ARC_134:set_frequency '..ExportScript.Tools.dump(lVHF_ARC_134:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lVHF_ARC_134:set_modulation '..ExportScript.Tools.dump(lVHF_ARC_134:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lVHF_ARC_134:set_channel '..ExportScript.Tools.dump(lVHF_ARC_134:set_channel())) -- test parameters + + -- INTERCOM + local lINTERCOM = GetDevice(21) + ExportScript.Tools.WriteToLog('lINTERCOM:is_communicator_available '..ExportScript.Tools.dump(lINTERCOM:is_communicator_available())) + ExportScript.Tools.WriteToLog('lINTERCOM:get_noise_level '..ExportScript.Tools.dump(lINTERCOM:get_noise_level())) + ExportScript.Tools.WriteToLog('lINTERCOM:get_signal_level '..ExportScript.Tools.dump(lINTERCOM:get_signal_level())) + --ExportScript.Tools.WriteToLog('lINTERCOM:set_communicator '..ExportScript.Tools.dump(lINTERCOM:set_communicator())) -- test parameters + --ExportScript.Tools.WriteToLog('lINTERCOM:set_voip_mode '..ExportScript.Tools.dump(lINTERCOM:set_voip_mode())) -- test parameters + + -- UHF_ARC_51 + local lUHF_ARC_51 = GetDevice(22) + ExportScript.Tools.WriteToLog('lUHF_ARC_51:is_on '..ExportScript.Tools.dump(lUHF_ARC_51:is_on())) + ExportScript.Tools.WriteToLog('lUHF_ARC_51:get_frequency '..ExportScript.Tools.dump(lUHF_ARC_51:get_frequency())) + --ExportScript.Tools.WriteToLog('lUHF_ARC_51:set_frequency '..ExportScript.Tools.dump(lUHF_ARC_51:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lUHF_ARC_51:set_modulation '..ExportScript.Tools.dump(lUHF_ARC_51:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lUHF_ARC_51:set_channel '..ExportScript.Tools.dump(lUHF_ARC_51:set_channel())) -- test parameters + + -- VHF_ARC_131 + local lVHF_ARC_131 = GetDevice(23) + ExportScript.Tools.WriteToLog('lVHF_ARC_131:is_on '..ExportScript.Tools.dump(lVHF_ARC_131:is_on())) + ExportScript.Tools.WriteToLog('lVHF_ARC_131:get_frequency '..ExportScript.Tools.dump(lVHF_ARC_131:get_frequency())) + --ExportScript.Tools.WriteToLog('lVHF_ARC_131:set_frequency '..ExportScript.Tools.dump(lVHF_ARC_131:set_frequency())) -- test parameters + --ExportScript.Tools.WriteToLog('lVHF_ARC_131:set_modulation '..ExportScript.Tools.dump(lVHF_ARC_131:set_modulation())) -- test parameters + --ExportScript.Tools.WriteToLog('lVHF_ARC_131:set_channel '..ExportScript.Tools.dump(lVHF_ARC_131:set_channel())) -- test parameters + + ExportScript.Tools.WriteToLog('Frequency Mode Dial '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(15))) + ExportScript.Tools.WriteToLog('Function Dial '..ExportScript.Tools.dump(mainPanelDevice:get_argument_value(17))) + ]] + --[[ + ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7))) + + -- list_indication get tehe value of cockpit displays + local ltmp1 = 0 + for ltmp2 = 0, 20, 1 do + ltmp1 = list_indication(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + end + ]] +--[[ + -- getmetatable get function name from devices + local ltmp1 = 0 + for ltmp2 = 1, 70, 1 do + ltmp1 = GetDevice(ltmp2) + ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) + ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) + end +]] +end \ No newline at end of file diff --git a/ExportsModules/_F-14B_Demo.lua b/ExportsModules/_F-14B_Demo.lua new file mode 100644 index 0000000..bdc2ee6 --- /dev/null +++ b/ExportsModules/_F-14B_Demo.lua @@ -0,0 +1,39 @@ +-- F-14B Export +-- Feel free to use, modify and repost in any way you desire. + +ExportScript.FoundDCSModule = true +ExportScript.Version.F14B = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ +--[[ + every frames arguments + based of "mainpanel_init.lua" + Example (http://www.lua.org/manual/5.1/manual.html#pdf-string.format) + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] + + [1011] = "%1d", -- HUD LDG Mode + [1012] = "%1d", -- HUD CRUISE Mode + [1013] = "%1d", -- HUD A/A Mode + [1014] = "%1d", -- HUD A/G Mode + [1015] = "%1d", -- HUD Takeoff Mode +} + +ExportScript.ConfigArguments = +{ + +} + +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) +end +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) +end +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) +end +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) +end diff --git a/ExportsModules/_F-14B_nosaMtrevoC.lua b/ExportsModules/_F-14B_nosaMtrevoC.lua new file mode 100644 index 0000000..4b148fe --- /dev/null +++ b/ExportsModules/_F-14B_nosaMtrevoC.lua @@ -0,0 +1,1357 @@ +--[[ + ,d ,d + 88 88 +MM88MMM ,adPPYba, 88,dPYba,,adPYba, ,adPPYba, ,adPPYYba, MM88MMM + 88 a8" "8a 88P' "88" "8a a8" "" "" `Y8 88 + 88 8b d8 88 88 88 8b ,adPPPPP88 88 + 88, "8a, ,a8" 88 88 88 "8a, ,aa 88, ,88 88, + "Y888 `"YbbdP"' 88 88 88 `"Ybbd8"' `"8bbdP"Y8 "Y888 F-14B Tomcat Export Script DCS World +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ version: 0.11 █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Created by: nosaMtrevoC of ED Forums (dt1) + +If you find any errors/ommissions or have any questions in general and for updates, please see this thread on ED Forums: +https://forums.eagle.ru/showthread.php?p=4387597#post4387597 + +For use with DCS-ExportScripts plugin https://github.com/charlestytler/streamdeck-dcs-interface (Awesome work) +Special ID's for ctytler's Stream Deck plugin (requires ExportScripts) at https://github.com/charlestytler/streamdeck-dcs-interface (Also Awesome) + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ ŦЋÄnk ȲÅÅ« █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Thanks GunSlingerAUS & Phoenix FR of ED Forums for providing me with the F-14 Module to make this possible, it was a nice jester (sic). + +Testers (if you would like to help make this better, please see: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 for more info) + +[TESTER]____________________ [Description]_________________________________________________________________________________________________________ +Arbil Approach Indexer Lights, ACM Panel gauges and lights for full ACM +Chacal IX ACM Panel Testing + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Changelog █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Version 0.11 - Matched most of the missing ID's, fixed error in ACM Panel (Chacal IX) +Version 0.10 - Matched many more ID's (not tested) for panels: A6b/A6c/A7, Created All Graphic Icons for panel A6a ACM Panel, App. Indexer Icons + Custom Station Weap. Flags output for ACM, ACM Switch, Master Arm Switch, Gun Rate Code, code for SW Cool/MSL Prep/MODE stp switch + testing ACM Panel items on Stream deck and creating profiles, Triple Indicator code and icons, Master Caution Button/Light, + L & R Fire Lights, Slip/Ball Indicator Gauge, fill icons for stream deck, testing, A6a ACM Panel completed w/StmDeck Prof. & Icons +Version 0.09 - Created 298 conifg Arguments and documentation for all pilot panels Left: A1a/A1b/A2/A4/A5/A6a/A6b/A6c/A6d/A7/A8/A10/A11a/A11b/12 + Formatting, Matched most DCS ID's (not tested) for panels: A1a/A1b/A2/A6a +Version 0.08 - Formatting, Arresting Hook handle/emerg.Handle/Light, Gun Ammun. Counter knob, gun rounds counter +Version 0.07 - Create tape function for vertical tape displays, created engine RPM Tape and BG Icon, EIG Eng. Temp on A3, EIG Fuel Flow on A3 +Version 0.06 - 2 Hydraulic Press. Gauges on A3 (51023 & 51063), added Engine Nozzle Tape A3, engine oil press. gauge +Version 0.05 - Formatting, Added Bingo Knob, Accelerometer Reset, Clock Wind, Clock Start/Stop/Reset, fixed error in Timer, A9 Panel Complete +Version 0.04 - More formatting, added Aft&L/Fwd&R fuselage fuel info, added Accelerometer gauge, added clock and timer gauge, Added Cockpit Refs. +Version 0.03 - Organization of Cockpit and RIO areas in this file for organizational purposes (ease of use) +Version 0.02 - Added formatted fuel output for location A9 +Version 0.01 - Initial Layout and formatting of .lua file along with organization outside this file of all functions ID's calls etc.. + +[Currently working on]_____________________________________________________________________________________________________________________________ +Pilot Cockpit config arguments + +[To-Do] +Fuel Warning indicators (example low fuel / Bingo fuel) for multi-gauge and fuel gauges +Background images for EIG TIT and FF tapes +Problem with Title string not showing in ExportScript.dualTapeString() +Installation instructions + VS Code + copy .lua to proper directory + load and test script (with special id for testing) + how-to display a stream deck gauge (custom id) background image in folder and font size + how to setup a button or switch for a panel + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Formatted for Stream Deck █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +Extra ID's created for nice formatted output on Stream Deck See ID Guide Below: + +[ID]______ [Ref]__ [Description]__________________________ [Status]_______ [Output e.g.]___________________________________________________________ + +51057 A3 EIG - Engine RPM L & R tape working NOTE: need "F-14B_A3_RPM.png" included as background (shows vert. tape) +51059 A3 EIG - Engine Exhaust Temperature working NOTE: need "F-14B_A3_TIT.png" included as background (shows vert. tape) +51061 A3 EIG - Fuel flow tape working NOTE: need "F-14B_A3_FF.png" included as background (shows vert. tape) +51023 A3 Hydraulic Pressure Gauge and Flags 1 working +51063 A3 Hydraulic Pressure Gauge and Flags 2 working +51065 A3 Engine Oil Pressure Gauges working L 42 psi | Eng. Oil | R 42 psi +51068 A3 Engine Nozzle position gauge (tape) working (shows a graphical vertical tape) +--------------------------------------------------------------------------------------------------------------------------------------------------- + A4 Radar Altimiter w/Bug & Flag & inHg â–ˆ In Development â–ˆ + A4 Servopneumatic Altimiter â–ˆ TODO â–ˆ +--------------------------------------------------------------------------------------------------------------------------------------------------- +51047 A6a Master Arm 3 way switch working outputs a graphical 3 way switch to be used with included icons (font9) +56501 A6a Slip/Ball Indicator working outputs slip and ball gauge +59201 A6a ACM seam/coll./hot trig light working outputs masks to show/hide triple warning light in one button +59204 A6a Gun Rate HIGH|LOW Light working outputs 1 or 0 to monitor HIGH|LOW Gun Rate light (usually two IDs) +59206 A6a SW Cool Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) +59208 A6a MSL Prep Light ON|OFF working outputs 1 or 0 to monitor light (usually two IDs) +59210 A6a MSL Mode Light NORM|BRSIT working outputs 1 or 0 to monitor light (usually two IDs) +59221 A6a Station Status Flag 1A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59222 A6a Station Status Flag 1B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59223 A6a Station Status Flag 3 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59224 A6a Station Status Flag 4 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59225 A6a Station Status Flag 5 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59226 A6a Station Status Flag 6 working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59227 A6a Station Status Flag 8B working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +59228 A6a Station Status Flag 8A working BLACK|WHITE|CHECKBOARD status flag (set font size to 6 on Str.Deck) +--------------------------------------------------------------------------------------------------------------------------------------------------- +50110 A9 Accelerometer Gauge +/- G & current G working 5 G | 1 G | -2G +51096 A9 Clock and Timer Gauge working Clock | 10 15 | Timer | 4 23 21 +51054 A9 Aft & L-left feed & aft fuselage Thanks working AFT & L | 6500 | LBS +51055 A9 Fwd & R-right feed & fwd fuselage tanks working FWD & R | 6500 | LBS +56000 A9 Left Fuel Gauge in lbs working 4000 lbs +56004 A9 Right Fuel Gauge in lbs working 4000 lbs +56010 A9 Total Fuel Gauge in lbs working 15200 lbs +56020 A9 Bingo Fuel Guage in lbs working 04000 lbs +56024 A9 Multi Fuel Guage Custom working Shows all relevant fuel output totals in a single stream deck button +--------------------------------------------------------------------------------------------------------------------------------------------------- +54060 A10 Gun Rounds Ammunition Counter working ROUNDS | 670 +--------------------------------------------------------------------------------------------------------------------------------------------------- +52117 B7 RIO Total Fuel Gauge in lbs working 15000 lbs + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Stream Deck References █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +The following references (with a picture) can be found (as of June 15, 2020) in Chapter 2 (Cockpit Overview) first 2 pages (pg10 and pg11) of +the F-14B manual. This manual is located in the C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\F14\Docs Directory as a .pdf +Can also be found in the official thread for this script at: https://forums.eagle.ru/showthread.php?p=4387597#post4387597 + +Anywhere the following Descriptors can be found, they refer to this table in that portion of the manual +e.g. [A9] Pilot-Right Knee Panel describes A as Pilot Cockpit (instead of B RIO Cockpit) and 9 in the table on pg 10 (also below) which is the Right +Knee Panel where the fuel and accelerometer and clock are. + + ________________________________________________________________________________________________________ + | | + | [Ref]_ [Position]_ [Description]__________________| [Ref]_ [Position]_ [Description]___________________| + | | | + | A1 Pilot Left Side Console | B1 RIO Left Side Console | + | A2 Pilot Left Vertical Console | B2 RIO Left Vertical Console | + | A3 Pilot Left Knee Panel | B3 RIO Left Instrument Panel | + | A4 Pilot Left Instrument Panel | B4 RIO Center Panel | + | A5 Pilot Left Windshield Frame | B5 RIO Center Console | + | A6 Pilot Center Panel | B6 RIO Left and Right Footwells | + | A7 Pilot Right Windshield Frame | B7 RIO Right Instrument Panel | + | A8 Pilot Right Instrument Panel | B8 RIO Right Knee Panel | + | A9 Pilot Right Knee Panel | B9 RIO Right Vertical Console | + | A10 Pilot Right Vertical Console | B10 RIO Right Side Console | + | A11 Pilot Right Side Console | B11 RIO Canopy Control Handle | + | A12 Pilot Canopy Control Handle | | + |___________________________________________________|____________________________________________________| + + +Description Guide:__________________________________________________________________________________________________________________________________ +[BUTTON ID: 3043 / DEVICE ID: 26] - Clock Timer Start/Stop/Reset Button - {28.1, 31.0}{0.0, 1.0} +Button ID: Used in Stream Deck "Button ID:" +Device ID: Used in Stream Deck "Device ID" Note: this is not DCS ID +- Description of button - +{min gauge value, max gauge value}{stored/variable min value, stored/variable max value} + + +]] +ExportScript.FoundDCSModule = true +ExportScript.Version.F14 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + --[[ + [DeviceID] = "Format" + [4] = "%.4f", <- floating-point number with 4 digits after point + [19] = "%0.1f", <- floating-point number with 1 digit after point + [129] = "%1d", <- decimal number + [5] = "%.f", <- floating point number rounded to a decimal number + ]] +-- PILOT COCKPIT ------------------------------------------------------------------------------ + + -- [NEEDS TESTING] ------------------------------------------------------------------------ + + + -- [END NEEDS TESTING] -------------------------------------------------------------------- + + + -- [In Development / Testing] ------------------------------------------------------------- + +-- A1a + -- Volume/TACAN Command Panel + [2040] = "%.4f", -- ALR-67 Knob controls audio volume to pilot + [2039] = "%.4f", -- SW knob volume of sidewinder audio tone to pilot + [2038] = "%.4f", -- V/UHF 2 knob audio from AN/ARC-182 to pilot + [0] = "%.4f", -- TACAN CMD switch sets crew member in command of Tacan + + -- ICS Control Panel + [2048] = "%.4f", -- VOL knob from RIO to pilot + [2045] = "%.4f", -- AMP selection knob (B/U|NORM|EMER) + [2044] = "%.4f", -- ICS switch (RADIO OVERRIDE|HOT MIC|COLD MIC) + + -- AFCS Control Panel + [2106] = "%.4f", -- PITCH switch enables stability augmentation + [2107] = "%.4f", -- ROLL switch enables stability augmentation + [2108] = "%.4f", -- YAW switch enables stability augmentation + [2109] = "%.4f", -- VEC/PCD/ACL switch (VEC/PCD|OFF|ACL) + [2110] = "%.4f", -- ALT switch (ON|OFF) + [2111] = "%.4f", -- HDG switch (HDG|OFF|GT) + [2112] = "%.4f", -- ENGAGE switch (ENGAGE|OFF) + + -- ASYM Limiter/Engine Mode Select + [16006] = "%.4f", -- ASYM LIMITER switch (ON|OFF) + [16005] = "%.4f", -- ASYM LIMITER cover + [16007] = "%.4f", -- L ENG MODE SELECT (PRI|SEC) + [16008] = "%.4f", -- R ENG MODE SELECT (PRI|SEC) + + [0] = "%.4f", -- Target Designate swith to designate ground targ. on HUD (up/down/forward designate) + + -- Inlet Ramps/Throttle Control Panel + [2104] = "%.4f", -- THROTTLE MODE (AUTO|BOOST|MAN) + [2103] = "%.4f", -- THROTTLE TEMP (HOT|NORM|COLD) + [2100] = "%.4f", -- L INLET RAMP (STOW|AUTO) + [2101] = "%.4f", -- R INLET RAMP (STOW|AUTO) + [2102] = "%.4f", -- ENG CRANK (L|R) + [0] = "%.4f", -- BACK UP IGNITION (ON|NORM) + [0] = "%.4f", -- RUDDER TRIM (L|R) + + + + +-- A1b + -- Oxygen Vent Airflow Control Panel + [0] = "%.4f", -- VENT AIRFLOW dial + [8114] = "%.4f", -- OXYGEN switch (ON|OFF) + + -- TACAN Control Panel + [8888] = "%.4f", -- Dual rotary switch Outer Dial + [8889] = "%.4f", -- Dual rotary switch Inner Dial + [0] = "%.4f", -- TACAN channel 3 digit + [8050] = "%.4f", -- Status Go + [8051] = "%.4f", -- Status NO-GO + [2115] = "%.4f", -- BIT button initiating TACAN BIT + [2043] = "%.4f", -- NORMAL MODE switche (X|Y) + [2036] = "%.4f", -- VOL knob for TACAN audio to pilot + [2041] = "%.4f", -- MODE konb (OFF|REC|T/R|A/A|BCN) + [2042] = "%.4f", -- MODE (NORMAL|INVERSE) + + -- UHF 1 (AN/ARC-159) Radio + [2031] = "%.4f", -- VOL knob controls radio to pilot vol. + [2035] = "%.4f", -- SQL switch squelch (ON|OFF) + [2030] = "%.4f", -- Freq. Select Switch 1 + [2029] = "%.4f", -- Freq. Select Switch 2 + [2028] = "%.4f", -- Freq. Select Switch 3 + [2026] = "%.4f", -- Freq. Select Switch 4 + [0] = "%.4f", -- FREQ/(CHAN) display ??? (maybe the switch values above???) + [8115] = "%.4f", -- READ button + [2027] = "%.4f", -- BRT knob display brightness + [16009] = "%.4f", -- LOAD button + [2034] = "%.4f", -- Function selector knob (ADF|BOTH|MAIN|OFF) + [2032] = "%.4f", -- CHAN SEL knob selects preset channels + [2033] = "%.4f", -- Mode selector knob (GUARD|MANUAL|PRESET) + [16010] = "%.4f", -- TONE button transmits tone on freq. + + -- Throttle Buttons + [0] = "%.4f", -- Speed Brake switch (EXT|RET) + [0] = "%.4f", -- Wing Sweep switch (AUTO|FWD|AFT|BOMB) + [0] = "%.4f", -- PLM button lockon + [0] = "%.4f", -- CAGE/SEAM button lockon + [0] = "%.4f", -- Exterior Light switch (ON|OFF) + [0] = "%.4f", -- ICS PIT switch (ICS|BOTH|UHF1|UHF2) + + + + +-- A2 + -- Fuel Management Panel + [1076] = "%.4f", -- QTY SEL Switch (FEED|WING|EXT) + [1095] = "%.4f", -- Select Fuel Feed to engines (FWD|NORM|AFT) + [1094] = "%.4f", -- Fuel feed cover + [1001] = "%.4f", -- WING/EXT Transfer (ORIDE|AUTO|OFF) + [15002] = "%.4f", -- Refueling Probe Indicator Light + [1074] = "%.4f", -- Fuel Dump Switch (OFF|DUMP) + [1073] = "%.4f", -- Refuel Probe Switch (ALL EXTD|FUS EXTD|RET) + [1072] = "%.4f", -- Anti skid spoiler bk switch (BOTH|OFF|SPOILER BK) + [1071] = "%.4f", -- MASTER RESET button resets CADC failure + + -- Control surface position indicator + [0] = "%.4f", -- L SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing 8315-8322 + [0] = "%.4f", -- C SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing + [0] = "%.4f", -- R SPOILER DN-Down/flush | Up-Arrow-Above wing | Down-Arrow-Below Wing + [1092] = "%.4f", -- RUDDER position indicators Left + [1093] = "%.4f", -- RUDDER position indicators Right + [1090] = "%.4f", -- HORIZ. STAB. Position indicator Left + [1091] = "%.4f", -- HORIZ. STAB. Position indicator Right + + -- Landing Gear Control Panel + [326] = "%.4f", -- Landing Gear Handle (UP|DOWN) + [16015] = "%.4f", -- Landing Gear Emer. Extension + [631] = "%.4f", -- HYD ISOL (FLT|T.O.LDG) + [999] = "%.4f", -- Transition Light + [0] = "%.4f", -- EMERG STORES button (illuminates when pressed) + [0] = "%.4f", -- EMERG STORES light ??? + [1075] = "%.4f", -- NOSE STRUT switch (EXTD|OFF|KNEEL) + [237] = "%.4f", -- Brake Pull Handle + [2049] = "%.4f", -- EJECT CMD Indicator (PILOT|MCO) + + -- Wheels-Flaps Pisition Indicator + [8302] = "%.4f", -- Left Landing Gear Indicator + [8305] = "%.4f", -- Right Landing Gear Indicator + [8301] = "%.4f", -- Nose Landing Gear Indicator + [0] = "%.4f", -- SPD BK Indicator + [8310] = "%.4f", -- Slats Indicator + [8311] = "%.4f", -- Flaps Indicator + + + + + +-- A4 + -- Radar Altimiter + [103] = "%.4f", -- Radar Altimeter needle + [308] = "%.4f", -- Radar Altimeter Control Knob + [2123] = "%.4f", -- Radar Altimeter Bug + [2124] = "%.4f", -- Radar Altimeter OFF Flag + [4154] = "%.4f", -- Radar Altimeter Bug + [16020] = "%.4f", -- Radar Altimeter Knob Push + [19108] = "%.4f", -- Radar Altimeter Test Light + + -- Servopneumatic Altimeter + [0] = "%.4f", -- Altimeter readout 112/262/300-304 + [104] = "%.4f", -- Altimeter Baro readout + [306] = "%.4f", -- Baroset knob sets local press. in in.Hg + [0] = "%.4f", -- Local barometric pressure (Kollsman Window) + [307] = "%.4f", -- Mode switch + + -- Airspeed Mach Indicator + [0] = "%.4f", -- Airspeed dial ??? + [0] = "%.4f", -- Indicated airspeed scale (outer) ??? + [0] = "%.4f", -- Indicated airspeed scale (inner) ??? + [0] = "%.4f", -- Mach number scale ??? + [0] = "%.4f", -- Indicated airspeed index pointer ??? + [0] = "%.4f", -- Mach Number index pointer ??? + [0] = "%.4f", -- Safe Mach number index pointer ??? + [0] = "%.4f", -- Index knob pushed in ??? + [0] = "%.4f", -- Index knob pulled out ??? + + [0] = "%.4f", -- Vertical Velocity Indicator + [0] = "%.4f", -- Left Engine Fuel Shutoff Handle + [0] = "%.4f", -- Angle of Attack Indicator + + + + + +-- A5 + [9356] = "%.4f", -- LEFT Eng. Stall Indicator + + [9350] = "%.4f", -- WHEELS warning + [9351] = "%.4f", -- BRAKES warning - antiskid or brake fail / parking break + [9352] = "%.4f", -- ACLS/AP - ACLS or AP disengaged + [9353] = "%.4f", -- NWS ENGA - nosewheel steering engaged + [9354] = "%.4f", -- AUTO THROT - disengagement of auto throttle + + + + + + +-- 6b + -- Vertical Display Indicator (VDI) + [1037] = "%.4f", -- HUD Brightness Control + [1036] = "%.4f", -- VDI Brightness Control + [1038] = "%.4f", -- VDI Contrast Control + [1033] = "%.4f", -- FILTER Handle when pulled inserts filter for night ops + [1034] = "%.4f", -- HUD Trim control for pitch lines + [1035] = "%.4f", -- VDI Trim adjustment of pitch lines on VDI + + -- VDI Caution Lights (also check 2222 id range if below not working) + [9360] = "%.4f", -- ADJ A/C Advisory light indicating other aircraft close to own traffic pattern. + [9361] = "%.4f", -- LANDING CHK Advisory light indicating carrier has a channel + [9362] = "%.4f", -- ACL READY indicating CATCC has aquired aircraft + [9363] = "%.4f", -- A/P CPLR indicating CATCC is ready to control aircraft. + [9364] = "%.4f", -- CMD CONTROL aircraft is under data link control for landing. + [9365] = "%.4f", -- 10 SECONDS waypoint and carrier motion info + [9366] = "%.4f", -- TILT no data link command received for the last 2 sec + [9367] = "%.4f", -- VOICE - CATCC not ready for ACL + [9368] = "%.4f", -- AUTO Throttle + [9369] = "%.4f", -- A/P REF autopilot selected but not engaged. + [15070] = "%.4f", -- WAVEOFF Warning light indicating waveoff commanded. 2222/15070 + [15071] = "%.4f", -- WING SWEEP failure in both wing-sweep channels + [15072] = "%.4f", -- REDUCE SPEED flap retraction failure + [15073] = "%.4f", -- ALT LOW Non functional, light on radar altimeter is used instead + + + + +-- 6c + -- Horizontal Situation Display Indicator (HSD) + [1043] = "%.4f", -- BRT controls HSD Brightness + [1039] = "%.4f", -- HDG controls heading reference bug in TACAN mode + [1040] = "%.4f", -- CRS controls cour in MAN and TACAN mode + [1041] = "%.4f", -- TEST allows reset of HSD + + [0] = "%.4f", -- BIT indicator failure in HSD (shows flags ???) + [0] = "%.4f", -- Bit Indicator knob ??? + + + + +-- 6d + -- Center Panel at bottom + [0] = "%.4f", -- Cabin Pressure Altimeter in 1,000 foot increments (0-50,000') 935|2210 + [0] = "%.4f", -- Emerg. Brake Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 999|9260 + [0] = "%.4f", -- Emerg. Aux Press. Indicator Park (2150-3000 psi green / red is 1900-2150 psi) 9261 + + + + +-- A7 + [9355] = "%.4f", -- Right Eng. STALL + + -- ECM Warning Lights + [9357] = "%.4f", -- SAM - steady when lock from SAM / Flashes when missle launch + [9358] = "%.4f", -- AAA - steady when lock from AAA / Flashes on missle launch + [9359] = "%.4f", -- AI - steady when lock from airborne radar + + [15097] = "%.4f", -- Standby Compass + + + + +-- A8 + [0] = "%.4f", -- Wing Sweep Indicator 404|405|507|508|2001|2002 flags: 15091-15095 + [0] = "%.4f", -- Right Engine Fuel Shutoff Handle + [0] = "%.4f", -- Standby Attitude Indicator ?? + + -- UHF/VHF Remote Indicators + [0] = "%.4f", -- UHF 1 frequency display + [0] = "%.4f", -- UHF 1 TEST button displays 888.888 if good + [0] = "%.4f", -- UHF 1 DIM controls display brightness + [0] = "%.4f", -- V/UHF 2 frequency display + [0] = "%.4f", -- V/UHF 2 TEST button displays 888.888 if good + [0] = "%.4f", -- V/UHF 2 BRT controls display brightness + + -- Bearing Distance Heading Indicator BDHI + [0] = "%.4f", -- No. 2 Bearing Pointer magnetic course to TACAN station + [0] = "%.4f", -- Compass Rose magnetic heading + [0] = "%.4f", -- No. 1 bearing pointer magnetic course to UHF/ADF station + [0] = "%.4f", -- Distance Counter in nautical miles + + -- ALR-67 Indicator + [0] = "%.4f", -- INT knob intensity brightness + + [224] = "%.4f", -- Canopy Jettison Handle + + + + + +-- A10 + -- Displays Control Panel + -- Steering Commands Selectors + [1002] = "%.4f", -- TACAN - Selects TACAN as steering command source + [1003] = "%.4f", -- DEST - Selects RIO set waypoint as steering command source + [1004] = "%.4f", -- AWL/PCD - All weather landing/prec. course direction + [1005] = "%.4f", -- VEC - Vector, selects data link deviation steering as source + [1006] = "%.4f", -- MAN - Manual, selects manually selected course and heading + + -- Mode Selectors + [1015] = "%.4f", -- T.O. Takeoff mode + [1014] = "%.4f", -- CRUISE mode + [1013] = "%.4f", -- A/A Air-to-Air mode + [1012] = "%.4f", -- A/G Air-to-Ground mode + [1011] = "%.4f", -- LDG Landing Mode + + -- HUD + [1021] = "%.4f", -- DeClutter Mode for HUD (ON|OFF) + [1020] = "%.4f", -- Which AWL to display on HUD Switch (ILS|ACL) + + -- VDI + [1019] = "%.4f", -- TV Displays video from TCS or LANTIRN or NORM (TV|NORM) + [1018] = "%.4f", -- Which AWL to display on VDI (ILS|ACL) + + -- HSD + [1016] = "%.4f", -- HSD Mode (NAV|TID) nav display or TID repeats RIO TID Info + [1017] = "%.4f", -- ECM (ORIDE|OFF) [NOT USED/MODELED] + + -- Power Switches + [1010] = "%.4f", -- VDI (ON|OFF) + [1009] = "%.4f", -- HUD (ON|OFF) + [1008] = "%.4f", -- HSD/ECMD (ON|OFF) + + -- Pitch LAD BRT Knob + [1007] = "%.4f", -- Controls brightness of pitch ladder on HUD + -- END Displays Control Panel + + -- gun elevation lead in mils + [2270] = "%.4f", -- Hundreds Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2271] = "%.4f", -- Tens Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2272] = "%.4f", -- Ones Counter in mils for the manual A/A and A/G gun modes. Limits are -263 and +87 mils + [2273] = "%.4f", -- Knob adjust counter + + + + +-- 11a + -- Spoiler Failure Override + [902] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) COVER + [903] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) COVER + [908] = "%.4f", -- Inboard spoiler override (ORIDE|NORM) + [907] = "%.4f", -- Outboard spoiler override (ORIDE|NORM) + + -- Caution Advisory Indicator + [15037] = "%.1f", -- PITCH STAB 1 - inoperative pitch channel + [15040] = "%.1f", -- PITCH STAB 2 - inoperative pitch channel + [15039] = "%.1f", -- ROLL STAB 1 - inoperative roll channel + [15056] = "%.1f", -- ROLL STAB 2 - inoperative roll channel + [15025] = "%.1f", -- YAW STAB OP - one inoperative yaw channel + [15026] = "%.1f", -- YAW STAB OUT - two inoperative yaw channels + [15031] = "%.1f", -- EMERG JETT - caution activation of emerg stores jett button + [15050] = "%.1f", -- LADDER - boarding ladder not correctly stowed + [15052] = "%.1f", -- INLET ICE - accumulation of ice on ice detector in L eng. + [15046] = "%.1f", -- FLAP - failure in flap system or flaps down & speed > 225k + [15047] = "%.1f", -- HZ TAIL AUTH - failure of lateral tail auth. actuator + [15053] = "%.1f", -- RUDDER AUTH - failure of rudder auth. actuator + [15057] = "%.1f", -- SPOILERS - spoiler sys failure + [15041] = "%.1f", -- AUTO PILOT - A/P failure + [15054] = "%.1f", -- Left INLET - AICS programmer and/or system failure + [15051] = "%.1f", -- Right INLET - AICS programmer and/or system failure + [15048] = "%.1f", -- OIL PRESS - left or right engine oil press. < 11psi + [15038] = "%.1f", -- BLEED DUCT - high temp air leak in engine comp. + [15049] = "%.1f", -- LEFT RAMPS - ramps not locked in pos. + [15044] = "%.1f", -- RIGHT RAMPS - ramps not locked in pos. + [15063] = "%.1f", -- START VALVE - starter solenoid air valve is open + [15061] = "%.1f", -- LEFT ENG SEC - engin AFTC is in secondary mode + [15064] = "%.1f", -- RIGHT ENG SEC - engin AFTC is in secondary mode + [15016] = "%.1f", -- LEFT GEN - respective engine generator inoperative + [15020] = "%.1f", -- RIGHT GEN - respective engine generator inoperative + [15027] = "%.1f", -- CANOPY - canopy is not own and locked + [15033] = "%.1f", -- BINGO - aircraft fuel qty at or below set bingo + [15017] = "%.1f", -- LEFT OIL HOT - respective eng. oil is too hot + [15022] = "%.1f", -- RIGHT OIL HOT - respective eng. oil is too hot + [15028] = "%.1f", -- CADC - air data computer failure + [15034] = "%.1f", -- HYD PRESS - press. in either engine hyd. < 2,100 psi + [15018] = "%.1f", -- LEFT FUEL PRESS - press. < 9 psi in respective fuel pump + [15021] = "%.1f", -- RIGHT FUEL PRESS - press. < 9 psi in respective fuel pump + [15029] = "%.1f", -- LEFT FUEL LOW - fuel < 1000 lbs in aft and left tank + [15035] = "%.1f", -- RIGHT FUEL LOW - fuel < 1000 lbs in fwd and righ tank + [15023] = "%.1f", -- WING SWEEP - failure of a single channel in wing sweep + [15062] = "%.1f", -- RATS - RATS enabled + [15058] = "%.1f", -- TRANS/RECT - transformer rectifier failure + [15036] = "%.1f", -- MACH TRIM - failure in Mach trim actuator + [15030] = "%.1f", -- WSHLD HOT - central windshield overheat + [15045] = "%.1f", -- LAUNCH BAR - weight on wheels + [15060] = "%.1f", -- INTEG TRIM - trim failure + [15055] = "%.1f", -- AHRS - unreliable attitude or hdg info from AHRS + [15019] = "%.1f", -- ENG FIRE EXT - low press. in fire extenguisher + [15024] = "%.1f", -- AUX FIRE EXT - low press. in Aux. fire ext. + + -- Master Generator Control Panel + [937] = "%.4f", -- LEFT MASTER GEN switch (NORM|OFF/RESET|TEST) + [936] = "%.4f", -- RIGHT MASTER GEN switch (NORM|OFF/RESET|TEST) + [927] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) COVER + [926] = "%.4f", -- EMERG switch (EMERG|NORM|OFF/RESET) + + -- Air Condition Control Panel + [940] = "%.4f", -- TEMP switch (AUTO|MAN) + [939] = "%.4f", -- CABIN PRESS switch (NORM|DUMP) + [938] = "%.4f", -- RAM AIR switch (INCR|DECR) + [929] = "%.4f", -- AIR SOURCE selection (RAM) + [930] = "%.4f", -- AIR SOURCE selection (L ENG.) + [931] = "%.4f", -- AIR SOURCE selection (R ENG.) + [932] = "%.4f", -- AIR SOURCE selection BOTH ENG.) + [933] = "%.4f", -- AIR SOURCE selection (OFF) + [950] = "%.4f", -- TEMP thumbwheel (1-14 COOL-WARM) + + -- External Environmental Control Panel + [942] = "%.4f", -- WIND SHIELD switch (AIR|OFF) + [941] = "%.4f", -- ANTI-ICE switch (ORIDE|AUTO|OFF) + + -- Hydraulic Transfer Pump Switch + [630] = "%.4f", -- Transfer Pump switch cover + [629] = "%.4f", -- HYD TRANSFER PUMP switch (NORMAL|SHUTOFF) + + + + + +-- 11b + -- Compass Control Panel + [0] = "%.4f", -- SYNC Indicator 2221? + [906] = "%.4f", -- N-S Switch hemisphere (N|S) + [909] = "%.4f", -- Lat Knob (0-90) + [1026] = "%.4f", -- Lat Knob (0-90) + [905] = "%.4f", -- Mode Switch AHRS Hdg Info (COMP|SLAVED|DG) + [904] = "%.4f", -- HDG Knob + [16014] = "%.4f", -- HDG Button + + -- ARA-63 Control Panel + [912] = "%.4f", -- Channel Selector (1 of 20 available ICLS channels) + [911] = "%.4f", -- BIT button + [910] = "%.4f", -- Power Switch (ON|OFF) + [910] = "%.4f", -- Power ON Light for ARA-63 (taken from power on/off switch) + + -- Master Light Control Panel + [923] = "%.4f", -- ANTI COLLISION switch (ON|OFF) + [919] = "%.4f", -- POSITION switch (FLASH|STEADY) + [916] = "%.4f", -- TAIL POSITION switch (DIM|OFF|BRT) + [913] = "%.4f", -- WING POSITION switch (DIM|OFF|BRT) + [15005] = "%.4f", -- ACM thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15006] = "%.4f", -- INDEXER thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15007] = "%.4f", -- INSTRUMENT thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15008] = "%.4f", -- CONSOLE thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [15009] = "%.4f", -- FORMATION thumbwheel Lights Dimmer (0-OFF|1-14 DIM-BRT) + [915] = "%.4f", -- HOOK BYPASS (FIELD|CARRIER) + [918] = "%.4f", -- TAXI lights switch (ON|OFF) + [921] = "%.4f", -- WHITE FLOOD switch (OFF|DIM|BRT) + [924] = "%.4f", -- RED FLOOD switch (DIM|MED|BRT) + + -- Master Test Panel + [934] = "%.4f", -- MASTER TEST SELECTOR (OFF|LTS|FIRE DET/EXT|INST|OBC|EMERG GEN|MACH LEV|WG SWP|FLT GR DN|FLT GR UP|D/L RAD|STICK SW) + [15098] = "%.4f", -- MASTER TEST SELECTOR Knob Push + [15010] = "%.4f", -- GO light - light used in test to indicate go/no-go conditions of that system + [15011] = "%.4f", -- NO-GO light - light used in test to indicate go/no-go conditions of that system + [928] = "%.4f", -- EMERG FLT HYD (HIGH|LOW|AUTO(LOW)) + [615] = "%.4f", -- EMERG FLT HYD switch cover + + -- Canopy Defog/Cabin Air Lever + [0] = "%.4f", -- CABIN AIR + [0] = "%.4f", -- CANOPY DEFOG + + + + +-- 12 + [0] = "%.4f", -- Canopy Control Handle (BOOST|CLOSE|HOLD|OPEN|AUX OPEN) + + + -- [END In Development] ------------------------------------------------------------------- + -- ################################################################################################################################################################### + -- ################################################################################################################################################################### + + + + + + + + + + + + + -- [A1 Pilot - Left Side Console] --------------------------------------------------------- + -- [END A1] ------------------------------------------------------------------------------- + + -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- + -- [END A2] ------------------------------------------------------------------------------- + + -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- + + -- Electronic Instrument Group + [1057] = "%.4f", -- Engine RPM Left [STREAM DECK FORMAT: 51057] + [1058] = "%.4f", -- Engine RPM Right [STREAM DECK FORMAT: 51057] + [1059] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Left [STREAM DECK FORMAT: 51059] + [1060] = "%.4f", -- Engine TIT (Exhaust Gas Temp) Right [STREAM DECK FORMAT: 51059] + [1061] = "%.4f", -- Engine Fuel Flow Left [STREAM DECK FORMAT: 51061] + [1062] = "%.4f", -- Engine Fuel Flow Right [STREAM DECK FORMAT: 51061] + + -- Hydraulic Pressure Indicator + [1063] = "%.4f", -- HYD_FlightHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] + [1064] = "%.4f", -- HYD_CombinedHydraulicSystemPressure [STREAM DECK FORMAT: 51023 OR 51063] + + -- Engine Oil Pressure Gauges + [1065] = "%.4f", -- Right Engine Oil Pressure [STREAM DECK FORMAT: 51065] + [1066] = "%.4f", -- Left Engine Oil Pressure [STREAM DECK FORMAT: 51065] + + -- Engine Exhaust Nozzle Position + [1067] = "%.1f", -- Right Nozzle [STREAM DECK FORMAT: 51068] + [1068] = "%.1f", -- Left Nozzle [STREAM DECK FORMAT: 51068] + + -- [END A3] ------------------------------------------------------------------------------- + + -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- + + -- [END A4] ------------------------------------------------------------------------------- + + -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- + + -- Approach Indexer + [3760] = "%d", -- Approach Indexer AOA Slow green light - {0, 1}{0, 1} + [3761] = "%d", -- Approach Indexer AOA optimum yellow light - {0, 1}{0, 1} + [3762] = "%d", -- Approach Indexer AOA fast red light - {0, 1}{0, 1} + + -- [END A5] ------------------------------------------------------------------------------- + + -- [A6a Pilot - Center Panel] ------------------------------------------------------------- + + -- ACM Switch + [1049] = "%d", -- ACM Switch Cover actives the ACM mode - {0, 1}{0, 1} [BUTTON ID:3133 / DEVICE ID:55 ] + [1048] = "%d", -- ACM JETT button jettison stores - {0, 1}{0, 1} [BUTTON ID:3138 / DEVICE ID:55 ] + + -- Master Arm Switch + [1046] = "%d", -- MASTER ARM cover - {0, 1}{0, 1} [BUTTON ID:3135 / DEVICE ID:55 ] + [1047] = "%d", -- MASTER ARM switch (OFF|ON|TNG) - {-1, 1}{-1, 1} [BUTTON ID:3136 / DEVICE ID:55 ] + + -- Turn and Slip Indicator 6a (Not sure how to do this at the moment) + [6500] = "%.4f", -- Slip Ball + [6501] = "%.4f", -- Turn Indicator + + -- Master Caution light + [9200] = "%d", -- MASTER CAUTION Light - flashes - {0, 1}{0, 1} + + -- [END A6a] ------------------------------------------------------------------------------ + + -- [A6b Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6b] ------------------------------------------------------------------------------ + + -- [A6c Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6c] ------------------------------------------------------------------------------ + + -- [A6d Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6d] ------------------------------------------------------------------------------ + + -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- + -- [END A7] ------------------------------------------------------------------------------- + + -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- + -- [END A8] ------------------------------------------------------------------------------- + + -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- + + -- FUS & FEED tapes Shows fuel qty in fuselage tanks + [1054] = "%.4f", -- Left feed and aft fuselage tanks [STREAM DECK FORMAT: 51054] + [1055] = "%.4f", -- Right feed and forward fuselage tanks [STREAM DECK FORMAT: 51055] + + -- Total Left Fuel Qty (main fuel guage at bottom left) + [6000] = "%.1f", -- FUEL_LFuelDial1k [STREAM DECK FORMAT: 56000] + [6001] = "%.1f", -- FUEL_LFuelDial100 [STREAM DECK FORMAT: 56000] + [6002] = "%.1f", -- FUEL_LFuelDial10 [STREAM DECK FORMAT: 56000] + [6003] = "%.1f", -- FUEL_LFuelDial1 [STREAM DECK FORMAT: 56000] + + -- Total Right Fuel Qty (main fuel guage at bottom right) + [6004] = "%.1f", -- FUEL_RFuelDial1k [STREAM DECK FORMAT: 56004] + [6005] = "%.1f", -- FUEL_RFuelDial100 [STREAM DECK FORMAT: 56004] + [6006] = "%.1f", -- FUEL_RFuelDial10 [STREAM DECK FORMAT: 56004] + [6007] = "%.1f", -- FUEL_RFuelDial1 [STREAM DECK FORMAT: 56004] + + -- Total Fuel Qty in all aircraft tanks (main fuel guage in center shows "Fuel 15000 Qty") + [6010] = "%.1f", -- FUEL_TotalFuel10k [STREAM DECK FORMAT: 56010] + [6011] = "%.1f", -- FUEL_TotalFuel1k [STREAM DECK FORMAT: 56010] + [6012] = "%.1f", -- FUEL_TotalFuel100 [STREAM DECK FORMAT: 56010] + [6013] = "%.1f", -- FUEL_TotalFuel10 [STREAM DECK FORMAT: 56010] + [6014] = "%.1f", -- FUEL_TotalFuel1 [STREAM DECK FORMAT: 56010] + + -- Currently set BINGO fuel quantity (main fuel guage in center at top shows "Bingo 4000") + [6020] = "%.1f", -- FUEL_BingoFuel10k [STREAM DECK FORMAT: 56020] + [6021] = "%.1f", -- FUEL_BingoFuel1k [STREAM DECK FORMAT: 56020] + [6022] = "%.1f", -- FUEL_BingoFuel100 [STREAM DECK FORMAT: 56020] + [6023] = "%.1f", -- FUEL_BingoFuel10 [STREAM DECK FORMAT: 56020] + [6024] = "%.1f", -- FUEL_BingoFuel1 [STREAM DECK FORMAT: 56020] + + -- Accelerometer (3 needles) + [110] = "%.4f", -- Needle - Current G (+10 to -6) [STREAM DECK FORMAT: 50110] + [15076] = "%.4f", -- Needle 2 - Max Postive G pulled (max 10) [STREAM DECK FORMAT: 50110] + [15077] = "%.4f", -- Needle 3 - Max Negative G Pulled (max -6) [STREAM DECK FORMAT: 50110] + + -- [END A9] ------------------------------------------------------------------------------- + + -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- + + -- Gun Ammunition Rounds Counter + [4060] = "%.1f", -- Gun Ammunition Rounds Counter Hundreds [STREAM DECK FORMAT: 54060] + [4061] = "%.1f", -- Gun Ammunition Rounds Counter Tens [STREAM DECK FORMAT: 54060] + [4062] = "%.1f", -- Gun Ammunition Rounds Counter Ones [F-14 DOESN'T DISPLAY] + + -- [END A10] ------------------------------------------------------------------------------ + + -- [A11 Pilot - Right Side Console] ------------------------------------------------------- + -- [END A11] ------------------------------------------------------------------------------ + + -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- + -- [END A12] ------------------------------------------------------------------------------ +-- END PILOT COCKPIT -------------------------------------------------------------------------- + + +-- RIO OFFICER COCKPIT ------------------------------------------------------------------------ + -- [B1 RIO - Left Side Console] ----------------------------------------------------------- + -- [END B1] ------------------------------------------------------------------------------- + + -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- + -- [END B2] ------------------------------------------------------------------------------- + + -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B4 RIO - Center Panel] ---------------------------------------------------------------- + -- [END B4] ------------------------------------------------------------------------------- + + -- [B5 RIO - Center Console] -------------------------------------------------------------- + -- [END B5] ------------------------------------------------------------------------------- + + -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- + -- [END B6] ------------------------------------------------------------------------------- + + -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ + + -- Total RIO Fuel Qty (Radar Officer Fuel Dial) + [2117] = "%.1f", -- FUEL_TotalFuelRIO10k (10's of thousands in decimal 0.1 = 10,000 lbs) [STREAM DECK FORMAT: 56010] + [2118] = "%.1f", -- FUEL_TotalFuelRIO1k (thousands of lbs in decimal 0.4 = 1,000 lbs) [STREAM DECK FORMAT: 56010] + [2119] = "%.1f", -- FUEL_TotalFuelRIO100 (hundreds of lbs in decimal 0.3 = 300 lbs) [STREAM DECK FORMAT: 56010] + [2120] = "%.1f", -- FUEL_TotalFuelRIO10 (ten lbs of fuel in decimal 0.7 = 70 lbs) [F-14 DOESN'T DISPLAY TENS OF LBS] + [2135] = "%.1f", -- FUEL_TotalFuelRIO1 (lbs of fuel in decimal 0.2 = 2 lbs) [F-14 DOESN'T DISPLAY] + + -- [END B7] ------------------------------------------------------------------------------- + + -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ + -- [END B1] ------------------------------------------------------------------------------- + + -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ + -- [END B2] ------------------------------------------------------------------------------- + + -- [B10 RIO - Right Side Console] --------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ + -- [END B4] ------------------------------------------------------------------------------- +-- END RIO OFFICER COCKPIT -------------------------------------------------------------------- +} + + +ExportScript.ConfigArguments = +{ + -- arguments for export in low tick interval + +-- PILOT COCKPIT ------------------------------------------------------------------------------ + -- [A1 Pilot - Left Side Console] --------------------------------------------------------- + -- [END A1] ------------------------------------------------------------------------------- + + -- [A2 Pilot - Left Vertical Console] ----------------------------------------------------- + -- [END A2] ------------------------------------------------------------------------------- + + -- [A3 Pilot - Left Knee Panel] ----------------------------------------------------------- + + -- Hydraulic Pressure Indicator Flags + [1023] = "%d", -- Pressure availability to the spoilers flag - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + [1024] = "%d", -- Emer. Flight hyd. pump operating on High - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + [1025] = "%d", -- Emer. Flight hyd. pump operating on LOW - {0, 1}{0, 1} [STREAM DECK FORMAT: 51023 OR 51063] + + -- [END A3] ------------------------------------------------------------------------------- + + -- [A4 Pilot - Left Instrument Panel] ----------------------------------------------------- + -- [END A4] ------------------------------------------------------------------------------- + + -- [A5 Pilot - Left Windshield Frame] ----------------------------------------------------- + -- [END A5] ------------------------------------------------------------------------------- + + -- [A6a Pilot - Center Panel] ------------------------------------------------------------- + + -- Master Caution Button (light in high tik) + [9199] = "%d", -- MASTER CAUTION Button - press to reset - {0, 1}{0, 1} [BUTTON ID:3056 / DEVICE ID:34 ] + + -- Triple Indicator Lights + [9203] = "%d", -- SEAM LOCK light - sidewinder acquisition in progress.. + [9202] = "%d", -- COLLISION light - collision steering has been selected + [9201] = "%d", -- HOT TRIG light - when lit trigger will release a weapon + + -- Gun Rate Switch and Lights + [9204] = "%d", -- GUN RATE light HIGH (HIGH|LOW) - {0, 1}{0, 1} + [9205] = "%d", -- GUN RATE light LOW (HIGH|LOW) - {0, 1}{0, 1} + [16000] = "%d", -- GUN RATE switch (HIGH|LOW) - {0, 1}{0, 1} [BUTTON ID:3130 / DEVICE ID:55 ] + + -- Sidewinder Cooling + [9206] = "%d", -- SW COOL Switch light On - {0, 1}{0, 1} + [9207] = "%d", -- SW COOL Switch light Off - {0, 1}{0, 1} + [16001] = "%d", -- SW COOL switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3139 / DEVICE ID:55 ] + + -- MSL Preperation Switch + [9208] = "%d", -- MSL PREP switch light On - {0, 1}{0, 1} + [9209] = "%d", -- MSL PREP switch light Off - {0, 1}{0, 1} + [16002] = "%d", -- MSL PREP switch (ON|OFF) - {0, 1}{0, 1} [BUTTON ID:3140 / DEVICE ID:55 ] + + -- MSL Mode Switch + [9210] = "%d", -- MSL Mode switch light Norm - {0, 1}{0, 1} + [9211] = "%d", -- MSL Mode switch light Boresight - {0, 1}{0, 1} + [16003] = "%d", -- MSL Mode switch (NORM|BRSIT) - {0, 1}{0, 1} [BUTTON ID:3141 / DEVICE ID:55 ] + + -- Weapon Station Status Flags + [9221] = "%.2f", -- Station Status Flag 1A (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9222] = "%.2f", -- Station Status Flag 1B (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9223] = "%.2f", -- Station Status Flag 3 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9224] = "%.2f", -- Station Status Flag 4 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9225] = "%.2f", -- Station Status Flag 5 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9226] = "%.2f", -- Station Status Flag 6 (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9227] = "%.2f", -- Station Status Flag 8B (OFF|WHITE|CHECK) - {0, 1}{0, 1} + [9228] = "%.2f", -- Station Status Flag 8A (OFF|WHITE|CHECK) - {0, 1}{0, 1} + + -- Engine Fire Lights + [15014] = "%d", -- Left Engine FIRE Light - {0, 1}{0, 1} + [15015] = "%d", -- Right Engine FIRE Light - {0, 1}{0, 1} + + -- [END A6a] ------------------------------------------------------------------------------ + + -- [A6b Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6b] ------------------------------------------------------------------------------ + + -- [A6c Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6c] ------------------------------------------------------------------------------ + + -- [A6d Pilot - Center Panel] ------------------------------------------------------------- + -- [END A6d] ------------------------------------------------------------------------------ + + -- [A7 Pilot - Right Windshield Frame] ---------------------------------------------------- + -- [END A7] ------------------------------------------------------------------------------- + + -- [A8 Pilot - Right Instrument Panel] ---------------------------------------------------- + -- [END A8] ------------------------------------------------------------------------------- + + -- [A9 Pilot - Right Knee Panel] ---------------------------------------------------------- + + -- Accelerometer + [228] = "%.4f", -- Accelerometer Reset knob - {0, 1}{0, 1} [BUTTON ID: 3488 / DEVICE ID: 24] + + -- Bingo Set Knob + [1050] = "%.4f", -- Knob used to set BINGO fuel Qty - +/- 1 per step is 100 lbs of fuel [BUTTON ID: 3069 / DEVICE ID: 20] + + -- Clock and Timer + [1051] = "%.4f", -- Clock Timer wind - +/- 0.06 per step is 1 Minute [BUTTON ID: 3042 / DEVICE ID: 26] + [1096] = "%.4f", -- Clock Hours - {0, 12}{0.0000, 1.0000} e.g. 0.5000 * 12 = 6pm [STREAM DECK FORMAT: 51096] + [1097] = "%.4f", -- Clock Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] + [1098] = "%.4f", -- Clock Timer Seconds - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Seconds [STREAM DECK FORMAT: 51096] + [1099] = "%d", -- Clock Timer Start/Stop/Reset Button - {0, 1}{0, 1} [BUTTON ID: 3043 / DEVICE ID: 26] + [2000] = "%.4f", -- Clock Timer Minutes - {0, 60}{0.0000, 1.0000} e.g. 0.5000 * 60 = 30 Minutes [STREAM DECK FORMAT: 51096] + + -- [END A9] ------------------------------------------------------------------------------- + + -- [A10 Pilot - Right Vertical Console] --------------------------------------------------- + + -- Arresting Hook + [238] = "%d", -- HOOK_Handle Arresting hook handle down/up - {0, 1}{0, 1} [BUTTON ID: 3021 / DEVICE ID: 17] + [15078] = "%d", -- HOOK_EmergencyDown Emergency release - {0, 1}{0, 1} [BUTTON ID: 3022 / DEVICE ID: 17] + [15090] = "%d", -- Hook_Light Arresting Hook Light - {0, 1}{0, 1} [LIGHT/LAMP] + + -- Gun Rounds and Knob + [1022] = "%.4f", -- Gun Ammunition Counter Adj. Knob - {0, 1}{increase or decrease by 0.1 to inc/dec. by 10 rounds} [BUTTON ID: 3132 / DEVICE ID: 55] + + -- [END A10] ------------------------------------------------------------------------------ + + -- [A11a Pilot - Right Side Console] ------------------------------------------------------ + -- [END A11a] ----------------------------------------------------------------------------- + + -- [A11b Pilot - Right Side Console] ------------------------------------------------------ + + -- HUD Video Control Panel (Not Implemented in DCS) + --[0] = "%.4f", -- HUD CAM(E)RA switch (TRG|NORMAL|OFF|RUN) + --[0] = "%.4f", -- VTR Power (ON|OFF) + --[0] = "%.4f", -- VTR (RECORD|STANDBY) + + -- [END A11b] ----------------------------------------------------------------------------- + + + -- [A12 Pilot - Canopy Control Handle] ---------------------------------------------------- + -- [END A12] ------------------------------------------------------------------------------ +-- END PILOT COCKPIT -------------------------------------------------------------------------- + + + + +-- RIO OFFICER COCKPIT ------------------------------------------------------------------------ + -- [B1 RIO - Left Side Console] ----------------------------------------------------------- + -- [END B1] ------------------------------------------------------------------------------- + + -- [B2 RIO - Left Vertical Console] ------------------------------------------------------- + -- [END B2] ------------------------------------------------------------------------------- + + -- [B3 RIO - Left Instrument Panel] ------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B4 RIO - Center Panel] ---------------------------------------------------------------- + -- [END B4] ------------------------------------------------------------------------------- + + -- [B5 RIO - Center Console] -------------------------------------------------------------- + -- [END B5] ------------------------------------------------------------------------------- + + -- [B6 RIO - Left and Right Footwells] ---------------------------------------------------- + -- [END B6] ------------------------------------------------------------------------------- + + -- [B7 RIO - Right Instrument Panel] ------------------------------------------------------ + -- [END B7] ------------------------------------------------------------------------------- + + -- [B8 RIO - Right Knee Panel] ------------------------------------------------------------ + -- [END B1] ------------------------------------------------------------------------------- + + -- [B9 RIO - Right Vertical Console] ------------------------------------------------------ + -- [END B2] ------------------------------------------------------------------------------- + + -- [B10 RIO - Right Side Console] --------------------------------------------------------- + -- [END B3] ------------------------------------------------------------------------------- + + -- [B11 RIO - Canopy Control Handle] ------------------------------------------------------ + -- [END B4] ------------------------------------------------------------------------------- +-- END RIO OFFICER COCKPIT -------------------------------------------------------------------- + +} + + +----------------------------- +-- HIGH IMPORTANCE EXPORTS -- +-- done every export event -- +----------------------------- + +-- Pointed to by ProcessIkarusDCSHighImportance +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) + -- every frame export to Ikarus + + -- A3 - Pilot Cockpit Left Knee Panel + ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic Pressure Indicator Gauges and Flags + ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge + ExportScript.engOilPressure(mainPanelDevice) -- Engine Oil Pressure gauges + ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group + -- end A3 + + -- A6a - ACM Panel + ExportScript.stationStatusFlags(mainPanelDevice) -- Air Combat Maneuver Panel + ExportScript.ACMButtons(mainPanelDevice) -- 4 different ACM Buttons + ExportScript.masterArmSwitch(mainPanelDevice) -- Master Arm Switch + ExportScript.ACMTriple(mainPanelDevice) -- ACM Triple Indicator + ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge + -- end A6a + + -- A9 - Pilot Cockpit Right Knee Panel + ExportScript.displayFuel(mainPanelDevice) -- Set of 5 different fuel gauges and a nice multi-gauge (ID's 52117 / 56000 / 56004 / 56010 / 56020 / 56024) Cus. Func. + ExportScript.displayAccel(mainPanelDevice) -- Accellerometer Gauge Custom Function + ExportScript.clockAndTimer(mainPanelDevice) -- Clock and Timer in digital format on same gauge Custom Function + -- end A9 + + -- A10 - Pilot Right Vertical Console + ExportScript.gunCounter(mainPanelDevice) -- Gun Ammunition Counter / Rounds left + -- end A10 + +end + +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) + -- every frame export to DAC +end + +----------------------------------------------------- +-- LOW IMPORTANCE EXPORTS -- +-- done every gExportLowTickInterval export events -- +----------------------------------------------------- + +-- Pointed to by ExportScript.ProcessIkarusDCSConfigLowImportance +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) + -- export in low tick interval to Ikarus +end + +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) + -- export in low tick interval to DAC +end --[[ + + + + + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Custom functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + â–ˆ ExportScript.onff(switch) - Receives a binary and returns string OFF|ON + â–ˆ ExportScript.dualTapeString(leftTape, rightTape) - Receives two values (percent of tape) and returns a string tape display (e.g. RPM) + â–ˆ ExportScript.rotaryCounter(fp) - receives a fp like 0.1 and returns a string 1 (third charachter), handles negatives and 0 gracefully + â–ˆ ExportScript.drawStationStatusFlags(flagValue) - Draws Station Flags for Weapons on ACM A6a]] + +function ExportScript.dualTapeString(title, leftTape, rightTape) -- Creates a dual vertical bar tape for custom gauge + -- Receives title as string + -- Receives a value from 0.00 to 1.00 that represents a percentage from 0% to 100% of the tape, 0.25 is 1/4 up the tape etc.. + -- Returns a string that shows 2 tapes in a "somewhat" graphical format using extended ascii characters. + local a = 5 + local b = 0 + leftTape = tonumber(string.format("%.1f", (leftTape * 10) / 2 )) + rightTape = tonumber(string.format("%.1f", (rightTape * 10) / 2 )) + local buildDisplay = title .. "\n" + repeat + b = a - 0.5 + if leftTape >= a then buildDisplay = buildDisplay .. "â–ˆ " elseif leftTape >= b then buildDisplay = buildDisplay .. "â–„ " else buildDisplay = buildDisplay .. "_ " end + if rightTape >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rightTape >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end + buildDisplay = buildDisplay .. "\n" + a = a - 1 + until( a < 1 ) + return buildDisplay +end + + +function ExportScript.onff(switch) -- Takes a binary 1(on) or 0(off) and returns string "ON" or "OFF" + if switch == 1 then returnString = "ON" elseif switch == 0 then returnString = "OFF" end + return returnString +end + + +function ExportScript.rotaryCounter(fp) -- Takes a value as floating point like 0.1324 and returns 1 as a string or 0.4 as 4 as a string (3'rd character including decimal) + local returnString + if fp == 1 or fp <= 0 then returnString = "0" else returnString = string.sub(string.format("%.1f", fp), 3, 3) end + return returnString +end + + +function ExportScript.drawStationStatusFlags(flagValue) -- Takes a 0/1/0.45 and draws nothing/white/checker flag and returns + local returnString + if flagValue > 0.5 then returnString = "█████\n▀▀▀▀▀\n\n." elseif flagValue > 0.4 then returnString = "▀▄▀▄▀\nâ–€ â–€ â–€\n\n." else returnString = "" end + return returnString +end +--[[ + + + + +___________________________________________________________________________________________________________________________________________________ +▀▀▀█ Custom Gauges functions █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀]] + +function ExportScript.ACMSlip(mainPanelDevice) -- Slip/Ball Gauge + local turn + local turnL + local turnR + local turnIndicator = mainPanelDevice:get_argument_value(6501) + local turnLString = "" + local turnRString = "" + local ball + local ballL + local ballR + local ballIndicator = mainPanelDevice:get_argument_value(6500) + local ballLString = "" + local ballRString = "" + local stringOutput = "" + if turnIndicator < 0 then -- negative 12 on left and right + if turnIndicator < -0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 4, 4)) end + turnL = 12 - turn + turnR = 12 + turn + repeat + turnLString = turnLString .. " " + turnL = turnL - 1 + until( turnL == 1) + repeat + turnRString = turnRString .. " " + turnR = turnR - 1 + until( turnR == 1) + stringOutput = stringOutput .. turnLString + stringOutput = stringOutput .. "â–ˆ" + stringOutput = stringOutput .. turnRString + elseif turnIndicator > 0 then -- positive + if turnIndicator > 0.9 then turn = 9 else turn = tonumber(string.sub(turnIndicator, 3, 3)) end + turnL = 12 + turn + turnR = 12 - turn + repeat + turnLString = turnLString .. " " + turnL = turnL - 1 + until( turnL == 1) + repeat + turnRString = turnRString .. " " + turnR = turnR - 1 + until( turnR == 1) + stringOutput = stringOutput .. turnLString + stringOutput = stringOutput .. "â–ˆ" + stringOutput = stringOutput .. turnRString + else + turn = 0 + stringOutput = " â–ˆ " + end + + stringOutput = stringOutput .. "\n â–  â–ˆ â–  \n" + + if ballIndicator < 0 then -- negative 12 on left and right + if ballIndicator < -0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 4, 4)) end + ballL = 12 - ball + ballR = 12 + ball + repeat + ballLString = ballLString .. " " + ballL = ballL - 1 + until( ballL == 1) + repeat + ballRString = ballRString .. " " + ballR = ballR - 1 + until( ballR == 1) + stringOutput = stringOutput .. ballLString + stringOutput = stringOutput .. "O" + stringOutput = stringOutput .. ballRString + elseif ballIndicator > 0 then -- positive + if ballIndicator > 0.9 then ball = 9 else ball = tonumber(string.sub(ballIndicator, 3, 3)) end + ballL = 12 + ball + ballR = 12 - ball + repeat + ballLString = ballLString .. " " + ballL = ballL - 1 + until( ballL == 1) + repeat + ballRString = ballRString .. " " + ballR = ballR - 1 + until( ballR == 1) + stringOutput = stringOutput .. ballLString + stringOutput = stringOutput .. "O" + stringOutput = stringOutput .. ballRString + else + ball = 0 + stringOutput = " O " + end + ExportScript.Tools.SendData(56501, stringOutput) +end + + +function ExportScript.ACMTriple(mainPanelDevice) -- Triple indicator lights for ACM (Seam/Collision/Hot Trig) + local stringOutput = "" + if mainPanelDevice:get_argument_value(9203) == 1 then stringOutput = stringOutput .. "\n\n" else stringOutput = stringOutput .. "██████████\n\n" end + if mainPanelDevice:get_argument_value(9202) == 1 then stringOutput = stringOutput .. "\n\n\n" else stringOutput = stringOutput .. "â–„â–„â–„â–„â–„â–„â–„â–„â–„â–„\n▀▀▀▀▀▀▀▀▀▀\n\n" end + if mainPanelDevice:get_argument_value(9201) == 1 then stringOutput = stringOutput .. "." else stringOutput = stringOutput .. "██████████" end + ExportScript.Tools.SendData(59201, stringOutput) +end + + +function ExportScript.masterArmSwitch(mainPanelDevice) -- Output Master Arm Position + if mainPanelDevice:get_argument_value(1047) == -1 then stringOutput = " ███\n |\n |\n\n ." + elseif mainPanelDevice:get_argument_value(1047) == 0 then stringOutput = " |\n ███\n |\n\n ." + else stringOutput = " |\n |\n ███\n\n ." + end + ExportScript.Tools.SendData(51047, stringOutput) +end + + +function ExportScript.ACMButtons(mainPanelDevice) -- Monitors two lights on diff. id's and outputs 1 or 0 to one id for (gun rate/SW cool/MSL prep/Mode stp) + if mainPanelDevice:get_argument_value(9204) == 1 then ExportScript.Tools.SendData(59204, 1) else ExportScript.Tools.SendData(59204, 0) end -- gun rate light + if mainPanelDevice:get_argument_value(9206) == 1 then ExportScript.Tools.SendData(59206, 1) else ExportScript.Tools.SendData(59206, 0) end -- sw cool light + if mainPanelDevice:get_argument_value(9208) == 1 then ExportScript.Tools.SendData(59208, 1) else ExportScript.Tools.SendData(59208, 0) end -- msl prep light + if mainPanelDevice:get_argument_value(9210) == 1 then ExportScript.Tools.SendData(59210, 1) else ExportScript.Tools.SendData(59210, 0) end -- msl mode stp light +end + + +function ExportScript.stationStatusFlags(mainPanelDevice) -- Display Station status flags 1 to 8 on ACM panel + local b + local a = 9221 + repeat + b = "5" .. a + ExportScript.Tools.SendData(b, ExportScript.drawStationStatusFlags(mainPanelDevice:get_argument_value(a))) + a = a + 1 + until( a > 9228) +end + + +function ExportScript.gunCounter(mainPanelDevice) -- Gun Counter + local gunCounter = ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4060)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4061)) .. ExportScript.rotaryCounter(mainPanelDevice:get_argument_value(4062)) + ExportScript.Tools.SendData(54060, "ROUNDS\n" .. gunCounter) +end + + +function ExportScript.EIG(mainPanelDevice) -- Electronic Instrument Group EIG + local EIGrpm = ExportScript.dualTapeString("RPM % x10", mainPanelDevice:get_argument_value(1057), mainPanelDevice:get_argument_value(1058)) + local EIGegt = ExportScript.dualTapeString("TIT C x100", mainPanelDevice:get_argument_value(1059), mainPanelDevice:get_argument_value(1060)) + local EIGff = ExportScript.dualTapeString("FF PPH x1000", mainPanelDevice:get_argument_value(1061), mainPanelDevice:get_argument_value(1062)) + ExportScript.Tools.SendData(51057, EIGrpm) -- Engine RPM + ExportScript.Tools.SendData(51059, EIGegt) -- Engine TIT (Exhaust Gas Temp) + ExportScript.Tools.SendData(51061, EIGff) -- Engine Fuel Flow +end + + +function ExportScript.engOilPressure(mainPanelDevice) + local rOilPress = mainPanelDevice:get_argument_value(1065) * 90 -- Right Engine Oil Pressure + local lOilPress = mainPanelDevice:get_argument_value(1066) * 90 -- Left Engine Oil Pressure + ExportScript.Tools.SendData(51065, "L " .. string.format("%d", lOilPress) .. " psi\nEng. Oil\n" .. "R " .. string.format("%d", rOilPress) .. " psi") +end + + +function ExportScript.engNozzle(mainPanelDevice) -- Engine Nozzle position gauge (tape) ------------------------------------------------ + local lNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1068) * 5)) + local rNoz = tonumber(string.format("%.1f", mainPanelDevice:get_argument_value(1067) * 5)) + local a = 5 + local b = 0 + local buildDisplay = "Exh. Nozz.\n" + repeat + b = a - 0.5 + buildDisplay = buildDisplay .. (a - 1) + if lNoz >= a then buildDisplay = buildDisplay .. " â–ˆ " elseif lNoz >= b then buildDisplay = buildDisplay .. " â–„ " else buildDisplay = buildDisplay .. " _ " end + if rNoz >= a then buildDisplay = buildDisplay .. "â–ˆ" elseif rNoz >= (a - 0.5) then buildDisplay = buildDisplay .. "â–„" else buildDisplay = buildDisplay .. "_" end + buildDisplay = buildDisplay .. "\n" + a = a - 1 + until( a < 1 ) + ExportScript.Tools.SendData(51068, buildDisplay) +end + + +function ExportScript.hydPressGauge(mainPanelDevice) -- Hydraulic pressure indicator A3 ------------------------------------------------ + local hydComb = string.format("%d", (mainPanelDevice:get_argument_value(1063) * 4000)) + local hydFlt = string.format("%d", (mainPanelDevice:get_argument_value(1064) * 4000)) + local spoilFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1023)) + local hiFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1024)) + local lowFlag = ExportScript.onff(mainPanelDevice:get_argument_value(1025)) + local hydPressGauge = "HYD PRESS\n" .. "C. " .. hydComb .. " psi\nF. " .. hydFlt .. " psi\n\n" .. spoilFlag .. "|" .. hiFlag .. "|" .. lowFlag + ExportScript.Tools.SendData(51063, hydPressGauge) + local hydPressFlags = "HYD PR. psi\nComb | Flight\n" .. hydComb .. " | " .. hydFlt .. "\n Spo / HI / LW\n" .. spoilFlag .. " | " .. hiFlag .. " | " .. lowFlag + ExportScript.Tools.SendData(51023, hydPressFlags) +end + + +function ExportScript.clockAndTimer(mainPanelDevice) -- Clock and timer on panel A9 ---------------------------------------------------- + local minutes = string.format("%d", mainPanelDevice:get_argument_value(1097) * 60) + if string.len(minutes) < 2 then + minutes = "0" .. minutes + end + local timerMinutes = string.format("%d", mainPanelDevice:get_argument_value(2000) * 60) + local timerSeconds = string.format("%d", mainPanelDevice:get_argument_value(1098) * 60) + local clockNTimer = "Clock\n" .. string.format("%d", mainPanelDevice:get_argument_value(1096) * 12) .. string.char(32) .. minutes .. "\nTimer\n" .. timerMinutes .. "m " .. timerSeconds .. "s" + ExportScript.Tools.SendData(51096, clockNTimer) +end + + +function ExportScript.displayAccel(mainPanelDevice) -- Accelerometer gauge formatted --------------------------------------------------- + -- Accelerometer Gauge A9 + local needle = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(110)) + local needlePos = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(15076)) + local needleNeg = ExportScript.displayAccelCheckValue(mainPanelDevice:get_argument_value(15077)) + accelGauge = "Accel.G\n+" .. string.format("%.1f", needlePos) .. " G\n-| " .. string.format("%.1f", needle) .. " G |-\n" .. string.format("%.1f", needleNeg) .. " G" + ExportScript.Tools.SendData(50110, accelGauge) +end + +function ExportScript.displayAccelCheckValue(accelValue) -- Called from ExportScript.displayAccel() ------------------------------------ + if accelValue >= 0 then + return accelValue * 10 + elseif accelValue < 0 then + return accelValue * 5 + end +end + + +function ExportScript.displayFuel(mainPanelDevice) -- Fuel Gauges and output on A9 and B7 ---------------------------------------------- +--[[FUEL Exports Formatted + + NOTE: In case you are wondering to the weird methodology used below to derive fuel totals, I'll try to explain. + A combination of how the f-14 module is using this fuel data (e.g. 0.9 might mean 900 lbs, 0.0 would mean 000 lbs and 1.0 would mean 000 lbs + also which effects the total if you use math to add them all together, so we can't use a simple method) + Essentially DCS gives you the fuel dial position rather than the actual fuel available. Although this sounds like the same value, it is not. + And also playing into this is the non-existance of certain math functions in lua language like concatenation or rounding. You need to convert + to string and back which is slow + + Because of this (not fully explained) it will create strange output for the total fuel when it rolls between whole values e.g. 15000 to 14900. + So instead we convert them to strings right away and extract the portion of the string (3'rd charachter) that is always correct + (e.g. 1.0 is always 0 and 0.0 is also 0 and 0.4 is 4 etc...) + + we then take the 10k, 1k, 100's etc.. 3'rd charachter and combine them like 15000 + There is still a strange behaviour at first site that is exhibited, that is not so strange once explained: + When rolling over from 15000 to 14900, it will show 15000, then 15900 for a second or two, and then 14900. The reason is that the hundreds dial + on the f-14 rolls quicker than the thousands dial therefore getting updated first instead of at the same time. + the above strange behaviour cannot be corrected unless there is a variable that stores the total fuel value instead of the fuel cockpit dial + value which are two different things. (In my experience most dcs mods only give you access to the latter) + Therefore, we first concatenate the number to 0.X by converting it to a string and formatting it as such, and then extract the 3'rd character + (I get it, nasty work around, If you have a better solution I'd love to hear it.) + +]] + local aftAndL = string.format("%d", mainPanelDevice:get_argument_value(1054) * 7000) + local fwdAndR = string.format("%d", mainPanelDevice:get_argument_value(1055) * 7000) + local RIOFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2117)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2118)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(2119)), 3, 3) .. "00" + local leftFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6000)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6001)), 3, 3) .. "00" + local rightFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6004)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6005)), 3, 3) .. "00" + local totalFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6010)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6011)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6012)), 3, 3) .. "00" + local bingoFuel = string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6020)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6021)), 3, 3) .. string.sub(string.format("%.1f", mainPanelDevice:get_argument_value(6022)), 3, 3) .. "00" + + ExportScript.Tools.SendData(51054, "AFT & L\n" .. aftAndL .. "\nLBS") + ExportScript.Tools.SendData(51055, "FWD & R\n" .. fwdAndR .. "\nLBS") + ExportScript.Tools.SendData(52117, "TOTAL\nFUEL QTY\n" .. RIOFuel .. "\nLBS") -- Return Total RIO Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56000, "L\n" .. leftFuel) -- Return Total Left Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56004, "R\n" .. rightFuel) -- Return Total Right Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56010, "FUEL\n" .. totalFuel .. "\nQTY") -- Return Total Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56020, "BINGO\n" .. bingoFuel) -- Return Total Bingo Fuel Qty Formatted like F-14 Gauge + ExportScript.Tools.SendData(56024, "BINGO " .. bingoFuel .. "\nTOTAL " .. totalFuel .. "\n" .. aftAndL .. " | " .. fwdAndR .. "\n L | R \n" .. leftFuel .. " | " .. rightFuel) -- Nice Multi Gauge +end \ No newline at end of file diff --git a/ExportsModules/hind calculations.xlsx b/ExportsModules/hind calculations.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..05db5ac017454b3aea59b2940dee67100d4e1134 GIT binary patch literal 26856 zcmeFZV~}Orwy2x7D{b4hZQHhO+qNog+gXW9+cqm%Y1~|E?Q`yVcdvLS;{7}Ct`RZj zm=S&an7z%0{#K1OO<50s#0100E>WWM}JaV(YA@ z>|t->q(kd&V~t-30z{q<0QB|#KiB`o68MoiE;~q%Ao3{wCUig}sf{ZL!D7;H1S#GJ zj_$Q4>|#A`l>hEUY8#0_DI-o;U%o!JH^0; z+v-9PMrYjM0U&&3&L|_*h&gMYtKE^Gqx<&U4GEq;3T;DT`R`!3d|_JQj5Pc(RJEy~<|BnX*9!MTMx)%99)ErU1IYhBoI$e+J<ZMikswgC6E}|B<>d>?o2N!TkQpZ$LhpOElh^~vj7auajBt6Jo zyW=P;+sX>0er^+q&ff^vBTUn(VM2Z@#tud0$q3LKmeJTUe5wIl6jZvb4y|it%Rft+ z&hlGMEjfkd3+Ir&n9D#Jbuu(tt??eUCiwk~siI`gVNqw8>&Qvyp=WH}cPE_H`|aJE zMmBp?k&qebiE&zNge3pBpJo&D&3KN-4>rib%F*kefl+v6TVHYU-;G4C$|)%V7yuyY zD}cg(Nygop&dtuz%Fxcv>W^qyrJ`f^ogLXn&*Bq!Zxi$mL;jT9+qhMct0GhS70Kej zU#SYnG{!mBW_56KwW}PS=qM!p5*tV^PtWxeHi_HN9p}7e0%$4Ml>o?7u zJRr4iH!H2=$1czaSgH)q-2P{pIbmt=uxQ3g0T(>3&E5Wa;GZkO!0-M0R8v}xe>-=7E40cg;uw#Fj`mx9)P*B&W zmye>E7-l@biJ)QGT}H?QxxCF8-x~`_yywwPEY~#i;ZN;+&a44P(pHdImDa9bjU7n7 z-l{#y(0~iR$wK!6#oFz_{H)IV**{OL7Qu+G^gZ+D`M4^898tEXJ3%n$c>Eq}N|qwR z`C7_>{9cN^V)YSi{Lygw{+PVc8=NB}VwSr_`(O{h@!dF=Gxr@>8G>$t;y^q#aMPyaW6Sebc3uS5e5uZ#pyZiV#PG7fxHp zD;Fpi_RMwgf``f&5)9h9*)aNDVpRw-x&HhaAvjQBf$*K=p_|z04VlJpTufGfjT{ae zOCutS!-d>DZP&nkO)_Eo&msnzOtUPBqj zq!ReKX%>9GdE_v~0KVi_{K$g1sZXoU3QJ}luJ_r5LugdS>zQFt;eZ}e)oU%X1jGZA z*U8KW>}kQISM{-*$yD?P7L1;3J}{vl-$u$&4%jt<+x5PQ8dc`Ou(}3vG^f%!wpx` ze;6R_nfj@^qVc67`wcFS5ZnM_8k4tWbniM|7MT_jvz?P!=u9&zZN9IM@Cp zQoT&-B^kMryTqCo3+7&GpuamR;y4RU9-lj3Tu|crcsN~0+HwSP<5-0R9_gauhPUUW8eGn=u_!R}amAI0ADA-^TOFiA%Ts zZnE8s*UN{7M<-RUoxS~NXV#`wdAJuR|2p_`ynT7&&EBJ1w}SpEU(~ z7|{;<(c3C7uOmjorea-N-}26>-08@0=&?N>dC%ICEz5j?G|YGiSOP==>wq~S9Avrz zyfXF>E!1(5F^@Ar&0Q5o4j0B$L4~@kY5>{DM7NXP=Xx%&5QV^5^`nY2lkc2Mvn6*~ zI2AtI6M$mL{wlFE1!fH7V`negBw3aBfNGZ2{FF_a^@Bx7jO~XtSsB)xvnBXcFr<)( zRGE4iti~+!M8$|8jmzZ_rvV%7BhbnBP_MG$rxJ6I{4%phj&ks zz#Iu@%K-y>vo)qH&A3K&AQJShxgkzS8iy2ZwWo9^Lqt>BN`R3)Xy^6k)oA`h7RWEs zq!HaKc?}t;g|_oM#?k%D7&zCZ%j>x3soDlkw6cUP^!?Ttdq#5Q`PB_w;cvN(tv!?% zr~w%*zi!HdmO~ow-9i&!B%^f=TQQwZXd+5v!vZ~53~EpJ!g{V`c%_`w}n%PDx=oqF7vn@ur;bc0Ih24La9JXhYCn+-6X8wrw%-B+9q z)Wb+r&Po$BnPPCN$|+BZ4l;$K1TlsbJRbln?j#r8F z8GMJ||BQcsYA*Ar1e8BL4F7CpFm@jxqJZWjEw^xSJq=s}`t=Lk%%LCwR;vI1wW^jlG(^$W|gBvH1cwUzXhEL2Dja};RNMTOy zzx9#*Xb3&B-~a%__rVF+ONSmvOx5d=zvan}UP&jOPxZ56CujDS6Hkst zG=a2zhNga#TF>)!M6~${F|q>uENoqniYLLbPKi1M5t`7}XUZP1O&UESK0uU*I)aT8 zw3UuZRjgQzPL%kh8)zu+<-E~76CAZ6vAP5^xzO7bKPf}37KiD7`9&)1i z3x{Cs)*zRG3wO_J?vWe`$=Cduv|C6y@THjlJ*6H@N-*OHg zB1qG#SP!^Nd*t`|yJm08Tq&SAb6`qI%L?atifz0Bto+MjL8sc4$~fxQjGj(oJ5EJh z$a222UtK63OvjE0bgcjdul8VAj%lgc`Eow8p4Q;9)TOR`>%En{u!LhVv5_>;~VB}^X8rq`BId*=m zlgvXP*@YsJ>bEIVz)Gq-)$#^>ln_O>&@&dL=;%kNV<|qk8~*qy-SS42zsQD9m&@bz zaeaCh*308}fAT!2*U;WfDP;>zqNMa|F;4IE{T*#fulM8n?1t@hf$V1BNAKJ7cv|o0 z4d?H=y$uw)9-rIW(Svq)`R|aIZIjd^tbp1%D*+ zBc8aH{Td$y($&I08*r(+99YLz9|rB>?zLL&z`JQDj?JhQtq0vOigrbJ#bgSnzAHMT8xPGnurA7Ejk{%~c`|~Di}S8LWvvrk$vJu$-K&+?NqxqEY5cf- zR*g_U1?NJtifVL9<#)C|ph;qd)e?nc8U&Te<4v+notd3OpgSsg1mbqlGp6vSqz?OG zwz6kVES$^^3(z6nLDW3OGUy3?VrQ?!c?^VxS(+#6FK-=tDqp+C5q-Tap35E(3~x&e z{D;=Ub;mONCPbQhmKUn@-Kb$M$|rmQmV zG>3mb{1&jx=<*I2BfYvk$(8G>KV%|E{xuFd)G6rZ1JX4c4NhOSuFyf&ZV5O=_>{?# zPQ8&#M6>Te%16ey7B>TIWH_Rc*nW?t5;y{aR# z92zw7*_}c=Mkr0P8f&=nA>A zcmcagHTEABL)$o2#H-i?-FPu^-N2m3Y=}kb>U31#u@U}JL5^pW3;|hnC<%wpZhQJ; z=F44?a~#RBM4VCbu7&BwxdSW_H50RPRCwretC{@;=d|4E6~GVOa+_>;i(^h;7Dr|! zLzHI=&Pk_XTnDg~w?YdIl*P91vNVo0RS?+@AJ+?4^n)@`840 zMC31XSfk0T`cWH68Zi*tT^wXIpS~2<;G2>wG|89-y$H%diUo)*l_9R^s^jl<+Gj45 z@H_em3fge<=P!WT1~VeA7PTYGw7>QbX(mGuqoSnsCeWI9U-o*mSG^ss5b<+fo5%7s zY+NlvOq+SgLAqtX&s;2VhUivnUBP;8*3DvbUw0G1!mTaZ%Ad1AH9NLyL0FQQ_*VZVZQ}F? zmlUaN+kJ6~Z(h@9|E-sOVj_%uq9s3(%2|cPWl?wL55UR~M2-^ZtcTvKY!HaECR-eM z{k$t)zsJpI@ft0P873y!Wy+!cA0y%Af@#_|N^ge@kEZA>sTGM()#{P(RsGAWuWk}X z@PRxR=#3Eg%1L`U&A$WVOI8>pvLb3S0+S@MBxtNBQ@>V5P1f4+$i(;W>EdH3zYtLy zp0E%kCg*z|plGZtpF^Q-;c-w!8`L*!Q&^pe{4KGhEdti?SqUsBZxW|o_Hchff5*~U zh1@~XQR&jBJDvKOJ+l`LGHNFTMYtD+*4}y)Bd%n)!sK>1s8RU9nARc?vPA`b$ekhY z=cpCP5X*2@*)T_PavZ%np1`0oCaz%NZ8b4Zhaq|*0 zi1+>X3XwY5Qtx143+Jw$Fg(vaX0;M`p$iS%qgT5D=@r<(3>J>n4hPb{V5E}bsEb16 zl}?>M8aske77to#<@P8*x``KRihvq`$OTWWxMXN z6W_fWpV-|gUx^Z%Y{5dm^DIQVfvLEw_|2}h)Q$Q4{1qpjd0hMS;L0aDXiu8na{yb+ z=|t9$T0)wbKwE6-coun_=*D+8S%y3i0X}$~XLEygR1#^tpf47cOj$$bx6mL z+A-h1wS;FV82rpH3#k9Pk^f~0<_3-?#!AkP7Pe-88U*vC0Mr0ILdb6S4$eT;#)&c- zVPX+<|F;uBL9UhnQ$;4F*>x;5T0Y#k?UpO%3^bI844ex$SoA&G#{_Wj$8{GkAR^2* zcqLQEYl48KS~XQ+nfC^Ebd_VKLT934{7&v~%ZCY4P?{QG$?ftdCd6~hy9E}p>4L`e zI=bpsXcGfB?K6jVb|jvazD5e&LwI$h?`VIQcu(&bSb;<^a%b}RF{7IJ)Jw?q51KVVqFzYXAgC+z|{D#NIRo5tSXD2Jx7booAS+z zqLT$_#&sDOUZ%WpNzczM)Y0qGi|tk3{!`TY#wvvKT^$eodE3|>ePvh*#f9-IM?tSu zV8>Bc+ehol9&RpGFgE!WJntt#F7wvh^HoVMs*x|!whfZgHAR#n-|-fkGbkNOWzs?- zXreNHi<%HtFKaCQc!xp1h=5n8644D1X>B-?71dAxQE5o6z|*AAcu*va0?o;~gww27 zni;5Fv@B3FF?hA8!8t2Q>C(bqh-mb7}t*Mwd~ z7q5h*TW94vH;s?RN_pK0aKc`bk|kJ1DpD0UXe(kGWpGGa*+nG1s9zMFkaF(8(y>50 zO*j4VA>o{H?y}^#m`&2ad}x_MwyMtFVU57jDePA1z4HSS2%2LCDjPs?pveu1onF&0 z6rlhx>WPRR&8boA{b}>Eu-4yoM97s^??;h}Rpo(wRSQ)yw4}Rd$nX+)X7=lY5|v9$ zbP=BP@a)t=8MASTj~jx~Y&dVx)iAk*Qjt)$dk*st)@K00?&AKwtngoV-^LG0CMrrs zG)+X(jy!YhEcMB2X~0^2qHP41<#=$*xa`F2V(h9TpiQ7vf9Eg(>Knqlw?%XP&pvBUSGIKgQeR`zNtkK z?aDqnkddvgf6tH-2f@&@JTgifz&DgS5p|VLrFIS%>9OZS-1u3#$2)7PcYbMHIN9^a z+1tr^@tNpeJh;wP^T_#zSbJxU=kY3>055p3#^jSEMw}~vi6GO7vZ6V#5Gmw?EB^}p z{7oPi7y9{^8UO3?z#iR~@&9`+4=qFId;M3CJjVD>_h9tp9=`H;e?I;Ns#-EiAp|%OK;GS2lrO2DAGF{e~NT0zT^>raWUCGnh>Z~Z*C0418|qkI$+v3PcQ8~ z0>Bd>5DQUxGGuh}>@BOvePoegR8oZuq*T-go;*FpYXpV*nJ`?IL@6{)0qC zonAl1zJ%Y>toBU-bvmJqDhe}P%RiAxFhUcn`F$7kS~eB?Vz;~hN{X-!`^f^qMh3yB z8Zgu0`#MC9p1>;pnN)Mh3MDeLP_>QGoet3ehyth3X->=J)b8Z$We+Jgb7%>pK@lFZ z0`fUHoPf-%=k%|JHpD^b1v76!a!?NWyoT-&(dNKor|b%=@}?&Ilmd_ks&Rwi#@{j5 zAZlynxzuxzh>AKy<+kzu>~P*WDrYQjnMxn@*9^r7S|Ei|wLvQFPdi@lKq$a^J#-0u zJz?rl<2!&P6=}l#Uimg)i4rV}CCqdox(+YK?jK-933xl^3m_h*qLhZdX~1~`XJ^c) z2XKn%H{~9;-CPiq_yNMqljdL~8+~HhIc0LmtF;!A=M8UDpS7VfM zt&8SBFwV3F)2G>$3{ow?Eu2oNL3))jAPW6u`j?kRUJ4>flqr2H^@h_8Lvl)JGoZ&7 zi~B}NA2QQ8jqwc?i|{SJ=@7eZ#Q;}JG^OYX*cuu@_wgW|2P^fYz4bu^<;?N^RQ0N# z5DCq}%Eni5Ryq>s5}36J(o(|F3pCNYCy`VlrzV|)%Q2)(nhK&L4x?pORd1g%!+wdZ z@t{DY7*Z9H;B6C}afP0uIWD}2HdbBK<+A3}>AlkwK(}7h>=ud#v&c(%#^PReZPIo-wfL}kQ#|!4K{)djAj6rftGd;4V&aN7N5^vqXnuJB$)w9Zq}S$E0xD( z-#Ri}>&3%t@cLE~0$F+HFDvYWU-8KNcq!+u0{y!+7BM8YOby=amCr0(Gqy|vzM~Xf zEQ_hywQJ;=IN~9HwhmWhlLt0XN$=EJe68CDbWe%+CX_f9&Y4$aZZqDw(+m`t$d1QW zPdd5J2!;Ke36Pl)kl9lhp!ZlhB64m#-Aljh*&E-xfRS5j}K=W=+J)D^!A71X1KB}$i~ z$Rup$Fv!yOb?Kxqy_$_KowiItDBKIVdDMn$ok#A!vZ%HMZ66WwwkhdKYuxt?8m-F7Jy`NG=N=ZeQzjr=-8m>p_5?9Rn4M)uROZ+tSAEz>) z!U+9XSxn*AT0L>R55IshxiN%qgs5?GTixGyXnfx?70=r|ul+h|0MtF^Y!07O4ecoG z??NnsyPVyCmEJ1|k00u&SYMFt;8AJsVOJq4!J{=)1{lkhYl3YmcFP;u-bWwlqVC(N z&pa|{qTnugmWP~-f=0IF<6`V`&-dimyE#Vxr@fd+zw*xZF9CMgM>j1EFe>%8_>c;>luOwbwFyP)YFSM^F#C8Y9WwLMz`R$`pA9i<>S8M z!gx;V@hGxlrE2#!d;5=NM)|B>2gap@N(eP-G>HQhjg{r zgFtz`hm!T*a5MRua_?vH>w!BJPUM*mQFz9-0|Y$WY@{Eo-8s{jGR&GWKqoISGMWWM z^I(Wj=j)b@CPrkiVZw-Qd7@^^2w^sk217jw6RSu^^CnrQP9r*{o7nFT1w%%wpX|?; z0`_zV9445R^fC>WV>#T!h+Ypg#(}Rm6^1)(A5iUl?+ux6vh9A^61t`Dq(e8|-z>T_50m3Z#1YBDyhVSjYer>? zhR6dX4ERY+$N}B!Z^FhrUAD=c$29>wOzFq}GX$a<=R#1)sR$apGg;bg(Y8IbdPBEO zDLG#~v@QeU*zq~6>CF3GBE^sZ)FsDy0A$jnyccg`kg1od)55kIioJP~AqO^RdN6Kndg9tr_tjc0Lj2euu_nIxXN#{g@u1UXQ5S|4;E)vF_(H%#Qa_Tuh%Kexq-rXo`HsVi9kX^30Iy;cOr zSD>U=9C#KLD_heQ?z&Bob~p=@6GK&R<;B+PK1r;K99J zUKs?<1buI7ZdffYeC%pgWLZG!coB0N+iIXqs@c5VeL-5g?EPDJhK*cW_Wm_u`vt-% zU(c`V`+uz1?X2w_o&NM^MM(m-Uqmlbi}VcOfP`O7I8bsP2}*`8V{Q2J0e`*N-YZ+) zT!;XvpX>F!_t}q_ZdOe^bAuGSSsYGu{b|Q)DYUMV{c!~fn3n|#$0LzIgfY8FncRJU zM{AXauAysZB@mh?Hhx|8{;1t!3zxyr*&2Y-z(`);PIbYV&D{K*isl-ElfF_ zF(Zz*Gi>3(#7p@6!1**JNuOIf01GM-4%yBnVek0gmL2W9JGni&M>8Jzi^o9lUIe;N zy^_fYC!efOdV9O8etXMV3@8nNlnVJtq(>QL;JaeOAIF z|H_Qr3v9M=@bm@9Ve_LA7lp`ArOaVLNBWWB4{nTXMi~-t#rhr0HrJQ2yrP@z(awf4 zz)nyIj-To!X`TSf)GUAS59jhx{YaO~HL7iiLO2aYN0%n;C-UvGj(bTQ?HIY^voCLtM zv`oYP@QnK2R)q?aGpEUEX^EG&~f{n2Smxju{fgwc&Hi!hv|; zyrL<-;CxD?xM92|Fy2(aR|6h174djJR|<)SCzY>>;%8pLWc0A8GYyzOFoyxpVAz#B zqbrz$fXuSFDRQ;|*v^QoV>0`uf7qvFY&)JfLFm93Wo!ySI5Duw^|*n{f{NiI#6Xz7 z29u95!u%$E0>>clZ$Mr&0YhJAHl3?bp#y3ROL^8xSZkN(P0iw!Zs&8dweL_1o07cJryGf+1IA5CfEma-Ox(`E z3f4p^K+_wtQZz^E4^Eg?uWv~86o3HALlQ)-WBuF^PvK%}AFaGK*#`arCQ%A&Dl^kd zEZ1u;l}H?~9$k8gIb=*49YhBLPKr5RrFrxX@Db{$i#Q4LyQ*-Ck8?!+C26)stj8+i zR8`r#>xyrW_ee1in|f3+NgI6TB>F=A$L69AKOqO1rR`#A>X~*r#FL?IMO$acwMHkp z!><(6iZ+aGyH^-l-Hpx-YncY5TT38@JQ(*3y`!~8H+O2q@G&;z8u9^ri*QBKd&+$` zW}Qvj&mih`Khs1XiJJ2RO^-?kriqrU{^los%Hz%gCFj9YbM8`QaK3I%ACxBWYb;g< ztt^r2+4R0mV^++%h*(a`rCr*F&ZQ*&${7ZKnoC;h^M{ZJ{Gl~1It=dUiF$A+0%Xzv zHLUBgL0AQxF8w>YuCkEP*&d++u7%pL_sd?QFwI}`jkx!4h_R|(nwP&&4}-+$zuIrl z6&BVL@mGAIM;lbDaL|qVj7;(l5xH_OxN>;o~k;61`O4S2z+hbwX~i$e}?<%?4i|q#(&}m9{OOvFx)~G*5G(HJ7c% zS(%|#*SXHZP7nIFF4_*=9LIDVRaR!21JAgDkxc)RdWjko$fLxoXkJ5`)I@Fqa`&nQ zmQz@PqT6MIGYmyW3SdM#*XGup#n5i(8zt3f@fhP4DN-IgMhx+a8*h%EJI_8Y+g zRt5%ykxF-n0ZeQ|xC0bFcAt@MUvte9Oa&rqkRl*-(lIh<|3_i|V^iUd#nU`~vku^+ zKbjZCg&`WSH{v;9$U1eqkiPArMI;&Uslam>8VfcMyzXgsP}p{)O>(D-8=?5;D>Lq| zW%oxfOK(38?ejM8YdOj&Jpe3a_-%Pup)k-6-Lr+oeAd@?;^U<F@xSxfr!8TUP1|zoj9jzi4RP@r#ChzGx`m@SvI~3c37TeQMM>`*gvAJ2fe+M}U~P9t;o@z=k5@ z&C3l?zICi&zlf=O1)ect+|r@W%f61&x0^iOO{{nf6z^qMVaF@ElyLmn`oyn|*Y5rg zAY%FtAbL3%!Hb<2;3QLwlS)*CkG5wK5BtzQcbu`VaF&HGj1`vPxR(i`4i8o1urf{D z2)YSm(Gr-kz$EHn;?Fh6$LFX$9xt6ho43fFV@gm3JzVo7pdi9TkiY9vZf<727+un% zM)jZ!K~nNbjx4l@S&RZQGU#mAT!i#bMwA)!MeuS9hJEj|GbAGNHpL>h^G076rJ&56 zrAAB~bhVDAo9hp^pyWuG1Xxsxdvkh98h3#)DhZEMRzR8h;e6++YIInA9%PGGt&h+N7kZ(E?LyB zpNi?*1YK1~#As^TT$12^iD!lMv{U&#sKQI4c=-OzNY&icuF=?!_nFdY0qa8qofWt; zsOO)Lzep&;dOE7Zi+aS|p(g8qHJ9ijLLU(rfTxpjiIR_sf1tMJM$6XrVf}^-9R_@2 zV$eN2YQ%iORz#auKVpj?(2kx=y4vKI??)CFZUkZS7DP7TDDeci5df2{;}&Y0fIec8 zNpGq<6EPpIt8gb{Twk&P*PnXPLb)ncTE||T^sh4jZvvY6B;8eYakMi`r54X%SyQ^xTgC znms3wOVeVgF&f=rV;{RP`vpWdU`6wxHZlx7#M8K&Qi&z}U-ceWwjug&NBu-U1B8uo zRK^VnceDkjq?|GsEz`4GIT6^H!b=6e8SW~4eE4LQxSOEY)pl6 z&bM)XA%!1Am$iq;(JW@rV_cK7EpF)uy;KQBw_T4ps_4epwHkq8ZEtYewrDkI9t?pv z^5R@qu+ue}OB@6egdan@+BGTjk?IxxHM(b3$<)Y z*9?g%f^Vbb7^2I{4LeD?Jk3|mR;tqXO+&1%ISWRUf=rPz&4kOqEF|qfOcnM;YqAAa zE0W>2G{L^Eg!+{8c zoQr8Ky~oQ$sxGR*4XL3a;%mI81=3tTvfYj0-BkV34YH8c*Jj!Ez`h>SW5N*BZ zhF|rDuyV%2e@L{>qUC@TzGKlA$glVtCSkT$<{9*69%$pa7zep6Y?nJ1*p=ic`p8k# zQcwf;xFWY04u+XKypwF_p{_#H7;@b2sGNnMv5m{h(ePhXPIX`J`PH$v#-S}&%*1cE z-t4t5(etC&EP>uU8`W$%9VIu9+fnys3*y|0#$d-xi=Y00hB#$fI8qk`yJ;t2?0>4* z(&6$f^JmStq&c@ip8jY)b5eumDVDXR%Fxq-4~0$PST?FC5aeNE^p%BN(4XF|5HD7! zAjvQgaZ7bFk-Qe$Y`NN<<`vV~4&v;2j_XBFhvUN8Cd3=FG9T)xvhGh)DSihuJRUzs zpy%t&d4v4_06c$1ynle_AK>{1c>V#N|M|f4r$74#c>WW3Fou64n|uLJ$=6QRfAzoq zN4e~eJ~!rnm4EEkMG<`IWD-7c8Pje+q4@9!RcPwvS)X+E565 zc$vYUMIKT?$|ElYO>~DcZBKYJY3B9lqAYaw3nEQ{`MM)L;hJJhLuSFh!7ro5)Lcn~ zsK=6Wc?#HGNJ6e}&*`hWF)$

!4Uy>n--t)r?)%olpEF+h^+Qx4sVdNC@ZlDDzP6A$%FJ+j|F}SmKrFA5W zn?b85BoKNVkV?4q^dRNzi*wF?GIrt%R!9*qq97rR6x23Kb_dmB9JT`EDM8hX;CI|} z=Z_7UZFi!SVL#m}g@8Qp{9sH6gC|#jR|MUcHv-F)V40QA6eu^#=HbZg2DdpdTUmqR z&nuseOuw?+VG`HL84jc-2*JopC)?H%leFJm`xB6%iB;!JBU-~k88U1*35VJNXbU&R7SRkc8#nal0I^RNlFy&C~ z?;RMWs=CGn5+{jvOvq?!!&;AGAuvKxA*e*wMdEfQR=B2k^W<&8ujV$$9k2+OF^X*| zUxZ-5(ki*zMO|vA1fyfHQgNKkWDf*8eon|XmiZeJ^^bfyg;c=$ba5`{NCVOwaCqV{ zQq0OKZ8Rk~7ZE32QDM<~7KOy=SO_Gx-3>>*O(Am;GT z8!O!7%w8;5v#IG-ckOCLYZKdQd$~A6CkU;j5RIc(%_a56oVdM%0(KBt)>|6!tCT4g z089*=08++)r`L@qUf2eAh+&9)?uUO^S{PPt6*bPsqjDui=4G$fy0qOEKKAD0=CpXr+PWF!mzZn^mK;UyRrx$bP)u88p~|%r+vH${6}XO695=K;_LJtM z7N)1V4uJVs)wPN54Lcyn+3glFAb>nFgH|at5MEKLTC=~0HbV7 zw7U?Amw!(PUW)sK<=Eh43V4JiDkpQ?b6dmlz~u-57p~_VH(|ybxiw>Mjx=M&Ra%CA z!oz|@c918V`7N2t;yuMK6vXYJ1ox8|NWrLPdR9n5gtw8dDlU6Pm7e~TE(JKj(^IyG z5OfFT3_|EVdL44A%~@>TM*fip#9_ar6Yu6reBkD`8q-1){HfTw>1EpZK4-j6isjqZ zA7{bgSZ%|$X28)JinD%#`({V2eUfElRAtLx$`W?SzY;sh>g-NN_pAG0TmdJj=|!wMSq*$0o#_euu6Nu=`;_vM)=;R@ZQy7}D8k#L-0qmlY> zboL25rN$#b_C=cQ_$3miV>*ZSTd>`)J4=zPPW<$#tFD$OzNWme?ir(BfR{3pN>`nI z1%dP|{ZO_$M0|)468+y?1Z@Uuyn=;H_Vd)<#`G-pWp^|^7wf{;0*id~5hO2fQ*wwFyY8;;3szz2wwurJM&BD+e~pIQi}^2U#+Esa1b zrPeC}PNHxro)@l^J^l25iK38I72;k+5@rg!c+0z7ccpi}K4MLf;-gNEc^aK$L^2YS z2ui-f=?zmn8qGhG^iiqO`o|GAIvuetx%-F$z}zAJIE z0*C=d^fB;CzM(Y-Lqxb_UzE13`vf>x_6Xc;ZSFp@=ba`zAHO3@MO<*o4VA)e*#Q9! zYJ;niAPobeVR*6Ih9x_eFA5eS*4zp^n*^54a7E=#<5>!L*!hRfl?HL739L@EZzXb8 ztf=uR_iB@cHabHIYtz_w4kM|G(S~NIX_zwI^gVeih%iscJ@-3`XRdV?89Vce{Or`(ZpxX;eG&t!3n&bXCfVV)ixXLx@n6Mw9Y zfVnT3#C>VR*9-rpt@AI5{O|2pf6AjOzF+dkA7?9lX~U82{Dpup>t+!Cg~~EG#Ay?3 zmhpfz!s|l`T78sQ9Mj;Z51$jaPjMM<0*QQ!eg`hHshrVhV@TZi`QSJ5a@sgrMNw!f zsO-?!&V4LVH7)T}d0`ewRA{N{Lk+7NXi_p9l!;45L^8GY(MH-Sz0K&Cna8+HKPLSZ zhDDF2zT+E!vxZdD9)r@IjNpKJxlFkB^^F<`eA7XmrU%9CyvJJzPV<;Ds5@x3TVZYh{ktrDkU*`@Bfzi%64RGFFecZh+oOvw+WwNqjWe{aj{@q5g3xkP zKDj2Yb~dxO_O|PEeo;C*`g8&_HL?8}9$qZkZOKCX1Z_k`GCAgv;v970N=9Hp=(izH z3=VLmvve})Vc*OM`|TFFbU&v2ZTdxznfU2J+yxhjMeh-~DN|HjDI*U2xbKZr&F3x3 zO^rVfQ+SRa8{8|HlgKDBFFKNhl%Rn=E`NOt`jnIZf-aX3|;nKgS5$xCjAQPqeIp}7lYA_jIm@6Zg4 zMA!Hbn57^b)BxtH%ISrAQT@y zYp!|loSLZ&;6f5^Hk0awPbmQ~J1xQ2wM`s`_L*2Coq1*K$xXJtN4H{U#_u=$`>U({ z-?e|3y;ocOOAoBR0tVvOsfEUNM*nL8MfnB5O{)1tsUYtGkL4XbtPmLOJ(B|c4=aeY z-uL~(&--3>>D*ltw|PI?q&|Iy#o~{>2kyG*Y+>B;djIro(QD7K%Rij+yYL+E%SS7^ z9tihLU3yMnri%u{S#QO!cFyN-ms&VCmilmqO_4IX(%{?{tt6mHs;jL z*5{pfNA%@K1t$64Z?5M~c^B=!wJuQ3-H>zf?g>8IFV2}{>6@1S_P71B+bjOIS}pw{ zKhfuq^yC!i1SUU0VB!=&PJW361*54C7-Uc|XOd(7 zZ3CXx_sqZKdG1PE-VNYsT$AJx{$)cVqJ>6ac=!+=%Cuy@W?H`CTO;da7s}F zt2@gY7w;)yL5p%18t+K3+;Hj09mz*#?^AQ6(jS`Ln$E{`a`mP?(+U(gOs`CTDWb9L zNT|O&@7l$(KRy(e`|zx}x_!!?&22xX{aU`+GAU=pkGc&Hrq1c^dbuqje$(Q`dQ<0Y z&&uv?H)Vf)tb#@LKHDp~GaI(_7D{e?m3g&!=?w0Y`ik7}ML%){*yebBQL`5A*vNMK zO3zk*k4XEYe|mHo7Ea2U(Uxra{ap5USABP8@#n`B6POYo$`n37!Tc}FOzpDuk<*qR zPZ)gkv$)-uZ&iHGJZ`4{FZF8K-6@AAwg!Ja+?rnFvAZIhBkp>oUC8ZgDJy=m`n|T} zy<(eh^jk6I?yL>%zpj4XZ(#H9@t4D2KUD?R>HUmNH&(s>Z___+Sn_3L(gjX;V87h} z7F{qJ%UuTn-lztko`??92%>p`J1ZeARB%O$t`Yr|XoOZH;OThKlS5%=Mx$#+J**a? zm4V>}@R|moW{AZYN7tg8gMMHs!XzEw;XqJFU>skHZVLL5eh5od4To77s0=G4Rw4$Hsf^Gu(*(nGUmdb)nfcLO0pbm;MxZa|M0n$c6^aocZ-6@o#CzkG zBeDr#Z(ub6w>MV0A)5g4238}`r)Ux0xap2!1bo7lcyAQ=A)5g92Dn#%ZUSy^*ast< z0PzM^Bhbfm5Z=fS0UJSRga_SC=))uk19L;c2Ewx}jzJT21JTDA5C%4eA$t<*hy%J| z=sk3VVH3h}7>4MtqZ@|ay+s(dAOeSBh|Vs$Vd#BBgkc*ZaTtc^DWV&O-myX$b|4C3 z7;-lYT{mjS1)-OLVO}%?14cInT{~*S6Ir`#9FlfuGc>@P6*!i{z#s>N-+;C2odggM E0HW1$CIA2c literal 0 HcmV?d00001 diff --git a/lib/Maps.lua b/lib/Maps.lua new file mode 100644 index 0000000..ec90303 --- /dev/null +++ b/lib/Maps.lua @@ -0,0 +1,43 @@ +-- Ikarus and D.A.C. Export Script +-- +-- Map Config File +-- +-- Copyright by Michael aka McMicha 2014 +-- Contact dcs2arcaze.micha@farbpigmente.org +-- +-- This file contains the data to identify the loaded map. +-- +-- The data can be read in the editor. +-- Load the corresponding map and read the latitude and longitude values and write specify the decimal degree format (convert from degrees, decimal to decimal degrees). +-- Lat1 and Long1 contain the coordinates of the upper left corner. +-- Lat2 and Long2 contain the coordinates of the lower right corner. +-- + +ExportScript.Version.Maps = "1.2.1" + +-- Maps +ExportScript.Maps = {} +-- Caucasus Map +ExportScript.Maps.CaucasusBase = {} +ExportScript.Maps.CaucasusBase.Lat1 = 48.384867 -- high left Latitude 48° 23. 92 N +ExportScript.Maps.CaucasusBase.Long1 = 26.779467 -- high left Longitude 26° 46.768 E +ExportScript.Maps.CaucasusBase.Lat2 = 38.865183 -- low right Latitude 38° 51.911 N +ExportScript.Maps.CaucasusBase.Long2 = 47.14225 -- low right Longitude 47° 8.535 E +-- Nevada (NTTR) Map +ExportScript.Maps.Nevada = {} -- Nevada Map +ExportScript.Maps.Nevada.Lat1 = 37.578333 -- high left Latitude 37° 34' 42" N +ExportScript.Maps.Nevada.Long1 = -119.964722 -- high left Longitude 119° 57' 53" W +ExportScript.Maps.Nevada.Lat2 = 34.651667 -- low right Latitude 34° 39' 06" N +ExportScript.Maps.Nevada.Long2 = -114.536111 -- low right Longitude 114° 32' 10" W +-- Normandy Map +ExportScript.Maps.Normandy = {} -- Normandy Map +ExportScript.Maps.Normandy.Lat1 = 53.85556 -- high left Latitude 53° 51' 20" N +ExportScript.Maps.Normandy.Long1 = -15.02667 -- high left Longitude 15° 01' 36" W +ExportScript.Maps.Normandy.Lat2 = 45.07167 -- low right Latitude 45° 04' 18" N +ExportScript.Maps.Normandy.Long2 = 8.437222 -- low right Longitude 08° 26' 14" E +-- Persian Gulf Map +ExportScript.Maps.PersianGulf = {} +ExportScript.Maps.PersianGulf.Lat1 = 30.50833 -- high left Latitude 30° 20.630 N +ExportScript.Maps.PersianGulf.Long1 = 45.15167 -- high left Longitude 44° 54.906 E +ExportScript.Maps.PersianGulf.Lat2 = 22.43528 -- low right Latitude 22° 24.127 N +ExportScript.Maps.PersianGulf.Long2 = 61.67306 -- low right Longitude 61° 36.263 E diff --git a/lib/Tools.lua b/lib/Tools.lua new file mode 100644 index 0000000..16abee1 --- /dev/null +++ b/lib/Tools.lua @@ -0,0 +1,992 @@ +-- Ikarus and D.A.C. Export Script +-- +-- Tools +-- +-- Copyright by Michael aka McMicha 2014 - 2018 +-- Contact dcs2arcaze.micha@farbpigmente.org + +ExportScript.Tools = {} +ExportScript.Version.Tools = "1.2.1" + +function ExportScript.Tools.WriteToLog(message) + if ExportScript.logFile then + local ltmp, lMiliseconds = math.modf(os.clock()) + if lMiliseconds==0 then + lMiliseconds='000' + else + lMiliseconds=tostring(lMiliseconds):sub(3,5) + end + ExportScript.logFile:write(os.date("%X")..":"..lMiliseconds.." : "..message.."\r\n") + end +end + +function ExportScript.Tools.createUDPSender() + ExportScript.socket = require("socket") + + local lcreateUDPSender = ExportScript.socket.protect(function() + ExportScript.UDPsender = ExportScript.socket.udp() + ExportScript.socket.try(ExportScript.UDPsender:setsockname("*", 0)) + --ExportScript.socket.try(ExportScript.UDPsender:settimeout(.004)) -- set the timeout for reading the socket; 250 fps + end) + + local ln, lerror = lcreateUDPSender() + if lerror ~= nil then + ExportScript.Tools.WriteToLog("createUDPSender protect: "..ExportScript.Tools.dump(ln)..", "..ExportScript.Tools.dump(lerror)) + return + end + + ExportScript.Tools.WriteToLog("Create UDPSender") +end + +function ExportScript.Tools.createUDPListner() + if ExportScript.Config.Listener then + ExportScript.socket = require("socket") + + local lcreateUDPListner = ExportScript.socket.protect(function() + ExportScript.UDPListener = ExportScript.socket.udp() + ExportScript.socket.try(ExportScript.UDPListener:setsockname("*", ExportScript.Config.ListenerPort)) + ExportScript.socket.try(ExportScript.UDPListener:settimeout(.001)) -- set the timeout for reading the socket; 250 fps + end) + + local ln, lerror = lcreateUDPListner() + if lerror ~= nil then + ExportScript.Tools.WriteToLog("createUDPListner protect: "..ExportScript.Tools.dump(ln)..", "..ExportScript.Tools.dump(lerror)) + return + end + + ExportScript.Tools.WriteToLog("Create UDPListner") + end +end + +function ExportScript.Tools.ProcessInput() + local lCommand, lCommandArgs, lDevice + -- C1,3001,4 + -- lComand = C + -- lCommandArgs[1] = 1 => lDevice + -- lCommandArgs[2] = 3001 => ButtonID + -- lCommandArgs[3] = 4 => Value + if ExportScript.Config.Listener then + --local lInput,from,port = ExportScript.UDPListener:receivefrom() + ExportScript.UDPListenerValues = {} + + local lUDPListenerReceivefrom = ExportScript.socket.protect(function() + --[[ + local try = ExportScript.socket.newtry(function() + ExportScript.UDPListener:close() + ExportScript.Tools.createUDPListner() + end) + ExportScript.UDPListenerValues.Input, ExportScript.UDPListenerValues.from, ExportScript.UDPListenerValues.port = try(ExportScript.UDPListener:receivefrom()) + ]] -- Bei einer newtry Funktion wird im fehlerfall deren inhalt ausgeführt. + ExportScript.UDPListenerValues.Input, ExportScript.UDPListenerValues.from, ExportScript.UDPListenerValues.port = ExportScript.socket.try(ExportScript.UDPListener:receivefrom()) + end) + + local ln, lerror = lUDPListenerReceivefrom() + if lerror ~= nil and lerror ~= "timeout" then + ExportScript.Tools.WriteToLog("UDPListenerReceivefrom protect: "..ExportScript.Tools.dump(ln)..", "..ExportScript.Tools.dump(lerror)) + ExportScript.UDPListener:close() + ExportScript.Tools.createUDPListner() + end + + local lInput, from, port = ExportScript.UDPListenerValues.Input, ExportScript.UDPListenerValues.from, ExportScript.UDPListenerValues.port + + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("lInput: "..ExportScript.Tools.dump(lInput)..", from: "..ExportScript.Tools.dump(from)..", port: "..ExportScript.Tools.dump(port)) + end + if lInput then + lCommand = string.sub(lInput,1,1) + + if lCommand == "R" then -- R == Reset + if ExportScript.Config.IkarusExport then + ExportScript.Tools.ResetChangeValues() + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("Reset fuer Ikarus Daten") + end + end + if ExportScript.Config.DACExport then + ExportScript.Tools.ResetChangeValuesDAC() + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("Reset fuer DAC Daten") + end + end + end + + if (lCommand == "C") then + lCommandArgs = ExportScript.Tools.StrSplit(string.sub(lInput,2),",") + lDeviceID = tonumber(lCommandArgs[1]) + if lDeviceID < 1000 then + -- DCS Modules + lDevice = GetDevice(lCommandArgs[1]) + if ExportScript.FoundDCSModule and type(lDevice) == "table" then + lDevice:performClickableAction(lCommandArgs[2],lCommandArgs[3]) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("performClickableAction for Device: "..lCommandArgs[1]..", ButtonID: "..lCommandArgs[2]..", Value: "..lCommandArgs[3]) + end + end + elseif lDeviceID == 1000 then + -- ExportScript.genericRadio(key, value) + if ExportScript.FoundDCSModule then + ExportScript.genericRadio(lCommandArgs[2],lCommandArgs[3]) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("genericRadio, ButtonID: "..lCommandArgs[2]..", Value: "..lCommandArgs[3]) + end + end + elseif lDeviceID == 2000 then + -- Flaming Cliffs Module (Buttons) + if ExportScript.FoundFCModule then + -- ComamndID > 3000, because DAC or Ikarus add 300 to CommandID + local lComandID = (tonumber(lCommandArgs[2]) - 3000) + if tonumber(lCommandArgs[3]) == 1.0 then + LoSetCommand(lComandID) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("LoSetCommand, CommandID: "..lComandID) + end + end + end + elseif lDeviceID == 2001 then + -- Flaming Cliffs Module (analog axies) + if ExportScript.FoundFCModule then + -- ComamndID > 3000, because DAC or Ikarus add 3000 to CommandID + local lComandID = (tonumber(lCommandArgs[2]) - 3000) + LoSetCommand(lComandID, lCommandArgs[3]) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("LoSetCommand, CommandID: "..lComandID..", Value: "..lCommandArgs[3]) + end + end + end + end + end + end +end + +function ExportScript.Tools.ProcessOutput() + local coStatus + --local currentTime = LoGetModelTime() + + local lMyInfo = LoGetSelfData() + if lMyInfo ~= nil then + if ExportScript.ModuleName ~= lMyInfo.Name then + ExportScript.NoLuaExportBeforeNextFrame = false + ExportScript.Tools.SelectModule() -- point globals to Module functions and data. + return + end + lMyInfo = nil + end + + local lDevice = GetDevice(0) + if type(lDevice) == "table" and ExportScript.FoundDCSModule then + + lDevice:update_arguments() + + --if currentTime - ExportScript.lastExportTimeHI > ExportScript.Config.ExportInterval then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run hight importance export universally") + ExportScript.Tools.ProcessArguments(lDevice, ExportScript.EveryFrameArguments) -- Module arguments as appropriate + else + ExportScript.coProcessArguments_EveryFrame = coroutine.create(ExportScript.Tools.ProcessArguments) + coStatus = coroutine.resume( ExportScript.coProcessArguments_EveryFrame, lDevice, ExportScript.EveryFrameArguments) + end + + if ExportScript.Config.IkarusExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run hight importance export Ikarus") + ExportScript.ProcessIkarusDCSHighImportance(lDevice) -- Module, as appropriate; determined in ExportScript.Tools.SelectModule() + else + ExportScript.coProcessIkarusDCSHighImportance = coroutine.create(ExportScript.ProcessIkarusDCSHighImportance) + coStatus = coroutine.resume( ExportScript.coProcessIkarusDCSHighImportance, lDevice) + end + end + + if ExportScript.Config.DACExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run hight importance export DAC") + ExportScript.ProcessDACHighImportance(lDevice) -- Module, as appropriate; determined in ExportScript.Tools.SelectModule() + else + ExportScript.coProcessDACHighImportance = coroutine.create(ExportScript.ProcessDACHighImportance) + coStatus = coroutine.resume( ExportScript.coProcessDACHighImportance, lDevice) + end + end + + if ExportScript.FirstNewDataSend and ExportScript.FirstNewDataSendCount == 0 then + if ExportScript.Config.DACExport then + ExportScript.Tools.ResetChangeValuesDAC() + end + if ExportScript.Config.IkarusExport then + ExportScript.Tools.WriteToLog("reset dcs ikarus") + ExportScript.Tools.ResetChangeValues() + end + ExportScript.FirstNewDataSend = false + else + ExportScript.FirstNewDataSendCount = ExportScript.FirstNewDataSendCount - 1 + end + + --ExportScript.lastExportTimeHI = currentTime + ExportScript.lastExportTimeHI = ExportScript.lastExportTimeHI + ExportScript.Config.ExportInterval + --end + + --if currentTime - ExportScript.lastExportTimeLI > ExportScript.Config.ExportLowTickInterval then + if ExportScript.lastExportTimeHI > ExportScript.Config.ExportLowTickInterval then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run low importance export universally") + ExportScript.Tools.ProcessArguments(lDevice, ExportScript.Arguments) -- Module arguments as appropriate + else + ExportScript.coProcessArguments_Arguments = coroutine.create(ExportScript.Tools.ProcessArguments) + coStatus = coroutine.resume( ExportScript.coProcessArguments_Arguments, lDevice, ExportScript.Arguments) + end + + if ExportScript.Config.IkarusExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run low importance export Ikarus") + ExportScript.ProcessIkarusDCSLowImportance(lDevice) -- Module as appropriate; determined in ExportScript.Tools.SelectModule() + else + ExportScript.coProcessIkarusDCSLowImportance = coroutine.create(ExportScript.ProcessIkarusDCSLowImportance) + coStatus = coroutine.resume( ExportScript.coProcessIkarusDCSLowImportance, lDevice) + end + end + + if ExportScript.Config.DACExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run low importance export DAC") + ExportScript.ProcessDACLowImportance(lDevice) -- Module, as appropriate; determined in ExportScript.Tools.SelectModule() + else + ExportScript.coProcessDACLowImportance = coroutine.create(ExportScript.ProcessDACLowImportance) + coStatus = coroutine.resume( ExportScript.coProcessDACLowImportance, lDevice) + end + end + + --ExportScript.lastExportTimeLI = currentTime + ExportScript.lastExportTimeHI = 0 + end + + if ExportScript.Config.IkarusExport then + ExportScript.Tools.FlushData() + end + + if ExportScript.Config.DACExport then + for i=1, #ExportScript.Config.DAC, 1 do + ExportScript.Tools.FlushDataDAC(i) + end + end + elseif ExportScript.FoundFCModule then -- Assume FC Aircraft + + ExportScript.AF.EventNumber = os.clock() --tonumber(tostring(os.clock()):gsub(".", "")) + + --if currentTime - ExportScript.lastExportTimeHI > ExportScript.Config.ExportInterval then + + if ExportScript.Config.IkarusExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run hight importance export Ikarus") + ExportScript.ProcessIkarusFCHighImportance() + else + ExportScript.coProcessGlassCockpitFCHighImportance = coroutine.create(ExportScript.ProcessIkarusFCHighImportance) + coStatus = coroutine.resume( ExportScript.coProcessGlassCockpitFCHighImportance) + end + end + if ExportScript.Config.DACExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run hight importance export DAC") + ExportScript.ProcessDACHighImportance(lDevice) + else + ExportScript.coProcessDACHighImportance = coroutine.create(ExportScript.ProcessDACHighImportance) + coStatus = coroutine.resume( ExportScript.coProcessDACHighImportance, lDevice) + end + end + + if ExportScript.FirstNewDataSend and ExportScript.FirstNewDataSendCount == 0 then + if ExportScript.Config.DACExport then + ExportScript.Tools.ResetChangeValuesDAC() + end + if ExportScript.Config.IkarusExport then + ExportScript.Tools.WriteToLog("reset fc ikarus") + ExportScript.Tools.ResetChangeValues() + end + ExportScript.FirstNewDataSend = false + else + ExportScript.FirstNewDataSendCount = ExportScript.FirstNewDataSendCount - 1 + end + + --ExportScript.lastExportTimeHI = currentTime + ExportScript.lastExportTimeHI = ExportScript.lastExportTimeHI + ExportScript.Config.ExportInterval + --end + + --if currentTime - ExportScript.lastExportTimeLI > ExportScript.Config.ExportLowTickInterval then + if ExportScript.lastExportTimeHI > ExportScript.Config.ExportLowTickInterval then + if ExportScript.Config.IkarusExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run low importance export Ikarus") + ExportScript.ProcessIkarusFCLowImportance() + else + ExportScript.coProcessIkarusFCLowImportance = coroutine.create(ExportScript.ProcessIkarusFCLowImportance) + coStatus = coroutine.resume( ExportScript.coProcessIkarusFCLowImportance) + end + end + + if ExportScript.Config.DACExport then + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("run low importance export DAC") + ExportScript.ProcessDACLowImportance(lDevice) + else + ExportScript.coProcessDACLowImportance = coroutine.create(ExportScript.ProcessDACLowImportance) + coStatus = coroutine.resume( ExportScript.coProcessDACLowImportance, lDevice) + end + end + + --ExportScript.lastExportTimeLI = currentTime + ExportScript.lastExportTimeHI = 0 + end + + if ExportScript.Config.IkarusExport then + ExportScript.Tools.FlushData() + end + + if ExportScript.Config.DACExport then + for i=1, #ExportScript.Config.DAC, 1 do + ExportScript.Tools.FlushDataDAC(i) + end + end + else -- No Module found + if ExportScript.FoundNoModul then + ExportScript.Tools.WriteToLog("No Module Found.") + ExportScript.Tools.SelectModule() -- point globals to Module functions and data. + end + end +end + +function ExportScript.Tools.StrSplit(str, delim, maxNb) + -- Eliminate bad cases... + if string.find(str, delim) == nil then + return { str } + end + if maxNb == nil or maxNb < 1 then + maxNb = 0 -- No limit + end + local lResult = {} + local lPat = "(.-)" .. delim .. "()" + local lNb = 0 + local lLastPos + for part, pos in string.gfind(str, lPat) do + -- for part, pos in string.gmatch(str, lPat) do -- Lua Version > 5.1 + lNb = lNb + 1 + lResult[lNb] = part + lLastPos = pos + if lNb == maxNb then break end + end + -- Handle the last field + if lNb ~= maxNb then + lResult[lNb + 1] = string.sub(str, lLastPos) + end + return lResult +end + +-- remove trailing and leading whitespace from string. +function ExportScript.Tools.trim(s) + return (s:gsub("^%s*(.-)%s*$", "%1")) +end + +-- remove leading whitespace from string. +function ExportScript.Tools.ltrim(s) + return (s:gsub("^%s*", "")) +end + +-- remove trailing whitespace from string. +function ExportScript.Tools.rtrim(s) + local n = #s + while n > 0 and s:find("^%s", n) do n = n - 1 end + return s:sub(1, n) +end +-- The following more obvious implementation is generally not +-- as efficient, particularly for long strings since Lua pattern matching +-- starts at the left (though in special cases it is more efficient). +-- Related discussion on p.197 of book "Beginning Lua Programming". +--[[ +function ExportScript.Tools.rtrim(s) + return (s:gsub("%s*$", "")) +end +]] + +-- substitute variables into string. +-- Example: subst("a=$(a),b=$(b)", {a=1, b=2}) --> "a=1,b=2". +function ExportScript.Tools.subst(s, t) + -- note: handle {a=false} substitution + s = s:gsub("%$%(([%w_]+)%)", function(name) + local val = t[name] + return val ~= nil and tostring(val) + end) + return s +end + +--[[ +function ExportScript.Tools.round(num, idp) + local lMult = 10^(idp or 0) + return math.floor(num * lMult + 0.5) / lMult +end +]] + +-- this function negate the numeric input values +function ExportScript.Tools.negate(Input) + if type(Input) == "number" then + return (Input > 0.0 and (0 - Input) or (Input - Input - Input)) + else + return Input + end +end + +-- Status Gathering Functions +function ExportScript.Tools.ProcessArguments(device, arguments) + local lArgument , lFormat , lArgumentValue + local lCounter = 0 + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("======Begin========") + end + + for lArgument, lFormat in pairs(arguments) do + lArgumentValue = string.format(lFormat,device:get_argument_value(lArgument)) + if ExportScript.Config.Debug then + lCounter = lCounter + 1 + ExportScript.Tools.WriteToLog(lCounter..". ID: "..lArgument..", Fromat: "..lFormat..", Value: "..lArgumentValue) + end + if ExportScript.Config.IkarusExport then + ExportScript.Tools.SendData(lArgument, lArgumentValue) + end + if ExportScript.Config.DACExport then + ExportScript.Tools.SendDataDAC(lArgument, lArgumentValue) + end + end + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("======End========") + end +end + +-- Network Functions for GlassCockpit +function ExportScript.Tools.SendData(id, value) + if id == nil then + ExportScript.Tools.WriteToLog("Export id is nil") + return + end + if value == nil then + ExportScript.Tools.WriteToLog("Value for id "..id.." is nil") + return + end + + if string.len(value) > 3 and value == string.sub("-0.00000000",1, string.len(value)) then + value = value:sub(2) + end + + if ExportScript.LastData[id] == nil or ExportScript.LastData[id] ~= value then + local ldata = id .. "=" .. value + local ldataLen = string.len(ldata) + + if ldataLen + ExportScript.PacketSize > 576 then + ExportScript.Tools.FlushData() + end + + table.insert(ExportScript.SendStrings, ldata) + ExportScript.LastData[id] = value + ExportScript.PacketSize = ExportScript.PacketSize + ldataLen + 1 + end +end + +-- Network Functions for DAC +function ExportScript.Tools.SendDataDAC(id, value) + for hardware=1, #ExportScript.Config.DAC, 1 do + if id == nil then + ExportScript.Tools.WriteToLog("Export id is nil") + return + end + if value == nil then + ExportScript.Tools.WriteToLog("Value for id "..id.." is nil") + return + end + if ExportScript.Config.DAC[hardware] == nil then + ExportScript.Tools.WriteToLog("unknown hardware ID '"..hardware.."' for value: '"..id.."="..value.."'") + return + end + + if string.len(value) > 3 and value == string.sub("-0.00000000",1, string.len(value)) then + value = value:sub(2) + end + + if ExportScript.LastDataDAC[hardware][id] == nil or ExportScript.LastDataDAC[hardware][id] ~= value then + local ldata = id .. "=" .. value + local ldataLen = string.len(ldata) + + if ldataLen + ExportScript.PacketSizeDAC[hardware] > 576 then + ExportScript.Tools.FlushDataDAC(hardware) + end + + table.insert(ExportScript.SendStringsDAC[hardware], ldata) + ExportScript.LastDataDAC[hardware][id] = value + ExportScript.PacketSizeDAC[hardware] = ExportScript.PacketSizeDAC[hardware] + ldataLen + 1 + --ExportScript.Tools.WriteToLog("id=ldata: "..ldata) + --ExportScript.Tools.WriteToLog("ExportScript.LastDataDAC["..hardware.."]: "..ExportScript.Tools.dump(ExportScript.LastDataDAC[hardware])) + end + end +end + +--[[ +function ExportScript.Tools.FlushData() + if #ExportScript.SendStrings > 0 then + local lES_SimID = "" + + lES_SimID = ExportScript.SimID + + local lPacket = lES_SimID .. table.concat(ExportScript.SendStrings, ExportScript.Config.IkarusSeparator) .. "\n" + ExportScript.socket.try(ExportScript.UDPsender:sendto(lPacket, ExportScript.Config.IkarusHost, ExportScript.Config.IkarusPort)) + + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushData: send the following data to host: "..ExportScript.Config.IkarusHost..", Port: "..ExportScript.Config.IkarusPort..", Data: "..lPacket) + end + + ExportScript.SendStrings = {} + ExportScript.PacketSize = 0 + else + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushData: nothing sent") + end + end +end +]] + +function ExportScript.Tools.FlushData() + local lFlushData = ExportScript.socket.protect(function() + if #ExportScript.SendStrings > 0 then + local lES_SimID = "" + + lES_SimID = ExportScript.SimID + + local lPacket = lES_SimID .. table.concat(ExportScript.SendStrings, ExportScript.Config.IkarusSeparator) .. "\n" + --ExportScript.socket.try(ExportScript.UDPsender:sendto(lPacket, ExportScript.Config.IkarusHost, ExportScript.Config.IkarusPort)) + local try = ExportScript.socket.newtry(function() ExportScript.UDPsender:close() ExportScript.Tools.createUDPSender() ExportScript.Tools.ResetChangeValues() end) + try(ExportScript.UDPsender:sendto(lPacket, ExportScript.Config.IkarusHost, ExportScript.Config.IkarusPort)) + + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushData: send to host: "..ExportScript.Config.IkarusHost..", Port: "..ExportScript.Config.IkarusPort..", Data: "..lPacket) + end + + ExportScript.SendStrings = {} + ExportScript.PacketSize = 0 + else + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushData: nothing sent") + end + end + end) + + local ln, lerror = lFlushData() + if lerror ~= nil then + ExportScript.Tools.WriteToLog("FlushData protect: "..ExportScript.Tools.dump(ln)..", "..ExportScript.Tools.dump(lerror)) + end +end + + +function ExportScript.Tools.FlushDataDAC(hardware) + hardware = hardware or 1 + + if ExportScript.Config.DAC[hardware] == nil then + ExportScript.Tools.WriteToLog("FlushDataDAC: unknown hardware ID '"..hardware.."'") + return + end + + local lFlushDataDAC = ExportScript.socket.protect(function() + if #ExportScript.SendStringsDAC[hardware] > 0 then + local lPacket = ExportScript.SimID .. table.concat(ExportScript.SendStringsDAC[hardware], ExportScript.Config.DAC[hardware].Separator) .. "\n" + --ExportScript.socket.try(ExportScript.UDPsender:sendto(lPacket, ExportScript.Config.DAC[hardware].Host, ExportScript.Config.DAC[hardware].SendPort)) + local try = ExportScript.socket.newtry(function() ExportScript.UDPsender:close() ExportScript.Tools.createUDPSender() ExportScript.Tools.ResetChangeValuesDAC() end) + try(ExportScript.UDPsender:sendto(lPacket, ExportScript.Config.DAC[hardware].Host, ExportScript.Config.DAC[hardware].SendPort)) + + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushDataDAC["..hardware.."]: send to host: "..ExportScript.Config.DAC[hardware].Host..", Port: "..ExportScript.Config.DAC[hardware].SendPort..", Data: "..lPacket) + end + + ExportScript.SendStringsDAC[hardware] = {} + ExportScript.PacketSizeDAC[hardware] = 0 + else + if ExportScript.Config.SocketDebug then + ExportScript.Tools.WriteToLog("FlushDataDAC["..hardware.."]: nothing sent") + end + end + end) + + local ln, lerror = lFlushDataDAC() + if lerror ~= nil then + ExportScript.Tools.WriteToLog("FlushDataDAC protect: "..ExportScript.Tools.dump(ln)..", "..ExportScript.Tools.dump(lerror)) + end +end + +function ExportScript.Tools.ResetChangeValues() + ExportScript.LastData = {} +end + +function ExportScript.Tools.ResetChangeValuesDAC() + for i = 1, #ExportScript.Config.DAC, 1 do + ExportScript.LastDataDAC[i] = {} + end +end + +function ExportScript.Tools.SelectModule() + -- Select Module... + ExportScript.FoundDCSModule = false + ExportScript.FoundFCModule = false + ExportScript.FoundNoModul = true + + local lMyInfo = LoGetSelfData() + if lMyInfo == nil then -- End SelectModule, if don't selected a aircraft + return + end + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("MyInfo: "..ExportScript.Tools.dump(lMyInfo)) + end + + ExportScript.ModuleName = lMyInfo.Name + local lModuleName = ExportScript.ModuleName..".lua" + local lModuleFile = "" + + ExportScript.FoundNoModul = false + + for file in lfs.dir(ExportScript.Config.ExportModulePath) do + if lfs.attributes(ExportScript.Config.ExportModulePath..file,"mode") == "file" then + if file == lModuleName then + lModuleFile = ExportScript.Config.ExportModulePath..file + end + end + end + + ExportScript.Tools.WriteToLog("File Path: "..lModuleFile) + + if string.len(lModuleFile) > 1 then + ExportScript.Tools.ResetChangeValuesDAC() + + -- load Aircraft File + dofile(lModuleFile) + if ExportScript.Config.DACExport then + ExportScript.Tools.SendDataDAC("File", lMyInfo.Name) + for i=1, #ExportScript.Config.DAC, 1 do + ExportScript.Tools.FlushDataDAC(i) + end + end + + if ExportScript.Config.IkarusExport then + ExportScript.Tools.SendData("File", lMyInfo.Name) + end + + ExportScript.Tools.WriteToLog("File '"..lModuleFile.."' loaded") + + ExportScript.Tools.WriteToLog("Version:") + for k,v in pairs(ExportScript.Version) do + ExportScript.Tools.WriteToLog(k..": "..v) + end + + ExportScript.FirstNewDataSend = ExportScript.Config.FirstNewDataSend + ExportScript.FirstNewDataSendCount = ExportScript.Config.FirstNewDataSendCount + + if ExportScript.FoundDCSModule then + local lCounter = 0 + for k, v in pairs(ExportScript.ConfigEveryFrameArguments) do + lCounter = lCounter + 1 + end + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("ExportScript.ConfigEveryFrameArguments Count: "..lCounter) + end + if lCounter > 0 then + ExportScript.EveryFrameArguments = ExportScript.ConfigEveryFrameArguments + else + -- no Arguments + ExportScript.EveryFrameArguments = {} + end + lCounter = 0 + for k, v in pairs(ExportScript.ConfigArguments) do + lCounter = lCounter + 1 + end + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog("ExportScript.ConfigArguments Count: "..lCounter) + end + if lCounter > 0 then + ExportScript.Arguments = ExportScript.ConfigArguments + else + -- no Arguments + ExportScript.Arguments = {} + end + + ExportScript.ProcessIkarusDCSHighImportance = ExportScript.ProcessIkarusDCSConfigHighImportance + ExportScript.ProcessIkarusDCSLowImportance = ExportScript.ProcessIkarusDCSConfigLowImportance + ExportScript.ProcessDACHighImportance = ExportScript.ProcessDACConfigHighImportance + ExportScript.ProcessDACLowImportance = ExportScript.ProcessDACConfigLowImportance + + elseif ExportScript.FoundFCModule then + ExportScript.ProcessIkarusFCHighImportance = ExportScript.ProcessIkarusFCHighImportanceConfig + ExportScript.ProcessIkarusFCLowImportance = ExportScript.ProcessIkarusFCLowImportanceConfig + ExportScript.ProcessDACHighImportance = ExportScript.ProcessDACConfigHighImportance + ExportScript.ProcessDACLowImportance = ExportScript.ProcessDACConfigLowImportance + else + ExportScript.Tools.WriteToLog("Unknown Module Type: "..lMyInfo.Name) + end + + if ExportScript.Config.IkarusExport then + for Map, LatLong in pairs(ExportScript.Maps) do + if lMyInfo.LatLongAlt.Lat > LatLong.Lat2 and lMyInfo.LatLongAlt.Lat < LatLong.Lat1 then + if lMyInfo.LatLongAlt.Long > LatLong.Long1 and lMyInfo.LatLongAlt.Long < LatLong.Long2 then + ExportScript.Tools.WriteToLog("Detected Map: "..Map) + ExportScript.Tools.SendData("Map", Map) + break + end + end + end + + ExportScript.Tools.FlushData() + end + + else -- Unknown Module + ExportScript.ProcessIkarusDCSHighImportance = ExportScript.ProcessIkarusDCSHighImportanceNoConfig + ExportScript.ProcessIkarusDCSLowImportance = ExportScript.ProcessIkarusDCSLowImportanceNoConfig + ExportScript.ProcessIkarusFCHighImportance = ExportScript.ProcessIkarusFCHighImportanceNoConfig + ExportScript.ProcessIkarusFCLowImportance = ExportScript.ProcessIkarusFCLowImportanceNoConfig + ExportScript.ProcessDACHighImportance = ExportScript.ProcessDACHighImportanceNoConfig + ExportScript.ProcessDACLowImportance = ExportScript.ProcessDACLowImportanceNoConfig + ExportScript.EveryFrameArguments = {} + ExportScript.Arguments = {} + + ExportScript.Tools.WriteToLog("Version:") + for k,v in pairs(ExportScript.Version) do + ExportScript.Tools.WriteToLog(k..": "..v) + end + ExportScript.Tools.WriteToLog("Unknown Module Name: "..lMyInfo.Name) + end +end + +-- The ExportScript.Tools.dump function show the content of the specified variable. +-- ExportScript.Tools.dump is similar to PHP function dump and show variables from type +-- "nil, "number", "string", "boolean, "table", "function", "thread" and "userdata" +function ExportScript.Tools.dump(var, depth) + depth = depth or 0 + if type(var) == "string" then + return 'string: "' .. var .. '"\n' + elseif type(var) == "nil" then + return 'nil\n' + elseif type(var) == "number" then + return 'number: "' .. var .. '"\n' + elseif type(var) == "boolean" then + return 'boolean: "' .. tostring(var) .. '"\n' + elseif type(var) == "function" then + if debug and debug.getinfo then + fcnname = tostring(var) + local info = debug.getinfo(var, "S") + if info.what == "C" then + return string.format('%q', fcnname .. ', C function') .. '\n' + else + if (string.sub(info.source, 1, 2) == [[./]]) then + return string.format('%q', fcnname .. ', defined in (' .. info.linedefined .. '-' .. info.lastlinedefined .. ')' .. info.source) ..'\n' + else + return string.format('%q', fcnname .. ', defined in (' .. info.linedefined .. '-' .. info.lastlinedefined .. ')') ..'\n' + end + end + else + return 'a function\n' + end + elseif type(var) == "thread" then + return 'thread\n' + elseif type(var) == "userdata" then + return tostring(var)..'\n' + elseif type(var) == "table" then + depth = depth + 1 + out = "{\n" + for k,v in pairs(var) do + out = out .. (" "):rep(depth*4).. "["..k.."] = " .. ExportScript.Tools.dump(v, depth) + end + return out .. (" "):rep((depth-1)*4) .. "}\n" + else + return tostring(var) .. "\n" + end +end + +-- round function for math libraray +-- number : value +-- decimals: number of decimal +-- method : ceil: Returns the smallest integer larger than or equal to number +-- floor: Returns the smallest integer smaller than or equal to number +function ExportScript.Tools.round(number, decimals, method) + if string.find(number, "%p" ) ~= nil then + decimals = decimals or 0 + local lFactor = 10 ^ decimals + if (method == "ceil" or method == "floor") then + -- ceil: Returns the smallest integer larger than or equal to number + -- floor: Returns the smallest integer smaller than or equal to number + return math[method](number * lFactor) / lFactor + else + return tonumber(("%."..decimals.."f"):format(number)) + end + else + return number + end +end + +-- split function for string libraray +-- stringvalue: value +-- delimiter : delimiter for split +-- for example, see http://www.lua.org/manual/5.1/manual.html#5.4.1 +function ExportScript.Tools.split(stringvalue, delimiter) + result = {}; + for match in (stringvalue..delimiter):gmatch("(.-)"..delimiter) do + table.insert(result, match); + end + return result; +end + +-- the function checks whether the cockpit light should be activated in ikarus on the basis of the parameters +-- functional parameters, a single ID, or a table with IDs +function ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, ExportIDs) + local TmpExportIDs = ExportIDs or 0 + local TmpLight = false + + if type(mainPanelDevice) ~= "table" then + return + end + + if type(TmpExportIDs) == "table" then + for key,value in pairs(TmpExportIDs) do + if type(value) == "number" then + if mainPanelDevice:get_argument_value(value) > 0.4 then + TmpLight = true + end + end + end + elseif type(TmpExportIDs) == "number" then + if mainPanelDevice:get_argument_value(TmpExportIDs) > 0.4 then + TmpLight = true + end + end + + if TmpLight then + ExportScript.Tools.SendData(2222, "1.0") -- Ikarus Cockpit Light on + else + ExportScript.Tools.SendData(2222, "0.0") -- Ikarus Cockpit Light off + end +end + +-- The function returns a correctly formatted string with the given radio frequency. +-- Frequency: MHz/KHz, format: e.g. "7.3" or "5.2", fill with leading zeros (default false), least value of frequency (default 0.025 (MHz)) +function ExportScript.Tools.RoundFreqeuncy(Freqeuncy, Format, PrefixZeros, LeastValue) + local freqeuncy = Freqeuncy or 0.0 + local format = Format or "7.3" + local prefixzeros = PrefixZeros or false + local leastvalue = LeastValue or 0.025 + local tmpstring = "" + local tmp1, tmp2, tmp3, tmp4 = 0, 0, 0, 0 + + local from ,to = string.find(format, "%.") + tmp1 = string.sub(format, 0, to) + tmp2 = string.sub(format, to) + tmp1 = tonumber(string.sub(tmp1, string.find(tmp1, "%d+"))) + tmp2 = tonumber(string.sub(tmp2, string.find(tmp2, "%d+"))) + + local tmp3, tmp4 = math.modf(freqeuncy) + local bla3, bla4 = math.modf(tmp4 / leastvalue) + + tmpstring = (tmp3 + (bla3 * leastvalue )) + + tmpstring = string.format("%."..tmp2.."f", tmpstring) + +-- while string.len(tmpstring) < tmp1 do +-- tmpstring = " "..tmpstring +-- end + + tmpstring = string.rep(" ", tmp1 - string.len(tmpstring))..tmpstring + + if prefixzeros then + tmpstring = string.gsub(tmpstring, " ", "0") + end + + return tmpstring +end + +-- The function return a table with values of given indicator +-- The value is retrievable via a named index. e.g. TmpReturn.txt_digits +function ExportScript.Tools.getListIndicatorValue(IndicatorID) + local ListIindicator = list_indication(IndicatorID) + local TmpReturn = {} + + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('list_indication('..IndicatorID..'): '..ExportScript.Tools.dump(ListIindicator)) + end + + if ListIindicator == "" then + return nil + end + + local ListindicatorMatch = ListIindicator:gmatch("-----------------------------------------\n([^\n]+)\n([^\n]*)\n") + while true do + local Key, Value = ListindicatorMatch() + if not Key then + break + end + TmpReturn[Key] = Value + end + + return TmpReturn +end + +-- The function format a given string for a display +-- String: value for show in display, maxChars: Display size (default 5), LEFTorRIGHT: flush with left "l" or right "r" site (default "r") +function ExportScript.Tools.DisplayFormat(String, maxChars, LEFTorRight, DAC) + local lString = String or "" + local lmaxChars = maxChars or 5 + local lLEFTorRight = LEFTorRight or "r" + local lDAC = DAC or false + local lTmpLen = 0 + local lRep = " " + + if lDAC then + lRep = "-" + end + + lString = ExportScript.utf8.sub(lString, 0, lmaxChars) + lTmpLen = ExportScript.utf8.len(lString) + + if lTmpLen < lmaxChars then + if string.lower(lLEFTorRight) == "l" then + lString = lString..string.rep(" ", lmaxChars - lTmpLen) + else + lString = string.rep(" ", lmaxChars - lTmpLen)..lString + end + end + + return lString +end + +function ExportScript.Tools.KeyInTable(Table, Key) + for key, value in pairs(Table) do + if key == Key then + return true + end + end + return false +end + +function ExportScript.Tools.ValueInTable(Table, Value) + for key, value in pairs(Table) do + if value == Value then + return true + end + end + return false +end + +-- Pointed to by ExportScript.ProcessIkarusDCSHighImportance, if the player aircraft is something else +function ExportScript.ProcessIkarusDCSHighImportanceNoConfig(mainPanelDevice) +end +-- Pointed to by ExportScript.ProcessIkarusDCSLowImportance, if the player aircraft is something else +function ExportScript.ProcessIkarusDCSLowImportanceNoConfig(mainPanelDevice) +end + +-- the player aircraft is a Flaming Cliffs or similar aircraft +function ExportScript.ProcessIkarusFCHighImportanceNoConfig() +end +function ExportScript.ProcessIkarusFCLowImportanceNoConfig() +end + +-- Hardware exports +function ExportScript.ProcessDACHighImportanceNoConfig(mainPanelDevice) +end +function ExportScript.ProcessDACLowImportanceNoConfig(mainPanelDevice) +end diff --git a/lib/genericRadio.lua b/lib/genericRadio.lua new file mode 100644 index 0000000..3a03361 --- /dev/null +++ b/lib/genericRadio.lua @@ -0,0 +1,411 @@ +-- Ikarus and D.A.C. Export Script +-- +-- generic Radio File +-- +-- Copyright by Michael aka McMicha 2014 +-- Contact dcs2arcaze.micha@farbpigmente.org + +ExportScript.Version.genericRadio = "1.2.1" + +--[[ +-- Config and execute in function ExportScript.ProcessDACConfigLowImportance() + +-- genericRadioConf for example A-10C Radio AN/ARC-164 UHF + ExportScript.genericRadioConf = {} + ExportScript.genericRadioConf['maxRadios'] = 1 -- numbers of aviables/supported radios + ExportScript.genericRadioConf[1] = {} -- first radio + ExportScript.genericRadioConf[1]['Name'] = "AN/ARC-164 UHF" -- name of radio + ExportScript.genericRadioConf[1]['DeviceID'] = 54 -- DeviceID for GetDevice from device.lua + ExportScript.genericRadioConf[1]['setFrequency'] = true -- change frequency active + ExportScript.genericRadioConf[1]['FrequencyMultiplicator'] = 1000000 -- multiplicator from Hz to MHz + ExportScript.genericRadioConf[1]['FrequencyFormat'] = "%7.3f" -- frequency view format LUA style + ExportScript.genericRadioConf[1]['FrequencyStep'] = 25 -- minimal step for frequency change + ExportScript.genericRadioConf[1]['minFrequency'] = 220.000 -- lowest frequency + ExportScript.genericRadioConf[1]['maxFrequency'] = 314.450 -- highest frequency + ExportScript.genericRadioConf[1]['Power'] = {} -- power button active + ExportScript.genericRadioConf[1]['Power']['ButtonID'] = 3008 -- power button id from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOn'] = 0.1 -- power on value from cklickable.lua + ExportScript.genericRadioConf[1]['Power']['ValueOff'] = 0.0 -- power off value from cklickable.lua + ExportScript.genericRadioConf[1]['Volume'] = {} -- volume knob active + ExportScript.genericRadioConf[1]['Volume']['ButtonID'] = 3011 -- volume button id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset'] = {} -- preset knob active + ExportScript.genericRadioConf[1]['Preset']['ArgumentID'] = 161 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Preset']['ButtonID'] = 3001 -- preset button id from cklickable.lua +-- ExportScript.genericRadioConf[1]['Preset']['ButtonID2'] = 3002 -- preset button id from cklickable.lua + -- Preset based on switchlogic on clickabledata.lua + ExportScript.genericRadioConf[1]['Preset']['List'] = {[0.0]="01",[0.05]="02",[0.10]="03",[0.15]="04",[0.20]="05",[0.25]="06",[0.30]="07",[0.35]="08",[0.40]="09",[0.45]="10",[0.50]="11",[0.55]="12",[0.60]="13",[0.65]="14",[0.70]="15",[0.75]="16",[0.80]="17",[0.85]="18",[0.90]="19",[0.95]="20",[1.00]="01"} + ExportScript.genericRadioConf[1]['Preset']['Step'] = 0.05 -- minimal step for preset change +-- ExportScript.genericRadioConf[1]['Preset']['Step2'] = -0.05 -- minimal step for preset change + ExportScript.genericRadioConf[1]['Squelch'] = {} -- squelch switch active + ExportScript.genericRadioConf[1]['Squelch']['ArgumentID'] = 170 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ButtonID'] = 3010 -- squelch button id from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOn'] = 0.0 -- squelch on value from cklickable.lua + ExportScript.genericRadioConf[1]['Squelch']['ValueOff'] = 1.0 -- squelch off value from cklickable.lua + ExportScript.genericRadioConf[1]['Load'] = {} -- load button preset + ExportScript.genericRadioConf[1]['Load']['ButtonID'] = 3015 -- load button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset'] = {} -- switch manual or preset active + ExportScript.genericRadioConf[1]['ManualPreset']['ArgumentID'] = 167 -- ManualPreset argument id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ButtonID'] = 3007 -- ManualPreset button id from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValueManual'] = 0.0-- ManualPreset Manual value from cklickable.lua + ExportScript.genericRadioConf[1]['ManualPreset']['ValuePreset'] = 0.1-- ManualPreset Preset value from cklickable.lua + +... + +ExportScript.genericRadio(nil, nil)]] + +function ExportScript.genericRadio(key, value) +--ExportScript.Tools.WriteToLog('genericRadioConf: '..ExportScript.Tools.dump(ExportScript.genericRadioConf)) + if type(ExportScript.genericRadioConf) ~= "table" then + ExportScript.Tools.WriteToLog("No Radio defined.") + return + end + + local lRotaryFrequency_1, lRotaryFrequency_2, lVolume, lPreset, lLoad, lSquelch, lManualPreset, lPower, lDevice, lClickAction, lSetFrequency = nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil + local lMainPanelDevice = GetDevice(0) + + if ExportScript.AF.genericRadio == nil then + ExportScript.AF.genericRadio = 0 + end + if ExportScript.AF.genericRadioFrequency1 == nil then + ExportScript.AF.genericRadioFrequency1 = 0.0 + end + if ExportScript.AF.genericRadioFrequency2 == nil then + ExportScript.AF.genericRadioFrequency2 = 0.0 + end + if ExportScript.AF.genericRadioPower == nil then + ExportScript.AF.genericRadioPower = {} + end + if ExportScript.AF.genericRadioPresetManual == nil then + ExportScript.AF.genericRadioPresetManual = {} + end + if ExportScript.AF.genericRadioSquelch == nil then + ExportScript.AF.genericRadioSquelch = {} + end + if ExportScript.AF.genericRadioPreset == nil then + ExportScript.AF.genericRadioPreset = {} + end + + if key == "3001" then + ExportScript.AF.genericRadio = tonumber(value) + end + if key == "3002" then + lRotaryFrequency_1 = tonumber(value) + end + if key == "3003" then + lRotaryFrequency_2 = tonumber(value) + end + if key == "3004" then + lVolume = tonumber(value) + end + if key == "3005" then + lPreset = tonumber(value) + end + if key == "3006" then + lLoad = tonumber(value) + end + if key == "3007" then + lSquelch = tonumber(value) + end + if key == "3008" then + lManualPreset = tonumber(value) + end + if key == "3009" then + lPower = tonumber(value) + end + + local lPresetChannelFrequency = "-" -- ID 3000 + local lPresetChannel = "-" -- ID 3001 + local lFrequency = "-" -- ID 3002 + + if ExportScript.AF.genericRadio == 0 or ExportScript.AF.genericRadio > ExportScript.genericRadioConf['maxRadios'] then + if ExportScript.AF.genericRadio ~= 0 then + ExportScript.Tools.WriteToLog("Radio Nr. "..ExportScript.AF.genericRadio.." not defined.") + end + ExportScript.Tools.SendDataDAC("3000", lPresetChannelFrequency) + ExportScript.Tools.SendDataDAC("3001", lPresetChannel) + ExportScript.Tools.SendDataDAC("3002", lFrequency) + ExportScript.Tools.SendDataDAC("3010", 0) + ExportScript.Tools.SendDataDAC("3011", 0) + ExportScript.Tools.SendDataDAC("3012", 0) + ExportScript.Tools.SendDataDAC("3013", 0) + return + end + + --------------------------------------------------- + local lRADIO = GetDevice(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID']) + + -- check status of the radio + if ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] == nil then + if lRADIO:is_on() then + ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] = 1.0 + else + ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] = 0.0 + end + end + + -- check Manual/Preset switch + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset'] ~= nil then + if ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] == nil then + ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] = ((ExportScript.Tools.round(lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset']['ArgumentID']), 1) == ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset']['ValueOn']) and 1 or 0) + end + else + ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] = 0 + end + + -- check Squelch switch + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch'] ~= nil then + if ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] == nil then + ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] = ((ExportScript.Tools.round(lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch']['ArgumentID']), 1) == ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch']['ValueOn']) and 1 or 0) + end + else + ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] = 0 + end + + if ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] == nil then + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = 0 + end + + if lRADIO:is_on() then + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset'] ~= nil then + --lPresetChannel = string.format("%s", ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['List'][ExportScript.Tools.round(lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ArgumentID']), 2)]) + --ExportScript.Tools.WriteToLog('Preset index: '..ExportScript.Tools.dump(ExportScript.Tools.round(lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ArgumentID']), string.match(string.reverse(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step']), '.')))) + lPresetChannel = string.format("%s", ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['List'][ExportScript.Tools.round(lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ArgumentID']), string.match(string.reverse(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step']), '.'))]) + end + + lFrequency = ExportScript.Tools.round(lRADIO:get_frequency()/ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyMultiplicator'] , 3, "floor") + lFrequency = string.format(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyFormat'], lFrequency) + + lPresetChannelFrequency = string.format("%s%s", lPresetChannel, lFrequency) + lPresetChannelFrequency = lPresetChannelFrequency:gsub(" ", "0") + lPresetChannelFrequency = lPresetChannelFrequency:gsub("-", "") +--ExportScript.Tools.WriteToLog('lPresetChannel: '..ExportScript.Tools.dump(lPresetChannel)) +--ExportScript.Tools.WriteToLog('lFrequency: '..ExportScript.Tools.dump(lFrequency)) +--ExportScript.Tools.WriteToLog('lPresetChannelFrequency: '..ExportScript.Tools.dump(lPresetChannelFrequency)) + -- setFrequency == true + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['setFrequency'] then + -- minimal frequency, for example lMinFrequency1=220, lMinFrequency2=0 from 220.000 + local lMinFrequency1, lMinFrequency2 = math.modf(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['minFrequency']) + lMinFrequency2 = lMinFrequency2 * 1000 + -- maximal frequency, for example lMaxFrequency1=314, lMaxFrequency2=975 from 314.975 + local lMaxFrequency1, lMaxFrequency2 = math.modf(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['maxFrequency']) + lMaxFrequency2 = lMaxFrequency2 * 1000 + + if lRotaryFrequency_1 ~= nil and (lRotaryFrequency_1 >= 0.0 and lRotaryFrequency_1 <= 2.0) then + + local lTmpFrequency = ExportScript.Tools.StrSplit(lFrequency, "%.") -- %. um den Punkt als Punkt zu suchen + + if type(lTmpFrequency) == "table" and lTmpFrequency[1] ~= nil then + lTmpFrequency[1] = tonumber(lTmpFrequency[1]) + if lTmpFrequency[2] == nil then + lTmpFrequency[2] = 0 + else + lTmpFrequency[2] = tonumber(lTmpFrequency[2]) + local ltmp = string.format("%.0f", lTmpFrequency[2] / ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep']) + lTmpFrequency[2] = ltmp * ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep'] + end + if lRotaryFrequency_1 < ExportScript.AF.genericRadioFrequency1 or lRotaryFrequency_1 == 0.0 or lRotaryFrequency_1 == 2.0 then + lTmpFrequency[1] = lTmpFrequency[1] - 1 + if lTmpFrequency[1] == (lMinFrequency1 - 1) then + lTmpFrequency[1] = lMaxFrequency1 + end + ExportScript.AF.genericRadioFrequency1 = lRotaryFrequency_1 + else + lTmpFrequency[1] = lTmpFrequency[1] + 1 + if lTmpFrequency[1] == (lMaxFrequency1 + 1) then + lTmpFrequency[1] = lMinFrequency1 + end + ExportScript.AF.genericRadioFrequency1 = lRotaryFrequency_1 + end + + lTmpFrequency[2] = string.format("%.3f", lTmpFrequency[2] / 1000) + lTmpFrequency = string.format("%.3f", lTmpFrequency[1] + lTmpFrequency[2]) + lTmpFrequency = tonumber(lTmpFrequency) + lSetFrequency = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + Frequency = lTmpFrequency * 1000000} + + else + ExportScript.Tools.WriteToLog("1. generic "..ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Name'].." Radio, don't split frequency: "..lFrequency) + end + end + + if lRotaryFrequency_2 ~= nil and (lRotaryFrequency_2 >= 0.0 and lRotaryFrequency_2 <= 2.0) then + + local lTmpFrequency = ExportScript.Tools.StrSplit(lFrequency, "%.") + + if type(lTmpFrequency) == "table" and lTmpFrequency[1] ~= nil then + lTmpFrequency[1] = tonumber(lTmpFrequency[1]) + if lTmpFrequency[2] == nil then + lTmpFrequency[2] = 0 + else + lTmpFrequency[2] = tonumber(lTmpFrequency[2]) + local ltmp = string.format("%.0f", lTmpFrequency[2] / ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep']) + lTmpFrequency[2] = ltmp * ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep'] + end + if lRotaryFrequency_2 < ExportScript.AF.genericRadioFrequency2 or lRotaryFrequency_2 == 0.0 or lRotaryFrequency_2 == 2.0 then + lTmpFrequency[2] = lTmpFrequency[2] - ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep'] + if lTmpFrequency[2] == (ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep'] * -1) then + lTmpFrequency[2] = lMaxFrequency2 + end + ExportScript.AF.genericRadioFrequency2 = lRotaryFrequency_2 + else + lTmpFrequency[2] = lTmpFrequency[2] + ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep'] + if lTmpFrequency[2] == (lMaxFrequency2 + ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['FrequencyStep']) then + lTmpFrequency[2] = 0 + end + ExportScript.AF.genericRadioFrequency2 = lRotaryFrequency_2 + end + + lTmpFrequency[2] = string.format("%.3f", lTmpFrequency[2] / 1000) + lTmpFrequency = string.format("%.3f", lTmpFrequency[1] + lTmpFrequency[2]) + lTmpFrequency = tonumber(lTmpFrequency) + lSetFrequency = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + Frequency = lTmpFrequency * 1000000} + + else + ExportScript.Tools.WriteToLog("2. generic "..ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Name'].." Radio, don't split frequency: "..lFrequency) + end + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset'] ~= nil then + if lPreset ~= nil and (lPreset >= 0.0 and lPreset <= 2.0) then + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ButtonID2'] == nil and ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step2'] == nil then + local lTempPresetKeys = {} + for k,v in pairs(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['List']) do + table.insert(lTempPresetKeys, k) + end + + local lMinKey = math.min(unpack(lTempPresetKeys)) + local lMaxKey = math.max(unpack(lTempPresetKeys)) + + if lPreset > ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] then + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] + ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step'] + if ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] > lMaxKey then + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = lMinKey + end + else + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] - ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step'] + if ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] < lMinKey then + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = lMaxKey + end + end + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ButtonID'], + Value = ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio]} + else + if lPreset < ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] or lPreset == 0.0 or lPreset == 2.0 then + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ButtonID'], + Value = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step']} + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = lPreset + else + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['ButtonID2'], + Value = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Preset']['Step2']} + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = lPreset + end + ExportScript.AF.genericRadioPreset[ExportScript.AF.genericRadio] = lPreset + end + end + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Volume'] ~= nil then + if lVolume ~= nil and (lVolume >= 0.0 and lVolume <= 2.0) then + lVolume = lVolume / 2 + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Volume']['ButtonID'], + Value = lVolume} + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load'] ~= nil then + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load']['ButtonID'] ~= nil then + if lLoad ~= nil and (lLoad == 0.0 or lLoad <= 1.0) then + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load']['ButtonID'], + Value = lLoad} + end + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch'] ~= nil then + if lSquelch ~= nil and (lSquelch == 0.0 or lSquelch <= 1.0) then + if lSquelch == 1.0 and ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] == 1.0 then + -- Squelch off + lSquelch = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch']['ValueOff'] + ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] = 0 + elseif lSquelch == 1.0 and ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] == 0 then + -- Squelch on + lSquelch = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch']['ValueOn'] + ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio] = 1.0 + end + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Squelch']['ButtonID'], + Value = lSquelch} + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset'] ~= nil then + if lManualPreset ~= nil and (lManualPreset == 0.0 or lManualPreset <= 1.0) then + if lManualPreset == 1.0 and ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] == 1.0 then + -- Manual + lManualPreset = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset']['ValueManual'] + ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] = 0 + elseif lManualPreset == 1.0 and ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] == 0 then + -- Preset + lManualPreset = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset']['ValuePreset'] + ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio] = 1.0 + end + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['ManualPreset']['ButtonID'], + Value = lManualPreset} + end + end + + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Power'] ~= nil then + if lPower ~= nil and (lPower == 0.0 or lPower <= 1.0) then + if lPower == 1.0 and ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] == 1.0 then + -- Power off + lPower = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Power']['ValueOff'] + ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] = 0 + elseif lPower == 1.0 and ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] == 0 then + --Power on + lPower = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Power']['ValueOn'] + ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio] = 1.0 + end + lClickAction = {DeviceID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['DeviceID'], + ButtonID = ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Power']['ButtonID'], + Value = lPower} + end + end + + ExportScript.Tools.SendDataDAC("3000", lPresetChannelFrequency) + ExportScript.Tools.SendDataDAC("3001", lPresetChannel) + ExportScript.Tools.SendDataDAC("3002", lFrequency) + ExportScript.Tools.SendDataDAC("3010", ExportScript.AF.genericRadioPower[ExportScript.AF.genericRadio]) + ExportScript.Tools.SendDataDAC("3011", ExportScript.AF.genericRadioPresetManual[ExportScript.AF.genericRadio]) + ExportScript.Tools.SendDataDAC("3012", ExportScript.AF.genericRadioSquelch[ExportScript.AF.genericRadio]) + -- is only for radios with a lamp for Load button, for example Ka-50 Load Button is Autotune with lamp + if ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load'] ~= nil and ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load']['ArgumentID'] ~= nil then + ExportScript.Tools.SendDataDAC("3013", lMainPanelDevice:get_argument_value(ExportScript.genericRadioConf[ExportScript.AF.genericRadio]['Load']['ArgumentID'])) + else + ExportScript.Tools.SendDataDAC("3013", 0) + end + + if lClickAction ~= nil then + lDevice = GetDevice(lClickAction.DeviceID) + if type(lDevice) == "table" then + --ExportScript.Tools.WriteToLog("GetDevice("..lClickAction.DeviceID.."):performClickableAction("..lClickAction.ButtonID..", "..lClickAction.Value..") ") + lDevice:performClickableAction(lClickAction.ButtonID, lClickAction.Value) + end + elseif lSetFrequency ~= nil then + lDevice = GetDevice(lSetFrequency.DeviceID) + if type(lDevice) == "table" and lDevice:is_on() then + --ExportScript.Tools.WriteToLog("GetDevice("..lSetFrequency.DeviceID.."):set_frequency("..lSetFrequency.Frequency..") ") + lDevice:set_frequency(lSetFrequency.Frequency) + else + ExportScript.Tools.WriteToLog("GetDevice("..lSetFrequency.DeviceID..") is no table or Radio is not on") + end + end +end \ No newline at end of file diff --git a/lib/utf8.lua b/lib/utf8.lua new file mode 100644 index 0000000..0f7a1e0 --- /dev/null +++ b/lib/utf8.lua @@ -0,0 +1,161 @@ +-- Provides UTF-8 aware string functions implemented in pure lua: +-- * string.utf8len(s) +-- * string.utf8sub(s, i, j) +-- +-- All functions behave as their non UTF-8 aware counterparts with the exception +-- that UTF-8 characters are used instead of bytes for all units. +-- +-- Note: all validations had been removed due to awesome usage specifics. +--[[ +Copyright (c) 2006-2007, Kyle Smith +Modified by Alexander Yakushev, 2010-2013. +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--]] + +-- ABNF from RFC 3629 +-- +-- UTF8-octets = *( UTF8-char ) +-- UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 +-- UTF8-1 = %x00-7F +-- UTF8-2 = %xC2-DF UTF8-tail +-- UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / +-- %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) +-- UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / +-- %xF4 %x80-8F 2( UTF8-tail ) +-- UTF8-tail = %x80-BF +-- + +-- returns the number of bytes used by the UTF-8 character at byte i in s +-- also doubles as a UTF-8 character validator + +local utf8 = {} + +function utf8.charbytes (s, i) + -- argument defaults + i = i or 1 + local c = string.byte(s, i) + + -- determine bytes needed for character, based on RFC 3629 + if c > 0 and c <= 127 then + -- UTF8-1 + return 1 + elseif c >= 194 and c <= 223 then + -- UTF8-2 + local c2 = string.byte(s, i + 1) + return 2 + elseif c >= 224 and c <= 239 then + -- UTF8-3 + local c2 = s:byte(i + 1) + local c3 = s:byte(i + 2) + return 3 + elseif c >= 240 and c <= 244 then + -- UTF8-4 + local c2 = s:byte(i + 1) + local c3 = s:byte(i + 2) + local c4 = s:byte(i + 3) + return 4 + end +end + +-- returns the number of characters in a UTF-8 string +function utf8.len (s) + local pos = 1 + local bytes = string.len(s) + local len = 0 + + while pos <= bytes and len ~= chars do + local c = string.byte(s,pos) + len = len + 1 + + pos = pos + utf8.charbytes(s, pos) + end + + if chars ~= nil then + return pos - 1 + end + + return len +end + +-- functions identically to string.sub except that i and j are UTF-8 characters +-- instead of bytes +function utf8.sub (s, i, j) + j = j or -1 + + if i == nil then + return "" + end + + local pos = 1 + local bytes = string.len(s) + local len = 0 + + -- only set l if i or j is negative + local l = (i >= 0 and j >= 0) or utf8.len(s) + local startChar = (i >= 0) and i or l + i + 1 + local endChar = (j >= 0) and j or l + j + 1 + + -- can't have start before end! + if startChar > endChar then + return "" + end + + -- byte offsets to pass to string.sub + local startByte, endByte = 1, bytes + + while pos <= bytes do + len = len + 1 + + if len == startChar then + startByte = pos + end + + pos = pos + utf8.charbytes(s, pos) + + if len == endChar then + endByte = pos - 1 + break + end + end + + return string.sub(s, startByte, endByte) +end + +-- replace UTF-8 characters based on a mapping table +function utf8.replace (s, mapping) + local pos = 1 + local bytes = string.len(s) + local charbytes + local newstr = "" + + while pos <= bytes do + charbytes = utf8.charbytes(s, pos) + local c = string.sub(s, pos, pos + charbytes - 1) + newstr = newstr .. (mapping[c] or c) + pos = pos + charbytes + end + + return newstr +end + +return utf8 \ No newline at end of file