From 17eb4b6251ff0ec748246ed237acf7ad720ba115 Mon Sep 17 00:00:00 2001 From: Bailey Date: Thu, 15 Jul 2021 15:27:18 +0900 Subject: [PATCH] Major changes Removed files that I have not modified. Added files that I have modified. Removed files that I don't need to use. --- .../AJS37.lua | 25 +- .../Empty-DCS.lua | 0 .../F-14B.lua | 4 +- ExportsModules/F-16C_50.lua | 1212 + .../F-5E-3.lua | 1430 +- .../FA-18C_hornet.lua | 2 +- ExportsModules/JF-17.lua | 453 + .../Mi-24P.lua | 196 +- README.md | 35 +- Scripts/DCS-ExportScript/Config.lua | 43 - Scripts/DCS-ExportScript/ExportScript.lua | 173 - .../DCS-ExportScript/ExportsModules/A-10A.lua | 1232 - .../DCS-ExportScript/ExportsModules/A-10C.lua | 22000 ---------------- .../ExportsModules/AV8BNA.lua | 1435 - .../ExportsModules/Bf-109K-4.lua | 334 - .../DCS-ExportScript/ExportsModules/F-15C.lua | 1408 - .../ExportsModules/F-86F Sabre.lua | 405 - .../ExportsModules/FC_AuxiliaryFuntions.lua | 3109 --- .../ExportsModules/FW-190D9.lua | 301 - .../DCS-ExportScript/ExportsModules/J-11A.lua | 727 - .../DCS-ExportScript/ExportsModules/Ka-50.lua | 1346 - .../DCS-ExportScript/ExportsModules/L-39C.lua | 852 - .../ExportsModules/L-39ZA.lua | 852 - .../ExportsModules/M-2000C.lua | 1325 - .../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 - .../ExportsModules/P-51D-30-NA.lua | 331 - .../DCS-ExportScript/ExportsModules/P-51D.lua | 331 - .../ExportsModules/SA342L.lua | 726 - .../ExportsModules/SA342M.lua | 743 - .../ExportsModules/SA342Mistral.lua | 731 - .../ExportsModules/SpitfireLFMkIX.lua | 268 - .../ExportsModules/SpitfireLFMkIXCW.lua | 268 - .../DCS-ExportScript/ExportsModules/Su-25.lua | 488 - .../ExportsModules/Su-25T.lua | 443 - .../DCS-ExportScript/ExportsModules/Su-27.lua | 727 - .../DCS-ExportScript/ExportsModules/Su-33.lua | 720 - .../ExportsModules/TF-51D.lua | 310 - .../DCS-ExportScript/ExportsModules/UH-1H.lua | 907 - Scripts/DCS-ExportScript/lib/Maps.lua | 43 - Scripts/DCS-ExportScript/lib/Tools.lua | 992 - Scripts/DCS-ExportScript/lib/genericRadio.lua | 411 - Scripts/DCS-ExportScript/lib/utf8.lua | 161 - Scripts/Export.lua | 3 - docu/Documentation-in-English.pdf | Bin 268573 -> 0 bytes docu/Dokumentation-in-Deutsch.pdf | Bin 249363 -> 0 bytes docu/flowchart.jpg | Bin 369658 -> 0 bytes 51 files changed, 2503 insertions(+), 48373 deletions(-) rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/AJS37.lua (95%) rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/Empty-DCS.lua (100%) rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/F-14B.lua (99%) create mode 100644 ExportsModules/F-16C_50.lua rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/F-5E-3.lua (98%) rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/FA-18C_hornet.lua (99%) create mode 100644 ExportsModules/JF-17.lua rename {Scripts/DCS-ExportScript/ExportsModules => ExportsModules}/Mi-24P.lua (91%) delete mode 100644 Scripts/DCS-ExportScript/Config.lua delete mode 100644 Scripts/DCS-ExportScript/ExportScript.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/A-10A.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/A-10C.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/AV8BNA.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Bf-109K-4.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/F-15C.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/F-86F Sabre.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/FW-190D9.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/J-11A.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Ka-50.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/L-39C.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/L-39ZA.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/M-2000C.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Mi-8MT.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/MiG-15bis.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/MiG-21Bis.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/MiG-29A.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/MiG-29G.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/MiG-29S.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/P-51D-30-NA.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/P-51D.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/SA342L.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/SA342M.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/SA342Mistral.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIX.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIXCW.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Su-25.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Su-25T.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Su-27.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/Su-33.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/TF-51D.lua delete mode 100644 Scripts/DCS-ExportScript/ExportsModules/UH-1H.lua delete mode 100644 Scripts/DCS-ExportScript/lib/Maps.lua delete mode 100644 Scripts/DCS-ExportScript/lib/Tools.lua delete mode 100644 Scripts/DCS-ExportScript/lib/genericRadio.lua delete mode 100644 Scripts/DCS-ExportScript/lib/utf8.lua delete mode 100644 Scripts/Export.lua delete mode 100644 docu/Documentation-in-English.pdf delete mode 100644 docu/Dokumentation-in-Deutsch.pdf delete mode 100644 docu/flowchart.jpg diff --git a/Scripts/DCS-ExportScript/ExportsModules/AJS37.lua b/ExportsModules/AJS37.lua similarity index 95% rename from Scripts/DCS-ExportScript/ExportsModules/AJS37.lua rename to ExportsModules/AJS37.lua index 37d9f6f..94c1c03 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/AJS37.lua +++ b/ExportsModules/AJS37.lua @@ -241,7 +241,7 @@ ExportScript.ConfigArguments = [208] = "%1d", -- Restart [203] = "%1d", -- Main Electric Power [207] = "%1d", -- Generator - [209] = "%1d", -- Master Mode Selector + [209] = "%0.1f",-- Master Mode Selector Bailey [446] = "%1d", -- Master Caution Reset [323] = "%1d", -- Slav SI [324] = "%1d", -- HÖJD CISI @@ -420,6 +420,9 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) local lKHz = string.sub(string.format("%0.3f", string.format("%.3f", lFR22Radio:get_frequency()/1000000) - lMHz), 3) ExportScript.Tools.SendData(2501, lMHz) -- slice frequency MHz ExportScript.Tools.SendData(2502, lKHz) -- slice frequency KHz + + local TotalMhz = string.format(lMHz .. ".".. lKHz) + ExportScript.Tools.SendData(2503, TotalMhz) -- Total Frequency Bailey -- 1,2,3 Lamps --[405] = "%.1f", -- Afterburner zone indicator 0.0=off, >= 0.3=1, >= 0.6=2, >= 0.9=3 @@ -431,7 +434,7 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) ExportScript.Tools.SendData(2512, 1) -- Afterburner 3 elseif lAfterburnerZoneIndicator >= 0.6 then ExportScript.Tools.SendData(2510, 1) - ExportScript.Tools.SendData(2511, 2) + ExportScript.Tools.SendData(2511, 1)--ExportScript.Tools.SendDataDAC(2511, 2) ExportScript.Tools.SendData(2512, 0) elseif lAfterburnerZoneIndicator >= 0.3 then ExportScript.Tools.SendData(2510, 1) @@ -446,6 +449,13 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- Cockpit Light ExportScript.Tools.IkarusCockpitLights(mainPanelDevice, {392, 393, 394}) -- Panel Lights, Flood Lights, Instrument Lights + + --AoA in Units Bailey + local AoaUnitValue = 30 * mainPanelDevice:get_argument_value(120) + AoaUnitValue = string.format("%0.1f", AoaUnitValue) + AoaUnitValue= string.format("AoA" .. "\n" .. AoaUnitValue) + ExportScript.Tools.SendData(2520, AoaUnitValue) -- AoA in Units + end function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) @@ -468,6 +478,9 @@ function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) local lKHz = string.sub(string.format("%0.3f", string.format("%.3f", lFR22Radio:get_frequency()/1000000) - lMHz), 3) ExportScript.Tools.SendData(2501, lMHz) -- slice frequency MHz ExportScript.Tools.SendData(2502, lKHz) -- slice frequency KHz + + local TotalMhz = string.format(lMHz .. ".".. lKHz) + ExportScript.Tools.SendData(2503, TotalMhz) -- Total Frequency Bailey -- 1,2,3 Lamps --[405] = "%.1f", -- Afterburner zone indicator 0.0=off, >= 0.3=1, >= 0.6=2, >= 0.9=3 @@ -479,7 +492,7 @@ function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) ExportScript.Tools.SendDataDAC(2512, 1) -- Afterburner 3 elseif lAfterburnerZoneIndicator >= 0.6 then ExportScript.Tools.SendDataDAC(2510, 1) - ExportScript.Tools.SendDataDAC(2511, 2) + ExportScript.Tools.SendDataDAC(2511, 1)--ExportScript.Tools.SendDataDAC(2511, 2) ExportScript.Tools.SendDataDAC(2512, 0) elseif lAfterburnerZoneIndicator >= 0.3 then ExportScript.Tools.SendDataDAC(2510, 1) @@ -490,6 +503,12 @@ function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) ExportScript.Tools.SendDataDAC(2511, 0) ExportScript.Tools.SendDataDAC(2512, 0) end + + --AoA in Units Bailey + local AoaUnitValue = 30 * mainPanelDevice:get_argument_value(120) + AoaUnitValue = string.format("%0.1f", AoaUnitValue) + AoaUnitValue= string.format("AoA" .. "\n" .. AoaUnitValue) + ExportScript.Tools.SendData(2520, AoaUnitValue) -- AoA in Units --===================================================================================== --[[ diff --git a/Scripts/DCS-ExportScript/ExportsModules/Empty-DCS.lua b/ExportsModules/Empty-DCS.lua similarity index 100% rename from Scripts/DCS-ExportScript/ExportsModules/Empty-DCS.lua rename to ExportsModules/Empty-DCS.lua diff --git a/Scripts/DCS-ExportScript/ExportsModules/F-14B.lua b/ExportsModules/F-14B.lua similarity index 99% rename from Scripts/DCS-ExportScript/ExportsModules/F-14B.lua rename to ExportsModules/F-14B.lua index cc652fb..2996807 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/F-14B.lua +++ b/ExportsModules/F-14B.lua @@ -429,7 +429,7 @@ ExportScript.ConfigEveryFrameArguments = [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 (Something|Something|GUARD|PRESET|Something|Something) -- Bailey + [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 @@ -1028,7 +1028,7 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- end A10 ----------------------------------- - -----Get F14 Radio Frequencies----- + -----Get F14 Radio Frequencies----- Bailey ----------------------------------- -----UHF----- diff --git a/ExportsModules/F-16C_50.lua b/ExportsModules/F-16C_50.lua new file mode 100644 index 0000000..9116b35 --- /dev/null +++ b/ExportsModules/F-16C_50.lua @@ -0,0 +1,1212 @@ +-- F-16C Block 50 + +-- Upgrade project +-- Com freq or channel readouts +-- DCS mike + +ExportScript.FoundDCSModule = true +ExportScript.Version.F16C_Viper = "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 +[630]= "%.1f", -- ( CautionLights.FLCS_FAULT) +[631]= "%.1f", -- ( CautionLights.ENGINE_FAULT) +[632]= "%.1f", -- ( CautionLights.AVIONICS_FAULT) +[633]= "%.1f", -- ( CautionLights.SEAT_NOT_ARMED) +[634]= "%.1f", -- ( CautionLights.ELEC_SYS) +[635]= "%.1f", -- ( CautionLights.SEC) +[636]= "%.1f", -- ( CautionLights.EQUIP_HOT) +[637]= "%.1f", -- ( CautionLights.NWS_FAIL) +[638]= "%.1f", -- ( CautionLights.PROBE_HEAT) +[639]= "%.1f", -- ( CautionLights.FUEL_OIL_HOT) +[640]= "%.1f", -- ( CautionLights.RADAR_ALT) +[641]= "%.1f", -- ( CautionLights.ANTI_SKID) +[642]= "%.1f", -- ( CautionLights.CADC) +[643]= "%.1f", -- ( CautionLights.INLET_ICING) +[644]= "%.1f", -- ( CautionLights.IFF) +[645]= "%.1f", -- ( CautionLights.HOOK) +[646]= "%.1f", -- ( CautionLights.STORES_CONFIG) +[647]= "%.1f", -- ( CautionLights.OVERHEAT) +[648]= "%.1f", -- ( CautionLights.NUCLEAR) +[649]= "%.1f", -- ( CautionLights.OBOGS) +[650]= "%.1f", -- ( CautionLights.ATF_NOT_ENGAGED) +[651]= "%.1f", -- ( CautionLights.EEC) +[652]= "%.1f", -- ( CautionLights.LIGHTS_MAX) +[653]= "%.1f", -- ( CautionLights.CABIN_PRESS) +[654]= "%.1f", -- ( CautionLights.FWD_FUEL_LOW) +[655]= "%.1f", -- ( CautionLights.BUC) +[656]= "%.1f", -- ( CautionLights.LIGHTS_MAX) +[657]= "%.1f", -- ( CautionLights.LIGHTS_MAX) +[658]= "%.1f", -- ( CautionLights.AFT_FUEL_LOW) +[659]= "%.1f", -- ( CautionLights.LIGHTS_MAX) +[660]= "%.1f", -- ( CautionLights.LIGHTS_MAX) +[661]= "%.1f", -- ( CautionLights.LIGHTS_MAX) + -- Edge of glareshield +[117]= "%.1f", -- ( CautionLights.MASTER_CAUTION) +[121]= "%.1f", -- ( CautionLights.TF_FAIL) +[126]= "%.1f", -- ( CautionLights.ENG_FIRE) +[127]= "%.1f", -- ( CautionLights.ENGINE) +[129]= "%.1f", -- ( CautionLights.HYD_OIL_PRESS) +[130]= "%.1f", -- ( CautionLights.FLCS) +[131]= "%.1f", -- ( CautionLights.DBU_ON) +[133]= "%.1f", -- ( CautionLights.TO_LDG_CONFIG) +[134]= "%.1f", -- ( CautionLights.CANOPY) +[135]= "%.1f", -- ( CautionLights.OXY_LOW) + -- AOA Indexer +[110]= "%.1f", -- ( CautionLights.AOA_RED) +[111]= "%.1f", -- ( CautionLights.AOA_GREEN) +[112]= "%.1f", -- ( CautionLights.AOA_YELLOW) + -- LG Control Panel +[350]= "%.1f", -- ( CautionLights.GEAR_NOSE) +[351]= "%.1f", -- ( CautionLights.GEAR_LEFT) +[352]= "%.1f", -- ( CautionLights.GEAR_RIGHT) +[369]= "%.1f", -- ( CautionLights.GEAR_WARNING) +[113]= "%.1f", -- ( CautionLights.RDY) +[114]= "%.1f", -- ( CautionLights.AR_NWS) +[115]= "%.1f", -- ( CautionLights.DISC) +[157]= "%.1f", -- ( CautionLights.MARKER_BEACON) + -- Eng Control Panel +[446]= "%.1f", -- ( CautionLights.JFS_RUN) + -- EPU Control Panel +[524]= "%.1f", -- ( CautionLights.HYDRAZN) +[523]= "%.1f", -- ( CautionLights.AIR) +[526]= "%.1f", -- ( CautionLights.EPU) + -- Elec Control Panel +[513]= "%.1f", -- ( CautionLights.FLCS_PMG) +[512]= "%.1f", -- ( CautionLights.MAIN_GEN) +[515]= "%.1f", -- ( CautionLights.STBY_GEN) +[517]= "%.1f", -- ( CautionLights.EPU_GEN) +[516]= "%.1f", -- ( CautionLights.EPU_PMG) +[519]= "%.1f", -- ( CautionLights.TO_FLCS) +[518]= "%.1f", -- ( CautionLights.FLCS_RLY) +[521]= "%.1f", -- ( CautionLights.ACFT_BATT_FAIL) + -- Advance Mode Switch +[106]= "%.1f", -- ( CautionLights.ACTIVE) +[107]= "%.1f", -- ( CautionLights.STBY) + -- FLCP +[570]= "%.1f", -- ( CautionLights.FL_RUN) +[571]= "%.1f", -- ( CautionLights.FL_FAIL) + -- Test Switch Panel +[581]= "%.1f", -- ( CautionLights.FLCS_PWR_A) +[582]= "%.1f", -- ( CautionLights.FLCS_PWR_B) +[583]= "%.1f", -- ( CautionLights.FLCS_PWR_C) +[584]= "%.1f", -- ( CautionLights.FLCS_PWR_D) + -- RWR +[396]= "%.1f", -- ( RWRLights.SEARCH) +[398]= "%.1f", -- ( RWRLights.ACTIVITY) +[423]= "%.1f", -- ( RWRLights.ACT_POWER) +[400]= "%.1f", -- ( RWRLights.ALT_LOW) +[424]= "%.1f", -- ( RWRLights.ALT) +[402]= "%.1f", -- ( RWRLights.POWER) +[142]= "%.1f", -- ( RWRLights.HANDOFF_UP) +[136]= "%.1f", -- ( RWRLights.HANDOFF_H) +[144]= "%.1f", -- ( RWRLights.MSL_LAUNCH) +[146]= "%.f", -- ( RWRLights.MODE_PRI) +[137]= "%.1f", -- ( RWRLights.MODE_OPEN) +[148]= "%.1f", -- ( RWRLights.SHIP_U) +[148]= "%.1f", -- ( RWRLights.SHIP_UNKNOWN) +[150]= "%.1f", -- ( RWRLights.SYSTEST_ON) +[150]= "%.1f", -- ( RWRLights.SYSTEST) +[152]= "%.1f", -- ( RWRLights.TGTSEP_UP) +[138]= "%.1f", -- ( RWRLights.TGTSEP_DOWN) + +------AGGIUNTI DA PVI_EAGLE + +[88]= "%.1f", -- ( FuelFlowCounter_10k) +[89]= "%.1f", -- ( FuelFlowCounter_1k) +[90]= "%.1f", -- ( FuelFlowCounter_100) +[730]= "%.1f", -- ( FuelTotalizer_10k) +[731]= "%.1f", -- ( FuelTotalizer_1k) +[732]= "%.1f", -- ( FuelTotalizer_100) +[363]= "%.1f", -- ( SpeedBrake_Indicator) + + [15] = "%.3f", -- AOA Indicator + [16] = "%.3f", -- VVI Indicator (Vertical Velocity) + [47] = "%.3f", -- VNE Max Speed Needle + [48] = "%.3f", -- Airspeed Indicator (knots) + [49] = "%.3f", -- Airspeed Indicator (mach) + [51] = "%.3f", -- Barometric Altitude Needle + [52] = "%.3f", -- Barometric Altitude Window 1 + [53] = "%.3f", -- Barometric Altitude Window 2 + [54] = "%.3f", -- Barometric Altitude Window 3 + [56] = "%.3f", -- Barometric Setting Kollsman Window 1 + [57] = "%.3f", -- Barometric Setting Kollsman Window 2 + [58] = "%.3f", -- Barometric Setting Kollsman Window 3 + [59] = "%.3f", -- Barometric Setting Kollsman Window 4 + +} + + +ExportScript.ConfigArguments = +{ + --[[ + arguments for export in low tick interval + based on "clickabledata.lua" + ]] + + [62] = "%1d", --PTR-ALT-LVR-SET-62, Barometric Setting Knob, Barometric Setting Knob, , , (0, 0, 1) +[60] = "%1d", --PTR-ALT-TMB-MODE-60, Mode Lever, Mode Lever, , ELEC/OFF/PNEU, (1, 0, 1) + -- ADI(50) +[22] = "%1d", --PTR-ADI-LVR-KNOB-22, Pitch Trim Knob, Pitch Trim Knob, , , (0, 0, 1) + -- AMI(46) +[71] = "%1d", --PTR-SPD-LVR-SET-71, SET INDEX Knob, SET INDEX Knob, , , (0, 0, 1) + -- CLOCK(51) +[626] = "%1d", --PTR-SNSR-TMB-RDR-674, Clock Winding and Setting Knob, Clock Winding and Setting Knob, , , (1, 0, 1) +[628] = "%1d", --PTR-RPAN-WATCH-BTN-CTRL-627, Clock Elapsed Time Knob, Clock Elapsed Time Knob, , , (1, 0, 1) +[625] = "%.2f", --PTR-SNSR-TMB-RDR-674, Clock Winding and Setting Knob, Clock Winding and Setting Knob, , , (0.04, 0, 1) + -- CMDS(32) +[375] = "%1d", --PTR-LPAN-CMDS-TMB-RWR-375, RWR 555 Switch, RWR 555 Switch, , ON/OFF, (-1, 0, 1) +[374] = "%1d", --PTR-LPAN-CMDS-TMB-JMR-374, JMR Source Switch, JMR Source Switch, , ON/OFF, (-1, 0, 1) +[373] = "%1d", --PTR-LPAN-CMDS-TMB-MWS-373, MWS Source Switch, MWS Source Switch, , ON/OFF (no function), (-1, 0, 1) +[371] = "%1d", --PTR-LPAN-CMDS-TMB-JTSN-371, Jettison Switch, Jettison Switch, , JETT/OFF, (-1, 0, 1) +[365] = "%1d", --PTR-LPAN-CMDS-BTN-OSB1-365, O1 Expendable Category Switch, O1 Expendable Category Switch, , ON/OFF, (-1, 0, 1) +[366] = "%1d", --PTR-LPAN-CMDS-BTN-OSB2-366, O2 Expendable Category Switch, O2 Expendable Category Switch, , ON/OFF, (-1, 0, 1) +[367] = "%1d", --PTR-LPAN-CMDS-BTN-OSB3-367, CH Expendable Category Switch, CH Expendable Category Switch, , ON/OFF, (-1, 0, 1) +[368] = "%1d", --PTR-LPAN-CMDS-BTN-OSB4-368, FL Expendable Category Switch, FL Expendable Category Switch, , ON/OFF, (-1, 0, 1) +[375] = "%1d", --PTR-LPAN-CMDS-TMB-RWR-375, RWR 555 Switch, RWR 555 Switch, , ON/OFF, (1, 0, 1) +[374] = "%1d", --PTR-LPAN-CMDS-TMB-JMR-374, JMR Source Switch, JMR Source Switch, , ON/OFF, (1, 0, 1) +[373] = "%1d", --PTR-LPAN-CMDS-TMB-MWS-373, MWS Source Switch, MWS Source Switch, , ON/OFF (no function), (1, 0, 1) +[371] = "%1d", --PTR-LPAN-CMDS-TMB-JTSN-371, Jettison Switch, Jettison Switch, , JETT/OFF, (1, 0, 1) +[365] = "%1d", --PTR-LPAN-CMDS-BTN-OSB1-365, O1 Expendable Category Switch, O1 Expendable Category Switch, , ON/OFF, (1, 0, 1) +[366] = "%1d", --PTR-LPAN-CMDS-BTN-OSB2-366, O2 Expendable Category Switch, O2 Expendable Category Switch, , ON/OFF, (1, 0, 1) +[367] = "%1d", --PTR-LPAN-CMDS-BTN-OSB3-367, CH Expendable Category Switch, CH Expendable Category Switch, , ON/OFF, (1, 0, 1) +[368] = "%1d", --PTR-LPAN-CMDS-BTN-OSB4-368, FL Expendable Category Switch, FL Expendable Category Switch, , ON/OFF, (1, 0, 1) +[604] = "%1d", --PTR-LSIDE-BTN-CHAFF-604, CHAFF/FLARE Dispense Button - Push to dispense, CHAFF/FLARE Dispense Button - Push to dispense, , , (1, 0, 1) +[377] = "%.1f", --PTR-LPAN-CMDS-LVR-PRGM-377, PROGRAM Knob, PROGRAM Knob, , BIT/1/2/3/4, (0.1, 0, 0.4) +[378] = "%.1f", --PTR-LPAN-CMDS-LVR-MODE-378, MODE Knob, MODE Knob, , OFF/STBY/MAN/SEMI/AUTO/BYP, (0.1, 0, 0.5) +[377] = "%.1f", --PTR-LPAN-CMDS-LVR-PRGM-377, PROGRAM Knob, PROGRAM Knob, , BIT/1/2/3/4, (-0.1, 0, 0.4) +[378] = "%.1f", --PTR-LPAN-CMDS-LVR-MODE-378, MODE Knob, MODE Knob, , OFF/STBY/MAN/SEMI/AUTO/BYP, (-0.1, 0, 0.5) + -- CONTROL_INTERFACE(2) +[566] = "%1d", --PTR-FLTCP-TMB-DIGITAL-566, DIGITAL BACKUP Switch, DIGITAL BACKUP Switch, , OFF/BACKUP, (-1, 0, 1) +[567] = "%1d", --PTR-FLTCP-TMB-AFLP-567, ALT FLAPS Switch, ALT FLAPS Switch, , NORM/EXTEND, (-1, 0, 1) +[572] = "%1d", --PTR-FLTCP-TMB-LEFLP-572, LE FLAPS Switch, LE FLAPS Switch, , AUTO/LOCK, (-1, 0, 1) +[564] = "%1d", --PTR-MANTRIM-TMB-MODE-564, TRIM/AP DISC Switch, TRIM/AP DISC Switch, , DISC/NORM, (-1, 0, 1) +[358] = "%1d", --PTR-LGCP-TMB-STCONF-358, STORES CONFIG Switch, STORES CONFIG Switch, , CAT III/CAT I, (-1, 0, 1) +[109] = "%1d", --PTR-CLCP-TMB-PITCH-109, Autopilot PITCH Switch, Autopilot PITCH Switch, , ATT HOLD/ A/P OFF/ ALT HOLD, (-1, -1, 0) +[108] = "%1d", --PTR-CLCP-TMB-ROLL-108, Autopilot ROLL Switch, Autopilot ROLL Switch, , STRG SEL/ATT HOLD/HDG SEL, (-1, -1, 1) +[97] = "%1d", --PTR-CLCP-BTN-ADV-97, ADV MODE Switch, ADV MODE Switch, , , (-1, 0, 1) +[568] = "%1d", --PTR-FLTCP-TMB-MAN-568, MANUAL TF FLYUP Switch, MANUAL TF FLYUP Switch, , ENABLE/DISABLE, (-1, 0, 1) +[560] = "%1d", --PTR-MANTRIM-LVR-ROLL-560, ROLL TRIM Wheel, ROLL TRIM Wheel, , , (0, -1, 1) +[562] = "%1d", --PTR-MANTRIM-LVR-PITCH-562, PITCH TRIM Wheel, PITCH TRIM Wheel, , , (0, -1, 1) +[565] = "%1d", --PTR-MANTRIM-LVR-YAW-565, YAW TRIM Knob, YAW TRIM Knob, , , (0, -1, 1) +[566] = "%1d", --PTR-FLTCP-TMB-DIGITAL-566, DIGITAL BACKUP Switch, DIGITAL BACKUP Switch, , OFF/BACKUP, (1, 0, 1) +[567] = "%1d", --PTR-FLTCP-TMB-AFLP-567, ALT FLAPS Switch, ALT FLAPS Switch, , NORM/EXTEND, (1, 0, 1) +[574] = "%1d", --PTR-FLTCP-TMB-BIT-574, BIT Switch, BIT Switch, , OFF/BIT, (1, 0, 1) +[574] = "%1d", --PTR-FLTCP-TMB-BIT-574, BIT Switch, BIT Switch, , OFF/BIT, (1, 0, 1) +[573] = "%1d", --PTR-FLTCP-TMB-FLCS-573, FLCS RESET Switch, FLCS RESET Switch, , OFF/RESET, (1, 0, 1) +[573] = "%1d", --PTR-FLTCP-TMB-FLCS-573, FLCS RESET Switch, FLCS RESET Switch, , OFF/RESET, (1, 0, 1) +[572] = "%1d", --PTR-FLTCP-TMB-LEFLP-572, LE FLAPS Switch, LE FLAPS Switch, , AUTO/LOCK, (1, 0, 1) +[564] = "%1d", --PTR-MANTRIM-TMB-MODE-564, TRIM/AP DISC Switch, TRIM/AP DISC Switch, , DISC/NORM, (1, 0, 1) +[425] = "%1d", --PTR-MPCP-TMB-MP-425, MANUAL PITCH Override Switch, MANUAL PITCH Override Switch, , OVRD/NORM, (1, 0, 1) +[425] = "%1d", --PTR-MPCP-TMB-MP-425, MANUAL PITCH Override Switch, MANUAL PITCH Override Switch, , OVRD/NORM, (1, 0, 1) +[358] = "%1d", --PTR-LGCP-TMB-STCONF-358, STORES CONFIG Switch, STORES CONFIG Switch, , CAT III/CAT I, (1, 0, 1) +[109] = "%1d", --PTR-CLCP-TMB-PITCH-109, Autopilot PITCH Switch, Autopilot PITCH Switch, , ATT HOLD/ A/P OFF/ ALT HOLD, (1, 0, 1) +[108] = "%1d", --PTR-CLCP-TMB-ROLL-108, Autopilot ROLL Switch, Autopilot ROLL Switch, , STRG SEL/ATT HOLD/HDG SEL, (1, -1, 1) +[97] = "%1d", --PTR-CLCP-BTN-ADV-97, ADV MODE Switch, ADV MODE Switch, , , (1, 0, 1) +[568] = "%1d", --PTR-FLTCP-TMB-MAN-568, MANUAL TF FLYUP Switch, MANUAL TF FLYUP Switch, , ENABLE/DISABLE, (1, 0, 1) + -- CPT_MECH(10) +[606] = "%1d", --PTR-LARMS-TMB-OPN-606, Canopy Switch, Canopy Switch, , OPEN/HOLD/CLOSE(momentarily), (-1, 0, 1) +[606] = "%1d", --PTR-LARMS-TMB-OPN-606, Canopy Switch, Canopy Switch, , OPEN/HOLD/CLOSE(momentarily), (-1, -1, 0) +[600] = "%1d", --PTR-LARMS-CNPOPN-600, Canopy Handle, Canopy Handle, , UP/DOWN, (-1, 0, 1) +[601] = "%1d", --PTR-LARMS-CNPJETT-601, CANOPY JETTISON T-Handle, CANOPY JETTISON T-Handle, , PULL/STOW, (-1, 0, 1) +[785] = "%1d", --PTR-SEAT-ARM-LOCK-785, Ejection Safety Lever, Ejection Safety Lever, , ARMED/LOCKED, (-1, 0, 1) +[786] = "%1d", --PTR-SEAT-TMB-ADJ-786, SEAT ADJ Switch, SEAT ADJ Switch, , UP/OFF/DOWN, (-1, -1, 0) +[796] = "%1d", --PTR-STICK-HIDE-796, Hide Stick toggle, Hide Stick toggle, , , (-1, 0, 1) +[600] = "%1d", --PTR-LARMS-CNPOPN-600, Canopy Handle, Canopy Handle, , UP/DOWN, (1, 0, 1) +[601] = "%1d", --PTR-LARMS-CNPJETT-601, CANOPY JETTISON T-Handle, CANOPY JETTISON T-Handle, , PULL/STOW, (1, 0, 1) +[785] = "%1d", --PTR-SEAT-ARM-LOCK-785, Ejection Safety Lever, Ejection Safety Lever, , ARMED/LOCKED, (1, 0, 1) +[786] = "%1d", --PTR-SEAT-TMB-ADJ-786, SEAT ADJ Switch, SEAT ADJ Switch, , UP/OFF/DOWN, (1, 0, 1) +[796] = "%1d", --PTR-STICK-HIDE-796, Hide Stick toggle, Hide Stick toggle, , , (1, 0, 1) + -- CPTLIGHTS_SYSTEM(12) +[691] = "%1d", --PTR-RLGT-TMB-MALIND-691, MAL & IND LTS Switch, MAL & IND LTS Switch, , BRT/Center/DIM, (-1, -1, 0) +[685] = "%1d", --PTR-RLGT-LVR-PRICNS-685, PRIMARY CONSOLES BRT Knob, PRIMARY CONSOLES BRT Knob, , , (0, 0, 1) +[686] = "%1d", --PTR-RLGT-LVR-PRIPNL-686, PRIMARY INST PNL BRT Knob, PRIMARY INST PNL BRT Knob, , , (0, 0, 1) +[687] = "%1d", --PTR-RLGT-LVR-PRIDATA-687, PRIMARY DATA ENTRY DISPLAY BRT Knob, PRIMARY DATA ENTRY DISPLAY BRT Knob, , , (0, 0, 1) +[688] = "%1d", --PTR-RLGT-LVR-FLDCNS-688, FLOOD CONSOLES BRT Knob, FLOOD CONSOLES BRT Knob, , , (0, 0, 1) +[690] = "%1d", --PTR-RLGT-LVR-FLDPNL-690, FLOOD INST PNL BRT Knob, FLOOD INST PNL BRT Knob, , , (0, 0, 1) +[794] = "%1d", --PTR-AOA-LVL-794, AOA Indexer Dimming Lever, AOA Indexer Dimming Lever, , , (0, 0, 1) +[795] = "%1d", --PTR-AR-LVL-795, AR Status Indicator Dimming Lever, AR Status Indicator Dimming Lever, , , (0, 0, 1) +[116] = "%1d", --PTR-CPBC-BTN-MCAUT-116, Master Caution Button - Push to reset, Master Caution Button - Push to reset, , , (1, 0, 1) +[577] = "%1d", --PTR-TESTCP-BTN-MAL-577, MAL & IND LTS Test Button - Push to test, MAL & IND LTS Test Button - Push to test, , , (1, 0, 1) +[691] = "%1d", --PTR-RLGT-TMB-MALIND-691, MAL & IND LTS Switch, MAL & IND LTS Switch, , BRT/Center/DIM, (1, 0, 1) + -- ECS_INTERFACE(13) +[692] = "%.1f", --PTR-AIRCOND-TMB-TEMP-692, TEMP Knob, TEMP Knob, , , (0, -0.3, 0.3) +[602] = "%.2f", --PTR-LARMS-DEFOG-602, DEFOG Lever, DEFOG Lever, , , (0.05, 0, 1) +[602] = "%.2f", --PTR-LARMS-DEFOG-602, DEFOG Lever, DEFOG Lever, , , (-0.05, 0, 1) +[693] = "%.1f", --PTR-AIRCOND-TMB-SRC-693, AIR SOURCE Knob, AIR SOURCE Knob, , OFF/NORM/DUMP/RAM, (0.1, 0, 0.3) +[693] = "%.1f", --PTR-AIRCOND-TMB-SRC-693, AIR SOURCE Knob, AIR SOURCE Knob, , OFF/NORM/DUMP/RAM, (-0.1, 0, 0.3) + -- EHSI(28) +[46] = "%1d", --PTR-EHSI-BTN-M-46, Mode (M) Button, Mode (M) Button, , , (1, 0, 1) +[45] = "%1d", --PTR-EHSI-LVR-HDG-45, HDG Set Knob, HDG Set Knob, , , (1, 0, 1) +[42] = "%1d", --PTR-EHSI-LVR-HDG-45, HDG Set Knob, HDG Set Knob, , , (1, 0, 1) +[44] = "%1d", --PTR-EHSI-LVR-CRS-44, CRS Set / Brightness Control Knob, CRS Set / Brightness Control Knob, , , (1, 0, 1) +[43] = "%1d", --PTR-EHSI-LVR-CRS-44, CRS Set / Brightness Control Knob, CRS Set / Brightness Control Knob, , , (1, 0, 1) + -- ELEC_INTERFACE(3) +[510] = "%1d", --PTR-ELEC-TMB-MPWR-510, MAIN PWR Switch, MAIN PWR Switch, , MAIN PWR/BATT/OFF, (-1, -1, 1) +[578] = "%1d", --PTR-TESTCP-TMB-PROBE-578, PROBE HEAT Switch, PROBE HEAT Switch, , PROBE HEAT/OFF/TEST(momentarily), (-1, 0, 1) +[578] = "%1d", --PTR-TESTCP-TMB-PROBE-578, PROBE HEAT Switch, PROBE HEAT Switch, , PROBE HEAT/OFF/TEST(momentarily), (-1, -1, 0) +[510] = "%1d", --PTR-ELEC-TMB-MPWR-510, MAIN PWR Switch, MAIN PWR Switch, , MAIN PWR/BATT/OFF, (1, -1, 1) +[511] = "%1d", --PTR-ELEC-BTN-CRES-511, ELEC CAUTION RESET Button - Push to reset, ELEC CAUTION RESET Button - Push to reset, , , (1, 0, 1) +[585] = "%1d", --PTR-TESTCP-TMB-TEST-585, FLCS PWR TEST Switch, FLCS PWR TEST Switch, , MAINT/NORM/TEST(momentarily), (1, -1, 0) +[585] = "%1d", --PTR-TESTCP-TMB-TEST-585, FLCS PWR TEST Switch, FLCS PWR TEST Switch, , MAINT/NORM/TEST(momentarily), (1, 0, 1) +[579] = "%1d", --PTR-TESTCP-TMB-EPU-579, EPU/GEN Test Switch, EPU/GEN Test Switch, , EPU/GEN /OFF, (1, 0, 1) +[579] = "%1d", --PTR-TESTCP-TMB-EPU-579, EPU/GEN Test Switch, EPU/GEN Test Switch, , EPU/GEN /OFF, (1, 0, 1) + -- ENGINE_INTERFACE(6) +[527] = "%1d", --PTR-EPU-CVR-EPUTMB-527, EPU Switch Cover for ON, EPU Switch Cover for ON, , OPEN/CLOSE, (-1, 0, 1) +[529] = "%1d", --PTR-EPU-CVR-EPUTMB-529, EPU Switch Cover for OFF, EPU Switch Cover for OFF, , OPEN/CLOSE, (-1, 0, 1) +[528] = "%1d", --PTR-EPU-TMB-EPUTMB-528, EPU Switch, EPU Switch, , ON/NORM/OFF, (-1, -1, 1) +[710] = "%1d", --PTR-ANTICE-TMB-ENG-710, Engine ANTI ICE Switch, Engine ANTI ICE Switch, , ON/AUTO/OFF, (-1, -1, 1) +[447] = "%1d", --PTR-ENGSTART-TMB-JETFUEL-447, JFS Switch, JFS Switch, , START 1/OFF/START 2, (-1, 1, 0) +[448] = "%1d", --PTR-ENGSTART-CVR-ENGCNT-448, ENG CONT Switch Cover, ENG CONT Switch Cover, , OPEN/CLOSE, (-1, 0, 1) +[449] = "%1d", --PTR-ENGSTART-TMB-ENGCNT-449, ENG CONT Switch, ENG CONT Switch, , PRI/SEC, (-1, 0, 1) +[451] = "%1d", --PTR-ENGSTART-TMB-MAXPWR-451, MAX POWER Switch (is inoperative), MAX POWER Switch (is inoperative), , MAX POWER/OFF, (-1, 0, 1) +[450] = "%1d", --PTR-ENGSTART-TMB-ABENG-450, AB RESET Switch, AB RESET Switch, , AB RESET/NORM/ENG DATA, (-1, -1, 0) +[527] = "%1d", --PTR-EPU-CVR-EPUTMB-527, EPU Switch Cover for ON, EPU Switch Cover for ON, , OPEN/CLOSE, (1, 0, 1) +[529] = "%1d", --PTR-EPU-CVR-EPUTMB-529, EPU Switch Cover for OFF, EPU Switch Cover for OFF, , OPEN/CLOSE, (1, 0, 1) +[528] = "%1d", --PTR-EPU-TMB-EPUTMB-528, EPU Switch, EPU Switch, , ON/NORM/OFF, (1, -1, 1) +[710] = "%1d", --PTR-ANTICE-TMB-ENG-710, Engine ANTI ICE Switch, Engine ANTI ICE Switch, , ON/AUTO/OFF, (1, -1, 1) +[447] = "%1d", --PTR-ENGSTART-TMB-JETFUEL-447, JFS Switch, JFS Switch, , START 1/OFF/START 2, (1, 0, 1) +[448] = "%1d", --PTR-ENGSTART-CVR-ENGCNT-448, ENG CONT Switch Cover, ENG CONT Switch Cover, , OPEN/CLOSE, (1, 0, 1) +[449] = "%1d", --PTR-ENGSTART-TMB-ENGCNT-449, ENG CONT Switch, ENG CONT Switch, , PRI/SEC, (1, 0, 1) +[451] = "%1d", --PTR-ENGSTART-TMB-MAXPWR-451, MAX POWER Switch (is inoperative), MAX POWER Switch (is inoperative), , MAX POWER/OFF, (1, 0, 1) +[450] = "%1d", --PTR-ENGSTART-TMB-ABENG-450, AB RESET Switch, AB RESET Switch, , AB RESET/NORM/ENG DATA, (1, 0, 1) +[575] = "%1d", --PTR-TESTCP-BTN-FIRE-575, FIRE & OHEAT DETECT Test Button - Push to test, FIRE & OHEAT DETECT Test Button - Push to test, , , (1, 0, 1) + -- EXTLIGHTS_SYSTEM(11) +[532] = "%1d", --PTR-EXTLGT-TMB-FLSH-532, FLASH STEADY Switch, FLASH STEADY Switch, , FLASH/STEADY, (-1, 0, 1) +[533] = "%1d", --PTR-EXTLGT-TMB-WNGTAIL-533, WING/TAIL Switch, WING/TAIL Switch, , BRT/OFF/DIM, (-1, -1, 1) +[534] = "%1d", --PTR-EXTLGT-TMB-FUS-534, FUSELAGE Switch, FUSELAGE Switch, , BRT/OFF/DIM, (-1, -1, 1) +[360] = "%1d", --PTR-LGCP-TMB-LIGHTS-360, LANDING TAXI LIGHTS Switch, LANDING TAXI LIGHTS Switch, , LANDING/OFF/TAXI, (-1, -1, 1) +[535] = "%1d", --PTR-EXTLGT-LVR-FORM-535, FORM Knob, FORM Knob, , , (0, 0, 1) +[537] = "%1d", --PTR-EXTLGT-LVR-AREF-537, AERIAL REFUELING Knob, AERIAL REFUELING Knob, , , (0, 0, 1) +[532] = "%1d", --PTR-EXTLGT-TMB-FLSH-532, FLASH STEADY Switch, FLASH STEADY Switch, , FLASH/STEADY, (1, 0, 1) +[533] = "%1d", --PTR-EXTLGT-TMB-WNGTAIL-533, WING/TAIL Switch, WING/TAIL Switch, , BRT/OFF/DIM, (1, -1, 1) +[534] = "%1d", --PTR-EXTLGT-TMB-FUS-534, FUSELAGE Switch, FUSELAGE Switch, , BRT/OFF/DIM, (1, -1, 1) +[360] = "%1d", --PTR-LGCP-TMB-LIGHTS-360, LANDING TAXI LIGHTS Switch, LANDING TAXI LIGHTS Switch, , LANDING/OFF/TAXI, (1, -1, 1) +[531] = "%.1f", --PTR-EXTLGT-TMB-ANTCOL-531, ANTI-COLL Knob, ANTI-COLL Knob, , OFF/1/2/3/4/A/B/C, (0.1, 0, 0.7) +[536] = "%.1f", --PTR-EXTLGT-TMB-MASTER-536, MASTER Switch, MASTER Switch, , OFF/ALL/A-C/FORM/NORM, (0.1, 0, 0.4) +[531] = "%.1f", --PTR-EXTLGT-TMB-ANTCOL-531, ANTI-COLL Knob, ANTI-COLL Knob, , OFF/1/2/3/4/A/B/C, (-0.1, 0, 0.7) +[536] = "%.1f", --PTR-EXTLGT-TMB-MASTER-536, MASTER Switch, MASTER Switch, , OFF/ALL/A-C/FORM/NORM, (-0.1, 0, 0.4) + -- FCR(31) +[672] = "%1d", --PTR-SNSR-TMB-FCR-672, FCR Switch, FCR Switch, , FCR/OFF, (-1, 0, 1) +[672] = "%1d", --PTR-SNSR-TMB-FCR-672, FCR Switch, FCR Switch, , FCR/OFF, (1, 0, 1) + -- FUEL_INTERFACE(4) +[559] = "%1d", --PTR-FUELCP-TMB-MASTER-559, FUEL MASTER Switch, FUEL MASTER Switch, , MASTER/OFF, (-1, 0, 1) +[558] = "%1d", --PTR-FUELCP-CVR-MASTER-558, FUEL MASTER Switch Cover, FUEL MASTER Switch Cover, , OPEN/CLOSE, (-1, 0, 1) +[159] = "%1d", --PTR-CDCP-TMB-FTRANS-159, External Fuel Transfer Switch, External Fuel Transfer Switch, , NORM/ WING FIRST, (-1, 0, 1) +[557] = "%1d", --PTR-FUELCP-TMB-TANK-557, TANK INERTING Switch, TANK INERTING Switch, , TANK INERTING /OFF, (-1, 0, 1) +[555] = "%1d", --PTR-FUELCP-TMB-REFUEL-555, AIR REFUEL Switch, AIR REFUEL Switch, , OPEN/CLOSE, (-1, 0, 1) +[559] = "%1d", --PTR-FUELCP-TMB-MASTER-559, FUEL MASTER Switch, FUEL MASTER Switch, , MASTER/OFF, (1, 0, 1) +[558] = "%1d", --PTR-FUELCP-CVR-MASTER-558, FUEL MASTER Switch Cover, FUEL MASTER Switch Cover, , OPEN/CLOSE, (1, 0, 1) +[159] = "%1d", --PTR-CDCP-TMB-FTRANS-159, External Fuel Transfer Switch, External Fuel Transfer Switch, , NORM/ WING FIRST, (1, 0, 1) +[557] = "%1d", --PTR-FUELCP-TMB-TANK-557, TANK INERTING Switch, TANK INERTING Switch, , TANK INERTING /OFF, (1, 0, 1) +[555] = "%1d", --PTR-FUELCP-TMB-REFUEL-555, AIR REFUEL Switch, AIR REFUEL Switch, , OPEN/CLOSE, (1, 0, 1) +[556] = "%.1f", --PTR-FUELCP-TMB-ENGFEED-556, ENGINE FEED Knob, ENGINE FEED Knob, , OFF/NORM/AFT/FWD, (0.1, 0, 0.3) +[158] = "%.1f", --PTR-CDCP-TMB-FMODE-158, FUEL QTY SEL Knob, FUEL QTY SEL Knob, , TEST(momentarily)/NORM/RSVR/INT WING/EXT WING/EXT CTR, (0.1, 0, 0.5) +[556] = "%.1f", --PTR-FUELCP-TMB-ENGFEED-556, ENGINE FEED Knob, ENGINE FEED Knob, , OFF/NORM/AFT/FWD, (-0.1, 0, 0.3) +[158] = "%.1f", --PTR-CDCP-TMB-FMODE-158, FUEL QTY SEL Knob, FUEL QTY SEL Knob, , TEST(momentarily)/NORM/RSVR/INT WING/EXT WING/EXT CTR, (-0.1, 0, 0.5) + -- GEAR_INTERFACE(7) +[362] = "%1d", --PTR-LGCP-ARM-LG-362, LG Handle, LG Handle, , UP/DN, (-1, 0, 1) +[356] = "%1d", --PTR-LGCP-TMB-BRK-356, BRAKES Channel Switch, BRAKES Channel Switch, , CHAN 1/CHAN 2, (-1, 0, 1) +[354] = "%1d", --PTR-LGCP-TMB-HOOK-354, HOOK Switch, HOOK Switch, , UP/DN, (-1, 0, 1) +[362] = "%1d", --PTR-LGCP-ARM-LG-362, LG Handle, LG Handle, , UP/DN, (1, 0, 1) +[361] = "%1d", --PTR-LGCP-BTN-DNLOCK-361, DN LOCK REL Button - Push to reset, DN LOCK REL Button - Push to reset, , , (1, 0, 1) +[357] = "%1d", --PTR-LGCP-TMB-PRKNG-357, ANTI-SKID Switch, ANTI-SKID Switch, , PARKING BRAKE/ANTI-SKID/OFF, (1, 0, 1) +[357] = "%1d", --PTR-LGCP-TMB-PRKNG-357, ANTI-SKID Switch, ANTI-SKID Switch, , PARKING BRAKE/ANTI-SKID/OFF, (1, -1, 0) +[356] = "%1d", --PTR-LGCP-TMB-BRK-356, BRAKES Channel Switch, BRAKES Channel Switch, , CHAN 1/CHAN 2, (1, 0, 1) +[354] = "%1d", --PTR-LGCP-TMB-HOOK-354, HOOK Switch, HOOK Switch, , UP/DN, (1, 0, 1) +[359] = "%1d", --PTR-LGCP-BTN-HORN-359, HORN SILENCER Button - Push to reset, HORN SILENCER Button - Push to reset, , , (1, 0, 1) + -- GPS(59) +[720] = "%1d", --PTR-AVIPWR-TMB-GPS-720, GPS Switch, GPS Switch, , GPS/OFF, (-1, 0, 1) +[720] = "%1d", --PTR-AVIPWR-TMB-GPS-720, GPS Switch, GPS Switch, , GPS/OFF, (1, 0, 1) + -- HMCS(30) +[392] = "%.1f", --PTR-HMDP-LVR-SMBINT-392, HMCS SYMBOLOGY INT Knob, HMCS SYMBOLOGY INT Knob, , , (0,1) + -- IDM(60) +[721] = "%1d", --PTR-AVIPWR-TMB-DL-721, DL Switch, DL Switch, , DL/OFF, (-1, 0, 1) +[721] = "%1d", --PTR-AVIPWR-TMB-DL-721, DL Switch, DL Switch, , DL/OFF, (1, 0, 1) + -- IFF_CONTROL_PANEL(35) +[542] = "%1d", --PTR-AUXCOM-TMB-CNI-542, C & I Knob, C & I Knob, , UFC/BACKUP, (-1, 0, 1) +[541] = "%1d", --PTR-AUXCOM-TMB-M4-541, IFF M-4 CODE Switch, IFF M-4 CODE Switch, , HOLD/ A/B /ZERO, (-1, -1, 1) +[543] = "%1d", --PTR-AUXCOM-TMB-REPLY-543, IFF MODE 4 REPLY Switch, IFF MODE 4 REPLY Switch, , OUT/A/B, (-1, -1, 1) +[544] = "%1d", --PTR-AUXCOM-TMB-MONITOR-544, IFF MODE 4 MONITOR Switch, IFF MODE 4 MONITOR Switch, , OUT/AUDIO, (-1, 0, 1) +[553] = "%1d", --PTR-AUXCOM-TMB-TACAN-553, IFF ENABLE Switch, IFF ENABLE Switch, , M1/M3 /OFF/ M3/MS, (-1, -1, 1) +[545] = "%1d", --PTR-AUXCOM-TMB-CHNL1-545, IFF MODE 1 Selector Lever, IFF MODE 1 Selector Lever, , DIGIT 1, (-1, -1, 0) +[547] = "%1d", --PTR-AUXCOM-TMB-CHNL2-547, IFF MODE 1 Selector Lever, IFF MODE 1 Selector Lever, , DIGIT 2, (-1, -1, 0) +[549] = "%1d", --PTR-AUXCOM-TMB-CHNL3-549, IFF MODE 3 Selector Lever, IFF MODE 3 Selector Lever, , DIGIT 1, (-1, -1, 0) +[551] = "%1d", --PTR-AUXCOM-TMB-CHNL4-551, IFF MODE 3 Selector Lever, IFF MODE 3 Selector Lever, , DIGIT 2, (-1, -1, 0) +[542] = "%1d", --PTR-AUXCOM-TMB-CNI-542, C & I Knob, C & I Knob, , UFC/BACKUP, (1, 0, 1) +[541] = "%1d", --PTR-AUXCOM-TMB-M4-541, IFF M-4 CODE Switch, IFF M-4 CODE Switch, , HOLD/ A/B /ZERO, (1, -1, 1) +[543] = "%1d", --PTR-AUXCOM-TMB-REPLY-543, IFF MODE 4 REPLY Switch, IFF MODE 4 REPLY Switch, , OUT/A/B, (1, -1, 1) +[544] = "%1d", --PTR-AUXCOM-TMB-MONITOR-544, IFF MODE 4 MONITOR Switch, IFF MODE 4 MONITOR Switch, , OUT/AUDIO, (1, 0, 1) +[553] = "%1d", --PTR-AUXCOM-TMB-TACAN-553, IFF ENABLE Switch, IFF ENABLE Switch, , M1/M3 /OFF/ M3/MS, (1, -1, 1) +[545] = "%1d", --PTR-AUXCOM-TMB-CHNL1-545, IFF MODE 1 Selector Lever, IFF MODE 1 Selector Lever, , DIGIT 1, (1, 0, 1) +[547] = "%1d", --PTR-AUXCOM-TMB-CHNL2-547, IFF MODE 1 Selector Lever, IFF MODE 1 Selector Lever, , DIGIT 2, (1, 0, 1) +[549] = "%1d", --PTR-AUXCOM-TMB-CHNL3-549, IFF MODE 3 Selector Lever, IFF MODE 3 Selector Lever, , DIGIT 1, (1, 0, 1) +[551] = "%1d", --PTR-AUXCOM-TMB-CHNL4-551, IFF MODE 3 Selector Lever, IFF MODE 3 Selector Lever, , DIGIT 2, (1, 0, 1) +[540] = "%.1f", --PTR-AUXCOM-LVR-MODE-540, IFF MASTER Knob, IFF MASTER Knob, , OFF/STBY/LOW/NORM/EMER, (0.1, 0, 0.4) +[540] = "%.1f", --PTR-AUXCOM-LVR-MODE-540, IFF MASTER Knob, IFF MASTER Knob, , OFF/STBY/LOW/NORM/EMER, (-0.1, 0, 0.4) + -- INS(14) +[719] = "%.1f", --PTR-AVIPWR-LVR-INS-719, INS Knob, INS Knob, , OFF/STOR HDG/NORM/NAV/CAL/INFLT ALIGN/ATT, (0.1, 0, 0.6) +[719] = "%.1f", --PTR-AVIPWR-LVR-INS-719, INS Knob, INS Knob, , OFF/STOR HDG/NORM/NAV/CAL/INFLT ALIGN/ATT, (-0.1, 0, 0.6) + -- INTERCOM(39) +[443] = "%1d", --PTR-AUDIO2-TMB-MODE-443, HOT MIC CIPHER Switch, HOT MIC CIPHER Switch, , HOT MIC / OFF / CIPHER, (-1, -1, 1) +[711] = "%1d", --PTR-ANTICE-TMB-IFF-711, IFF ANT SEL Switch, IFF ANT SEL Switch, , LOWER/NORM/UPPER, (-1, -1, 1) +[712] = "%1d", --PTR-ANTICE-TMB-UHF-712, UHF ANT SEL Switch, UHF ANT SEL Switch, , LOWER/NORM/UPPER, (-1, -1, 1) +[696] = "%1d", --PTR-ZROIZE-TMB-VOICE-696, Voice Message Inhibit Switch, Voice Message Inhibit Switch, , VOICE MESSAGE/INHIBIT, (-1, 0, 1) +[701] = "%1d", --PTR-NUCLR-TMB-PLAIN-701, PLAIN Cipher Switch, PLAIN Cipher Switch, , CRAD 1/PLAIN/CRAD 2, (-1, -1, 1) +[694] = "%1d", --PTR-ZROIZE-CVR-ZERO-694, ZEROIZE Switch Cover, ZEROIZE Switch Cover, , OPEN/CLOSE, (-1, 0, 1) +[695] = "%1d", --PTR-ZROIZE-TMB-ZERO-695, ZEROIZE Switch, ZEROIZE Switch, , OFP/OFF/DATA, (-1, -1, 1) +[430] = "%1d", --PTR-AUDIO1-LVR-COMM1-430, COMM 1 Power Knob, COMM 1 Power Knob, , , (0, 0, 1) +[431] = "%1d", --PTR-AUDIO1-LVR-COMM2-431, COMM 2 Power Knob, COMM 2 Power Knob, , , (0, 0, 1) +[432] = "%1d", --PTR-AUDIO1-LVR-SV-432, SECURE VOICE Knob, SECURE VOICE Knob, , , (0, 0, 1) +[433] = "%1d", --PTR-AUDIO1-LVR-MSL-433, MSL Tone Knob, MSL Tone Knob, , , (0, 0, 1) +[436] = "%1d", --PTR-AUDIO1-LVR-TF-436, TF Tone Knob, TF Tone Knob, , , (0, 0, 1) +[437] = "%1d", --PTR-AUDIO1-LVR-THREAT-437, THREAT Tone Knob, THREAT Tone Knob, , , (0, 0, 1) +[442] = "%1d", --PTR-AUDIO2-LVR-ILS-442, ILS Power Knob, ILS Power Knob, , , (0, 0, 1) +[441] = "%1d", --PTR-AUDIO2-LVR-TACAN-441, TACAN Knob, TACAN Knob, , , (0, 0, 1) +[440] = "%1d", --PTR-AUDIO2-LVR-INTERCOM-440, INTERCOM Knob, INTERCOM Knob, , , (0, 0, 1) +[443] = "%1d", --PTR-AUDIO2-TMB-MODE-443, HOT MIC CIPHER Switch, HOT MIC CIPHER Switch, , HOT MIC / OFF / CIPHER, (1, -1, 1) +[711] = "%1d", --PTR-ANTICE-TMB-IFF-711, IFF ANT SEL Switch, IFF ANT SEL Switch, , LOWER/NORM/UPPER, (1, -1, 1) +[712] = "%1d", --PTR-ANTICE-TMB-UHF-712, UHF ANT SEL Switch, UHF ANT SEL Switch, , LOWER/NORM/UPPER, (1, -1, 1) +[696] = "%1d", --PTR-ZROIZE-TMB-VOICE-696, Voice Message Inhibit Switch, Voice Message Inhibit Switch, , VOICE MESSAGE/INHIBIT, (1, 0, 1) +[701] = "%1d", --PTR-NUCLR-TMB-PLAIN-701, PLAIN Cipher Switch, PLAIN Cipher Switch, , CRAD 1/PLAIN/CRAD 2, (1, -1, 1) +[694] = "%1d", --PTR-ZROIZE-CVR-ZERO-694, ZEROIZE Switch Cover, ZEROIZE Switch Cover, , OPEN/CLOSE, (1, 0, 1) +[695] = "%1d", --PTR-ZROIZE-TMB-ZERO-695, ZEROIZE Switch, ZEROIZE Switch, , OFP/OFF/DATA, (1, -1, 1) +[434] = "%.1f", --PTR-AUDIO1-TMB-COMM1-434, COMM 1 (UHF) Mode Knob, COMM 1 (UHF) Mode Knob, , , (0.5, 0, 1) +[435] = "%.1f", --PTR-AUDIO1-TMB-COMM2-435, COMM 2 (VHF) Mode Knob, COMM 2 (VHF) Mode Knob, , , (0.5, 0, 1) +[434] = "%.1f", --PTR-AUDIO1-TMB-COMM1-434, COMM 1 (UHF) Mode Knob, COMM 1 (UHF) Mode Knob, , , (-0.5, 0, 1) +[435] = "%.1f", --PTR-AUDIO1-TMB-COMM2-435, COMM 2 (VHF) Mode Knob, COMM 2 (VHF) Mode Knob, , , (-0.5, 0, 1) + -- KY58(42) +[708] = "%1d", --PTR-KY58-LVR-VOL-708, KY-58 VOLUME Knob, KY-58 VOLUME Knob, , , (0, 0, 1) +[705] = "%.1f", --PTR-KY58-LVR-MODE1-705, KY-58 MODE Knob, KY-58 MODE Knob, , P/C/LD/RV, (0.1, 0, 0.3) +[706] = "%.1f", --PTR-KY58-LVR-MODE2-706, KY-58 FILL Knob, KY-58 FILL Knob, , Z 1-5/1/2/3/4/5/6/Z ALL, (0.1, 0, 0.7) +[705] = "%.1f", --PTR-KY58-LVR-MODE1-705, KY-58 MODE Knob, KY-58 MODE Knob, , P/C/LD/RV, (-0.1, 0, 0.3) +[706] = "%.1f", --PTR-KY58-LVR-MODE2-706, KY-58 FILL Knob, KY-58 FILL Knob, , Z 1-5/1/2/3/4/5/6/Z ALL, (-0.1, 0, 0.7) +[707] = "%.1f", --PTR-KY58-LVR-MODE3-707, KY-58 Power Knob, KY-58 Power Knob, , OFF/ON/TD, (0.5, 0, 1) +[707] = "%.1f", --PTR-KY58-LVR-MODE3-707, KY-58 Power Knob, KY-58 Power Knob, , OFF/ON/TD, (-0.5, 0, 1) +[722] = "%1d", --PTR-AVIPWR-TMB-MAP-722, MAP Switch, MAP Switch, , MAP/OFF, (-1, 0, 1) +[722] = "%1d", --PTR-AVIPWR-TMB-MAP-722, MAP Switch, MAP Switch, , MAP/OFF, (1, 0, 1) + -- MFD_LEFT(24) +[320] = "%1d", --PTR-LMFCD-RS-GAIN-DN-320, Left MFD GAIN Rocker Switch, Left MFD GAIN Rocker Switch, , Down/Decrease, (-1, -1, 0) +[321] = "%1d", --PTR-LMFCD-RS-SYM-DN-321, Left MFD SYM Rocker Switch, Left MFD SYM Rocker Switch, , Down/Decrease, (-1, -1, 0) +[322] = "%1d", --PTR-LMFCD-RS-CON-DN-322, Left MFD CON Rocker Switch, Left MFD CON Rocker Switch, , Down/Decrease, (-1, -1, 0) +[323] = "%1d", --PTR-LMFCD-RS-BRT-DN-323, Left MFD BRT Rocker Switch, Left MFD BRT Rocker Switch, , Down/Decrease, (-1, -1, 0) +[300] = "%1d", --PTR-LMFCD-BTN-OSB1-300, Left MFD OSB 1, Left MFD OSB 1, , , (1, 0, 1) +[301] = "%1d", --PTR-LMFCD-BTN-OSB2-301, Left MFD OSB 2, Left MFD OSB 2, , , (1, 0, 1) +[302] = "%1d", --PTR-LMFCD-BTN-OSB3-302, Left MFD OSB 3, Left MFD OSB 3, , , (1, 0, 1) +[303] = "%1d", --PTR-LMFCD-BTN-OSB4-303, Left MFD OSB 4, Left MFD OSB 4, , , (1, 0, 1) +[304] = "%1d", --PTR-LMFCD-BTN-OSB5-304, Left MFD OSB 5, Left MFD OSB 5, , , (1, 0, 1) +[305] = "%1d", --PTR-LMFCD-BTN-OSB6-305, Left MFD OSB 6, Left MFD OSB 6, , , (1, 0, 1) +[306] = "%1d", --PTR-LMFCD-BTN-OSB7-306, Left MFD OSB 7, Left MFD OSB 7, , , (1, 0, 1) +[307] = "%1d", --PTR-LMFCD-BTN-OSB8-307, Left MFD OSB 8, Left MFD OSB 8, , , (1, 0, 1) +[308] = "%1d", --PTR-LMFCD-BTN-OSB9-308, Left MFD OSB 9, Left MFD OSB 9, , , (1, 0, 1) +[309] = "%1d", --PTR-LMFCD-BTN-OSB10-309, Left MFD OSB 10, Left MFD OSB 10, , , (1, 0, 1) +[310] = "%1d", --PTR-LMFCD-BTN-OSB11-310, Left MFD OSB 11, Left MFD OSB 11, , , (1, 0, 1) +[311] = "%1d", --PTR-LMFCD-BTN-OSB12-311, Left MFD OSB 12, Left MFD OSB 12, , , (1, 0, 1) +[312] = "%1d", --PTR-LMFCD-BTN-OSB13-312, Left MFD OSB 13, Left MFD OSB 13, , , (1, 0, 1) +[313] = "%1d", --PTR-LMFCD-BTN-OSB14-313, Left MFD OSB 14, Left MFD OSB 14, , , (1, 0, 1) +[314] = "%1d", --PTR-LMFCD-BTN-OSB15-314, Left MFD OSB 15, Left MFD OSB 15, , , (1, 0, 1) +[315] = "%1d", --PTR-LMFCD-BTN-OSB16-315, Left MFD OSB 16, Left MFD OSB 16, , , (1, 0, 1) +[316] = "%1d", --PTR-LMFCD-BTN-OSB17-316, Left MFD OSB 17, Left MFD OSB 17, , , (1, 0, 1) +[317] = "%1d", --PTR-LMFCD-BTN-OSB18-317, Left MFD OSB 18, Left MFD OSB 18, , , (1, 0, 1) +[318] = "%1d", --PTR-LMFCD-BTN-OSB19-318, Left MFD OSB 19, Left MFD OSB 19, , , (1, 0, 1) +[319] = "%1d", --PTR-LMFCD-BTN-OSB20-319, Left MFD OSB 20, Left MFD OSB 20, , , (1, 0, 1) +[320] = "%1d", --PTR-LMFCD-RS-GAIN-UP-320, Left MFD GAIN Rocker Switch, Left MFD GAIN Rocker Switch, , Up/Increase, (1, 0, 1) +[321] = "%1d", --PTR-LMFCD-RS-SYM-UP-321, Left MFD SYM Rocker Switch, Left MFD SYM Rocker Switch, , Up/Increase, (1, 0, 1) +[322] = "%1d", --PTR-LMFCD-RS-CON-UP-322, Left MFD CON Rocker Switch, Left MFD CON Rocker Switch, , Up/Increase, (1, 0, 1) +[323] = "%1d", --PTR-LMFCD-RS-BRT-UP-323, Left MFD BRT Rocker Switch, Left MFD BRT Rocker Switch, , Up/Increase, (1, 0, 1) + -- MFD_RIGHT(25) +[346] = "%1d", --PTR-RMFCD-RS-GAIN-DN-346, Left MFD GAIN Rocker Switch, Left MFD GAIN Rocker Switch, , Down/Decrease, (-1, -1, 0) +[347] = "%1d", --PTR-RMFCD-RS-SYM-DN-347, Left MFD SYM Rocker Switch, Left MFD SYM Rocker Switch, , Down/Decrease, (-1, -1, 0) +[348] = "%1d", --PTR-RMFCD-RS-CON-DN-348, Left MFD CON Rocker Switch, Left MFD CON Rocker Switch, , Down/Decrease, (-1, -1, 0) +[349] = "%1d", --PTR-RMFCD-RS-BRT-DN-349, Left MFD BRT Rocker Switch, Left MFD BRT Rocker Switch, , Down/Decrease, (-1, -1, 0) +[326] = "%1d", --PTR-RMFCD-BTN-OSB1-326, Right MFD OSB 1, Right MFD OSB 1, , , (1, 0, 1) +[327] = "%1d", --PTR-RMFCD-BTN-OSB2-327, Right MFD OSB 2, Right MFD OSB 2, , , (1, 0, 1) +[328] = "%1d", --PTR-RMFCD-BTN-OSB3-328, Right MFD OSB 3, Right MFD OSB 3, , , (1, 0, 1) +[329] = "%1d", --PTR-RMFCD-BTN-OSB4-329, Right MFD OSB 4, Right MFD OSB 4, , , (1, 0, 1) +[330] = "%1d", --PTR-RMFCD-BTN-OSB5-330, Right MFD OSB 5, Right MFD OSB 5, , , (1, 0, 1) +[331] = "%1d", --PTR-RMFCD-BTN-OSB6-331, Right MFD OSB 6, Right MFD OSB 6, , , (1, 0, 1) +[332] = "%1d", --PTR-RMFCD-BTN-OSB7-332, Right MFD OSB 7, Right MFD OSB 7, , , (1, 0, 1) +[333] = "%1d", --PTR-RMFCD-BTN-OSB8-333, Right MFD OSB 8, Right MFD OSB 8, , , (1, 0, 1) +[334] = "%1d", --PTR-RMFCD-BTN-OSB9-334, Right MFD OSB 9, Right MFD OSB 9, , , (1, 0, 1) +[335] = "%1d", --PTR-RMFCD-BTN-OSB10-335, Right MFD OSB 10, Right MFD OSB 10, , , (1, 0, 1) +[336] = "%1d", --PTR-RMFCD-BTN-OSB11-336, Right MFD OSB 11, Right MFD OSB 11, , , (1, 0, 1) +[337] = "%1d", --PTR-RMFCD-BTN-OSB12-337, Right MFD OSB 12, Right MFD OSB 12, , , (1, 0, 1) +[338] = "%1d", --PTR-RMFCD-BTN-OSB13-338, Right MFD OSB 13, Right MFD OSB 13, , , (1, 0, 1) +[339] = "%1d", --PTR-RMFCD-BTN-OSB14-339, Right MFD OSB 14, Right MFD OSB 14, , , (1, 0, 1) +[340] = "%1d", --PTR-RMFCD-BTN-OSB15-340, Right MFD OSB 15, Right MFD OSB 15, , , (1, 0, 1) +[341] = "%1d", --PTR-RMFCD-BTN-OSB16-341, Right MFD OSB 16, Right MFD OSB 16, , , (1, 0, 1) +[342] = "%1d", --PTR-RMFCD-BTN-OSB17-342, Right MFD OSB 17, Right MFD OSB 17, , , (1, 0, 1) +[343] = "%1d", --PTR-RMFCD-BTN-OSB18-343, Right MFD OSB 18, Right MFD OSB 18, , , (1, 0, 1) +[344] = "%1d", --PTR-RMFCD-BTN-OSB19-344, Right MFD OSB 19, Right MFD OSB 19, , , (1, 0, 1) +[345] = "%1d", --PTR-RMFCD-BTN-OSB20-345, Right MFD OSB 20, Right MFD OSB 20, , , (1, 0, 1) +[346] = "%1d", --PTR-RMFCD-RS-GAIN-UP-346, Left MFD GAIN Rocker Switch, Left MFD GAIN Rocker Switch, , Up/Increase, (1, 0, 1) +[347] = "%1d", --PTR-RMFCD-RS-SYM-UP-347, Left MFD SYM Rocker Switch, Left MFD SYM Rocker Switch, , Up/Increase, (1, 0, 1) +[348] = "%1d", --PTR-RMFCD-RS-CON-UP-348, Left MFD CON Rocker Switch, Left MFD CON Rocker Switch, , Up/Increase, (1, 0, 1) +[349] = "%1d", --PTR-RMFCD-RS-BRT-UP-349, Left MFD BRT Rocker Switch, Left MFD BRT Rocker Switch, , Up/Increase, (1, 0, 1) + -- MIDS(41) +[723] = "%.1f", --PTR-AVIPWR-LVR-MIDS-723, MIDS LVT Knob, MIDS LVT Knob, , ZERO/OFF/ON, (0.1, 0, 0.2) +[723] = "%.1f", --PTR-AVIPWR-LVR-MIDS-723, MIDS LVT Knob, MIDS LVT Knob, , ZERO/OFF/ON, (-0.1, 0, 0.2) +[715] = "%1d", --PTR-AVIPWR-TMB-MMC-715, MMC Switch, MMC Switch, , MMC/OFF, (-1, 0, 1) +[105] = "%1d", --PTR-CLCP-TMB-MASTER-105, MASTER ARM Switch, MASTER ARM Switch, , MASTER ARM/OFF/SIMULATE, (-1, -1, 1) +[355] = "%1d", --PTR-LGCP-TMB-GNDJETT-355, GND JETT ENABLE Switch, GND JETT ENABLE Switch, , ENABLE/OFF, (-1, 0, 1) +[675] = "%1d", --PTR-RHUD-TMB-WVAH-675, HUD Scales Switch, HUD Scales Switch, , VV/VAH / VAH / OFF, (-1, -1, 1) +[676] = "%1d", --PTR-RHUD-TMB-ATT-676, HUD Flightpath Marker Switch, HUD Flightpath Marker Switch, , ATT/FPM / FPM / OFF, (-1, -1, 1) +[677] = "%1d", --PTR-RHUD-TMB-DED-677, HUD DED/PFLD Data Switch, HUD DED/PFLD Data Switch, , DED / PFL / OFF, (-1, -1, 1) +[678] = "%1d", --PTR-RHUD-TMB-DEPR-678, HUD Depressible Reticle Switch, HUD Depressible Reticle Switch, , STBY / PRI / OFF, (-1, -1, 1) +[679] = "%1d", --PTR-RHUD-TMB-CAS-679, HUD Velocity Switch, HUD Velocity Switch, , CAS / TAS / GND SPD, (-1, -1, 1) +[680] = "%1d", --PTR-RHUD-TMB-ALT-680, HUD Altitude Switch, HUD Altitude Switch, , RADAR / BARO / AUTO, (-1, -1, 1) +[681] = "%1d", --PTR-RHUD-TMB-DAYNGT-681, HUD Brightness Control Switch, HUD Brightness Control Switch, , DAY / AUTO BRT / NIGHT, (-1, -1, 1) +[682] = "%1d", --PTR-RHUD-TMB-TEST-682, HUD TEST Switch, HUD TEST Switch, , STEP / ON / OFF, (-1, -1, 1) +[717] = "%1d", --PTR-AVIPWR-TMB-MFD-717, MFD Switch, MFD Switch, , MFD/OFF, (-1, 0, 1) +[715] = "%1d", --PTR-AVIPWR-TMB-MMC-715, MMC Switch, MMC Switch, , MMC/OFF, (1, 0, 1) +[105] = "%1d", --PTR-CLCP-TMB-MASTER-105, MASTER ARM Switch, MASTER ARM Switch, , MASTER ARM/OFF/SIMULATE, (1, -1, 1) +[353] = "%1d", --PTR-LGCP-BTN-ESJETT-353, EMER STORES JETTISON Button - Push to jettison, EMER STORES JETTISON Button - Push to jettison, , , (1, 0, 1) +[355] = "%1d", --PTR-LGCP-TMB-GNDJETT-355, GND JETT ENABLE Switch, GND JETT ENABLE Switch, , ENABLE/OFF, (1, 0, 1) +[104] = "%1d", --PTR-CLCP-TMB-ALT-104, ALT REL Button - Push to release, ALT REL Button - Push to release, , , (1, 0, 1) +[675] = "%1d", --PTR-RHUD-TMB-WVAH-675, HUD Scales Switch, HUD Scales Switch, , VV/VAH / VAH / OFF, (1, -1, 1) +[676] = "%1d", --PTR-RHUD-TMB-ATT-676, HUD Flightpath Marker Switch, HUD Flightpath Marker Switch, , ATT/FPM / FPM / OFF, (1, -1, 1) +[677] = "%1d", --PTR-RHUD-TMB-DED-677, HUD DED/PFLD Data Switch, HUD DED/PFLD Data Switch, , DED / PFL / OFF, (1, -1, 1) +[678] = "%1d", --PTR-RHUD-TMB-DEPR-678, HUD Depressible Reticle Switch, HUD Depressible Reticle Switch, , STBY / PRI / OFF, (1, -1, 1) +[679] = "%1d", --PTR-RHUD-TMB-CAS-679, HUD Velocity Switch, HUD Velocity Switch, , CAS / TAS / GND SPD, (1, -1, 1) +[680] = "%1d", --PTR-RHUD-TMB-ALT-680, HUD Altitude Switch, HUD Altitude Switch, , RADAR / BARO / AUTO, (1, -1, 1) +[681] = "%1d", --PTR-RHUD-TMB-DAYNGT-681, HUD Brightness Control Switch, HUD Brightness Control Switch, , DAY / AUTO BRT / NIGHT, (1, -1, 1) +[682] = "%1d", --PTR-RHUD-TMB-TEST-682, HUD TEST Switch, HUD TEST Switch, , STEP / ON / OFF, (1, -1, 1) +[717] = "%1d", --PTR-AVIPWR-TMB-MFD-717, MFD Switch, MFD Switch, , MFD/OFF, (1, 0, 1) + -- OXYGEN_INTERFACE(8) +[727] = "%1d", --PTR-OXYCP-LVR-DUL-727, Diluter Lever, Diluter Lever, , 100 percent/NORM, (-1, 0, 1) +[726] = "%1d", --PTR-OXYCP-LVR-EMRG-726, Emergency Lever, Emergency Lever, , EMERGENCY/NORMAL/TEST MASK(momentarily), (-1, 0, 1) +[726] = "%1d", --PTR-OXYCP-LVR-EMRG-726, Emergency Lever, Emergency Lever, , EMERGENCY/NORMAL/TEST MASK(momentarily), (-1, -1, 0) +[727] = "%1d", --PTR-OXYCP-LVR-DUL-727, Diluter Lever, Diluter Lever, , 100 percent/NORM, (1, 0, 1) +[576] = "%1d", --PTR-TESTCP-TMB-OXY-576, OBOGS BIT Switch, OBOGS BIT Switch, , BIT/OFF, (1, 0, 1) +[576] = "%1d", --PTR-TESTCP-TMB-OXY-576, OBOGS BIT Switch, OBOGS BIT Switch, , BIT/OFF, (1, 0, 1) +[728] = "%.1f", --PTR-OXYCP-LVR-SUPP-728, Supply Lever, Supply Lever, , PBG/ON/OFF, (0.5, 0, 1) +[728] = "%.1f", --PTR-OXYCP-LVR-SUPP-728, Supply Lever, Supply Lever, , PBG/ON/OFF, (-0.5, 0, 1) + -- RALT(15) +[673] = "%1d", --PTR-SNSR-TMB-RDR-673, RDR ALT Switch, RDR ALT Switch, , RDR ALT/STBY/OFF, (-1, -1, 1) +[673] = "%1d", --PTR-SNSR-TMB-RDR-673, RDR ALT Switch, RDR ALT Switch, , RDR ALT/STBY/OFF, (1, -1, 1) + +[401] = "%1d", --PTR-TWAP-BTN-PWR-401, RWR Indicator Control POWER Button, RWR Indicator Control POWER Button, , , (-1, 0, 1) +[140] = "%.1f", --PTR-CMSC-LVR-BRT-140, RWR Intensity Knob - Rotate to adjust brightness, RWR Intensity Knob - Rotate to adjust brightness, , , (0, 0, 0.8) +[404] = "%1d", --PTR-TWAP-LVR-DIM-404, RWR Indicator Control DIM Knob - Rotate to adjust brightness, RWR Indicator Control DIM Knob - Rotate to adjust brightness, , , (0, 0, 1) +[141] = "%1d", --PTR-CMSC-BTN-HNDOFF-141, RWR Indicator Control HANDOFF Button, RWR Indicator Control HANDOFF Button, , , (1, 0, 1) +[143] = "%1d", --PTR-CMSC-BTN-LNCH-143, RWR Indicator Control LAUNCH Button, RWR Indicator Control LAUNCH Button, , , (1, 0, 1) +[145] = "%1d", --PTR-CMSC-BTN-MODE-145, RWR Indicator Control MODE Button, RWR Indicator Control MODE Button, , , (1, 0, 1) +[147] = "%1d", --PTR-CMSC-BTN-OBJ-147, RWR Indicator Control UNKNOWN SHIP Button, RWR Indicator Control UNKNOWN SHIP Button, , , (1, 0, 1) +[149] = "%1d", --PTR-CMSC-BTN-STEST-149, RWR Indicator Control SYS TEST Button, RWR Indicator Control SYS TEST Button, , , (1, 0, 1) +[151] = "%1d", --PTR-CMSC-BTN-T-151, RWR Indicator Control T Button, RWR Indicator Control T Button, , , (1, 0, 1) +[395] = "%1d", --PTR-TWAP-BTN-SRCH-395, RWR Indicator Control SEARCH Button, RWR Indicator Control SEARCH Button, , , (1, 0, 1) +[397] = "%1d", --PTR-TWAP-BTN-ACTPWR-397, RWR Indicator Control ACT/PWR Button, RWR Indicator Control ACT/PWR Button, , , (1, 0, 1) +[401] = "%1d", --PTR-TWAP-BTN-PWR-401, RWR Indicator Control POWER Button, RWR Indicator Control POWER Button, , , (1, 0, 1) +[399] = "%1d", --PTR-TWAP-BTN-ALT-399, RWR Indicator Control ALTITUDE Button, RWR Indicator Control ALTITUDE Button, , , (1, 0, 1) + -- SAI(47) +[67] = "%1d", --PTR-SAI-LVR-CAGE-P-66, SAI Cage Knob, SAI Cage Knob, , (LMB) Pull to cage /(MW) Adjust aircraft reference symbol, (1, 0, 1) +[66] = "%.3f", --PTR-SAI-LVR-CAGE-P-66, SAI Cage Knob, SAI Cage Knob, , (LMB) Pull to cage /(MW) Adjust aircraft reference symbol, (1, 0.375, 0.625) + -- SMS(22) +[716] = "%1d", --PTR-AVIPWR-TMB-STSTA-716, ST STA Switch, ST STA Switch, , ST STA/OFF, (-1, 0, 1) +[670] = "%1d", --PTR-SNSR-TMB-LEFT-670, LEFT HDPT Switch, LEFT HDPT Switch, , ON/OFF, (-1, 0, 1) +[671] = "%1d", --PTR-SNSR-TMB-RIGHT-671, RIGHT HDPT Switch, RIGHT HDPT Switch, , ON/OFF, (-1, 0, 1) +[103] = "%1d", --PTR-CLCP-TMB-LASER-103, LASER ARM Switch, LASER ARM Switch, , ARM/OFF, (-1, 0, 1) +[716] = "%1d", --PTR-AVIPWR-TMB-STSTA-716, ST STA Switch, ST STA Switch, , ST STA/OFF, (1, 0, 1) +[670] = "%1d", --PTR-SNSR-TMB-LEFT-670, LEFT HDPT Switch, LEFT HDPT Switch, , ON/OFF, (1, 0, 1) +[671] = "%1d", --PTR-SNSR-TMB-RIGHT-671, RIGHT HDPT Switch, RIGHT HDPT Switch, , ON/OFF, (1, 0, 1) +[103] = "%1d", --PTR-CLCP-TMB-LASER-103, LASER ARM Switch, LASER ARM Switch, , ARM/OFF, (1, 0, 1) + -- UFC(17) +[718] = "%1d", --PTR-AVIPWR-TMB-UFC-718, UFC Switch, UFC Switch, , UFC/OFF, (-1, 0, 1) +[188] = "%1d", --PTR-ICP-RS-FLIR-DN-188, ICP FLIR Increment/Decrement Switch, ICP FLIR Increment/Decrement Switch, , Down, (-1, -1, 0) +[189] = "%1d", --PTR-ICP-TMB-GAIN-189, ICP FLIR GAIN/LEVEL Switch, ICP FLIR GAIN/LEVEL Switch, , GAIN/LVL/AUTO, (-1, -1, 1) +[186] = "%1d", --PTR-ICP-TMB-DRIFT-186, ICP DRIFT CUTOUT/WARN RESET Switch, ICP DRIFT CUTOUT/WARN RESET Switch, , DRIFT C/O /NORM/WARN RESET, (-1, 0, 1) +[186] = "%1d", --PTR-ICP-TMB-DRIFT-186, ICP DRIFT CUTOUT/WARN RESET Switch, ICP DRIFT CUTOUT/WARN RESET Switch, , DRIFT C/O /NORM/WARN RESET, (-1, -1, 0) +[183] = "%1d", --PTR-ICP-RS-OFF-DN-183, ICP DED Increment/Decrement Switch, ICP DED Increment/Decrement Switch, , Down, (-1, -1, 0) +[184] = "%1d", --PTR-ICP-TMB-RTN-184, ICP Data Control Switch, ICP Data Control Switch, , RTN, (-1, -1, 0) +[184] = "%1d", --PTR-ICP-TMB-RTN-184, ICP Data Control Switch, ICP Data Control Switch, , RTN, (-1, -1, 0) +[185] = "%1d", --PTR-ICP-TMB-RTNSEQ-DN-185, ICP Data Control Switch, ICP Data Control Switch, , DN, (-1, -1, 0) +[185] = "%1d", --PTR-ICP-TMB-RTNSEQ-DN-185, ICP Data Control Switch, ICP Data Control Switch, , DN, (-1, -1, 0) +[100] = "%1d", --PTR-CLCP-TMB-RF-100, RF Switch, RF Switch, , SILENT/QUIET/NORM, (-1, -1, 1) +[192] = "%1d", --PTR-ICP-LVR-RET-192, ICP Reticle Depression Control Knob, ICP Reticle Depression Control Knob, , , (0, 0, 1) +[193] = "%1d", --PTR-ICP-LVR-CONT-193, ICP Raster Contrast Knob, ICP Raster Contrast Knob, , , (0, 0, 1) +[190] = "%.1f", --PTR-ICP-LVR-SYM-190, ICP HUD Symbology Intensity Knob, ICP HUD Symbology Intensity Knob, , , (0,1) +[191] = "%1d", --PTR-ICP-LVR-BRT-191, ICP Raster Intensity Knob, ICP Raster Intensity Knob, , , (0, 0, 1) +[718] = "%1d", --PTR-AVIPWR-TMB-UFC-718, UFC Switch, UFC Switch, , UFC/OFF, (1, 0, 1) +[182] = "%1d", --PTR-ICP-BTN-NMB0-182, ICP Priority Function Button, ICP Priority Function Button, , 0(M-SEL), (1, 0, 1) +[171] = "%1d", --PTR-ICP-BTN-NMB1-171, ICP Priority Function Button, ICP Priority Function Button, , 1(T-ILS), (1, 0, 1) +[172] = "%1d", --PTR-ICP-BTN-NMB2-172, ICP Priority Function Button, ICP Priority Function Button, , 2/N(ALOW), (1, 0, 1) +[173] = "%1d", --PTR-ICP-BTN-NMB3-173, ICP Priority Function Button, ICP Priority Function Button, , 3, (1, 0, 1) +[175] = "%1d", --PTR-ICP-BTN-NMB4-175, ICP Priority Function Button, ICP Priority Function Button, , 4/W(STPT), (1, 0, 1) +[176] = "%1d", --PTR-ICP-BTN-NMB5-176, ICP Priority Function Button, ICP Priority Function Button, , 5(CRUS), (1, 0, 1) +[177] = "%1d", --PTR-ICP-BTN-NMB6-177, ICP Priority Function Button, ICP Priority Function Button, , 6/E(TIME), (1, 0, 1) +[179] = "%1d", --PTR-ICP-BTN-NMB7-179, ICP Priority Function Button, ICP Priority Function Button, , 7(MARK), (1, 0, 1) +[180] = "%1d", --PTR-ICP-BTN-NMB8-180, ICP Priority Function Button, ICP Priority Function Button, , 8/S(FIX), (1, 0, 1) +[181] = "%1d", --PTR-ICP-BTN-NMB9-181, ICP Priority Function Button, ICP Priority Function Button, , 9(A-CAL), (1, 0, 1) +[165] = "%1d", --PTR-ICP-BTN-COM1-165, ICP COM Override Button, ICP COM Override Button, , COM1(UHF), (1, 0, 1) +[166] = "%1d", --PTR-ICP-BTN-COM2-166, ICP COM Override Button, ICP COM Override Button, , COM2(VHF), (1, 0, 1) +[167] = "%1d", --PTR-ICP-BTN-IFF-167, ICP IFF Override Button, ICP IFF Override Button, , IFF, (1, 0, 1) +[168] = "%1d", --PTR-ICP-BTN-LIST-168, ICP LIST Override Button, ICP LIST Override Button, , LIST, (1, 0, 1) +[178] = "%1d", --PTR-ICP-BTN-ENTR-178, ICP Enter Button, ICP Enter Button, , ENTR, (1, 0, 1) +[174] = "%1d", --PTR-ICP-BTN-RCL-174, ICP Recall Button, ICP Recall Button, , RCL, (1, 0, 1) +[169] = "%1d", --PTR-ICP-BTN-AA-169, ICP Master Mode Button, ICP Master Mode Button, , A-A, (1, 0, 1) +[170] = "%1d", --PTR-ICP-BTN-AG-170, ICP Master Mode Button, ICP Master Mode Button, , A-G, (1, 0, 1) +[187] = "%1d", --PTR-ICP-BTN-WX-187, ICP FLIR Polarity Button, ICP FLIR Polarity Button, , Wx, (1, 0, 1) +[188] = "%1d", --PTR-ICP-RS-FLIR-UP-188, ICP FLIR Increment/Decrement Switch, ICP FLIR Increment/Decrement Switch, , Up, (1, 0, 1) +[189] = "%1d", --PTR-ICP-TMB-GAIN-189, ICP FLIR GAIN/LEVEL Switch, ICP FLIR GAIN/LEVEL Switch, , GAIN/LVL/AUTO, (1, -1, 1) +[183] = "%1d", --PTR-ICP-RS-OFF-UP-183, ICP DED Increment/Decrement Switch, ICP DED Increment/Decrement Switch, , Up, (1, 0, 1) +[184] = "%1d", --PTR-ICP-TMB-SEQ-184, ICP Data Control Switch, ICP Data Control Switch, , SEQ, (1, 0, 1) +[184] = "%1d", --PTR-ICP-TMB-SEQ-184, ICP Data Control Switch, ICP Data Control Switch, , SEQ, (1, 0, 1) +[185] = "%1d", --PTR-ICP-TMB-RTNSEQ-UP-185, ICP Data Control Switch, ICP Data Control Switch, , UP, (1, 0, 1) +[185] = "%1d", --PTR-ICP-TMB-RTNSEQ-UP-185, ICP Data Control Switch, ICP Data Control Switch, , UP, (1, 0, 1) +[122] = "%1d", --PTR-CPBC-BTN-FACK-122, F-ACK Button, F-ACK Button, , , (1, 0, 1) +[125] = "%1d", --PTR-CPBC-BTN-IFF-125, IFF IDENT Button, IFF IDENT Button, , , (1, 0, 1) +[100] = "%1d", --PTR-CLCP-TMB-RF-100, RF Switch, RF Switch, , SILENT/QUIET/NORM, (1, -1, 1) + -- UHF_CONTROL_PANEL(37) +[419] = "%1d", --PTR-ANARC164-SQUELCH-419, UHF SQUELCH Switch, UHF SQUELCH Switch, , , (-1, 0, 1) +[734] = "%1d", --PTR_ANARC164-CHNL-SELECTOR01-734, Access Door, Access Door, , OPEN/CLOSE, (-1, 0, 1) +[420] = "%1d", --PTR-ANARC164-VOLUME-420, UHF VOL Knob, UHF VOL Knob, , , (0, 0, 1) +[418] = "%1d", --PTR-ANARC164-T-TONE-418, UHF Tone Button, UHF Tone Button, , , (1, 0, 1) +[419] = "%1d", --PTR-ANARC164-SQUELCH-419, UHF SQUELCH Switch, UHF SQUELCH Switch, , , (1, 0, 1) +[421] = "%1d", --PTR-ANARC164-TEST-DISPLAY-421, UHF TEST DISPLAY Button, UHF TEST DISPLAY Button, , , (1, 0, 1) +[422] = "%1d", --PTR-ANARC164-STATUS-422, UHF STATUS Button, UHF STATUS Button, , , (1, 0, 1) +[734] = "%1d", --PTR_ANARC164-CHNL-SELECTOR01-734, Access Door, Access Door, , OPEN/CLOSE, (1, 0, 1) +[410] = "%.2f", --PTR-ANARC164-CHNL-SELECTOR-410, UHF CHAN Knob, UHF CHAN Knob, , , (0.05, 0, 0.95) +[410] = "%.2f", --PTR-ANARC164-CHNL-SELECTOR-410, UHF CHAN Knob, UHF CHAN Knob, , , (-0.05, 0, 0.95) +[411] = "%.1f", --PTR-ANARC164-100MHZ-SEL-411, UHF Manual Frequency Knob 100 MHz, UHF Manual Frequency Knob 100 MHz, , , (0.1, 0.1, 0.3) +[412] = "%.1f", --PTR-ANARC164-10MHZ-SEL-412, UHF Manual Frequency Knob 10 MHz, UHF Manual Frequency Knob 10 MHz, , , (0.1, 0, 0.9) +[413] = "%.1f", --PTR-ANARC164-1MHZ-SEL-413, UHF Manual Frequency Knob 1 MHz, UHF Manual Frequency Knob 1 MHz, , , (0.1, 0, 0.9) +[414] = "%.1f", --PTR-ANARC164-0.1MHZ-SEL-414, UHF Manual Frequency Knob 0.1 MHz, UHF Manual Frequency Knob 0.1 MHz, , , (0.1, 0, 0.9) +[416] = "%.1f", --PTR-ANARC164-FREQMODE-416, UHF Mode Knob, UHF Mode Knob, , , (0.1, 0, 0.2) +[417] = "%.1f", --PTR-ANARC164-FUNCTION-417, UHF Function Knob, UHF Function Knob, , , (0.1, 0, 0.3) +[411] = "%.1f", --PTR-ANARC164-100MHZ-SEL-411, UHF Manual Frequency Knob 100 MHz, UHF Manual Frequency Knob 100 MHz, , , (-0.1, 0.1, 0.3) +[412] = "%.1f", --PTR-ANARC164-10MHZ-SEL-412, UHF Manual Frequency Knob 10 MHz, UHF Manual Frequency Knob 10 MHz, , , (-0.1, 0, 0.9) +[413] = "%.1f", --PTR-ANARC164-1MHZ-SEL-413, UHF Manual Frequency Knob 1 MHz, UHF Manual Frequency Knob 1 MHz, , , (-0.1, 0, 0.9) +[414] = "%.1f", --PTR-ANARC164-0.1MHZ-SEL-414, UHF Manual Frequency Knob 0.1 MHz, UHF Manual Frequency Knob 0.1 MHz, , , (-0.1, 0, 0.9) +[416] = "%.1f", --PTR-ANARC164-FREQMODE-416, UHF Mode Knob, UHF Mode Knob, , , (-0.1, 0, 0.2) +[417] = "%.1f", --PTR-ANARC164-FUNCTION-417, UHF Function Knob, UHF Function Knob, , , (-0.1, 0, 0.3) +[415] = "%.2f", --PTR-ANARC164-0.025MHZ-SEL-415, UHF Manual Frequency Knob 0.025 MHz, UHF Manual Frequency Knob 0.025 MHz, , , (0.25, 0, 0.75) +[415] = "%.2f", --PTR-ANARC164-0.025MHZ-SEL-415, UHF Manual Frequency Knob 0.025 MHz, UHF Manual Frequency Knob 0.025 MHz, , , (-0.25, 0, 0.75) + +} + +----------------------------- +-- 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 + ]] + + --Bailey stuff + ------------------ + -----F16 mike----- + ------------------ + ExportScript.mike(mainPanelDevice) + + --------------------------------- + -----Chaff and Flare Counts------ + --------------------------------- + + local expendableReadout = ExportScript.Tools.split(list_indication(16), "%c")--this contains the formated table of the CMDS numbers + + local CMDS_O1_Amount + local CMDS_O2_Amount + local CMDS_CH_Amount + local CMDS_FL_Amount + + if expendableReadout[2] == "CMDS_O1_Amount" then + CMDS_O1_Amount = expendableReadout[3] + elseif expendableReadout[5] == "CMDS_O1_Amount" then + CMDS_O1_Amount = expendableReadout[6] + elseif expendableReadout[8] == "CMDS_O1_Amount" then + CMDS_O1_Amount = expendableReadout[9] + elseif expendableReadout[11] == "CMDS_O1_Amount" then + CMDS_O1_Amount = expendableReadout[12] + else + CMDS_O1_Amount = " " + end + + if expendableReadout[2] == "CMDS_O2_Amount" then + CMDS_O2_Amount = expendableReadout[3] + elseif expendableReadout[5] == "CMDS_O2_Amount" then + CMDS_O2_Amount = expendableReadout[6] + elseif expendableReadout[8] == "CMDS_O2_Amount" then + CMDS_O2_Amount = expendableReadout[9] + elseif expendableReadout[11] == "CMDS_O2_Amount" then + CMDS_O2_Amount = expendableReadout[12] + else + CMDS_O2_Amount = " " + end + + if expendableReadout[2] == "CMDS_CH_Amount" then + CMDS_CH_Amount = expendableReadout[3] + elseif expendableReadout[5] == "CMDS_CH_Amount" then + CMDS_CH_Amount = expendableReadout[6] + elseif expendableReadout[8] == "CMDS_CH_Amount" then + CMDS_CH_Amount = expendableReadout[9] + elseif expendableReadout[11] == "CMDS_CH_Amount" then + CMDS_CH_Amount = expendableReadout[12] + else + CMDS_CH_Amount = " " + end + + if expendableReadout[2] == "CMDS_FL_Amount" then + CMDS_FL_Amount = expendableReadout[3] + elseif expendableReadout[5] == "CMDS_FL_Amount" then + CMDS_FL_Amount = expendableReadout[6] + elseif expendableReadout[8] == "CMDS_FL_Amount" then + CMDS_FL_Amount = expendableReadout[9] + elseif expendableReadout[11] == "CMDS_FL_Amount" then + CMDS_FL_Amount = expendableReadout[12] + else + CMDS_FL_Amount = " " + end + + ExportScript.Tools.SendData(3000, CMDS_O1_Amount) + ExportScript.Tools.SendData(3001, CMDS_O2_Amount) + ExportScript.Tools.SendData(3002, CMDS_CH_Amount) + ExportScript.Tools.SendData(3003, CMDS_FL_Amount) +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", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000), 2) -- export to Hardware '2' Config + ]] + +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.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) + + -- IFEI - Engine, Fuel and Clock informations + local lEngineFuelClock = ExportScript.Tools.getListIndicatorValue(5) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('EngineFuelClock: '..ExportScript.Tools.dump(lEngineFuelClock)) + end + + if lEngineFuelClock ~= nil and lEngineFuelClock.txt_RPM_R ~= nil then + -- Engine informations 3 character + ExportScript.Tools.SendData(2000, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_RPM_R, 3)) -- right RPM + ExportScript.Tools.SendData(2001, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_RPM_L, 3)) -- left RPM + ExportScript.Tools.SendData(2002, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_TEMP_R, 3)) -- right TEMP + ExportScript.Tools.SendData(2003, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_TEMP_L, 3)) -- left TEMP + ExportScript.Tools.SendData(2004, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FF_R, 3)) -- right Fuel flow + ExportScript.Tools.SendData(2005, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FF_L, 3)) -- left Fuel flow + ExportScript.Tools.SendData(2006, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_OilPress_R, 3)) -- right OilPress + ExportScript.Tools.SendData(2007, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_OilPress_L, 3)) -- left OilPress + + -- Fuel informations 6 character + ExportScript.Tools.SendData(2008, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FUEL_UP, 6)) -- up Fuel + ExportScript.Tools.SendData(2009, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FUEL_DOWN, 6)) -- down Fuel + ExportScript.Tools.SendData(2010, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_BINGO, 6)) -- BINGO + + -- Clock 8 character + ExportScript.Tools.SendData(2011, ExportScript.Tools.DisplayFormat(string.format("%s¦%s¦%s", lEngineFuelClock.txt_CLOCK_H, lEngineFuelClock.txt_CLOCK_M, lEngineFuelClock.txt_CLOCK_S), 8)) -- Clock HH:MM:SS + else + -- Engine informations 3 character + ExportScript.Tools.SendData(2000, " ") -- right RPM + ExportScript.Tools.SendData(2001, " ") -- left RPM + ExportScript.Tools.SendData(2002, " ") -- right TEMP + ExportScript.Tools.SendData(2003, " ") -- left TEMP + ExportScript.Tools.SendData(2004, " ") -- right Fuel flow + ExportScript.Tools.SendData(2005, " ") -- left Fuel flow + ExportScript.Tools.SendData(2006, " ") -- right OilPress + ExportScript.Tools.SendData(2007, " ") -- left OilPress + + -- Fuel informations 6 character + ExportScript.Tools.SendData(2008, " ") -- up Fuel + ExportScript.Tools.SendData(2009, " ") -- down Fuel + ExportScript.Tools.SendData(2010, " ") -- BINGO + + -- Clock 8 character + ExportScript.Tools.SendData(2011, " ") -- Clock HH:MM:SS + end + + -- UFC Displays + local lUFCDisplays = ExportScript.Tools.getListIndicatorValue(6) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('UFC: '..ExportScript.Tools.dump(lUFCDisplays)) + end + + if lUFCDisplays ~= nil and lUFCDisplays.UFC_MainDummy ~= nil then + -- ScratchPadString Displays + lUFCDisplays.UFC_ScratchPadString1Display = string.gsub(lUFCDisplays.UFC_ScratchPadString1Display, "_", "-") -- fix weil das ein - sein sollte + lUFCDisplays.UFC_ScratchPadString2Display = string.gsub(lUFCDisplays.UFC_ScratchPadString2Display, "_", "-") -- fix weil das ein - sein sollte + lUFCDisplays.UFC_ScratchPadString1Display = string.gsub(lUFCDisplays.UFC_ScratchPadString1Display, "~", "2") -- fix weil das eine 2 sein sollte + lUFCDisplays.UFC_ScratchPadString2Display = string.gsub(lUFCDisplays.UFC_ScratchPadString2Display, "~", "2") -- fix weil das eine 2 sein sollte + lUFCDisplays.UFC_ScratchPadString1Display = string.gsub(lUFCDisplays.UFC_ScratchPadString1Display, "`", "1") -- fix weil das eine 1 sein sollte + lUFCDisplays.UFC_ScratchPadString2Display = string.gsub(lUFCDisplays.UFC_ScratchPadString2Display, "`", "1") -- fix weil das eine 1 sein sollte + ExportScript.Tools.SendData(2020, ExportScript.Tools.DisplayFormat(lUFCDisplays.UFC_ScratchPadString1Display, 2)) -- ScratchPadString1Display 2 character + ExportScript.Tools.SendData(2021, ExportScript.Tools.DisplayFormat(lUFCDisplays.UFC_ScratchPadString2Display, 2)) -- ScratchPadString2Display 2 character + ExportScript.Tools.SendData(2022, ExportScript.Tools.DisplayFormat(lUFCDisplays.UFC_ScratchPadNumberDisplay, 7)) -- ScratchPadNumberDisplay 7 character + + local lTmpCueing = " " + -- Option Displays + lTmpCueing = (#lUFCDisplays.UFC_OptionCueing1 > 0 and "¦" or " ") + ExportScript.Tools.SendData(2023, ExportScript.Tools.DisplayFormat(lTmpCueing..lUFCDisplays.UFC_OptionDisplay1)) -- OptionDisplay1 5 character + lTmpCueing = (#lUFCDisplays.UFC_OptionCueing2 > 0 and "¦" or " ") + ExportScript.Tools.SendData(2024, ExportScript.Tools.DisplayFormat(lTmpCueing..lUFCDisplays.UFC_OptionDisplay2)) -- OptionDisplay2 5 character + lTmpCueing = (#lUFCDisplays.UFC_OptionCueing3 > 0 and "¦" or " ") + ExportScript.Tools.SendData(2025, ExportScript.Tools.DisplayFormat(lTmpCueing..lUFCDisplays.UFC_OptionDisplay3)) -- OptionDisplay3 5 character + lTmpCueing = (#lUFCDisplays.UFC_OptionCueing4 > 0 and "¦" or " ") + ExportScript.Tools.SendData(2026, ExportScript.Tools.DisplayFormat(lTmpCueing..lUFCDisplays.UFC_OptionDisplay4)) -- OptionDisplay4 5 character + lTmpCueing = (#lUFCDisplays.UFC_OptionCueing5 > 0 and "¦" or " ") + ExportScript.Tools.SendData(2027, ExportScript.Tools.DisplayFormat(lTmpCueing..lUFCDisplays.UFC_OptionDisplay5)) -- OptionDisplay5 5 character + + -- Comm Displays + lUFCDisplays.UFC_Comm1Display = string.gsub(lUFCDisplays.UFC_Comm1Display, "~", "2") -- fix weil das eine 2 sein sollte + lUFCDisplays.UFC_Comm2Display = string.gsub(lUFCDisplays.UFC_Comm2Display, "~", "2") -- fix weil das eine 2 sein sollte + lUFCDisplays.UFC_Comm1Display = string.gsub(lUFCDisplays.UFC_Comm1Display, "`", "1") -- fix weil das eine 1 sein sollte + lUFCDisplays.UFC_Comm2Display = string.gsub(lUFCDisplays.UFC_Comm2Display, "`", "1") -- fix weil das eine 1 sein sollte + ExportScript.Tools.SendData(2028, ExportScript.Tools.DisplayFormat(lUFCDisplays.UFC_Comm1Display, 2)) -- Comm1Display 2 character + ExportScript.Tools.SendData(2029, ExportScript.Tools.DisplayFormat(lUFCDisplays.UFC_Comm2Display, 2)) -- Comm2Display 2 character + else + -- ScratchPadString Displays + ExportScript.Tools.SendData(2020, " ") -- ScratchPadString1Display 2 character + ExportScript.Tools.SendData(2021, " ") -- ScratchPadString2Display 2 character + ExportScript.Tools.SendData(2022, " ") -- ScratchPadNumberDisplay 7 character + + -- Option Displays + ExportScript.Tools.SendData(2023, " ") -- OptionDisplay1 5 character + ExportScript.Tools.SendData(2024, " ") -- OptionDisplay2 5 character + ExportScript.Tools.SendData(2025, " ") -- OptionDisplay3 5 character + ExportScript.Tools.SendData(2026, " ") -- OptionDisplay4 5 character + ExportScript.Tools.SendData(2027, " ") -- OptionDisplay5 5 character + + -- Comm Displays + ExportScript.Tools.SendData(2028, " ") -- Comm1Display 2 character + ExportScript.Tools.SendData(2029, " ") -- Comm2Display 2 character + end + + local lUHF1Radio = GetDevice(38) + ExportScript.Tools.SendData(2030, ExportScript.Tools.DisplayFormat(ExportScript.Tools.RoundFreqeuncy((lUHF1Radio:get_frequency()/1000000))), 7) + + local lUHF2Radio = GetDevice(39) + ExportScript.Tools.SendData(2031, ExportScript.Tools.DisplayFormat(ExportScript.Tools.RoundFreqeuncy((lUHF2Radio:get_frequency()/1000000), "7.3", false, 0.005)), 7) + + + + +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", string.format("%7.3f", UHF_RADIO:get_frequency()/1000000), 2) -- export to Hardware '2' Config + ]] + + -- IFEI - Engine, Fuel and Clock informations + local lEngineFuelClock = ExportScript.Tools.getListIndicatorValue(5) + if ExportScript.Config.Debug then + ExportScript.Tools.WriteToLog('EngineFuelClock: '..ExportScript.Tools.dump(lEngineFuelClock)) + end + + if lEngineFuelClock ~= nil and lEngineFuelClock.txt_RPM_R ~= nil then + -- Engine informations 3 character + ExportScript.Tools.SendDataDAC(2000, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_RPM_R, 3, "r", true)) -- right RPM + ExportScript.Tools.SendDataDAC(2001, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_RPM_L, 3, "r", true)) -- left RPM + ExportScript.Tools.SendDataDAC(2002, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_TEMP_R, 3, "r", true)) -- right TEMP + ExportScript.Tools.SendDataDAC(2003, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_TEMP_L, 3, "r", true)) -- left TEMP + ExportScript.Tools.SendDataDAC(2004, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FF_R, 3, "r", true)) -- right Fuel flow + ExportScript.Tools.SendDataDAC(2005, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FF_L, 3, "r", true)) -- left Fuel flow + ExportScript.Tools.SendDataDAC(2006, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_OilPress_R, 3, "r", true)) -- right OilPress + ExportScript.Tools.SendDataDAC(2007, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_OilPress_L, 3, "r", true)) -- left OilPress + + + -- Fuel informations 6 character + ExportScript.Tools.SendDataDAC(2008, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FUEL_UP:match("%d+"), 6, "r", true)) -- up Fuel + ExportScript.Tools.SendDataDAC(2009, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_FUEL_DOWN:match("%d+"), 6, "r", true)) -- down Fuel + ExportScript.Tools.SendDataDAC(2010, ExportScript.Tools.DisplayFormat(lEngineFuelClock.txt_BINGO:match("%d+"), 6, "r", true)) -- BINGO + + -- Clock 8 character + ExportScript.Tools.SendDataDAC(2011, ExportScript.Tools.DisplayFormat(string.format("%s.%s.$s", lEngineFuelClock.txt_CLOCK_H, lEngineFuelClock.txt_CLOCK_M, lEngineFuelClock.txt_CLOCK_S)), 8, "r", true) -- Clock HH:MM:SS + else + -- Engine informations 3 character + ExportScript.Tools.SendDataDAC(2000, "-") -- right RPM + ExportScript.Tools.SendDataDAC(2001, "-") -- left RPM + ExportScript.Tools.SendDataDAC(2002, "-") -- right TEMP + ExportScript.Tools.SendDataDAC(2003, "-") -- left TEMP + ExportScript.Tools.SendDataDAC(2004, "-") -- right Fuel flow + ExportScript.Tools.SendDataDAC(2005, "-") -- left Fuel flow + ExportScript.Tools.SendDataDAC(2006, "-") -- right OilPress + ExportScript.Tools.SendDataDAC(2007, "-") -- left OilPress + + -- Fuel informations 5 character + ExportScript.Tools.SendDataDAC(2008, "-") -- up Fuel + ExportScript.Tools.SendDataDAC(2009, "-") -- down Fuel + ExportScript.Tools.SendDataDAC(2010, "-") -- BINGO + + -- Clock 8 character + ExportScript.Tools.SendDataDAC(2011, "-") -- Clock HH:MM:SS + end + + local lUHF1Radio = GetDevice(39) + ExportScript.Tools.SendDataDAC(2030, ExportScript.Tools.DisplayFormat(ExportScript.Tools.RoundFreqeuncy((lUHF1Radio:get_frequency()/1000000))), 7) + + local lUHF2Radio = GetDevice(40) + ExportScript.Tools.SendDataDAC(2031, ExportScript.Tools.DisplayFormat(ExportScript.Tools.RoundFreqeuncy((lUHF2Radio:get_frequency()/1000000), "7.3", false, 0.005)), 7) + + --===================================================================================== + --[[ + 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 + ]] +--[[ + 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 +]] +end + +----------------------------- +-- Custom functions -- +----------------------------- +function ExportScript.mike(mainPanelDevice) -- F16 mike project + -- ExportScript.Tools.SendData(44250, "Hello") -- Test + ------------------- + -----F16 mike----- + ------------------- + + -- Aka (Streamdeck Elevation Navigation Pressure Altimeter Instrument) SENPAI + -- Aka (STANDARD UNIT GRAPHICAL OVERLAY INTERPRETATION) SUGOI + -- Aka (Local Elevation and Weather Dataconverter) LEWD + -- Aka (Metric Imperial Navigation Automated System Aid Nonsense) MINA-SAN + + --[[ + Goal: Create a "universal" profile that displays the following for every module with + minimal or no Stream Deck reconfiguration. Contains 4 tiles with three conversions each. + - Pressure + - inHg + - Millibars + - mmHg + - Altitude (MSL) + - feet + - meters + - kilometers + - Altitude (AGL) + - feet + - meters + - kilometers + - Airspeed + - Knots + - kilometers per hr + - Mach (airframe dependent) + + + -- Export number format + 44224 = Pressure readouts + 44225 = Pressure readout color change + 44226 = Alt(msl) readouts + 44227 = Alt(msl) readout color change + 44228 = Alt(agl) readouts + 44229 = Alt(agl) readout color change + 44230 = airspeed readouts + 44231 = airspeed readout color change + ]] + + ---------------------------- + -- Get F16 Pressure Info --- + ---------------------------- + -- Necessary info + -- [56] = "%.2f", -- Barometric Setting Kollsman Window 1 + -- [57] = "%.2f", -- Barometric Setting Kollsman Window 2 + -- [58] = "%.2f", -- Barometric Setting Kollsman Window 3 + -- [59] = "%.2f", -- Barometric Setting Kollsman Window 4 + -- the above are 0 = 0 , 0.50 = 5, 1 = 0 + -- they are tumblers + + --[[ + range is 120 units + magic formula is =(value*120)+670 + 0 = 680 + 0.5000 = + 1 = 790 + ]] + -- TODO: There is a bug to where the inHg displays 29.48 --> 29.49 --> 29.510 --> 29.50 --> 29.51 + local KollsmanWindowReadout_value1 = string.format("%.f",mainPanelDevice:get_argument_value(56) * 10) + local KollsmanWindowReadout_value2 = string.format("%.f",mainPanelDevice:get_argument_value(57) * 10) + local KollsmanWindowReadout_value3 = string.format("%.f",mainPanelDevice:get_argument_value(58) * 10) + local KollsmanWindowReadout_value4 = string.format("%.f",mainPanelDevice:get_argument_value(59) * 10) + + if KollsmanWindowReadout_value1 == "10" then + KollsmanWindowReadout_value1 = "0" + end + if KollsmanWindowReadout_value2 == "10" then + KollsmanWindowReadout_value2 = "0" + end + if KollsmanWindowReadout_value3 == "10" then + KollsmanWindowReadout_value3 = "0" + end + if KollsmanWindowReadout_value4 == "10" then + KollsmanWindowReadout_value4 = "0" + end + + local KollsmanWindowReadout_total = string.format(KollsmanWindowReadout_value1 .. KollsmanWindowReadout_value2 .. "." .. KollsmanWindowReadout_value3 .. KollsmanWindowReadout_value4 ) + local pressure_f16c_inHg = KollsmanWindowReadout_total + + --ExportScript.Tools.SendData(44260, pressure_f16c_inHg .. " inHg") + + -- convert to mmhg + local pressure_f16c_mmHg = string.format("%.f", pressure_f16c_inHg * 25.4) + --ExportScript.Tools.SendData(44261, pressure_f16c_mmHg .. " mmHg") + + -- Convert to millibar + local pressure_f16c_mbar = string.format("%.f", pressure_f16c_inHg * 33.864) + --ExportScript.Tools.SendData(44262, pressure_f16c_mbar .. " mbar") + + -- Combined + ExportScript.Tools.SendData(44224, string.format("Pressure\n" .. + pressure_f16c_inHg .. " inHg" .. "\n" .. + pressure_f16c_mmHg .. " mmHg" .. "\n" .. + pressure_f16c_mbar .. " mbar")) + + ---------------------------------- + -- Get F16 Altitude (MSL) Info --- + ---------------------------------- + -- Necessary info + --[51] = "%.3f", -- Barometric Altitude Needle + --[52] = "%.3f", -- Barometric Altitude Window 1 + --[53] = "%.3f", -- Barometric Altitude Window 2 + --[54] = "%.3f", -- Barometric Altitude Window 3 + -- the above are 0 = 0 , 0.50 = 5, 1 = 0 + -- they are tumblers + + local altitudeWindowReadout_value1 = string.format("%.f",mainPanelDevice:get_argument_value(52) * 10) + local altitudeWindowReadout_value2 = string.format("%.f",mainPanelDevice:get_argument_value(53) * 10) + local altitudeWindowReadout_value3 = string.format("%.f",mainPanelDevice:get_argument_value(54) * 10) + local altitudeWindowReadout_needle = string.format("%.f",mainPanelDevice:get_argument_value(51) * 1000) + + --this fixes the extra "10" problem + if altitudeWindowReadout_value1 == "10" then + altitudeWindowReadout_value1 = "0" + end + if altitudeWindowReadout_value2 == "10" then + altitudeWindowReadout_value2 = "0" + end + if altitudeWindowReadout_value3 == "10" then + altitudeWindowReadout_value3 = "0" + end + if altitudeWindowReadout_needle == "10" then + altitudeWindowReadout_needle = "0" + end + --this is for the hash part + if altitudeWindowReadout_value1 == "0" then + altitudeWindowReadout_value1 = "" + end + + -- this is to fill the blank space when the needle is below 100 + if #altitudeWindowReadout_needle == 1 then + altitudeWindowReadout_needle = string.format("00" .. altitudeWindowReadout_needle) + end + if #altitudeWindowReadout_needle == 2 then + altitudeWindowReadout_needle = string.format("0" .. altitudeWindowReadout_needle) + end + + --ExportScript.Tools.SendData(44261, altitudeWindowReadout_value1 .. " ft") + --ExportScript.Tools.SendData(44262, altitudeWindowReadout_value2 .. " ft") + --ExportScript.Tools.SendData(44263, altitudeWindowReadout_value3 .. " ft") + --ExportScript.Tools.SendData(44264, altitudeWindowReadout_needle .. " ft") + + --value 3 isnt needed bc it is taken over by the needle + local altitudeWindowReadout_total = string.format(altitudeWindowReadout_value1 .. altitudeWindowReadout_value2 .. altitudeWindowReadout_needle) + --remove leading zeros + altitudeWindowReadout_total = altitudeWindowReadout_total:match("0*(%d+)") --https://stackoverflow.com/questions/34331633/remove-leading-zeroes-in-lua-string + local altMsl_f16c_ft = altitudeWindowReadout_total + + --ExportScript.Tools.SendData(44260, altMsl_f16c_ft .. " ft") + + -- convert to meters + local altMsl_f16c_meters = string.format("%.f", altMsl_f16c_ft / 3.281) + --ExportScript.Tools.SendData(44261, altMsl_f16c_meters .. " m") + + -- convert to km + local altMsl_f16c_km = string.format("%.2f", altMsl_f16c_ft / 3281) + --ExportScript.Tools.SendData(44262, altMsl_f16c_km .. " km") + + -- Combined + ExportScript.Tools.SendData(44226, string.format("Alt (MSL)\n" .. + altMsl_f16c_ft .. " ft" .. "\n" .. + altMsl_f16c_meters .. " m" .. "\n" .. + altMsl_f16c_km .. " km")) + ---------------------------------- + -- Get F16 Altitude (AGL) Info --- todo: this + ---------------------------------- + --the radar altimeter readout is somehwere between entry 466 and 480. youll have to find it + --local expendableReadout = ExportScript.Tools.split(list_indication(1), "%c")--this contains the formated table of the HUD info + + local expendableReadout1 = ExportScript.Tools.split(list_indication(1), "%c")--this contains the formated table of the HUD info + + local radAlt_firstHalf + local radAlt_secondHalf + + --[[ + + for k,v in pairs(expendableReadout1) do + if v == "HUD_RadarAlt_num_k" then + radAlt_firstHalf = expendableReadout1[k+1] + end + if v == "HUD_RadarAlt_num" then + radAlt_secondHalf = expendableReadout1[k+1] + end + end + ]] + + for k,v in pairs(expendableReadout) do + if v ~= "HUD_RadarAlt_num_k" then + for x,y in pairs(expendableReadout) do + if y == "HUD_RadarAlt_num" then + radAlt_secondHalf = expendableReadout[x+1] + print(radAlt_secondHalf) + end + end + end + end + + local radAlt_total = string.format("%.f",radAlt_firstHalf .. radAlt_secondHalf) + local altAgl_f16c_ft = radAlt_total + + ExportScript.Tools.SendData(44250, radAlt_firstHalf) + ExportScript.Tools.SendData(44251, radAlt_secondHalf) + ExportScript.Tools.SendData(44252, string.format(altAgl_f16c_ft .. " ft")) + + + -- Convert to meters + local altAgl_f16c_meters = string.format("%.0f", altAgl_f16c_ft / 3.281) + --ExportScript.Tools.SendData(44262, altMsl_f16c_km .. " km") + + -- Convert to km + local altAgl_f16c_km = string.format("%.2f", altAgl_f16c_ft / 3281) + + -- Combined + ExportScript.Tools.SendData(44228, string.format("Alt (AGL)\n" .. + altAgl_f16c_ft .. " ft" .. "\n" .. + altAgl_f16c_meters .. " m" .. "\n" .. + altAgl_f16c_km .. " km")) + ---------------------------- + -- Get F16 Airspeed Info --- TODO: use the new way of lua to get the HUD airspeed. + ---------------------------- + + --[48] = "%.3f", -- Airspeed Indicator (knots) -- todo: replace with hud indication when i can parse the lua + --[49] = "%.3f", -- Airspeed Indicator (mach) --todo: later when i can parse the lua + + -- old way of detection + local airspeed_f16c_kts = string.format("%.f",(mainPanelDevice:get_argument_value(48) * 1000) - 0) -- the "-4" is there because I feel like it matches slightly better + ExportScript.Tools.SendData(44264, string.format(airspeed_f16c_kts .. " kts")) + + -- Convert to kmph + local airspeed_f16c_kmph = string.format("%.f",airspeed_f16c_kts * 1.852) + ExportScript.Tools.SendData(44263, string.format(airspeed_f16c_kmph .. " km/h")) + + -- Compined + ExportScript.Tools.SendData(44230, string.format("Airspeed\n" .. + airspeed_f16c_kts .. " kts" .. "\n" .. + airspeed_f16c_kmph .. " km/h" .. "\n" .. + " ")) + + -- Extras + -- Radar alt color change TODO: this + --if R readout is less than AL readout, change the color + local radAlt_minimums + + for k,v in pairs(expendableReadout1) do + if v == "HUD_Window25_Altitude_Low_num" then + radAlt_minimums = expendableReadout1[k+1] + end + end + + if radAlt_total > radAlt_minimums then + ExportScript.Tools.SendData(44229, "0") + else + ExportScript.Tools.SendData(44229, "1") + end + ExportScript.Tools.SendData(44260, radAlt_minimums) + ExportScript.Tools.SendData(44261, radAlt_total) + + + -- Airspeed color change + -- if the raw value of the barberpole (VNE) needle is less than the other needles, change color + if mainPanelDevice:get_argument_value(47) < mainPanelDevice:get_argument_value(48) then + ExportScript.Tools.SendData(44231, "1") + else + ExportScript.Tools.SendData(44231, "0") + end + + + + +end + +function ExportScript.KollsmanWindowReadout(mainPanelDevice) + -- ExportScript.Tools.SendData(44250, "Hello again") -- Test + -- Necessary info + -- [56] = "%.2f", -- Barometric Setting Kollsman Window 1 + -- [57] = "%.2f", -- Barometric Setting Kollsman Window 2 + -- [58] = "%.2f", -- Barometric Setting Kollsman Window 3 + -- [59] = "%.2f", -- Barometric Setting Kollsman Window 4 + -- the above are 0 = 0 , 0.50 = 5, 1 = 0 + -- they are tumblers + + + + + + + +end \ No newline at end of file diff --git a/Scripts/DCS-ExportScript/ExportsModules/F-5E-3.lua b/ExportsModules/F-5E-3.lua similarity index 98% rename from Scripts/DCS-ExportScript/ExportsModules/F-5E-3.lua rename to ExportsModules/F-5E-3.lua index 9bd617d..51fa4c6 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/F-5E-3.lua +++ b/ExportsModules/F-5E-3.lua @@ -1,717 +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") +-- 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, 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 -- ------------------------------ + 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/Scripts/DCS-ExportScript/ExportsModules/FA-18C_hornet.lua b/ExportsModules/FA-18C_hornet.lua similarity index 99% rename from Scripts/DCS-ExportScript/ExportsModules/FA-18C_hornet.lua rename to ExportsModules/FA-18C_hornet.lua index 0d9b018..856a6d2 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/FA-18C_hornet.lua +++ b/ExportsModules/FA-18C_hornet.lua @@ -34,7 +34,7 @@ ExportScript.ConfigEveryFrameArguments = [242] = "%.4f", -- HydIndBrake {0.0, 1000.0, 2000.0, 3000.0, 4000.0, 5000.0}{0.0, 0.036, 0.338, 0.636, 0.924, 1.0} -- Gear Interface [228] = "%.4f", -- EmergGearDownHandle - [240] = "%.4f", -- EmergParkBrakeHandle + -- [240] = "%.4f", -- EmergParkBrakeHandle delete -- Instruments -------------------------- -- Standby Pressure Altimeter AAU-52/A [218] = "%.4f", -- Altimeter_100_footPtr {0.0, 1000.0} {0.0, 1.0} diff --git a/ExportsModules/JF-17.lua b/ExportsModules/JF-17.lua new file mode 100644 index 0000000..5adbb01 --- /dev/null +++ b/ExportsModules/JF-17.lua @@ -0,0 +1,453 @@ +-- JF-17 Export Module Revision CKN200515A +-- Feel free to use, modify and repost in any way you desire. + +ExportScript.FoundDCSModule = true +ExportScript.Version.JF17 = "1.2.1" + +ExportScript.ConfigEveryFrameArguments = +{ + [130] = "%1d", -- Master Warning Light, OFF/ON {0,1} + [131] = "%1d", -- Fire Warning Light, OFF/ON {0,1} + [132] = "%1d", -- FCS Warning Light, OFF/ON {0,1} + [242] = "%1d", -- OXY BLINK Warning Light, OFF/ON {0,1} + [250] = "%.2f", -- Stick Pitch Position, MIN..MAX {0..1} + [251] = "%.2f", -- Stick Bank Position, MIN..MAX {0..1} + [254] = "%.2f", -- Throttle Position, MIN..MAX {-1..1} + [256] = "%.2f", -- Left Toe Brake Position, MIN..MAX {0..1} + [257] = "%.2f", -- Right Toe Brake Position, MIN..MAX {0..1} + [259] = "%.2f", -- Rudder Pedal Left-Right Position, MIN..MAX {-1..1} + [290] = "%.2f", -- Oxygen Gauge Needle Position, MIN..MAX {0..1} + [291] = "%.2f", -- Pneumatic Gauge M Needle Position, MIN..MAX {0..1} + [292] = "%.2f", -- Pneumatic Gauge E Needle Position, MIN..MAX {0..1} + [293] = "%.4f", -- Magnetic Heading Backup Compass, MIN..MAX {0..1} + [504] = "%.2f", -- Landing Gear Indicator Light Knob, MIN..MAX {0..1} (0=0, 0.25=90, 0.5=180, 0.75=270) + [532] = "%1d", -- Yaw Trim Switch, LEFT/CENTER/RIGHT {-1,0,1} + [538] = "%1d", -- Flare Dispense Button, OUT/IN {0,1} + --- Radio Panel --- + [545] = "%.2f", -- Radio Volume Knob, MIN..MAX {0..1} + [547] = "%.1f", -- Radio Mode Selector, OFF/TR/TR+G/ADF/GD/SET {0,0.2,0.4,0.6,0.8,1} + [549] = "%1d", -- Radio 1/TONE Button, OUT/IN {0,1} + [550] = "%1d", -- Radio 2/- Button, OUT/IN {0,1} + [551] = "%1d", -- Radio 3/+ Button, OUT/IN {0,1} + [552] = "%1d", -- Radio 4/H Button, OUT/IN {0,1} + [553] = "%1d", -- Radio 5/A Button, OUT/IN {0,1} + [554] = "%1d", -- Radio 6/M Button, OUT/IN {0,1} + [555] = "%1d", -- Radio 7/P Button, OUT/IN {0,1} + [556] = "%1d", -- Radio 8/C Button, OUT/IN {0,1} + [557] = "%1d", -- Radio 9/T Button, OUT/IN {0,1} + [558] = "%1d", -- Radio <-/MAN Button, OUT/IN {0,1} + [559] = "%1d", -- Radio 0/PRE Button, OUT/IN {0,1} + [560] = "%1d", -- Radio ->/ENT Button, OUT/IN {0,1} + --- + [570] = "%.2f", -- Throttle Friction Handle, MIN..MAX {0..1} + --- UFCP --- + [700] = "%1d", -- UFCP PFL/1 Button, OUT/IN {0,1} + [701] = "%1d", -- UFCP VRC/2 Button, OUT/IN {0,1} + [702] = "%1d", -- UFCP 3 Button, OUT/IN {0,1} + [703] = "%1d", -- UFCP L1 Button, OUT/IN {0,1} + [704] = "%1d", -- UFCP R1 Button, OUT/IN {0,1} + [705] = "%1d", -- UFCP OAP Button, OUT/IN {0,1} + [706] = "%1d", -- UFCP MRK Button, OUT/IN {0,1} + [707] = "%1d", -- UFCP DST/4 Button, OUT/IN {0,1} + [708] = "%1d", -- UFCP TOT/5 Button, OUT/IN {0,1} + [709] = "%1d", -- UFCP TOD/6 Button, OUT/IN {0,1} + [710] = "%1d", -- UFCP L2 Button, OUT/IN {0,1} + [711] = "%1d", -- UFCP R2 Button, OUT/IN {0,1} + [712] = "%1d", -- UFCP RU Button, OUT/IN {0,1} + [713] = "%1d", -- UFCP HNS Button, OUT/IN {0,1} + [714] = "%1d", -- UFCP FUL/7 Button, OUT/IN {0,1} + [715] = "%1d", -- UFCP IFF/8 Button, OUT/IN {0,1} + [716] = "%1d", -- UFCP 9 Button, OUT/IN {0,1} + [717] = "%1d", -- UFCP L3 Button, OUT/IN {0,1} + [718] = "%1d", -- UFCP R3 Button, OUT/IN {0,1} + [719] = "%1d", -- UFCP A/P Button, OUT/IN {0,1} + [720] = "%1d", -- UFCP FPM Button, OUT/IN {0,1} + [721] = "%1d", -- UFCP RTN Button, OUT/IN {0,1} + [722] = "%1d", -- UFCP 0 Button, OUT/IN {0,1} + [723] = "%1d", -- UFCP N/A Button, OUT/IN {0,1} + [724] = "%1d", -- UFCP L4 Button, OUT/IN {0,1} + [725] = "%1d", -- UFCP R4 Button, OUT/IN {0,1} + [726] = "%1d", -- UFCP N/A Button, OUT/IN {0,1} + [727] = "%1d", -- UFCP N/A Button, OUT/IN {0,1} + [728] = "%.2f", -- HUD Contrast Knob, MIN..MAX {0..1} + [729] = "%.2f", -- HUD Brightness Knob, MIN..MAX {0..1} + [730] = "%1d", -- UFCP +/- Momentary Switch {1,0,-1} + [731] = "%.2f", -- HUD Backup Reticle Knob, MIN..MAX {0..1} + [732] = "%.2f", -- UFCP Brightness Knob, MIN..MAX {0..1} + --- MFCD --- + [734] = "%1d", -- Left MFCD SYM + Button, OUT/IN {0,1} + [735] = "%1d", -- Left MFCD SYM - Button, OUT/IN {0,1} + [736] = "%1d", -- Left MFCD U1 Button, OUT/IN {0,1} + [737] = "%1d", -- Left MFCD U2 Button, OUT/IN {0,1} + [738] = "%1d", -- Left MFCD U3 Button, OUT/IN {0,1} + [739] = "%1d", -- Left MFCD U4 Button, OUT/IN {0,1} + [740] = "%1d", -- Left MFCD U5 Button, OUT/IN {0,1} + [741] = "%1d", -- Left MFCD Power Switch, OFF/ON {0,1} + [742] = "%1d", -- Left MFCD L1 Button, OUT/IN {0,1} + [743] = "%1d", -- Left MFCD L2 Button, OUT/IN {0,1} + [744] = "%1d", -- Left MFCD L3 Button, OUT/IN {0,1} + [745] = "%1d", -- Left MFCD L4 Button, OUT/IN {0,1} + [746] = "%1d", -- Left MFCD L5 Button, OUT/IN {0,1} + [747] = "%1d", -- Left MFCD L6 Button, OUT/IN {0,1} + [748] = "%1d", -- Left MFCD L7 Button, OUT/IN {0,1} + [749] = "%1d", -- Left MFCD L8 Button, OUT/IN {0,1} + [750] = "%1d", -- Left MFCD R1 Button, OUT/IN {0,1} + [751] = "%1d", -- Left MFCD R2 Button, OUT/IN {0,1} + [752] = "%1d", -- Left MFCD R3 Button, OUT/IN {0,1} + [753] = "%1d", -- Left MFCD R4 Button, OUT/IN {0,1} + [754] = "%1d", -- Left MFCD R5 Button, OUT/IN {0,1} + [755] = "%1d", -- Left MFCD R6 Button, OUT/IN {0,1}} + [756] = "%1d", -- Left MFCD R7 Button, OUT/IN {0,1} + [757] = "%1d", -- Left MFCD R8 Button, OUT/IN {0,1} + [758] = "%1d", -- Left MFCD CONT + Button, OUT/IN {0,1} + [759] = "%1d", -- Left MFCD CONT - Button, OUT/IN {0,1} + [760] = "%1d", -- Left MFCD D1 Button, OUT/IN {0,1} + [761] = "%1d", -- Left MFCD D2 Button, OUT/IN {0,1} + [762] = "%1d", -- Left MFCD D3 Button, OUT/IN {0,1} + [763] = "%1d", -- Left MFCD D4 Button, OUT/IN {0,1} + [764] = "%1d", -- Left MFCD D5 Button, OUT/IN {0,1} + [765] = "%1d", -- Left MFCD BRT + Button, OUT/IN {0,1} + [766] = "%1d", -- Left MFCD BRT - Button, OUT/IN {0,1} + [767] = "%1d", -- Center MFCD SYM + Button, OUT/IN {0,1} + [768] = "%1d", -- Center MFCD SYM - Button, OUT/IN {0,1} + [769] = "%1d", -- Center MFCD U1 Button, OUT/IN {0,1} + [770] = "%1d", -- Center MFCD U2 Button, OUT/IN {0,1} + [771] = "%1d", -- Center MFCD U3 Button, OUT/IN {0,1} + [772] = "%1d", -- Center MFCD U4 Button, OUT/IN {0,1} + [773] = "%1d", -- Center MFCD U5 Button, OUT/IN {0,1} + [774] = "%1d", -- Center MFCD Power Switch, OFF/ON {0,1} + [775] = "%1d", -- Center MFCD L1 Button, OUT/IN {0,1} + [776] = "%1d", -- Center MFCD L2 Button, OUT/IN {0,1} + [777] = "%1d", -- Center MFCD L3 Button, OUT/IN {0,1} + [778] = "%1d", -- Center MFCD L4 Button, OUT/IN {0,1} + [779] = "%1d", -- Center MFCD L5 Button, OUT/IN {0,1} + [780] = "%1d", -- Center MFCD L6 Button, OUT/IN {0,1} + [781] = "%1d", -- Center MFCD L7 Button, OUT/IN {0,1} + [782] = "%1d", -- Center MFCD L8 Button, OUT/IN {0,1} + [783] = "%1d", -- Center MFCD R1 Button, OUT/IN {0,1} + [784] = "%1d", -- Center MFCD R2 Button, OUT/IN {0,1} + [785] = "%1d", -- Center MFCD R3 Button, OUT/IN {0,1} + [786] = "%1d", -- Center MFCD R4 Button, OUT/IN {0,1} + [787] = "%1d", -- Center MFCD R5 Button, OUT/IN {0,1} + [788] = "%1d", -- Center MFCD R6 Button, OUT/IN {0,1} + [789] = "%1d", -- Center MFCD R7 Button, OUT/IN {0,1} + [790] = "%1d", -- Center MFCD R8 Button, OUT/IN {0,1} + [791] = "%1d", -- Center MFCD D1 Button, OUT/IN {0,1} + [792] = "%1d", -- Center MFCD D2 Button, OUT/IN {0,1} + [793] = "%1d", -- Center MFCD D3 Button, OUT/IN {0,1} + [794] = "%1d", -- Center MFCD D4 Button, OUT/IN {0,1} + [795] = "%1d", -- Center MFCD D5 Button, OUT/IN {0,1} + [796] = "%1d", -- Center MFCD CONT + Button, OUT/IN {0,1} + [797] = "%1d", -- Center MFCD CONT - Button, OUT/IN {0,1} + [798] = "%1d", -- Center MFCD BRT + Button, OUT/IN {0,1} + [799] = "%1d", -- Center MFCD BRT - Button, OUT/IN {0,1} + [800] = "%1d", -- Right MFCD SYM + Button, OUT/IN {0,1} + [801] = "%1d", -- Right MFCD SYM - Button, OUT/IN {0,1} + [802] = "%1d", -- Right MFCD U1 Button, OUT/IN {0,1} + [803] = "%1d", -- Right MFCD U2 Button, OUT/IN {0,1} + [804] = "%1d", -- Right MFCD U3 Button, OUT/IN {0,1} + [805] = "%1d", -- Right MFCD U4 Button, OUT/IN {0,1} + [806] = "%1d", -- Right MFCD U5 Button, OUT/IN {0,1} + [807] = "%1d", -- Right MFCD Power Switch, OFF/ON {0,1} + [808] = "%1d", -- Right MFCD L1 Button, OUT/IN {0,1} + [809] = "%1d", -- Right MFCD L2 Button, OUT/IN {0,1} + [810] = "%1d", -- Right MFCD L3 Button, OUT/IN {0,1} + [811] = "%1d", -- Right MFCD L4 Button, OUT/IN {0,1} + [812] = "%1d", -- Right MFCD L5 Button, OUT/IN {0,1} + [813] = "%1d", -- Right MFCD L6 Button, OUT/IN {0,1} + [814] = "%1d", -- Right MFCD L7 Button, OUT/IN {0,1} + [815] = "%1d", -- Right MFCD L8 Button, OUT/IN {0,1} + [816] = "%1d", -- Right MFCD R1 Button, OUT/IN {0,1} + [817] = "%1d", -- Right MFCD R2 Button, OUT/IN {0,1} + [818] = "%1d", -- Right MFCD R3 Button, OUT/IN {0,1} + [819] = "%1d", -- Right MFCD R4 Button, OUT/IN {0,1} + [820] = "%1d", -- Right MFCD R5 Button, OUT/IN {0,1} + [821] = "%1d", -- Right MFCD R6 Button, OUT/IN {0,1} + [822] = "%1d", -- Right MFCD R7 Button, OUT/IN {0,1} + [823] = "%1d", -- Right MFCD R8 Button, OUT/IN {0,1} + [824] = "%1d", -- Right MFCD D1 Button, OUT/IN {0,1} + [825] = "%1d", -- Right MFCD D2 Button, OUT/IN {0,1} + [826] = "%1d", -- Right MFCD D3 Button, OUT/IN {0,1} + [827] = "%1d", -- Right MFCD D4 Button, OUT/IN {0,1} + [828] = "%1d", -- Right MFCD D5 Button, OUT/IN {0,1} + [829] = "%1d", -- Right MFCD CONT + Button, OUT/IN {0,1} + [830] = "%1d", -- Right MFCD CONT - Button, OUT/IN {0,1} + [831] = "%1d", -- Right MFCD BRT + Button, OUT/IN {0,1} + [832] = "%1d", -- Right MFCD BRT - Button, OUT/IN {0,1} + --- + [840] = "%.5f", -- BARO Altitude Setting, MIN..MAX {0..~0.31} ***WARNING - As of 15th May 2020, this crashes DCS if value is outside 0 to ~0.31 range*** + [841] = "%.2f", -- Emergency Brake Handle, MIN..MAX {0..1} + [846] = "%1d", -- Digital Clock Brightness + Button, OUT/IN {0,1} + [847] = "%1d", -- Digital Clock Brightness - Button, OUT/IN {0,1} + [901] = "%.2f", -- Warning Panel Brightness Knob, MIN..MAX {0..1} + [903] = "%.2f", -- Oxygen Indicator Brightness Knob, MIN..MAX {0..1} + [909] = "%.2f", -- AAP Brightness Knob, MIN..MAX {0..1} + [934] = "%.2f", -- COM1 Volume Knob, MIN..MAX {0..1} + [938] = "%.2f", -- COM2 Volume Knob, MIN..MAX {0..1} + [939] = "%.2f", -- TCN/ILS Volume Knob, MIN..MAX {0..1} + [940] = "%.2f", -- MSL Volume Knob, MIN..MAX {0..1} + [941] = "%.2f", -- Air Temp Knob Selector, MIN..MAX {0..0.91666666666667} + [944] = "%.2f", -- Inst. Light Knob, MIN..MAX {0..1} + [945] = "%.2f", -- Console Light Knob, MIN..MAX {0..1} + [946] = "%.2f", -- Flood Light Knob, MIN..MAX {0..1} + [959] = "%.2f", -- Canopy Manual Open/Close Crank, MIN..MAX {0..1} + [964] = "%.2f", -- AAR Light Brightness Knob, MIN..MAX {0..1} + [965] = "%.2f", -- Right Forward Flood Light Direction, MIN..MAX {0..1} + [966] = "%.2f", -- Right Aft Light Direction, MIN..MAX {0..1} + [967] = "%.2f", -- Left Forward Flood Light Direction, MIN..MAX {0..1} + [968] = "%.2f", -- Left Aft Flood Light Direction, MIN..MAX {0..1} + [976] = "%.2f", -- Oxygen Supply Valve, MIN..MAX {0..1} +} +ExportScript.ConfigArguments = +{ + --- Landing Gear Panel Lights + [100] = "%1d", -- Landing Gear In Transition Light, OFF/ON {0,1} + [101] = "%1d", -- Landing Gear Deployed Left Light, OFF/ON {0,1} + [102] = "%1d", -- Landing Gear Deployed Nose Light, OFF/ON {0,1} + [103] = "%1d", -- Landing Gear Deployed Right Light, OFF/ON {0,1} + [104] = "%1d", -- S/B Deployed Light, OFF/ON {0,1} + [105] = "%1d", -- D/CH Deployed Light, OFF/ON {0,1} + [106] = "%1d", -- TEF Deployed Light, OFF/ON {0,1} + [107] = "%1d", -- Landing Gear Handle Light, OFF/ON {0,1} + [108] = "%.2f", -- Landing Gear Indicator Lights Brightness, MIN..MAX {0..1} + --- + [110] = "%1d", -- FCS RESET Light, OFF/ON {0,1} + [120] = "%.2f", -- Console Backlight Brightness, MIN..MAX {0..1} + [121] = "%.2f", -- Instrument Backlight Brightness, MIN..MAX {0..1} + [122] = "%.2f", -- Clock Backlight Brightness, MIN..MAX {0..1} + [125] = "%.2f", -- Flood Light Brightness, MIN..MAX {0..1} + [140] = "%1d", -- Left MFCD Backlight, OFF/ON {0,1} + [141] = "%.2f", -- Left MFCD Backlight Brightness, MIN..MAX {0..1} + [142] = "%1d", -- Center MFCD Backlight, OFF/ON {0,1} + [143] = "%.2f", -- Center MFCD Backlight Brightness, MIN..MAX {0..1} + [144] = "%1d", -- Right MFCD Backlight, OFF/ON {0,1} + [145] = "%.2f", -- Right MFCD Backlight Brightness, MIN..MAX {0..1} + --- UFCP Lights --- + [150] = "%1d", -- UFCP OAP Light, OFF/ON {0,1} + [151] = "%1d", -- UFCP MRK Light, OFF/ON {0,1} + [152] = "%1d", -- UFCP P.U Light, OFF/ON {0,1} + [153] = "%1d", -- UFCP HNS Light, OFF/ON {0,1} + [154] = "%1d", -- UFCP AP Light, OFF/ON {0,1} + [155] = "%1d", -- UFCP FPM Light, OFF/ON {0,1} + [156] = "%1d", -- UFCP NULL1 Light, OFF/ON {0,1} + [157] = "%1d", -- UFCP NULL2 Light, OFF/ON {0,1} + [158] = "%.2f", -- UFCP Brightness, MIN..MAX {0..1} + --- Status Lights Panel --- + [160] = "%1d", -- PITCH TRIM Status Light, OFF/ON {0,1} + [161] = "%1d", -- ROLL TRIM Status Light, OFF/ON {0,1} + [162] = "%1d", -- YAW TRIM Status Light, OFF/ON {0,1} + [163] = "%1d", -- A/A Status Light, OFF/ON {0,1} + [164] = "%1d", -- A/G1 Status Light, OFF/ON {0,1} + [165] = "%1d", -- A/G2 Status Light, OFF/ON {0,1} + [166] = "%1d", -- EFCS Status Light, OFF/ON {0,1} + [167] = "%1d", -- No.3 TANK Status Light, OFF/ON {0,1} + [168] = "%1d", -- No.1 TANK Status Light, OFF/ON {0,1} + [169] = "%1d", -- WING D/T Status Light, OFF/ON {0,1} + [170] = "%1d", -- CTR D/T Status Light, OFF/ON {0,1} + [171] = "%1d", -- NULL Status Light, OFF/ON {0,1} + [172] = "%1d", -- START Status Light, OFF/ON {0,1} + [173] = "%1d", -- AB Status Light, OFF/ON {0,1} + [174] = "%1d", -- COMBAT Status Light, OFF/ON {0,1} + [175] = "%1d", -- EMG HYD Status Light, OFF/ON {0,1} + [176] = "%1d", -- NWS Status Light, OFF/ON {0,1} + [177] = "%1d", -- ADVISORY Status Light, OFF/ON {0,1} + [178] = "%.2f", -- Status Lights Brightness, MIN..MAX {0..1} + --- Warning Lights Panel --- + [200] = "%1d", -- NULL Warning Light, OFF/ON {0,1} + [201] = "%1d", -- OXY LOW Warning Light, OFF/ON {0,1} + [202] = "%1d", -- CANOPY Warning Light, OFF/ON {0,1} + [203] = "%1d", -- HYD LOW Warning Light, OFF/ON {0,1} + [204] = "%1d", -- AIR DATA Warning Light, OFF/ON {0,1} + [205] = "%1d", -- LOW FUEL Warning Light, OFF/ON {0,1} + [206] = "%1d", -- CABIN PRESS Warning Light, OFF/ON {0,1} + [207] = "%1d", -- REDUCE RPM Warning Light, OFF/ON {0,1} + [208] = "%1d", -- CONFIG Warning Light, OFF/ON {0,1} + [209] = "%1d", -- FUEL PUMP Warning Light, OFF/ON {0,1} + [210] = "%1d", -- AC SYS Warning Light, OFF/ON {0,1} + [211] = "%1d", -- OIL Warning Light, OFF/ON {0,1} + [212] = "%1d", -- DL Warning Light, OFF/ON {0,1} + [213] = "%1d", -- START PUMP Warning Light, OFF/ON {0,1} + [214] = "%1d", -- DC GEN Warning Light, OFF/ON {0,1} + [215] = "%1d", -- STARTER Warning Light, OFF/ON {0,1} + [216] = "%1d", -- FCS 3 Warning Light, OFF/ON {0,1} + [217] = "%1d", -- BRAKE Warning Light, OFF/ON {0,1} + [218] = "%1d", -- BATT Warning Light, OFF/ON {0,1} + [219] = "%1d", -- ENG TEMP Warning Light, OFF/ON {0,1} + [220] = "%1d", -- FCS 2 Warning Light, OFF/ON {0,1} + [221] = "%1d", -- ANTI-SKID Warning Light, OFF/ON {0,1} + [222] = "%1d", -- TRU Warning Light, OFF/ON {0,1} + [223] = "%1d", -- ANTI-SURGE Warning Light, OFF/ON {0,1} + [224] = "%1d", -- FCS 1 Warning Light, OFF/ON {0,1} + [225] = "%1d", -- NWS Warning Light, OFF/ON {0,1} + [226] = "%1d", -- STATIC INV Warning Light, OFF/ON {0,1} + [227] = "%1d", -- ANTI-ICING Warning Light, OFF/ON {0,1} + [228] = "%1d", -- ROLL CAS Warning Light, OFF/ON {0,1} + [229] = "%1d", -- ECS Warning Light, OFF/ON {0,1} + [230] = "%1d", -- EMMC Warning Light, OFF/ON {0,1} + [231] = "%1d", -- SEC Warning Light, OFF/ON {0,1} + [232] = "%1d", -- YAW CAS Warning Light, OFF/ON {0,1} + [233] = "%1d", -- EQUIP HOT Warning Light, OFF/ON {0,1} + [234] = "%1d", -- LWC Warning Light, OFF/ON {0,1} + [235] = "%1d", -- EDU Warning Light, OFF/ON {0,1} + [236] = "%1d", -- AUTOPILOT Warning Light, OFF/ON {0,1} + [237] = "%1d", -- PITOT HEAT Warning Light, OFF/ON {0,1} + [238] = "%1d", -- AVIONS Warning Light, OFF/ON {0,1} + [239] = "%1d", -- DEEC Warning Light, OFF/ON {0,1} + [240] = "%1d", -- EFCS Warning Light, OFF/ON {0,1} + [241] = "%1d", -- SEAT Warning Light, OFF/ON {0,1} + [243] = "%.2f", -- Warning Lights Brightness, MIN..MAX {0..1} + -- AAP Panel Lights + [260] = "%1d", -- AAP ACMI Light, OFF/ON {0,1} + [261] = "%1d", -- AAP NULL1 Light, OFF/ON {0,1} + [262] = "%1d", -- AAP NULL2 Light, OFF/ON {0,1} + [263] = "%1d", -- AAP NULL3 Light, OFF/ON {0,1} + [264] = "%1d", -- AAP HMD Light, OFF/ON {0,1} + [265] = "%1d", -- AAP SPJ Light, OFF/ON {0,1} + [266] = "%1d", -- AAP CLDP Light, OFF/ON {0,1} + [267] = "%1d", -- AAP IRST Light, OFF/ON {0,1} + [268] = "%1d", -- AAP RDR Light, OFF/ON {0,1} + [269] = "%1d", -- AAP SLNK Light, OFF/ON {0,1} + [270] = "%1d", -- AAP OESP Light, OFF/ON {0,1} + [271] = "%1d", -- AAP RWR Light, OFF/ON {0,1} + [272] = "%1d", -- AAP COM1 Light, OFF/ON {0,1} + [273] = "%1d", -- AAP COM2 Light, OFF/ON {0,1} + [274] = "%1d", -- AAP NAV Light, OFF/ON {0,1} + [275] = "%1d", -- AAP IFF Light, OFF/ON {0,1} + [276] = "%1d", -- AAP INS Light, OFF/ON {0,1} + [277] = "%1d", -- AAP VMMC1 Light, OFF/ON {0,1} + [278] = "%1d", -- AAP VMMC2 Light, OFF/ON {0,1} + [279] = "%1d", -- AAP SAIU Light, OFF/ON {0,1} + [280] = "%1d", -- AAP CMBT Light, OFF/ON {0,1} + [281] = "%1d", -- AAP TRAIN Light, OFF/ON {0,1} + [282] = "%.2f", -- AAP Buttons Brightness, MIN..MAX {0..1} + --- + [295] = "%1d", -- Radio Panel Error Light, OFF/ON {0,1} + [500] = "%.3f", -- Backup SAIU Knob Selector Knob, OFF/BOMB/IR/GUN {0,0.333,0.666,0.999} + [501] = "%1d", -- Landing Gear Indicator Light Test Button, OUT/IN {0,1}} + [502] = "%1d", -- Landing Gear Override Button Cover, COVERED/UNCOVERED {0,1} + [503] = "%1d", -- Landing Gear Override Switch, OFF/ON {0,1}} + [505] = "%1d", -- Landing Gear Lever, DOWN/UP {0,1} + [506] = "%1d", -- Ground Jettison Switch, OFF/ENABLE {0,1}} + [507] = "%1d", -- Emergency Jettison Button Cover, COVERED/UNCOVERED {0,1} + [508] = "%1d", -- Emergency Jettison Button, OUT/IN {0,1} + [509] = "%1d", -- Master Arm Switch, SIM/OFF/ARM {-1,0,1} + [510] = "%1d", -- Brake Test Switch, OFF/ON/TEST {-1,0,1} + [511] = "%1d", -- Parking Brake, NORM/PARK {-1,1} + [512] = "%1d", -- Light Switch, LAND/OFF/TAXI {-1,0,1} + [513] = "%1d", -- Flap Switch, DOWN/UP {-1,1} + [514] = "%1d", -- Feed Cut-off Valve Cover, COVERED/UNCOVERED {0,1} + [515] = "%1d", -- Feed Cut-off Valve Switch, OFF/ON {0,1} + [516] = "%1d", -- Active Fuel Cut-off Valve Cover, COVERED/UNCOVERED {0,1} + [517] = "%1d", -- Active Fuel Cut-off Valve Switch, OFF/ON {0,1} + [518] = "%1d", -- Fuel Pump Switch, OFF/ON {0,1} + [519] = "%1d", -- Engine Control Switch, OFF/ON {0,1} + [520] = "%1d", -- Air Start Switch, OFF/ON {0,1} + [521] = "%1d", -- Ground Start Button, OUT/IN {0,1}} + [522] = "%1d", -- Engine Mode Switch, TRG/C+T/CMBT {-1,0,1} + [523] = "%1d", -- SEC EEC Switch, OFF/ON {0,1} + [524] = "%1d", -- Afterburner Switch, OFF/ON {0,1} + [525] = "%1d", -- Anti-Surge Switch, OFF/ON {0,1} + [526] = "%1d", -- Start Mode Selector, ENG COLD/START/STARTER COLD {-1,0,1} + [527] = "%1d", -- Record Switch, OUT/IN {0,1} + [528] = "%1d", -- EFCS Switch, OFF/AUTO {0,1} + [529] = "%1d", -- Yaw/Roll CAS Switch, OFF/ON {0,1} + [530] = "%1d", -- Direct Mode Switch, OFF/ON {0,1} + [531] = "%1d", -- BIT Switch, OUT/IN {0,1} + [533] = "%1d", -- Flight Test I Switch, OFF/ON {0,1} + [534] = "%1d", -- Flight Test II Switch, OFF/ON {0,1} + [535] = "%1d", -- AG1/AG2 Switch, A-AG2/A-AG1 {0,1} + [536] = "%1d", -- AA/AG Switch, A-G/A-A {0,1} + [537] = "%1d", -- Flare Dispense Button Cover, COVERED/UNCOVERED {0,1} + [539] = "%1d", -- Emergency Hydralic Pump Switch, OFF/ON {0,1} + [540] = "%1d", -- SHARS Switch, OFF/ON {0,1} + [541] = "%1d", -- Ejection Seat Activate Destruct Switch, DISABLE/ENABLE {0,1} + [542] = "%1d", -- Self Destruct Button Cover, COVERED/UNCOVERED {0,1} + [543] = "%1d", -- Self Destruct Button, OUT/IN {0,1}} + [544] = "%1d", -- FCS Reset Button,???OUT/IN??? {0,1} + [546] = "%1d", -- Squelch, SQL-ACKN/OFF {0,1} + [548] = "%1d", -- Radio Control Handover Button, OUT/IN {0,1} + [561] = "%1d", -- Air Start Button Cover, COVERED/UNCOVERED {0,1} + [562] = "%1d", -- CSS Handle, STOVED/PULLED {0,1} + [563] = "%1d", -- P.H. Test Switch, AUTO/ON {0,1} + [564] = "%1d", -- AAR Switch, INT/OFF/ALL {-1,0,1} + [571] = "%1d", -- Throttle Uncage: Stop to Idle, CAGE/IDLE {0,1} + [572] = "%1d", -- Throttle Cage: Idle To Stop, IDLE/CAGE {0,1} + [573] = "%1d", -- Throttle Emergency Button, OUT/IN {0,1} + [733] = "%1d", -- Deploy/Jettison Parachute Switch, JETT/OFF/DEPLOY {-1,0,1} + [842] = "%1d", -- Master Warning Button, OUT/IN {0,1} + [843] = "%1d", -- Fire Warning Button, OUT/IN {0,1} + [844] = "%1d", -- FCS Warning Button, OUT/IN {0,1} + [845] = "%1d", -- Digital Clock Switch, OFF/ON {0,1} + [848] = "%1d", -- Digital Clock UTC Button, OUT/IN {0,1} + [849] = "%1d", -- Digital Clock CHR Button, OUT/IN {0,1} + [900] = "%1d", -- Warning Panel Day/Night Switch, NIGHT/DAY {0,1} + [902] = "%1d", -- Warning Panel Test Button, OUT/IN {0,1} + [904] = "%1d", -- Battery Switch, OFF/ON {0,1} + [905] = "%1d", -- Main AC Gen Switch, OFF/ON {0,1} + [906] = "%1d", -- Main DC Gen Switch, OFF/ON {0,1} + [907] = "%1d", -- HUD/MFCD Day/Night Switch, NIGHT/DAY {0,1} + [908] = "%.3f", -- INS Mode Selector Knob, STBY/FAST/NAV/GC {0,0.333,0.666,0.999} + [910] = "%1d", -- HUD Symbology Reject, NORM/DCLT {0,1} + -- AAP Panel Buttons + [911] = "%1d", -- AAP ACMI, OFF/ON {0,1} + [912] = "%1d", -- AAP N/A, OFF/ON {0,1} + [913] = "%1d", -- AAP N/A, OFF/ON {0,1} + [914] = "%1d", -- AAP N/A, OFF/ON {0,1} + [915] = "%1d", -- AAP HMD, OFF/ON {0,1} + [916] = "%1d", -- AAP SPJ, OFF/ON {0,1} + [917] = "%1d", -- AAP CLDP, OFF/ON {0,1} + [918] = "%1d", -- AAP IRST, OFF/ON {0,1} + [919] = "%1d", -- AAP RDR, OFF/ON {0,1} + [920] = "%1d", -- AAP SLNK, OFF/ON {0,1} + [921] = "%1d", -- AAP OESP, OFF/ON {0,1} + [922] = "%1d", -- AAP RWR, OFF/ON {0,1} + [923] = "%1d", -- AAP COM1, OFF/ON {0,1} + [924] = "%1d", -- AAP COM2, OFF/ON {0,1} + [925] = "%1d", -- AAP NAV, OFF/ON {0,1} + [926] = "%1d", -- AAP IFF, OFF/ON {0,1} + [927] = "%1d", -- AAP INS, OFF/ON {0,1} + [928] = "%1d", -- AAP WMMC1, OFF/ON {0,1} + [929] = "%1d", -- AAP WMMC2, OFF/ON {0,1} + [930] = "%1d", -- AAP SAIU, OFF/ON {0,1} + [931] = "%1d", -- AAP CMBT, OFF/ON {0,1} + [932] = "%1d", -- AAP TRAIN, OFF/ON {0,1} + [933] = "%1d", -- AAP OFF, OFF/ON {0,1} + --- + [935] = "%1d", -- Intercom Switch, OFF/ON {0,1} + [936] = "%1d", -- Radio Top/Bottom Antenna Switch, LOWER/UPPER {0,1} + [937] = "%1d", -- Speaker Control Box Channel Antenna Switch, STBY/MAIN {0,1} + [942] = "%.3f", -- ECS Mode Knob Selector, DE-SMK/NORM/OFF/RAM {0,0.333,0.666,0.999} + [943] = "%1d", -- Defog Button, OUT/IN {0,1} + [947] = "%1d", -- Exterior Light Master Switch, NVG/OFF/NORMAL {-1,0,1} + [948] = "%.1f", -- Formation Light Knob Selector, OFF/1/2/3/4/BRT {0,0.2,0.4,0.6,0.8,1} + [949] = "%.1f", -- Anti-Collision Light Knob Selector, OFF/1/2/3/4/CODE {0,0.2,0.4,0.6,0.8,1} + [950] = "%1d", -- Navigation Light Switch, DIM/OFF/BRIGHT {-1,0,1} + [951] = "%1d", -- Navigation Light Switch, STEADY/FLASH {-1,1} + [952] = "%1d", -- Light Switch, TOW/OFF/ANTI-COLLISION {-1,0,1} + [953] = "%1d", -- DTC Card Insertion {0,1} + [954] = "%1d", -- Emergency Landing Gear Cover, COVERED/UNCOVERED {0,1} + [955] = "%.2f", -- Emergency Landing Gear Handle, STOVED/RELEASED/PARTIAL PULL/TWIST/FULL PULL AND TWIST {0,0.25,0.5,0.75,1} + [957] = "%1d", -- Canopy Seal Handle, OFF/SEAL {0,1} + [958] = "%.3f", -- Canopy Open/Close Handle, OPEN/HOLD/CLOSE/LOCK {0,0.333,0.666,0.999} + [960] = "%.2f", -- Right Mirror Position, MIN..MAX {0..1} + [961] = "%.2f", -- Center Mirror Position, MIN..MAX {0..1} + [962] = "%.2f", -- Left Mirror Position, MIN..MAX {0..1} + [963] = "%1d", -- AAR Light Switch, OFF/ON {-1,1} + [969] = "%1d", -- Flash Light, OFF/ON {0,1} + [970] = "%1d", -- Stick Show/Hide, HIDDEN/VISIBLE {0,1} + [971] = "%1d", -- S7: A/P Disengage Paddle Switch, OUT/IN {0,1} + [972] = "%1d", -- Eject Seat Handle, SAFE/ARM {0,1} + [973] = "%1d", -- Eject Seat Firing Handle Safety Pin, OUT/IN {0,1} + [974] = "%1d", -- DTC Card Ejection Button, OUT/IN {0,1} + [975] = "%1d", -- Oxygen Tube Connector, OFF/ON {0,1} + [977] = "%1d", -- Oxygen 100% O2 Switch, OFF/ON {0,1} + [978] = "%1d", -- Eject Seat Emergency O2 Switch, OFF/ON {0,1} +} +function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) +end +function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) +end +function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) +end +function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) +end diff --git a/Scripts/DCS-ExportScript/ExportsModules/Mi-24P.lua b/ExportsModules/Mi-24P.lua similarity index 91% rename from Scripts/DCS-ExportScript/ExportsModules/Mi-24P.lua rename to ExportsModules/Mi-24P.lua index 13ed972..aec7692 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/Mi-24P.lua +++ b/ExportsModules/Mi-24P.lua @@ -883,6 +883,8 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) 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)) ]] + + --------------------------------------------------- ---------Get DISS Angle Readout-------------------- --------------------------------------------------- @@ -918,9 +920,11 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- Pick a number to contain the information ExportScript.Tools.SendData(3000, courseAngleFull) + --------------------------------------------------- ---------Get DISS Distance Readout----------------- --------------------------------------------------- + -- The additive value should have been 5, but weird things were happening when it was added to 0 local distanceKmDigit1 = math.floor((mainPanelDevice:get_argument_value(806) * 10) + 0.0) distanceKmDigit1 = string.format("%1d" , distanceKmDigit1) @@ -949,6 +953,7 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- Pick a number to contain the information ExportScript.Tools.SendData(3001, distanceKmFull) + --------------------------------------------------- ---------Get DISS Deviation Readout---------------- --------------------------------------------------- @@ -982,9 +987,9 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3002, lateralDeviationFull) - --------------------------------------------------- - ---------Get number for 1st ammo counter----------- - --------------------------------------------------- + ---------------------------------- + ---------Ammo Counter 1----------- + ---------------------------------- local ammoCounter1_digit12 = (mainPanelDevice:get_argument_value(716) / 0.0526) * 1 -- This gets the raw number, eg 0.1234 and then uses the multiplier to change it to the appropiate number ammoCounter1_digit12 = string.format("%.1d" , ammoCounter1_digit12) -- Trims the number @@ -1001,9 +1006,9 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3011, "12,7x4\n" .. ammoCounter1_digit12 .. ammoCounter1_digit34) - --------------------------------------------------- - ---------Get number for 2nd ammo counter----------- - --------------------------------------------------- + ---------------------------------- + ---------Ammo Counter 2----------- + ---------------------------------- local ammoCounter2_digit12 = (mainPanelDevice:get_argument_value(720) / 0.0526) * 1 ammoCounter2_digit12 = string.format("%.1d" , ammoCounter2_digit12) @@ -1020,9 +1025,9 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3012, "12,7x5\n" .. ammoCounter2_digit12 .. ammoCounter2_digit34) - --------------------------------------------------- - ---------Get number for 3rd ammo counter----------- - --------------------------------------------------- + ---------------------------------- + ---------Ammo Counter 3----------- + ---------------------------------- local ammoCounter3_digit12 = (mainPanelDevice:get_argument_value(724) / 0.0526) * 1 ammoCounter3_digit12 = string.format("%.1d" , ammoCounter3_digit12) @@ -1039,9 +1044,9 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3013, "30x2\n" .. ammoCounter3_digit12 .. ammoCounter3_digit34) - --------------------------------------------------- - ---------Get number for 4th ammo counter----------- - --------------------------------------------------- + ---------------------------------- + ---------Ammo Counter 4----------- + ---------------------------------- local ammoCounter4_digit12 = (mainPanelDevice:get_argument_value(728) / 0.0526) * 1 ammoCounter4_digit12 = string.format("%.1d" , ammoCounter4_digit12) @@ -1058,17 +1063,18 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3014, "12,7x5\n" .. ammoCounter4_digit12 .. ammoCounter4_digit34) - --------------------------------------------------- - ---------Get number for 5th ammo counter----------- - --------------------------------------------------- + ---------------------------------- + ---------Ammo Counter 5----------- + ---------------------------------- --this one is optimized - --TODO: optimize the other 4 + --TODO: optimize the other 4, maybe local ammoCounter5_digit12 = string.format("%.2d" ,(mainPanelDevice:get_argument_value(732) / 0.0526) * 1) -- 0.0526 is the multiplier local ammoCounter5_digit34 = string.format("%.2d" ,(mainPanelDevice:get_argument_value(733) / 0.0526) * 5) ExportScript.Tools.SendData(3015, "12,7x4\n" .. ammoCounter5_digit12 .. ammoCounter5_digit34) + --------------------------------------- -----Get ARC-15 Freqs (pilot)---------- --------------------------------------- @@ -1100,16 +1106,16 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) ExportScript.Tools.SendData(3024, string.format("FLARE\n" .. txt_FLARES_Count)) ExportScript.Tools.SendData(3025, string.format("CHAFF\n" .. txt_CHAFFS_Count)) + ------------------- -----Hind mike----- ------------------- - + --[[ -- Aka (Streamdeck Elevation Navigation Pressure Altimeter Instrument) SENPAI -- Aka (STANDARD UNIT GRAPHICAL OVERLAY INTERPRETATION) SUGOI -- Aka (Local Elevation and Weather Dataconverter) LEWD -- Aka (Metric Imperial Navigation Automated System Aid Nonsense) MINA-SAN - --[[ Goal: Create a "universal" profile that displays the following for every module with minimal or no Stream Deck reconfiguration. Contains 4 tiles with three conversions each. - Pressure @@ -1128,49 +1134,39 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) - Knots - kilometers per hr - Mach (airframe dependent) + + -- Export number format + 44224 = Pressure readouts + 44225 = Pressure readout color change + 44226 = Alt(msl) readouts + 44227 = Alt(msl) readout color change + 44228 = Alt(agl) readouts + 44229 = Alt(agl) readout color change + 44230 = airspeed readouts + 44231 = airspeed readout color change ]] + ---------------------------- -- Get Hind Pressure Info -- ---------------------------- -- Necessary info - -- [21] = "%.4f", -- Baro Pressure Kollsman Window 0 = 670, 1 = 790 + -- [21] = "%.4f", -- Baro Pressure Kollsman Window 0 = 680, 1 = 790 + - --[[ - range is 120 units - magic formula is =(value*120)+670 - 0 = 680 - 0.5000 = - 1 = 790 - ]] - local pressure_mi24p_mmHg = (mainPanelDevice:get_argument_value(21) * 110) + 680 -- mmHg - pressure_mi24p_mmHg_display = string.format("%.f", pressure_mi24p_mmHg) - pressure_mi24p_mmHg_displayWorded = string.format(pressure_mi24p_mmHg_display .. " mmHg") - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_mmHg_display)) - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_mmHg_displayWorded)) + local pressure_mi24p_mmHg = (mainPanelDevice:get_argument_value(21) * 110) + 680 -- Default is mmHg + pressure_mi24p_mmHg = string.format("%.f", pressure_mi24p_mmHg) - -- Convert to inHg - local pressure_mi24p_inhg = pressure_mi24p_mmHg/25.4 - pressure_mi24p_inhg_display = string.format("%0.2f", pressure_mi24p_inhg) - pressure_mi24p_inhg_displayWorded = string.format(pressure_mi24p_inhg_display .. " inHg") - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_inhg_display)) - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_inhg_displayWorded)) + local pressure_mi24p_inhg = string.format("%0.2f",pressure_mi24p_mmHg/25.4) -- Convert to inHg - -- Convert to Millibar - local pressure_mi24p_mbar = pressure_mi24p_mmHg * 1.3333 - pressure_mi24p_mbar_display = string.format("%.f", pressure_mi24p_mbar) - pressure_mi24p_mbar_displayWorded = string.format(pressure_mi24p_mbar_display .. " mbar") - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_mbar_display)) - -- ExportScript.Tools.SendData(xxxxx, string.format(pressure_mi24p_mbar_displayWorded)) + local pressure_mi24p_mbar = string.format("%.f",pressure_mi24p_mmHg * 1.3333) -- Convert to Millibar -- Combined ExportScript.Tools.SendData(44224, string.format("Pressure\n" .. - pressure_mi24p_mmHg_displayWorded .. "\n" .. - pressure_mi24p_inhg_displayWorded .. "\n" .. - pressure_mi24p_mbar_displayWorded)) - - + pressure_mi24p_mmHg .. " mmHg" .. "\n" .. + pressure_mi24p_inhg .. " inHg" .. "\n" .. + pressure_mi24p_mbar .. " mbar")) ---------------------------------- @@ -1179,31 +1175,19 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- Necessary info -- [19] = "%.4f", -- Pilot Altimeter Thousands 0 = 0, 0.5 = 500, 1.0 = 0 - --[[ - thous: - 0 = 0.0000 - 0.5 = 5000 - 1.0 = 0.0000 - ]] + -- Default is meters local altMsl_mi24p_meters = string.format ( "%1d", (mainPanelDevice:get_argument_value(19) * 10000)) -- consider changing to every 10s of meters - altMsl_mi24p_meters_displayWorded = string.format(altMsl_mi24p_meters .. " m") - -- ExportScript.Tools.SendData(xxxxx, string.format(altMsl_mi24p_meters)) - -- ExportScript.Tools.SendData(xxxxx, string.format(altMsl_mi24p_meters_displayWorded)) + local altMsl_mi24p_feet = string.format("%.f", altMsl_mi24p_meters * 3.281) -- Convert to feet - altMsl_mi24p_feet = string.format("%.f", altMsl_mi24p_meters * 3.281) - altMsl_mi24p_feet_displayWorded = string.format(altMsl_mi24p_feet .. " ft") - -- ExportScript.Tools.SendData(xxxxx, string.format(altMsl_mi24p_feet_displayWorded)) - - altMsl_mi24p_km = string.format("%.2f", altMsl_mi24p_meters / 1000) - altMsl_mi24p_km_displayWorded = string.format(altMsl_mi24p_km .. " km") - -- ExportScript.Tools.SendData(xxxxx, string.format(altMsl_mi24p_km_displayWorded)) - - ExportScript.Tools.SendData(44225, string.format("Alt (MSL)\n" .. - altMsl_mi24p_meters_displayWorded .. "\n" .. - altMsl_mi24p_feet_displayWorded .. "\n" .. - altMsl_mi24p_km_displayWorded)) + local altMsl_mi24p_km = string.format("%.2f", altMsl_mi24p_meters / 1000) -- Convert to km + + -- Combined + ExportScript.Tools.SendData(44226, string.format("Alt (MSL)\n" .. + altMsl_mi24p_meters .. " m" .. "\n" .. + altMsl_mi24p_feet .. " ft" .. "\n" .. + altMsl_mi24p_km .. " km")) ---------------------------------- @@ -1223,31 +1207,18 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) altAgl_mi24p_meters = (1360.5 * (altAgl_mi24p_meters)) - 508.8 end - local altAgl_mi24p_meters_display = string.format("%.f",altAgl_mi24p_meters) - local altAgl_mi24p_meters_displayWorded = string.format(altAgl_mi24p_meters_display .. " m") + local altAgl_mi24p_meters_display = string.format("%.f",altAgl_mi24p_meters) -- Meters - -- ExportScript.Tools.SendData(xxxxx, string.format(altAgl_mi24p_meters_displayWorded)) + local altAgl_mi24p_feet = string.format("%.f", altAgl_mi24p_meters * 3.281) -- Feet - -- Feet - local altAgl_mi24p_feet = altAgl_mi24p_meters * 3.281 - local altAgl_mi24p_feet_display = string.format("%.f",altAgl_mi24p_feet) - local altAgl_mi24p_feet_displayWorded = string.format(altAgl_mi24p_feet_display .. " ft") - -- ExportScript.Tools.SendData(xxxxx, string.format(altAgl_mi24p_feet_displayWorded)) + local altAgl_mi24p_km = string.format("%.2f",altAgl_mi24p_meters / 1000) -- Km - -- Km - local altAgl_mi24p_km = altAgl_mi24p_meters / 1000 - local altAgl_mi24p_km_display = string.format("%.2f",altAgl_mi24p_km) - local altAgl_mi24p_km_displayWorded = string.format(altAgl_mi24p_km_display .. " km") - -- ExportScript.Tools.SendData(xxxxx, string.format(altAgl_mi24p_km_displayWorded)) + -- Combined + ExportScript.Tools.SendData(44228, string.format("Alt (AGL)\n" .. + altAgl_mi24p_meters_display .. " m" .. "\n" .. + altAgl_mi24p_feet .. " ft" .. "\n" .. + altAgl_mi24p_km .. " km")) - -- ExportScript.Tools.SendData(44250, string.format(altAgl_mi24p_meters_display)) - -- ExportScript.Tools.SendData(44251, string.format(altAgl_mi24p_meters_displayWorded)) - -- ExportScript.Tools.SendData(44252, string.format("%.3f",mainPanelDevice:get_argument_value(32))) - - ExportScript.Tools.SendData(44226, string.format("Alt (AGL)\n" .. - altAgl_mi24p_meters_displayWorded .. "\n" .. - altAgl_mi24p_feet_displayWorded .. "\n" .. - altAgl_mi24p_km_displayWorded)) ---------------------------- -- Get Hind Airspeed Info -- @@ -1260,7 +1231,7 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) 0.989 = 450 ]] - local airspeed_mi24p_kmph = (mainPanelDevice:get_argument_value(790)) + local airspeed_mi24p_kmph = mainPanelDevice:get_argument_value(790) local airspeed_mi24p_kmph_display = airspeed_mi24p_kmph @@ -1271,30 +1242,41 @@ function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) end -- Really weird stuff happens above about 400. but that shouldnt be a problem, right? -- you could maybe make an equation at 0.8435 with (427.28 * airspeed_mi24p_kmph) + 31.842, maybe - airspeed_mi24p_kmph_display = string.format("%.f",airspeed_mi24p_kmph_display) + airspeed_mi24p_kmph_display = string.format("%.f",airspeed_mi24p_kmph_display) -- kmph - local airspeed_mi24p_kmph_displayWorded = string.format(airspeed_mi24p_kmph_display .. " km/h") - - --ExportScript.Tools.SendData(44228, string.format(airspeed_mi24p_kmph_displayWorded)) - - local airspeed_mi24p_kts_display = string.format("%.f",airspeed_mi24p_kmph_display / 1.852) - local airspeed_mi24p_kts_displayWorded = string.format(airspeed_mi24p_kts_display .. " kts") - --ExportScript.Tools.SendData(44228, string.format(airspeed_mi24p_kts_displayWorded)) + local airspeed_mi24p_kts_display = string.format("%.f",airspeed_mi24p_kmph_display / 1.852) -- kts --No mach for this aircraft - ExportScript.Tools.SendData(44227, string.format("Airspeed\n" .. - airspeed_mi24p_kmph_displayWorded .. "\n" .. - airspeed_mi24p_kts_displayWorded .. "\n" .. - " ")) + -- Combined + ExportScript.Tools.SendData(44230, string.format("Airspeed\n" .. + airspeed_mi24p_kmph_display .. " km/h" .. "\n" .. + airspeed_mi24p_kts_display .. " kts" .. "\n" .. + " ")) -- empty space for formating - --Extras - -- Image change for airspeed - ExportScript.Tools.SendData(44228, string.format("%.f",airspeed_mi24p_kmph_display)) + + --------------- + --mike Extras-- + --------------- + + -- Image change for airspeed overspeed + if mainPanelDevice:get_argument_value(790) > 0.676 then + ExportScript.Tools.SendData(44231, "1") + else + ExportScript.Tools.SendData(44231, "0") + end -- Image change for radar altimeter -- [284] = "%.4f", -- Altimeter Yellow button Brightness - ExportScript.Tools.SendData(44229, string.format("%.2f",mainPanelDevice:get_argument_value(284))) + if mainPanelDevice:get_argument_value(284) > 0.9 then + ExportScript.Tools.SendData(44229, "1") + else + ExportScript.Tools.SendData(44229, "0") + end + + ------------------------- + ----- Hind mike END ----- + ------------------------- end diff --git a/README.md b/README.md index 27b7eca..0387b22 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,20 @@ # English --- + +This is based off of DCS-ExportScripts (https://github.com/s-d-a/DCS-ExportScripts/wiki) + This is an universally insertable export script for DCS. It allows for the simultaneous export of data at virtual cockpit software and I/O hardware. -I am creating support for the newly released Mi-24P. Generic information follows. - -At present the following export formats are supported: -- DAC (DCS Arcaze Connector) by [H-J-P](https://github.com/H-J-P/DAC/) to address the Arcaze USB Controller (http://wiki.simple-solutions.de/en/products/Arcaze/Arcaze-USB) -- Ikarus by [H-J-P](https://github.com/H-J-P/Ikarus), our virtual cockpit software - -Following modules are supported: -- A-10C +Following modules have been modified: - AJS37 -- AV-8B N/A -- Bf-109K-4 - F/A-18C Hornet - F-5E-3 -- F-86F -- FW-190D9 -- Ka-50 -- L-39C/ZA -- Mi-8MT -- MiG-15bis -- MiG-21Bis -- Mirage 2000 -- P-51D 25/30-NA -- SA342L/M/Mistral -- SpitfireLFMkIX/CW -- Su-25T -- TF-51D -- UH-1H -- all Flaming Cliffs aircrafts + J-11A +- F-14B +- F-16C +- JF-17 +- Mi-24P -Compatible with DCS World 2.5.4 and BETA version +Compatible with DCS World 2.7.3.8494 # Wiki --- diff --git a/Scripts/DCS-ExportScript/Config.lua b/Scripts/DCS-ExportScript/Config.lua deleted file mode 100644 index aef2698..0000000 --- a/Scripts/DCS-ExportScript/Config.lua +++ /dev/null @@ -1,43 +0,0 @@ --- 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 = 1625 -- 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.5 -- 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/Scripts/DCS-ExportScript/ExportScript.lua b/Scripts/DCS-ExportScript/ExportScript.lua deleted file mode 100644 index 8db0f89..0000000 --- a/Scripts/DCS-ExportScript/ExportScript.lua +++ /dev/null @@ -1,173 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/A-10A.lua b/Scripts/DCS-ExportScript/ExportsModules/A-10A.lua deleted file mode 100644 index bdb06cb..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/A-10A.lua +++ /dev/null @@ -1,1232 +0,0 @@ --- 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 gleichmssig belegt sind, hat bei Auswahl CurrentStation immer den Wert der linken Station - -- bei ungleichmiger 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) -- zugehrige 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/Scripts/DCS-ExportScript/ExportsModules/A-10C.lua b/Scripts/DCS-ExportScript/ExportsModules/A-10C.lua deleted file mode 100644 index 10d9e1a..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/A-10C.lua +++ /dev/null @@ -1,22000 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/AV8BNA.lua b/Scripts/DCS-ExportScript/ExportsModules/AV8BNA.lua deleted file mode 100644 index e86ebfe..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/AV8BNA.lua +++ /dev/null @@ -1,1435 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Bf-109K-4.lua b/Scripts/DCS-ExportScript/ExportsModules/Bf-109K-4.lua deleted file mode 100644 index 5284bfb..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Bf-109K-4.lua +++ /dev/null @@ -1,334 +0,0 @@ --- Bf-109K-4 Kurfrst - -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/Scripts/DCS-ExportScript/ExportsModules/F-15C.lua b/Scripts/DCS-ExportScript/ExportsModules/F-15C.lua deleted file mode 100644 index 61f52b0..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/F-15C.lua +++ /dev/null @@ -1,1408 +0,0 @@ --- 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 gleichmssig belegt sind, hat bei Auswahl CurrentStation immer den Wert der linken Station - -- bei ungleichmiger 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) -- zugehrige 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/Scripts/DCS-ExportScript/ExportsModules/F-86F Sabre.lua b/Scripts/DCS-ExportScript/ExportsModules/F-86F Sabre.lua deleted file mode 100644 index b9531aa..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/F-86F Sabre.lua +++ /dev/null @@ -1,405 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua b/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua deleted file mode 100644 index 436a690..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua +++ /dev/null @@ -1,3109 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/FW-190D9.lua b/Scripts/DCS-ExportScript/ExportsModules/FW-190D9.lua deleted file mode 100644 index 0de8d3d..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/FW-190D9.lua +++ /dev/null @@ -1,301 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/J-11A.lua b/Scripts/DCS-ExportScript/ExportsModules/J-11A.lua deleted file mode 100644 index 4e1c450..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/J-11A.lua +++ /dev/null @@ -1,727 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Ka-50.lua b/Scripts/DCS-ExportScript/ExportsModules/Ka-50.lua deleted file mode 100644 index 833829b..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Ka-50.lua +++ /dev/null @@ -1,1346 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua b/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua deleted file mode 100644 index 47e58e9..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua +++ /dev/null @@ -1,852 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/L-39ZA.lua b/Scripts/DCS-ExportScript/ExportsModules/L-39ZA.lua deleted file mode 100644 index 0196242..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/L-39ZA.lua +++ /dev/null @@ -1,852 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/M-2000C.lua b/Scripts/DCS-ExportScript/ExportsModules/M-2000C.lua deleted file mode 100644 index 7db1e64..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/M-2000C.lua +++ /dev/null @@ -1,1325 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Mi-8MT.lua b/Scripts/DCS-ExportScript/ExportsModules/Mi-8MT.lua deleted file mode 100644 index 1b8f767..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Mi-8MT.lua +++ /dev/null @@ -1,1327 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/MiG-15bis.lua b/Scripts/DCS-ExportScript/ExportsModules/MiG-15bis.lua deleted file mode 100644 index 26cc9a6..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/MiG-15bis.lua +++ /dev/null @@ -1,375 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/MiG-21Bis.lua b/Scripts/DCS-ExportScript/ExportsModules/MiG-21Bis.lua deleted file mode 100644 index 6cdac23..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/MiG-21Bis.lua +++ /dev/null @@ -1,730 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/MiG-29A.lua b/Scripts/DCS-ExportScript/ExportsModules/MiG-29A.lua deleted file mode 100644 index 9d59796..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/MiG-29A.lua +++ /dev/null @@ -1,314 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/MiG-29G.lua b/Scripts/DCS-ExportScript/ExportsModules/MiG-29G.lua deleted file mode 100644 index 3027304..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/MiG-29G.lua +++ /dev/null @@ -1,314 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/MiG-29S.lua b/Scripts/DCS-ExportScript/ExportsModules/MiG-29S.lua deleted file mode 100644 index ed5ebcc..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/MiG-29S.lua +++ /dev/null @@ -1,314 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/P-51D-30-NA.lua b/Scripts/DCS-ExportScript/ExportsModules/P-51D-30-NA.lua deleted file mode 100644 index 9313f66..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/P-51D-30-NA.lua +++ /dev/null @@ -1,331 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/P-51D.lua b/Scripts/DCS-ExportScript/ExportsModules/P-51D.lua deleted file mode 100644 index 3bb3158..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/P-51D.lua +++ /dev/null @@ -1,331 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/SA342L.lua b/Scripts/DCS-ExportScript/ExportsModules/SA342L.lua deleted file mode 100644 index 07990a1..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/SA342L.lua +++ /dev/null @@ -1,726 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/SA342M.lua b/Scripts/DCS-ExportScript/ExportsModules/SA342M.lua deleted file mode 100644 index b1f4045..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/SA342M.lua +++ /dev/null @@ -1,743 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/SA342Mistral.lua b/Scripts/DCS-ExportScript/ExportsModules/SA342Mistral.lua deleted file mode 100644 index 393fc32..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/SA342Mistral.lua +++ /dev/null @@ -1,731 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIX.lua b/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIX.lua deleted file mode 100644 index 905d43e..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIX.lua +++ /dev/null @@ -1,268 +0,0 @@ --- Spitfire LFMk IX - -ExportScript.FoundDCSModule = true -ExportScript.Version.SpitfireLFMkIX = "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/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIXCW.lua b/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIXCW.lua deleted file mode 100644 index 2f8b73c..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/SpitfireLFMkIXCW.lua +++ /dev/null @@ -1,268 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Su-25.lua b/Scripts/DCS-ExportScript/ExportsModules/Su-25.lua deleted file mode 100644 index 891ddf8..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Su-25.lua +++ /dev/null @@ -1,488 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Su-25T.lua b/Scripts/DCS-ExportScript/ExportsModules/Su-25T.lua deleted file mode 100644 index 6fb8b50..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Su-25T.lua +++ /dev/null @@ -1,443 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Su-27.lua b/Scripts/DCS-ExportScript/ExportsModules/Su-27.lua deleted file mode 100644 index 8dce616..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Su-27.lua +++ /dev/null @@ -1,727 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/Su-33.lua b/Scripts/DCS-ExportScript/ExportsModules/Su-33.lua deleted file mode 100644 index 2de1e25..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/Su-33.lua +++ /dev/null @@ -1,720 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/TF-51D.lua b/Scripts/DCS-ExportScript/ExportsModules/TF-51D.lua deleted file mode 100644 index 8354261..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/TF-51D.lua +++ /dev/null @@ -1,310 +0,0 @@ --- 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/Scripts/DCS-ExportScript/ExportsModules/UH-1H.lua b/Scripts/DCS-ExportScript/ExportsModules/UH-1H.lua deleted file mode 100644 index a6644f7..0000000 --- a/Scripts/DCS-ExportScript/ExportsModules/UH-1H.lua +++ /dev/null @@ -1,907 +0,0 @@ --- 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/Scripts/DCS-ExportScript/lib/Maps.lua b/Scripts/DCS-ExportScript/lib/Maps.lua deleted file mode 100644 index 9a60498..0000000 --- a/Scripts/DCS-ExportScript/lib/Maps.lua +++ /dev/null @@ -1,43 +0,0 @@ --- 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/Scripts/DCS-ExportScript/lib/Tools.lua b/Scripts/DCS-ExportScript/lib/Tools.lua deleted file mode 100644 index 16abee1..0000000 --- a/Scripts/DCS-ExportScript/lib/Tools.lua +++ /dev/null @@ -1,992 +0,0 @@ --- 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/Scripts/DCS-ExportScript/lib/genericRadio.lua b/Scripts/DCS-ExportScript/lib/genericRadio.lua deleted file mode 100644 index 3a03361..0000000 --- a/Scripts/DCS-ExportScript/lib/genericRadio.lua +++ /dev/null @@ -1,411 +0,0 @@ --- 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/Scripts/DCS-ExportScript/lib/utf8.lua b/Scripts/DCS-ExportScript/lib/utf8.lua deleted file mode 100644 index 0f7a1e0..0000000 --- a/Scripts/DCS-ExportScript/lib/utf8.lua +++ /dev/null @@ -1,161 +0,0 @@ --- 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 diff --git a/Scripts/Export.lua b/Scripts/Export.lua deleted file mode 100644 index dd803a6..0000000 --- a/Scripts/Export.lua +++ /dev/null @@ -1,3 +0,0 @@ - --- load the DCS ExportScript for DAC and Ikarus -dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\ExportScript.lua]]) diff --git a/docu/Documentation-in-English.pdf b/docu/Documentation-in-English.pdf deleted file mode 100644 index 9ad85a4b74dc1f0ceafb9daad54c1d61a8da194d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268573 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

Ea{B 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
28UDiW*R_`}EjSSOrt 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 LW^eB@NN4sx{{uVN diff --git a/docu/Dokumentation-in-Deutsch.pdf b/docu/Dokumentation-in-Deutsch.pdf deleted file mode 100644 index aec0ab08224e16ebfdf1a9bc01dffb5dcd6cdb62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249363 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 c4WC)8=*4O=@EHQC<9v1X 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­}++?@b8#iIL9s<*QY5{?;*{e4|GxzI*N_ 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 diff --git a/docu/flowchart.jpg b/docu/flowchart.jpg deleted file mode 100644 index 5185566cc16dca57fa900208e377b6036e702b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369658 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 z

F?-qtfO)t*Y(ZP8U`>3zAt0NxL;I5s?MYH~Tb)fBj8Al2EfjrjTl)Sz)p9o$~r z=F>d3BycfzfWlTDh`_-yw#hsNI$%Q+pVlJ9!(t)VWB7##sLLARAXJQAoR`gTH0y}N=w?J-`i_^r&@ z>_tEP{b%^Qz)GI$S~8Jp;>Z_Yu@b{-pSbj^zJI&f+Ed^u%9$eY(i91bCRmdI5Gfh=V6;QJBFtsl{Gt+k2U06Oc=mF8?tGn&nrg+=#CZbVIuD&4cvh8A{Bcd*eIMQXz-C?H(cm@gK@)lCm0tn}4gxU0T@*Upn2crk6!zxHvj zN5s695F8$n7gHei$V5M1%6>mRXupqa@~kPQyeGY@kq}R~Rtd@c%HA_z3r%(S?wPTtjy&3Q(l-s3JT;P1E6?@9#e%?#&n~uGF<8Rq0>)|Nr_RCAjl4H?y<))rJ5w> zJLeqWkX~S=zTJuI@W!TB0kM_u^kcy6PWc$D!)-IqTO9JjiRQN>>?V4e0*|*-yhrnR<UL5UDJ)%8|@EW?JCv zX%r`A(y%+9a1flD?FgzNa!U<_jOc@*ztZP}kPO!{i|li{8_A1sgGG%y z9~=61wRLEtQg|9oB&W;0X-qO()&<(8{Lm^5Nl%Ads6A}{#Q13mL_Lml9s0l)FpIVamjD>uLv-k1mllC( zfjvZXFDD%oUb*uP?->H9XX#=2Ec_dWLS>T2k$T{w32wI9b=t9w!vagx4`M!^N&pjv*TIw9HRd)jYz&v}8O~-&=@^kAHv84P(bHB`@Q)gT4)Yyg) zAA<)A0`M9{Cm{wYs>6p-)RBNnX@z7mP&7&0AV^>gpa^oJK;P}Mj{tuMD`6UdoAhSj z^Ewm%uZtP4S|g|2S}TLS3k{3)0t4fZ*)3s5r>mlt`xsu31+kTzRmc{y#h8LiBD{`H zLqtAH>y%WYrWQY2Qn4K@{AlJvMr=n%b+Dx($Jd5KG9pveT?@Qa96Wz$jN1rnxo4|a zjvlai!PKQJ_?dDgz{P0+l#A7=yCNOB2uqST8nY}siHI9Mz2t16WKT9^1qH{ z-!NER9LV?3N+H}m-juVpiRi%te`C3arrU$4ndlshhQrih{||fb9o5vf?~m%XZ9#}g zFOsb^sX?g%l5GJ5gh+2fL<9r`L_h+@L_r9htu#d;TM;5PN)<#RB*5MvAYF<;5)o;V z2!tgh@lDSgzcU45Qx0lv1To<5_E&j zq!ZIjVOVD{C|o79Fz&#mC{sB$fq<`#dpml!9Es3(dQmz9fB3lY!R+#N=m> z1-IJ%{%}K2yv-xkuwK-K5Ol$in5gbdmmVx>%?|ts&GjbuyBL+wvX!V`B7JzNvoyWZ z*(!cdy12>YlNE6(Mo~{~x<~E_!*|rJajD^AIo?wA5~Xyz)(#L4oFgx&o-dR;$oWj# z)OC_=4D9V{7T`)k0h`8LO^_CZ#x=`;Ylx(iZtBj}5O-sOHhs|ST^w6t*i)~-Ob_6i z2$7tI*EV_UBkSQ`8w<*!k9=*m|KnMQSime&km55n+B;2Y&qzhqAgCw;o|T3@4}HB- zkCtcx;lS?D^jachtztbp2m*;`dZ4d5-z@p|dCZdOl+dNTBXVDT&-`L;n){f<3t^B0 zXlwZ4bDLvfHEIq_HR2e=$7zr}^b)Q+6Zct7)-y&7Af$zm6}sYN`6Y@ zTti>pjw_6t>74M*L6q6mc^;xq?nC_4pcx<5+Ua_!Q7-Ll$X(uen5jP`xhaq9!B?Zx z`A50dkSc4Lzn3D5>&IyjI*>B8WXKvc&XACei9={PhJq$I^1IpoNoz|g)R%gp@=(?C zqL=8iw>2O6Lto_kD#|0?UFP3=ocy6@WpO1bT>2x|?4jR%PLK=iW~<|ym4`TWosPj) zUpE{~wUaf_##9?7YnXaw`;Ou~ZWXGf7l>}X)e1_QV%mcN)H7P5g0~(&d#9lf-%Ute za7^2yClhg~z4&15Ih&Z|{6p;mk!NP3dE`(S(vVEBaM z5p!=N*KXl2Bm)}7cl5;*3puc+9`xYXs;8+e{F6}booEy<>s=_%>7)OW5`eI;p2180 zg;@0eYk{f1NM!x39p?|8%aQ&?S`N9M8~rbVhqmD2|5mfv<)h0F37q5s_a8EQvbJsn z{WZP%-+BD^T%G^-RP2!t#MT$9fR{1Cc?mt=JdK(EI2n42SY=Coiq(Nmk^=43KB=@9 z$lV?BWTP`850RX14R?A7!5OC6CFL6gf{EqhAox#Mhallx2Icnf`a1jxMT+Yk##*6E zwxQsorL|MHn&mLec8SvY{q9Vvsnn3(Q}H{uTpTp-CfNV%{oC=Klq1c1uqK0l@k5M- zYU!Z@e?~?z@~x*0mi+QeA2nOn23wrf#-4p^A~0fL+_d@Xqz!BGKK7$N+T>Wg+VNRBrl?qJjc*npGm13|( z!>MzQq?>PaQ2y>BG=@8WvUlF-1y@+Ykyj_X^=3CFQzT)i+!I@zneLMC&>s7CW2HbL zy97W>>B|!IZ4f{_#pd$g;|zEdd>}%G>oy#D%*<5o(pV0Oj*pcWE^sS+#>$`u$Bwrg#kpDn)$|A!&I74P zfTry++{TyQmZ_gF>+N?(-EQ95rvTNm$u08x`$8+9uh{Wfg%*g&{i12 zDPm8KG@asu223)kdAP|kTywA_7}TaMzxui<8?R4>qg= zzPHjb$%jSE-0Wl{M}s(p(7>i7H-y#OJ{3E8;3ca!m8*K46YOBsuxY_jNzs*fk+K=y zBCp#=`%TD&I@aouh$#0vJTdCo7F0SHC3CHzIG{0&IDi)7@4yYBt7#kc=~!6gW9Y%_ z-V!g2F@uy~;zOTGAqq7MV;H?B2b+5t2m(<=51B!P;e;`QP7MQVQcvn+BFRZicE@e5 zrFcO#U9|=!IoD`f7QlOo>q35q1tA!)R@8RvRj6pwWR4;Z63R;~Jb@d<$k>OyJWzW* zL$(7BJbkY76wKHO@%qIDa-oR;V&nhpt;u!fE9CM1NJ^5I_CO>tQC{K5Li52_cPZNJ z-Z{6H=H0BcbCRiIN2cTq5$Vp}t&qFPft-u)E_>-$ziw>~zY~VD$Y(IKy{}N-L5;4R zt~KuiKNpMBOWxAjv(La^wHCnrunzay$wEC80l)j!g&8Fpoz2QcMs}P^sdHW)DXjyT zPsPn2irL<48Om+ zo1TVn7>s}=QiQnp67y%Tb%}(S;UY$2BvE8))KeCIyK#iJK~l$OG`*rPWE`Wy87xBu{aP59B3i7i+ZxM4DO$sL{IXY9DKU_bIfWn>yZl>wqqbV#7 zU=pJ$&u#@{=>?i&R`?b}%3^o(mhVj1w+pMo02Mr)GW8`11*u5#?$^JD^IT%~ zNg{1h>}9%-P6|R_VqDo3|40+ReM0*b} zBHBGUia75+`W;Hr;%Je>*4src>v|1Y;Y#t2xf;O^qEYI4lH9J<;y0La#c6EH(P`}F z(LWEb8rExevWf2?V%cEFS%!e#)i>e-Baaei&vrB899=Y`0~zDt)pq#4dhT9g8(z*- z0SCHEdvPk*U}%7Cz`V!KSaM*mpMjhhl;pgbW(s)}s|ndLWD&920nUx_#l)iViGWP* zaVQ8_Nb8RXUd&J(ITwBRxcCe7m=R>b-yO$t-{i!A8I9q$Q+7v|U8`fe5Rm@81ex3n zpG!2`DNz&u-^VdbMkKXZtn5AaI9nwtY`b1OKVvg3OF_6#)7#7{~rC?*2b}{`Wcy zlv-%VrXN6*xnV&e>(b{Y(8bJ(;h)^Nj_-s+V76Z@5Cjq^J;F!}AXRFM+KqqLPUe?Y zAIznN{_Fup@;Z~U)wA=LS~evPi=qqOzi+Lf&sXY0)C3f%9rc!rDxa}X+#?JsnOsrX zc6(@wWAQd3RK$b2E2T-C2~XtjgKp9PJQKBxn%7gy$Un*0pAoO8WPFFbO56c$wsK-< z`wo3sgVl~#RTX=z>QfZgx?OQC=sL+n6LjVB0Jv#oj4|zU?S>=Y{Je^cCrTIQIbxIV{sD06Yn|r8EY_&82vmCQu?n?Sp3@%IS$C{Ih1AbX!hHl@}g)%HN~6ryUdX!o=65=91kTZPp{NClvy^?9%dy^CZIvJj*UL zfl}vB3%!;1ZOd!asP$|4ZGFxAAp+INKY@%zO;05msSujApz9U`1%qkZUQg{Y`Obp= z6>^Zs(kOq_UonGE!-)=hSD$Y*n@#vwAIrwak;lS0`*Ox~Sq#`e#sO;RpE z!nh87*yHq!v;xKSovx?Gv@#gSEYNTH2+w^=0Sb^HTY+gGz`6FtbAH4q;?O2?@bG>` zrwHGONEZw9J(a0jot?KQIByp}fBKhLVf9;3K8r*rwG(&FQ(&f=5UiCb!WF6LsCHmc zQfrPO(S4uyI}OVg)eQcUuSs4Ktf`a9Cf|7)ur3>NIVAYAh!XnK^5fZo%tX_)LHx6l zE0ThK6UONsy|P4~D~4{~hA)q_xkSt{!l1>0BQ!ts7$(>1;e}7-9R~|lEDgPxN%?1N zLX()w0#~r1h>9+QH`>scqmzb`TCMn*#&|=|)-;V{KcD4@4L%vmEKIrkaX2I|&G6e6 z_!R3D5>oB{c&l_2_XfV#42z>c zMmIHd_hS4)4;!@Q ztGYYljPpjOxlMNT4*8iEcySZy7CLJ}f#G!{7f=3rnJq5i`x|tJ8ttc}-8t`bH8;hn zDzAYE^LP8~1X$NE=f5^fs#1B@`rU`6FFqGGF?{VGZ59otwCGU&nJ$G^XMRWJ@2?Vc z6x&Bg79ujP@u*x88L0^^(Yg0?PAiHvbia0 z(-*^ZN8vf!v*JUe zWRiFN5l^cEMSMbm^sw%JhgNw*c6t#VHF#{>i9W98qf5=wEKYt>$wP>ip*Ui&Rqu?f9dJYhkb7w$ioNd?g0MoJ#xcKa!je4}&fnn>lyl zKigma`t=_w%(adD1EdvY2r&vETdE=*NRHnMk#`x==HoX2Vf0T)5MYkl037s?mmluC z_B+rg?qFlSSC>FV>4$bRf2k;eP5dp`*OZXcg%pn86#RcXgW4^BTOhMD!}@O?2XWXb zr1#XQMTb5TU_t|6V;R%SEg6Y2#CTAIl6A$L>}b}k?$aBm><%0&u74a*a3G-_+d1aM zA=6)7x2EvFg}QKqW^W-Z^}YH;;Bc^o)Dg`|%=4J=0h)h;NdsC;h6T1`&1iKe1`dsX?> z=V=A1dkyXT8e>VIr{#}^R6DpL0~}vyE9)dDj0NY4=}bFUOlRE0|IFWym1bQlV=O04 z%2C+PMRa_EsYt(x}7OSO(PUvobz%3r-v08#_mx6 zRYrfGbup$I#j>s6<9&zOFmS%f9C^_XS%f#lkJv)seNGGHd9PXQ4w?gm=Rl2p^ z>SX4fWM(2+j!a{>#_&9p2U0NcMbr-3XvC2>0B+%3^6|cWu+*1ueC@@fJ?Q-D&qX^M zyi~M`1d_hL-NvhTL*2>I>D1ZM-_=TQmX;Q7b=8=hK;{j``|{@$qbsi$+hsnJl))! z*$aUZB7qY2=f>;g6&r6qqb5J?*>^3Ku3TH=zuP#f#$P4$x4fW;kO*QFGt=`-snABUH>AZ5y-M3cBiz>Ku!9{tx2@=&tGVm z$vMNM<0~9sK*i|Fnu2qJ0?aGxk#kz0p11Ts$!=A1>(Z;KfV>r$H8)JM&vrdgq4q4> zC~Mx#Hs2~dC6#VyY1nxrCD5`s?}m&G<i2Y6-u&HDgg|8`Y>|DST5cU~%f5zPnHv z;DXOVE{|vraxDh9dcOzMM;Q&p=RF>~gp*Fy6(~D zF|H0fgj_N|sm6QESDE9uAAZp|eE;Gw)(p&zll{trHOH>vMRH_ja+5**3&`~D3#zUN z0E`Qq0MvW7o;^w2*gs7it>;{W0-m;&agPG7md9(E8qMbY4lPJQ6Ct{%xeA}_(kKz{ z9WINnxf{3aHGqP(d&#gGOFZHr$)i0hE^6UaCihJ5RqlXFtMelR7r|t#2vthsr9wB` zRjogg^_(F$qSK{1JX4`jRmK@SED-G%oiUT{`@s9ki-^2@xs=`R3Cd6W8Uh{MDorac zd&%Ux7RhAnB0TbJWjiq%{9z9$e&|s=eR=Wa^nCy?-Pt^XwIEMamNAzTy?(*hV#pmv zb9rCpmi3J5qc6sx>R%16c~lr%T7GmTM+OIZ4TY?cr7(afqB6q2^EjE?W!$TSQ|x~J z_4AE;7sAg?>Cmi2(>oaR*R9s(|1?+Qq!~q&*pmbtwV@cXr{2$A1nO$PJ7)@qoyeBD z{^FdL>^4H-?N&PyfqFJJUQKuC(a&Y|FRx}5si^jZXU#i4BpGEsoK-ynG;iVi!XayAbSiB_s+GAws7(agD>nC0zeg*-wX_w^T&k_6@i=|C;8?wfl zf0o&f-rNpIFc>*ST;Vi@`>jGS|F%f9YlK5spu~@$l%b;)08EU?L7s~WuOE}xd`JHP{fgogLM2_ zLlw zGetwoMBcAI)QfhQqvSEF07W1zx>7(&;9irY;Pm|41pjQ`=*ge#v39Kyd9)d~;ax{M zpFf)^(=P$_uROavlGAagBCCjRTaL5HFqAk$QqX(8v5(}UT_SBHm1-_gWxe%Y*E%Lu z(_JdrmhH8s_AJvS1zU9&zZFka!%gB>v%qGDhLX@##BW;;>;CAV-iDbO{*4OPTwWWD z60 ze4GKLns|d6rRjb=BcBD5!XgM?<`&B3^-$PK3=|&=e?Vb%66=XPB_uLYdgtRmZdhIAE9t>mlrYdk) z61Di@QS=i>kWYvZQjwo_QOR6~=Dqk;3T!P%6P&4Ggs<3S3G%|Yl_S4?*R*cj0G0M}kxz zu@Ap8&3zBd7#w+^>^}#7?_LUfAH^5RzX0;)9~=!@O$P3z+H3-E3k1%P9MuZr=hFEV zzLb@9Bk%)rlaOCoxDb%?{~NOr&X&SZ`8ToP1Z~FjT|g}Re`ezU%*6l3nW(n`w!`hJ zEMf*$3^`roB?sMSyVyem%wqn;n= zW%v|%&5a3kkUY%9-^l37-2N0PI6hZA^bhpHi}6+U89JX;*(+(<(#5jzhu#*_m4j1m zS84q;Z7b2%_?E#Jd0glKZ{;HH`Yd>VRk!Kd?IG^4+bB6d;B9uGZlD7fF}F3#TU+ix z_As?qJ8OpK8WVhB1v{=y0(pG9O?x^Lo?IwBsWzlwt0xxyxVTVN?t*Ly|mO$N`amRx=jd8f!2(8f61mR4?Jh_Bb3{O`sMo=8gTUl*_c-N&yG{GZzZjADQT zuw^wV{66$X8djC8`wzk#ULfx`r3a_Q3#tf#7jC2$VfsG2bGW|)Jx;o~zxbH6s_FK2_H8(Th%aAyr(p~r)1i}PD z9DVuQ7G0+`B70BM8E`a+VLpfd^Cf#*R29(hheh>;Y$!)hjW^)rTR}_XUCL^*8 z%@*eV+UWdh45)%>W!Jv6^ziszg$(&_#}jffXPH-Cx4n6;ejOE}t*FHd+nr5io=Zc@_FG~qc76U~qijz8zDL;Y;p>V4_> zAUUax1()-_GN@WH??Pj|KnM{EZ6fn8n@MR^o1HxRXK9b_+^qC5t4!=O63U>n)bU|K z-)+^8*(&-Qhgxk`&n!RvJ$Co@^XWeyJHD#x(oyi+|LRx#+idxbqQ947?ESXo^wigb zUx=Hk&!#rY-t>-H0sPaadwj%S<{!5cMCot;wtw?~i~avS9O)(uI=Ie#?7-g*7NK7- z3q%o4lLT~e?bqyo1V*~~pHK70|8?)-#~?2OgNxY?;-&>*(Hf{xifrOWRuTUwIaB35 zMt>p5gBtZa6=2Tvny#=02lMR146B!ieM4D8-OJ|zl=_!OJpL~z^&eom|0V2q44NyF z!nY(XRe(;DB=0e0O$KuC3h)B`jO_p~dN*J*2tQ^9@@HftSQT36Iwz? z<2vB``114HoCbnxl?bQVxMZsBAP|81-L z8nKfXFRjC3xgt#1Snu>Cm8HO0BYRsNc3o zhg`0C4*%RgaC|u8sOC)v-|)arA-n^TWsiK9>B)P={|OT`J(AF@-NMrG0H|JK0$NHJ zpyVd7$1)f($HQ0*{-#}uHF|e1V|j|5SahOkZq=cYzJk&W_^`S+@XbrS;cW zFEsLgM+SzDi!zsJx6BLaoA4xe_~OF!ZYF?7^jh&Any9lzI^MdyDFQA&CEaX^*Dl=*Te>+q$&#F^>FBDm~2bvPXh=X-Gws zl_ky0;ScxPpA@wbTZ8xgJag4A?$7b+h2BvIzOXLKf9U`t7}=7txs^Z4 zR~QWSb5&ulFJ{sOfgSj?Y1YD_ScazuBkHDPYfKN(cTf4t&=5YHx~<*qgZ2?I@*q5p z$g)C1%Ak+wu^AjrCog)lgh$%0;n1T^H<++(u2_5MzDQz@IXY=dj6&CeZn`$CC|+Y9 z2q>ae<^Hx4{`+34P}5$MEZ+8bqkOu2=+jeDhVmLE|!%kORV+pBKe8cuZ?^Vj>`{?H=2h`)Tv^`VSnT}+ z6R(lKHSyvn{0B^%Leck#>um3;;y*7SO@K8wUC-BH!P@Xil%04V(2Q=AlvE=Di1$s+o-LiJe@o@-uaYw;|I$Yi;Q? zDf-p!Yd0f9ihCNWXSnJ0%3{dvlzm+EQ_}QuouqvEfG=Be3lU?x?)Xp3RPJx^qg~-SWYk0;%)$ zmRef=v18JHsHW8$IxX;@OjOwhXCVZ@yK`|+APA6f%TFqIzUng!6y z-iM!J)qEKXoD!?VsxxGH2phIJndII}M{J#%9~1vvw*89UDw)q_QGR0WBHWXVn{F1O z3k$x+&1ZdLjR;>nhqNucO0r5-AM85vWyMFu3+d(5`0s&?Q2!GqVmU@17t!F7e;lS8ntsf&&xGqtT zxCSh%cHb9lm$XQ0n{B5OOcot@g-^ToxcpjoHR4|Fg_~RE%RBt7_)@&vOoLj=a?qQtBn6%E_NL{N;LF$8a-2?F}os$1|>5TTjVh zclzTp`$*NE_`qP>TA6oPTlqqu_U|Psn$R}={Du2eb1QH)Y0`5nwF|*UesXFZE;~`7 zTWU|#c!-ade4-@X8gSJ%-_^0mK8w*1XkTF)=A2i*uuL_i_>hysuvTaSaW`Kdlh8Z8 z-rBpD>&Je-whGvty7w;w=%t4TYxq`WkUo2U-JEIPSU=e0S-9A@SoC60IhLL`w%d8w zDW&K9Fp#mEJghUGv6p)e3NRVZQwQR*rd@7T2^V|?#7)F;0~){TpZIfEru?V4C#@PC zY)T70eNr8g^<`IfP-T#WHCK z73a3Wmg%dP{g8%{pV}I%YQivRpPNOtYM8{KLR*1Ib$gV1gv3FNoaufW#&bO{`SL)s z6L}>r;dpJ8yKg!&#^$FOMa^4ti)>O{l~|jN~ZXouxV5 z$XciE7f@etMJ##%`JkkwRrJ0&*bUPAu|SDyU)-lq;X&a$+Q?&?mFM%CrP&1PvJBQ_ zNM(R)_c+k#*i2eS))(s?G<9)W$cZwY4zarG&nNyAdUI|47a{&xDZNLVHn=`{1!#8D ziF+An=Dc$8?2AMsQpCBQ%uu0;w(G}oYJZ1fKqI0dbk`^L`!TD#udzt_z1180wu-$t zt#L3_=g@ZkL#{gnzIU7pT#({N95*!vK_*3nNRJ}aPNjP(*7q$2W4&2|?FEK+L-#^H z^e5}Hs05%mO^7$$A1DtS#3{X-Xo(m@rt1j>QTzU6$mUC&)?91(7|w}ShU*rgcI1C- zxY{<-$y!rMO%N3!ygq-}tyU@NEJ0sXtBvV}mWyPfR2W8U3WvD&82f=FDk5J=Ac3DNX!nUZKhee2N9FTXnK!)IN1^W?&@c}@1 zR6j3-_>=oPOlX_wL44w*@U!~Vy9b}K{Arh(TW1a zM%K%x(eGhVY}7QI+M6~7TfJWBTY;gP4@54C|700%0w3RS-1xTTmiLR~NrR{q zOX!k9O_JyAZLRl|3{XCSE!HEcJOdjjleOSd!=7qIiPOdi30#{;FTLEl0^2QRqy^GA zQNv*+=_}R^?@bUp2JhG$IUXrQ$hkBnZ*sDbYe1mCaSu)zd)HPm9x#^WFfnSqpPZ<) z5}J9oruHzktV=qFW2_nq_br!+XC%tI75IE5?dQpJ_ppyT=kA9r=q!>j;HkO%;h#0r;3keai9`D3-q#ThH&tl7m-6HM!+*g!Ab8H<$ zgqB|LPig(~-mT4h`fjkB=M+y0=?5P(pf4}^vJ771<@vy_7$yLHY@I(|yr4}Du7s|; z_v^{NlB9Xb4KJN9U>vFyl64%5AQIZQm zXl=B443}2@VJ)J{kUtpCUuUf+&a=_GE=GS;cAQBA<`dTPb7l^49n%X#trwn@6b~T- z)EpPSSiH}u58Qq7&OuOSn~hs+{U2E9|0<*WtN*&J^lbtlY$w{(1dxzTkQdOrOBv%F z%A=ScR~6W(rG221XUNXww-}!Mw#94LZunCO0jzTo3HXJNzCe`@OI!Z*m?Dl3MME0v zaY%3c*vXT;`=0@%5RpugG4W-<33+gurhX_PFDJ{lp=LM|CN{eN$oQ$8&K0M|m(K{T zx%KPz$7S2=GCuAt+x`am5y&0w!7R5mE9CCRL{W#J2Z`R2Et*;_ehSm=|w*F)wuj*{IXBu1cTS_a?mjqPC$y;-h#c5=z9$ zS|llpc_J%-{`5kSRiv+Npqg$`l?4ER<80Vf*>`gKS;0xG;1TqAUP&g&2hpFp9@R{u69Aw7&h(lw3p z8>71)Xu{8is@8o*4H%Yvdc<7c&iWYM)`WVku0j6{f8Beydj+=kk~$GJr0qCQzhqlK z_@xrrts`es%GB=TxSCL;JvVJH^<9Z~vuAw)?X(w2-FAA_;?A%o_Px&11epxZwQ%b( zr?3(|cu?Y>tknaU{s$k++#enrKdQ_q+F%0S-AV(;`#(Ucu1xLYD?y^uvp2DBYzszI z((2SsERv<462*XvLqwNo7gS$Oiqg*OCBu`dpZzYp`3)GadrWwFo$C^+C~8{QF%w-u zZ^aovf}A_h$!UB#Qt)%F`Z8fkB%&)Vs5N(^?ty*=9{+?|f)4m?%BE-{Gx9<%*;}c* z_7#H~lT$_IbOl*wYSws_U)7j*+i$C!?r^VJuJD1~AA$Z9hsvtN*?Xx%m;2N0c)!!- zbgNZoUc>mXOwEMj^L6!$pRn%3`=OUMkE!ZIqr3;Np14YFRFalS)EWq82ooUrPd~i58v}PPF z&LVQu@c{9i3_dQ224^K25j#CS5!a)ChMQtG7+4 z$h|N+Hxu&tm2JaSvrD+I==&jKy{YU|%4%9q)gG9L@1&Gpxm*WjggCOkUxNv!t}k4z%eb zX*wIRE0NYAc;Bf@``y!S`y9CFL%XiP88P(}Wt_+ZF4`H@`OKqc?dOPn@#1$tK)v@8 zPUCF^N(}OG8E86Ar|b(by7r3ByKd1G2Ru0{L|v*0XZve|wfI9bb2t2!*T6n1QNNS<#_ZK7vGkwME z&T2oV9K(m8phFgMV7PlF_;2L*u~AgYK4_lF$%h_-zIB8;1vcO4^#B&Xoaw+y$cwab zKW1)lef$I;QI~bn&p9|JyfR!7!xJDEcfT-Bs?vhfP1U-q@*piZGw%3;L?_p z@jtge{?5@gZlgO+l(g^Tyo;Fc80~p%*B`QP{RG&s?iH0`oO9t3_a*THOTE7@2U*Y&l%(8KO0_J$~;49 zOlR0A&z>EiNe=Kdy(**c_@C3sV;<2u*cmRDV$?NbF2yZ0Xc_5R(GWUgF1ahc&{{f{ z)>@z<=!`MJ35qO+iIq5~nK((>r>XwgPcW5~jPLNCW3XJ44VyH5RV+jkN(2Vgo;sFT z*%vuK$Wk+NEOeH8oAr3c_FUE7b8o;^z#YW5oB)=bD|`V3mH~e^J({&lYs^T+8FCK~ zHmd~SMS^QRwcvX`IU9v!vZI`DAkOytrq1UYTc(yB(Gdp6&hQ6k~F- zWx~4ko|i;BTi5}u(aI+8@iy#=FLN%5FOg#=gpDQyXM5|!2nr?9Y_kPM6U-iX7ox=F zv{X?$>>a2l9)23ENEbZv`lI;a)n~4WE+yH_dEa|byPhc3XU>j#LCu@gYb)T8Cg&wn zm~CL6U)rXYZe^DQZjW#BTfW~N|51TD&!q@d5Tqy{@&KQTa|b`B4w^6Ics+hC?hp9a zV>mVZXi4k0Eeqi}@SZ74*jJ?&cz&kn*WUM?T5`OD{raD6%>N(zSHpipvd)1i z#-wL(MXMQJ*?R`Y1Bp^iXx1iOJ~KR6HQm)6xW0$VFZ?mBzFRXAu?u^Qt)Fx))lsU} ze(QuY<#w+i6zagfMk&TbS={=pCuBcwd}*KIq`ly?9d+h{4Ik9Z3$ayIC#8;@PR5r_ zK}Uny+>3}*%IL|Ky`5AuHZ09l6)HP>Q-7b0L(3REE+S3d*@mKXGJshTCSETT8zt+3 zb732Ew4tcVO9c`mIIT;ja6HhT9$a2(5@MmLXHSX`O*XLAJ?oo1C5(fPy6ZIu!)yr- zY~78kon9NKbuqsrd-UzG;6FtAp@h#HhJGTnM!%Aj8es}6Gka9K)!lo?&oX2l>JV<% zeRRdXOgJRj;mh!15e2sazr36mUOAPdEXk+G%_b<+U~eZB65=)=O8xvZheLVs3i`^Hpl z7vuebH$W)wv0m>@uLDEn*l4!#^i?PXz5|2ku>Ad!dt^Zdvv&uAx(g6C^(cw@KIS7$ zk*qK6hD~Plia`AC1=E8=tF@kjEiq3Vuqwb$n3zhe2B;Wf8tyQ3gGJz^^6uj=T?b*$ zUI^*QmUv$B&I83J*s_b-(?}ixQAUWQ1D+txv1KpEni#MJU+a&(U&RSQNsP^7)*kh7 z_n}}$h6Gq2I+TE5^>(jqP)cMNdTr7YSljQ|t?@G{&oZ35= z(=5T3d=Q|OTRGu%Zb9Tk#FRKDkc!O_rEoN{!<9PHYLyR5y+4)oq)8Oor^^dJd^%L( zCE(aFWOdb!X5Zf4EIDogbIvz%O+98b`?|k%pzwsMbxuu@RBh*Y<=01ARxwsypPSNe zmos=zK0Z>Vv5`0BwFi-x@LO=87zhM46JsKa+HY0zM~E;jz8LpBe<&Jj!!kYv{aHTe zwG)``cy6<3s?F*3Wc8+nESsn^bspgZE;+|oq&6MZCmB+Rv|N)6G2=+{%wFfZyfUQL*q0H6?v?bmBF#GDJ8z;K_p76!{D6Zs?RZsb!%Yno_ zR?pvGR%&theQQGKJGkq6<-H;#}ubs7W z)LJwZh^Fi0C0Ou^l4&Q3)kSYp&tC0dln&;|A1+(7q+gw{&W>So-sQbW4aR>G-orxZ zFixLs3lmll$@HGLd;IDAC%eMLZrB!do^)Glnzqrf()kEdS##a>_sVj#8>SfKcjj z$R`qHy+m1%U%=B5Ojz_6O>2z@q;;AFs25G- zFz5x=iA(F_7Pm}(Qq`I$J(?V~_q3)7oHnMM_sk1@;x{*RK&-^ehFI6)ev(JdL)VEG znYLrE({ip~TJjpZ{^H}8@S_2aQs1^{_3$%Cd1`?L$Q`-80FdK2yu;^9XDuW9w0*>L z*E1mp8-YFn^&CMfu#sZo7-2_%9%;GInUgF$XnxI+aMBz(o3GcqsG)bbKK*H9!iD=A1j;~ zAD^%mcz-NwG-ue&UN?8~Znfp^Ysr?|4rum+!ZVrHn@ZVhVmyu73SFn6MQ}>k6Kti* zcn}=IE)A~(nHH=KL-WEySFG`+!j;ct<%S%T(Z`P$D)wBs{*o$QBYF<8c5Ks`|A*;z zXsY5QGTlT5Yrw3q#@&B{J<9@)tKJOhWs<>Rw?HrDetXyQCQG4-=fB1dxaI9kc=w)4 zns?uw*d5NweT^Rtvf({2u_OnW8uOm=6}~Us{ieTQ{Fw%EHDpn&9OPYrJ2IR zMutjZ>OGzfnHV!*LXb}z2Y8yMmt1FY0KJ*gI)+SWLJ606`;>LS6KcP08E-P)`1PXv zFU|>W@#K>`Xk?fPnj;kW&WbD^Up%4i+!;2wa3aUsHr_=%nY8$nc_pd62&+4Hl%a}8 zVun`37`;2i_jJj9^5-h0N0gj5B&&0XF0Q4O&aHkBV#=lSxqZB9CvjPQ`uVjht&AH* zMp*~ifyB=aUTm<5!KTUrUv-dj2`0H9^Pbnclu`z{&|f}{E9Awd()wrP*@ab$1Cof9}5Z|?v{IIV(uW8p5T%`e^{up&_@8OPc+$^XIrS5 z->(}QGH}rA-8qYJ?~;~q8O5mKsCJdOv(KAi4~Kb2ODr4h&YM2{rCT>+!(h{>2490% zq%$d_FKPSsTeQIiSA&Q$T&)-P)Thp2aF!S9!Ck)G%k#6>xWmhYS?g*y`7;YR%+3L- z^KTuSJC8s3a~QM7OF_izRp5)fw-qT?I!-FiMgD~3RMivNKex2!NTeR@deCkcw82PGZ6!*tUC8b8;OyXPOc{TwbnoLTN!lGf~YA&Yus zF$#RNc_S#BecKX55juaQSFXvBfz@?9+~i5e&iMtHAp#t3zo?eYJRkJulZPaYouP}e zQDF%(4@1W{$e)<$73g@KrX4l`z71a@wB9qS<(hNUYBV@jb+Y$8qK=}!d;W0?kdIFM zPj%~`1ygWl)PN3iHhhY};xQ27i2D z-@@yunx(X|K$-T6@Bq?iMfciJ?L(pPFsZzGh9IWPM)%UxkT3oKoMpE>x=znnLVeq^ zYZt$BYOCpy0E4kvYG@+7x+sm3R8yhjIv63i@S+9|!}T?*4V;o`&OTQ6$nU~%gr-qc zQ1oxzVyIB%Pepe;xM~})fj`SI1jZ}*gKZxTh2dqZ=QmCa^d25Hhr#ZBd}s0)E17F? zq|Ns}PDeDh)u(!osnAGS91w`Pcg|ErM8GlV!X<}?rPPhCHn$5tnO9byIer>$x5zNm zceQfOtA0c%OL8mnKan3ZI5$*cl{)_v^jsrKZTDWy@;<60$uq=LJ^6or+p-!C;D;T2 zd2+%Ow}0djB**~7w9sUd6I_sg2x|=e7IEN046MzX9!HxzNl03xo74YvE-?DbuXpy0TDj+cWx?+>M^ zEDq6y@U6XUClkd29i!P)t|eo+9uW&m@}Ra3Vq!N|LEpj8RCAci448R9Hbo%uqxA8w zc$p7)a}D^OkFFUotT~%}jIj{}Ttc$LLKEb~sT0WLtL=1p8vkw2kpknM@I5kxxn1ID zp*3v1=n^~PsrUS*nqHtYY1tRkY*Lc`XwR$?{j#zLB4F*IxhK)@-h{8Q{ez;#EAJkX zgv?2LzP6&XWMQkT51HMEo_2l6h$pffrV@<|xMJbodsFDKDZ0yT+`b^A?yND=;w)Q- z8Z%rSPN$?w?CXxYPM^W7y}Ru!S)lP&lkD>>d3Xa;ZW2s?AO5qfaX>1!@N0H~2r z(rb|8)pQrG=rZS5$b*hbo042h-1(f{MZ+l%uK~k$E{wG}=krvsA|!aHw12_6IcuUH zlYy?wyY4LolpyKvHU2N=-aH)2J&qf$Q<8N;$dWmQBwLX!lQ}I?gd+PgNr(vv8H||| znXzj_S&wYl_a)oJ3{%<4zJ!^P%9eX7(;YK&p5J+{_qyKedavhs{(Am+|H5#&x8ME! zeV5O&qNKv!S6lb{9AEt02h+XF;Ay6HZzOD`wv+>niVi5eHy=^6R#1l1M(WXBCaT-| z9=*g-E*+k@)uaMVr1`M`xvrOaSh zhI6bt&l?MMybrm@+mHp7isFFkbas zpUd-1&dk6fGx^T5a_27Z^!I(5NUoVnsF9VA5x!Ikbqv1r<>Mu#6PaZ6?9-_@l+tz@!0R>M`#B8 zF76@h#Ucd}wESJb81Gy)?i=S9)zRe%{#+Y7$!2kI*K3fKHmB@&l*hkirOD%nJzH9X zoA2g6`ZY%`@qQXOexIWH1v8NnL`D%Ba>7hccGnR`FpY*>seGn)>Du7!0R13YIQ(_K z#J5dE3P5qFy#z)#WkApmcpPdt-K=fORUJPPL~b_7y7}fkF1JJddEVqMfIr_LbpVj4 zAlRt7wSNxFoWTYcyK(TJzs#fC!`%a+~uXj4l4+V*@cpMzN-PBq=ftk~9%(^+L zajJj2K?0zTwXvUmBvZT7M2z&lQbc|Kb~{9m$V}kNF6CTh-3y^bWXfw&561SwX?-2X z%Ajj^J=EUS;!SAZ`|DSpWlgX2_zd9&1jQKYpT>?8XYBQm=funt;8?vyx=qp#%@WeN ze8>Lpng+ro$2C9u(#PHraX-uxU*9;kct^Mi*JEVkN47}69p-n#*Kz6sIhA{wS4Y^v zHRnD3xiO2r$S#r(e{ESq&MKwl+R(NJE`Ycji6+13#O(LWT8gWfe~XOg>X-Xv<&!s0 zBWImo9%%zxlP88nw42G72>vrB)0l z9+M<39uvLLkoEd5s*)TphT>(V)(yFw`v)go4pTNrZMub;$Q4qhqVx>O9=|abZ zey-(}@g}*y=Ja{%12sR|9Y=7Fm}t_1*+3z!>(Aahre_vq?sPp?^kvX@UFV*meQB+h zW~NFph9sHQ`h7mno9(G`lOhwttt}@D`=&3LlPgjOYg-k&NS4n&ht_XRb@)34Y69K- zAye8X+^L9aJyPv(jP8)yVEIj`#|{{6r20KutZ#F|8z>{==yah>&!zMm!686!$)c$= zvG6Q_W~YDoF3Xhy?Zr~Vbu`$~jxJdA;eyJjO=_HAig z;&L@}&~_Qd(SRbkYqu{?T9x=w4v5(Z;bidQ5@b-y``~59cT2IZcJkNNx zuN*U7)KP$K{+^ylcxYrJToH_rFxO;Oqd|z#C5ZJc{WgtKyls?lCpG9f!#lp)mVP5d zlz<>Nto_m`Or$v$WPHY%YC7%<#?+C;M~8iFPQJ$F{>@m)Iin~eG)cetJJl*-U>PXq zA5@Fsf1q9|FL1b4_My;D?m^EDRqK7ZkllW+rr30HhxaoK1b|EgC<^k z4|{oXULG!7j3UaT1%OxFcpKb+oy18^m(n$y3viWsD2$$*mSWs@6crRdT5n_ zNUphUYxBs@)iP#nZF6g9`y-k82_fG{%0W+A+NN)D{a-_#)5&;AXfn>9tu{gyqQ1Id z+0%$yl;WjlFLE{Cv5njo{v-wUy-KmjITv49Kz(N6H05LBIYfvCrcVE+d80G zD4l`JJhO-^MGYw5XB>O>(OTnphCQOvvn+VeVd>*jbke)87mSQ9z%!4FmT#EWky0EJ zu0@w9VLol;OB zBCw{aqoM2OS4MyKjuV@>Va#C(|A%Hw8wtNI!zT_&E@wF0}zcJH2C4iCj^x_(nhL>9iz>Kp=K4b}KO)q~vRlX;fPLe~% zf7BOOdJBbpjkY|P9=xz~>G;6ioT~A+brFQHj8C}R4mu)l7bkpv?aj5LcIbYu zY|#dLu8|B*5!=IaJ!p4qxX$>9@nW$4AvD%f;^}9YY%Yb#l(KG?>Cz5e9_u)v_?Y}H zXe}2)Tk!4!WZ51rlHJlL#0_U6r?-1dPf*4Q8n_w@a!=22x6CO@e21?}R{8^%>Q~~q zg|NOQ z5Vs{&|NwC-Ep!+2vJG^@rf4^F4hrM^e!B}{t2dThSwQ{7j7y#3=0D<{3XqF{< z&*O-}qh9Zba+g)ZI#=ge_aud&=^$A7Gnu)704Ju0_Hxw`Jr^LJ9}b0EOzH@f_mu%_ z9`lzgSpaZ!~p+Lng4L;;B(XWHzg0gzW+nfygRhxAd@18y2j3qF|zEX94P0h z{HWPm`Zvqsc`5fCw?VJx&L|s^+&a=_-eXMO)3KmHs~@gU#2d!dB)z-a(IS#EaN=&i z+OyF-B{D(eWTxa|t1lV$(jUNulM1^JcqrS~9wT#lBc)IDAL-X^z41fdIDfqCx`UJ? zd;E}%M0|~Hy1ai|p{nt3U#=9LFC1M(0C2heUB~$EFpcDH%Z2HDP9Lm(Yo;cNAn&$9 zc6g7nVSX(c{il7Bt4h@U{ehRzR3*7$rC+1pu4R5^;wMoG#?pYRT3}87CGMwDG@~8a zG}#vcV&I8xF_)TKmDL@HKRd7-II`#XdAmSS z@c!*eW7-r6rbs}0a@}+UptSqWlj3k#Z^VWaz@a!<8?w5z24PHM`KPIm;$DBVG^td@ zQ7Nm>#svFkpK%{2rx<>phU1k<1&&h2fWtAdWlR=?sH|V|&r7^|TipV~GMUGbGy1xf z6m6>4cbMhpP~a+HZc6R3h`VhjyuX$^?wz=mowH~a^{Wp79}8MP4Jk8&fSkE2yu7Ur z>vSW5e{)*0>0uZQZ9G<# z^L9eJEM88RP{#yE;3TTVkhe4Pcn;UeZ^>fa;scg1>z1rsB&NR0X`X&{WD}8quCHpEe;)Z{ zmz48L@SEG(8D|>1ga0&AoE(FrnKiLF-Z?y()>u<$RIB?A;DG07{p@D(4Vi%l2Uz4M4S)Kg}8aShK(v=5=u0w;lOCj|k(KT0~D2D7W_OZ2YVeM%?F{ zunG4WuDOU_1CK)=DhZ$?O`BI4*Uwcx-_QjOlQ+HrA)TSHi-+0bnMabMyd~s2WSX`- zR;nvg%fGJJe|YWfef^w<`flA?m3?P+OYZF@>QbOUpbZQhOZU@X^A>JvGAov5Z(I zud_wo4SlNORVMbj4NP|1EQhTPlE|VkEiBY&}|~U`!qoLhr+g z(f9|x;4~W!^|G6+Wfq477fsdaP>D{g(S}GC`<}^(!4SNR1|q{}e`~hdAP#FZc>M9u z@{QUlZ_U$})!vVjA|A1o%pOg!k{9*6+4pvt_Kepgm!{K^PkmnbV9bw~K3~#5{yX5< z0ldCTNX-Q&MQh|iQo&VEZ|kC&9DjTv*ed6_7kIUyxq`i>0uW+tgNc#m_w$eN3b}UC z?EJ;JUo?!kpQ$pKZ4qGyQ@K8J5iGw!lWE&X2mne*C=GsY$*s0zB>VI$9^h*2=9_c$ zF@r!k4rBvI$lDi*)3Z2m6#KNEEq+Et(lR@n8DdlHn{@5?$J38*hP?f;Kx3k>OTnDV@~2%oLX|Mj%@6h4kI1 zvy_TWj|^pN$C8ARE(7Y(jzVj9eyY^IyH@NmmB7-7@*l^va0o-W=+9&h*k01Ji43r@ z`E{v-m&$}QR`Z^6;6G4=C$k3D5bOaiY`2jJlztdvAs(}56PYlXFHt-mcAjmJ8|}@k zNswRhyEkKD&P&%S>}Nzd$@|@u+PhJGKw}{CyjfeS4nO0uI7B^c(9S5b(d=b&9TZNHyk5kXlp4ES0iwMzO?LvTWgS_ zg}lC@M#?ax<0~|KjV|PLHt$0I{YL!;G{SkhqAL88x%b_bD=#0rrT_VDVLfe~zI|>L zT_3)d&8Bh^A;5tM9hO-|3#0z*QW@nMSI*5jEoU`;aUA)%(BR=dt>Jz~rvFzaUKoS- zKM{j{Ybwc~=Sz(NAiL6jaLxDeVYLk)ykzG;s9~G*$*Yl7TE|D;IgC|@=Ax;2il-iA zH2AwTcb2CZo_}Apq1NQu>1*H6ob`ELT|RV?!f3EF0|vlA`mise2*}$Wa6KzGbyW8w zjzTqnE(pEW(j1{n>Ntek%c%(e*5L%g{oDFn0dQOi{7yK1+ZksLDuR7{k*^>Ya}8x` zpjDcOQRb5yfoqySE0R`& zzI+peCP_x**TB=-B1a)7SVzW}XsMY^%^HJU8cKTs>PP5Che>}!rTJbEHz%>z-rn*t zCVAO*KnFg0{9!4SOruLB(&)P$lvyLavc5dyB4vGWs?V9V#`k2Y1J>bkJ`$h%Ya>!n zD_t^j8G6$fj6nHy_PBkSU1ewSQ6sz93R_)*F9RT@YPd3voGK`t(zh@z$QN3Gu$N&3 zORzKlwd21#6iwA;b&~M`Mb7Rvx3WrdgVbn2acAd6ezo{Cw`ZP<7Qb*eE3mzC_H5A7 zRtsMUym|r`*yiggY_&!7+S~0jT+udOF2#T0?|Z)X?EDzzvA{4b5!d(YK)OW4VLbHZ z21`CQ#UQD|e@j%>Kvs5!lmBvgi=R~WHSh3Pm5vXI{s|qs&*jKB&Z? z%Qaxf+C}tz%QY@sUJ%mHPw6@x(|^7WCi-~^q&@i7s3Yj-aTvC#EG46B3mUS|@VlWD z&fh1yvAoQXGA9MUY62+cV?1a0?<0v^*)N>_W?os-F!|KKJLrA9r&*ZzwzQs$I#mRv z?DkULlZ{Y!Ju2JZg^)>j`vMneg)kpmYHyHoTXnftaCcI6{(9Fd{!>=kURc=>`n4=a z8sutip>W~Z0B_I1(iH_VVbCQ*r*LmFx40&KIU0|z^`ovh`%1IPVm^%;OU|2af|3q> zEZs^U*@RKj)xYE9ZJp5M*TG6y(h%-gi2`~NwJMhP#Ry+vSd|BDDprt!ANDOhC#gHW ziSEK=EY|)YDGSL@9T*`UPQSd%M#}l!rEz}C>d606+31JGPYSFo%Y9-q>&hR|*)}7t z=tCu4*_^+C_U$U$jz4HE3lKgzwT!Kc#J5^tsdKJe17f)LAshpMQ2UP!`^W!Dt>FKj zuNY@Ehgi?>vPohcc9f%dGdS9vFX_-{;kk+(TA^zL{B9Dg(7ULz;8y zv7|z4yRxKyc7(U4*2PKe%xH?y4XnCd?3I_Faz=v_eu0-ns)jEt$Hc%#i7}v{o9xLK zc+FLHDy{gHKoo>7j`+Bb-epdPI=ZfB0z|r z{0@@LJ&W*g4^bRwUDeDc(FrDO8Q>tX2R7%V17lN^4J&}KC8lTg{-?X%>o)0eesLM* zW5*p=m)SE4Z&gyM|JaMJl@qpj@jwe1eUQlb2XnCN&lRG8>F!$|vb+bVot5)2fzEjV zCj_%B(F%B*iIdx&a&-{$L4izU${87$Ax%YjM42DowA%eUxXIx`AR*$a%=M%@vRlcbf1Wn+ZANp zDId8BH8J@q@;Si_#!@Qzd5@y6jU4skA=Ik0rp>-!RmE#%p0!Sfww>OjzRxEsy!<_D zlcs^$xz@4$%JF@Zp?4ZrjHr24k>yW#X)h>}L~K5MjNCgcP8fGY))Lnc+lFVhuMkEf zWy$}rb!e_&W&vj*M1fzIr&q9d$;zcYukQV7Lq$HA$Raeou&J8&z*Y3L`D8{^eeF_e zXrJI(y|gL>0~Iwqc-La8iQRS-Pj~a~d42HH13neK7wq-Epa8@H8zk8-6J9>vJv^9L z;IW|cYmbmh2b{t_(!KetQcEYOaSn-Tg3>b+Jcgpg&@_ko;@;kxfjg5Q^!k+4UqkD+ z#Y}g-_RaBne3fM?%FsT^Afqk;Hn<-=eN?<{I;cM`4bf3juT8u;_;QO z1?nx7i6={8(9Y^Z7)G3X4tc9#LMGbCoRA#)TkBg@q4$*@_lBd&yBO#PNC@03_~_)i z9=nj4nLzYin35cI;*mN+*a}pSKag@AuChs?lzl6wRJN8{$XsW(E%j=WQ>vI+xBTV) z3jZs5+|z6o15TFT=;pxy{j??*XE^83&)aO96eBe`mH~#uyqq6<$B3`~woYzAE_hhv zj=OX|M3TwVImvu?tu;*{hIYe3>5kJ@=%F)AwPT&mnF^oeJg_#Z zRd&Z|pTlk~!OuMJ4wN1rRNF+oD=K5M>obJYoz4je9qq6_ayL#B<^SR7N8XF8{G_8b z?=VySd|~ND%uG0EoY#i-?j$mQ#erM2F>Tlzz}ygn3(d#EuvNaj4|S3N5_`B2doQzS zYWm&v4=-NLUjHMa;UXp2p^?I0bFx+ zJaq8Xtj#1|nl06<=l^iHNaF6~LpPlE#Dr1KZ!xiTYRk~0$po9%`I7!{VNaeIRsFT8 z>EdNWAuppS&4_uIT3oqeP|wd+I@udz7_@T0_(r|_7+aqikDod=$UK2um+-yT+Mt|z z=2@^FZJbYkx8ifMu8CjaK31`fP{7)k+<^i$$ ze24M2AYK?k(u6v8m2(~7I`$KqJo-Lg9Dn$|j#AH;-niN1l9{ zaUHsSveV9fOyA1p{D-x*@g`$^5yX&9Ji29=D=W*1g0!o)|H9t`M~L7LXD;l*t6j(2 zEY=_ZJo6FAw50IL%)R^ER^&6PBD~p#^!M>Uvvo&TPo-uv++D=v=QVOI?duyxZ*K%@ z@wx=J3~}l7X(fA_ae&9}H}!nwp%5h{#tJ@!h2DF|)RS&Je>EAj%8kSKcz-;XSeiIo z?iq5~193F(h=^9dclHfv+FSEovq52@xZ7mPcT}NleD`E(KvGo<^-AAo8}+w(niHvZ zakNp;FK;+Cbt*7V;u>|dEaBQhOLgto7msVo7O3H^(=WP0d0@)nS3?F~sXA*vpngs& ze4~W}yiU?z3=_rEE8=CHAWmJefB1}G0^YEqs`2q`?zz9%;^}3}b~ZuEGxJsDfViI# z?(iM`Aq*Z0fBgBQVXhC?B;Om(DMh^rK@qHSmT>O~{j!-p&poue1d%bcQQNGP+uAx} zE-7YmW3j=>%VT90#mAaV^FccehCl5)6AT|UTrLq2YgV4(sM$H+#m*w~BmEi`R?uf8ER0BiOAH%}2XJ;=9H3s}UdV`CR?>ac=RM{c{f*98f7w?BTT zxX*pJ+1L)J`oI6~`hZb}XV1gI-sRjYU@B(ABF7O_oc+7@L25m@Ufq$^&z0gTSKCP0 z%#Gb&=l8Xbe2JNK`@0*LnU(RXd^w9pJASLwCJ}VXv&%ew@t>MLh)Bn`f7N0l$IIST z-S$ySxs#Y9ed$`R4jhjUNTQYdXHtgOjt5>URXF-e-K&ViU$x!PPKV)B0Hd<(- zQND7i_d-sd&C@Hz>aR@hZo8eui1NOO^aMYNh0}UHH0xjlW8IF^z+Rtk2bqq{VAU`* z%dvvUw6X=K3A{}?9BuuaIV_KRH}5)UF|^U0FZy#;!_`WIIuYI?FH^`$I#Jvm_V13p zoP>yy)%+I=&|fxFQZ$NemkMr!FD$fe=Hzdx@(SvD<@fIn;kKXyE(gyp_5lR;IrXtH zO1y5$nW9v7hmN0CQJY(m0PW7IOLNAAm~RBrdmCu z#AI2e{f*L5O@G#IX{jYM)%$XF;?y-q2k333|F3WQ8u!J<+dNh?wMRbE4pwLKKvr_Y zX0IPc5Pc(my0oWFyZ}7!$*XWc5wNrx?=bU{u89v5GwHoIip%(jJ>_0fRc&58=oM6R z##{VZR&&FiY?ugCsO?5ki zdhA+3`^WmDT0&D&tj4pAbydo%uGI18u}y<>MYDgsnhn@5wNUzG>9>K*!-~B{F^ALc zmIbou?E0P|E0fD?uNBiHBPVf^0muu@ov%ipuDE!Q)tcYo%)~WLWThwC1bJi2%{b?R zgG7Hlw)rFC;wC@x3*PtaQ`-!KJjwi%%OkzkPnSs4KDXMZtK}z4?XMIITphZ0Ypim) zcl3e!SSRIGEf<|*gCN($c31YjYph`2S*cPC8qZLew#eIKn<}5IW?SrcHhIN?diH@- z&ARkul>+n`c#0s6Ywy-w&O%Zv(!_8L&T-X}-&T6CRfblik@0b@s!g5s(-yw>y;^h3 zL!{G-b{J%9@hWUcPd;tLPvnVxK=klrF9-YQ>5hEUN;b&+@o}|HrYzVn^I+2;bIhmJ z_Ga^62@ydhA6=Ix1394f4Jq?a z2|k&j?pHK06WX`z9!PAIVf2a>B|cH{A6(iSc;oTR-okn(kY%ean(9$M+lJOYYjbX_ z3p+MaYOekE%VXPO`F$xzy}q73kT@0jEa!5utz5GA{qCOqzGvOijSDYiepQl%DEpY` zItX6V4vu}x-rtZzM|dOmcp`&^G3ktdH!H~dsCF|LzkJk zcjq;1M{4XNGfee{KoqJ85@6i(#7hq zW2)I4)CYv!g4Yf-8eIplcHjm{@&vt8#?A<7diCAn0)}b9%kJx)I(Vn?QM|kO? z`o)s_D~^s`E%YmMpkA`w>L{r@AjGPD_O<`g_HBC;3*FC!n@Z~F^;F40BaC60jd6eQ zbZC8;MX9Rr@quGea-Mat_t9&`EcuNaFVJ{`CXD~GErGp@YX{=1 z;bkj#U65prBJ0T`Qp)qc=T)H%a$k<`tjbmEtiY-uqS)YoUgM9x+oAv<}P;MtDNjy(};g}JVe^3${x&u zINDP#MmgeY3YkNVUc+ZY;x5vKt~TLpapltLM~ap%gw`A=Ha3ec3xeKufwrm}(TAsg zJEKQrc&36;HR4(=OxFZ%VOkNY^$*WJD(xi(6hC~_7thf;Ao}$a5x2<=;QEZRviZUQ zsI!~L_CKuBbqs#Ht%sdFzgtW7bLV2G0iW4_bocS^i;i+(-uvQ0mgM>g0IV)4P#% zkFjCCGL<9#6ZK7x0I>|_5--Nx%ZDzae=C7TO&OX)@Yn|iP6E6{jimpLx@S42UWae1 zoJw39{DR(^hCI0dRG9( zsXF%de^Pa?{vWA2fdW9>2ELi*;6HYui7V}sM|XhCScmwZjZqE;*cj~~Zn}RB+rnai zE2r7Uf3BQTNx+qpfdHF0Z;ag+Cpm1^kjL@$APFR@y0s376%Dkr(MzI$7 z&JI4k9mc1j8z>LDPMm?V8F^{U=wlmnf+>uBfwK+T?_tIcq0av~s!tThQe^oD;J#(e z4)o$wP=NN&?RJwRl#H>eC6>$lG;(<)@!uWUL3=tdLwIRc&Tyh`pc2zVoj=3it25jd z4lSaTeAC|OX)7%%ipy#bL9HDIS93lYEw{m%x&^W}dIi$Ln`604LU#N)R-ghk_yXqK z&V)W6IpTPT=AHmjpLhDLt9@7cmYVz>d&Wvp)(Wzh?%J0P{eEdRzpr`F@^>vzRelCi z-E8!-60zYA3CJaRaaN!44H-RTd*4woc>l6By1%b{BUGpdHFeg4H@5YiMg=%R#s+0 zhjY!XE?MYv%I(Q4N<7M}-05r9k#wI28gu?G)y1cq;!^5mu8hvPnMr2sXjO6SnFk%$ zm=}B+VdvP5kuY?!dYOm&`4;);p#&yI)*Xj+YP#dB{S%FJztxOJ==b}&=~@=S^=x-J zZ>tZrAzMH3=5)B=v2TQ+K(ttg_|}By-@Qxy@f~PrqZf4{;-N#;1<5VG<1>4kfpc^eiq~NQJF>H{H^AKpTCxa2D4PN*+XAW_4NUmrZPC1n1t|*W;xurw>T5 zUJpI%q=7ftH!IsRv$xe3CzCg1f6qbYoIiQx6n_e=PEG*gniTk`EOjT;&#ZY}fGr`= zk$*JlC;+|%%SFG5x0Z)w6Poi8DAz?T$^L854|BET&HK?&()%|f2AZ5fF!*rOK%@dDO>EHf zRG}L3=Qj4eT)%*jkWcPbQAJ#HXg+q)`L_O}N;vin?+=K`mA2uiu=AP__^c&gZW=f*8 z4;9l|^Yjb(^~}1Fs<^AvrC26GV(^Z1?K9EuxV65BUt1qgK&tc^LnBxK^)2_-y8~~= zOUd z0Va*UmAGQY6Px#_U}lgU{u(>)NeM2!F@Jqk=yu@7Nt-n>>{@^IvgE9XyU?NWpA(N2 z@{7B4xwc^8t`jB}#5NbE4Q4sYaLD$F71Prrfp{TyIOky-+)}VIzmMD#+1u_%INAZ} zr{pzM`MaE#-+VA>5OgGQK@xB7U5s%nc`i*Ve~3LroJBV-tckI+7uC4ZI-KLYrVg!Y zu5klwvyFm}{h;O;E^T`B{QalRMppuFM&jLQQy;hDUZC2a;(@S^h% z8Huxj=NKa8>t~vhj70n5(itK9P05! zonJiWd{0@BO!a+!?yYX6NtK|hNJ<6ZzgON9clx*+aw@x;e%r+Qc%cjO`GPow0iv=1 z9<%-hw%u%#w=zvA#r3CcHh}0bAMKy8U{XTuvd6sA_&CMX>SZFK1GWaBxO*ofxr#Xxo zv4Qy9+97kq*~80RtFN*~_uWy(_caffuS>A-GfYL_9czqjgoCnL-)EFw%G>W#pIT8q zmMGn)^|)3G<3Js;XP&`Rmwl9SU9b{o?U$o(kdD}6M{5RM>dUx%K9y37Tn}O^bH>2< zvxEZKs-u*d8_AJDWNn~Hp~FDNG$~kxUxck*%=@*K#6SK|^6%wp)=7<`uWcLgFFyQC zL1WnZgP&VixxT%T^L4(JW>s@O zzdIhZzix=8^cu{I!gfW2#UOh;B$%+oUaB5EM|GK_%m(3g0!j_1I>y>>X$Pp}|B_D} z)!(uT<_F~jXZX5mF%^{r6S+z>oYddUoC-DCQitAau%-0fgx3sgx+4M=PCkY7A)}l; zqxi)JH=mGr`l6oV?1{mpH2Pw6lN=S&wjoiypDJTclsW3KoPq;x6O^T_yU+$hi*+ z;!v0Ut`&Us!ePadS&Ebd<cl2KfWYS`pSygY`Id z8A{bk74;8Fj~ZVfzB5hO26KR0r?MR6XULQk?I|mSQ<_ z6&1FFaE>mpNGahRKn;2kcjJCowL>j5L=wOm7Bo%V#v505AIYt9S#D{WH)4BqVgX%w zbk60Y4PZv^@aHSXsUS+Rk(b*8Z8jCm2;FwevDrS)))3Oc#;@w2-)etN8L*wbf~e1X#{EF4#3=1V60pByN`73!<~&XYJBxANIyW&ZsKR_ z=KlA#8|I^xCwWBos5JNz-nnY^SFrz9j*NlA0(5~m^$X|~JPq5Jt^c+7i%Nn2s_N3^ zzaL!8CxJnDk2?diAAB)qdPOZ7UnpznCaAF$v(Vo*15S5QYmQ`soutTXE&D}|`F4t# zqfE3a?nl!1{C)MJ1m_+nQF2-Ae6>>#*1tsj^UXx+ivO|QK2Ag$g&i@Hx@NK2jTyGZO{9+@Tpl=O2Qys>8YF?(* ztr^5vCSA)1;3H#^ZoV2E$L{9~nJ|#M;ba`Tk6;A%vmLwn66_HDcRF!^HH4An54dRG zXX$eOn*Z~IzU!>j<)(iOk79{7<>u*YPI&#v!l-E9D-iEx+pCd6 z*NH^d3RY)~pUg*BCebjvj^}u%F$wZa%x>6xd1oAR;KxA{t(B#R+-IaiQ``_Bv!vts zW8I$-vVHd7QQ6v5TcBm+599H7riKTdVMgph<_6; z_5#O(*3d-@&}E$|HK42(gX0gJa_pv7&%kt+TKwiJfURO=xdFb?w0ow1vN=tDU}zll zg7-@5D%giZs9V;VCAT8aEojQh-*4<-3k;I7qpCfeT=@wfFllT`nlX7lz?TUJ~KUz*D}kvUME?sX@$~4DTxRG z%RSqIvw1qlX?@Lx64uFwPCZO|Sx(gc51x}Y4PcTWqU~M+L5DRwozIt}yk6Kx^x8IN^a_E|&fpyfLDTWTB;l5ejUzIKGr4D^-)BiP^)J@e_?j zJ+1pap)IE`zzPsGP)j^vyUGXyEVy%Odao4d*o2zpkKE5^p3aU6P<2v zC&le}&%gT{A|vud#M!v>FPVP-xjodD8eKnR+hu86a;(^;QNzON`4GqhW)=^$_CsG5 z^Vg!bFW~5Wk-}{y{uEyU4(Ana8{sv1d0_am3-^O%$W@&eXyEs-tu{y$Kc4BNC0Gn+ zf$I^c%Vdl@ONq}DC$F~|#%&%nMmMA0YL954uSFqGgXL8S+(?==7n)_)z{(O(=f$2R zisJs=v8eNUL)h>>${Bh>0|bsD!$g#^DE|be*>AXVrA_>K#VpoC9=Omi2;&N^FcP;S zH#;AG&_QVih3TEB=f@l^e`ERt6-NF2i!3)Mnjg#li9ZD;9c1{w3301XNPW{vr{*k3 z^y)Ws6eb^kGFax=>o8cx4n!m3dzXwlUf^(y?``nWE4`lOW3)=&KbDLJj)ceMsp%GK zuEsA1VnmlYL+eFCrL!NYEGuU%-;uzsc=j)@6mrp=PJs_&x@)E?Xjhgg zV#He%lF|VvEg^JH#C`H)t|JwKe|67vQS@*aH#Xuy5dK_YXI{%c*sP5Fpb9_7w%m;T za`)xQ$vxO8%a=Ak#mu6fr4?t&U9Uw+J%Q8&Z~@E=bLMd30fej(`WRF6iD88(LYnbC za$5UHM72qLYZ7X}=m{d5Suw^R%?L}(Qy)o1>hxE5JNw9I$bF|$2kNWbCZ)1{o_~%? z9QrQ*(fIidJxvFB?P_;BDaC6tN*N*o4+`(+$rs7iI=T4g>*e~hX^uJN$f2Oul$j8| zNDu?@U|xWi1MXxD24{X1PJ_04B*giq*w&!BEE&1;+72$6~bb4A$ zo^~@_%3kg9_!IH~Tu}tqlATuwYVA4LgZjFSp3t}vpXqTB;#V-D(0jhhlhPTu(1}r< zP|K&Iz$SWzKWo8%eycQT%MO&I!;;?#l2B~-x82>iZfe9AahPn1eAn78``p(OHE?{I z#%|S|jmPyH^+7yT`zh+MVSl}1s*$x4Zq45L^Rvqn>56-hJIWvdImb6_<21=&?I1@I zd+KuF<+^9dZMmWvJy**}*UFjDfA?9}9%^v%hdW%$QaIOGwVTJkr~6I(Zwv$f*RVPY zNUZ)pHiCnM|DV|InBsX=lutl4wPxFJI2nMct5KIQsTkZb6CSH9VE~g^65O00>k^%)U?X;Nq~18kxd8 z3i&2A{DXCId{EWc|L>0Vpg-Uw+SY;X%QN2Jqo1yv4^g@X5-BW)do zC#eULSJew>&udaWgnXtkh=~E9P*h1j_6`@4cFX5EuoTa=Pw8do&P)xcD&EtMlY8G| z-|M+NStjIAQVbcVB4p8$t*%H>Z6F$r77n(S@6tW#Zz*z4BED})iu%67-E5@Pr9=H% zx_rpv+>4{xG5)$OY&zu1A@bTOw3nX1f;J>W99~elv!RfM1IeN?vrM#P95_j&0uwyc=J-p^m>qVWclKX8!kja@63{ ztcAb3q@hV_5CXP2+XP3m(jIsmFpCAZYmq4K;z|sHJ&szw4be*Zn0XbKX*OQ-DbsH9 zr~5ss%lPMj8^5kP@&C&-4)E!iM&Gq?D2ek3YFSr?KH*I!I*8kUt(Y1>#j&`S*Lla? zF+Gz?avy$v-Bb={V5Hy|LvK#cRnd;n?ed1N>@@8BC*i~F8&eSi(6MVu<4R5Pg`-$t zIlRpmQD6ZE?grDK5%cqI){XiFdiyGR?}mZ;+g3Usn}6u^m&qA`YydIOgkfKrYN|vJgBF-w#T9TSE29O>XCq{(-Ay&{#jZc$0IkOMNBW=3 z46<47lFn6(@1FG?B+I`|t7AF0!RdlQL-z?vkj_jYhr~;#_{_<226_2tY`)YA!4RnK zGy;L7uX#f3;kd9|*WOdVQnY?1l#b^u+K+yLzO}Gw{!?Ki=e{J;UggYC96-GwCrCZ9AMwtWJp#~hz{w1_4F3Q#_6K@{$11@+Y^HJADo zbpA@|Iy_tf6JO`aj-WIcbD;Iq9E&agcuUH%>aZWsp8Dq7HQKa*;2}s&D0K!=lDmhM zcd$2FL5-QZOB<>(X#9O0m=|twh6GR;2 z7~Z4@bvnlRBOEK1`5^}&!n6+!-qqIbXE(xgzD*Uu0*Y$FpX3gr8c3!kZ2LSBIY&LJ z_p#I1iZaz*#NeuJ(gfew}}aa{x~rR%WNwl2p!l1)42}c1>#TV$AV)ORGVvr>$ zXo0N;Tjv2mf@=WL<3kr3r{}?6tY!(uhPrDw)NT9Z2Zwuxb1b(llZcH|b8geaOTU{Z zrOqxZ6A$C4wC6HvUw={YI+^Svmd|`zb&A7B9OHwZo4V#OPQcG@PFL!d%L(oq7K)`! zJgrZj&j}VeGWg0nmOdIrDE4?^FUeCN)f%-1XP6*ecO@2*E0`O*t}oxfGO<@WFLL|=bCz|vx;!!+lW1xvK(3t! zIbP#wYzSXGIScUAVu*OPxT33?3r!1ui(Y+f*qQ`tJNmsx>5=JwIYxO2yYKw7Ep~t# z$V(?OUSMiVx%*ugZPo|3MYxBdVL-&o=RB`pU|TX(H{u%y1!-9ZRgqf`g_Q`ME8~r> z)2gQGpbxkpic6xFu_S!Gs#ms@D9jIv23y4&Lm22v(6ky~L=7aKXJE5p+$78Jb=oej zay_6d2N-dcd5`g0Y}wZhxCW0l_HMgbAP!JU3pxm#L9!elFo=j{8TPID|H0mS1~t`& zai3U`F1-^K1?jzrkvxikfDq}Oh=??40um$;mEIL8N{dK|)QI#NApssiKzfysMCnMP zlp}<==b8QT?#}MczBBuN+YihTh8f7oIrn|t*Y*GZ{!*i-vDl5u*9Z8HheIof+m)z0_+iDQEPmg29Df=vB z#<4UkQN+ZiDxa#_;wIYjeR_xv)`TNG#=o*i1sIqbBt}N$|{HZoh8Al!dlXrpE<-SomWu7>;oSFGyGDa6NVuG*$W4* zV38*%nrL?YD=6N{oxnsiE5q-J7VkTdXkX%BfG*k4(bF5OUj6C@cYn8@<0d`2rNsrm zIjMP7lst}mo3jiGIaM0LGY^T$F?z_440lS{YdLzQFTtEcoM?!;z=VhZ+ue_!*#0c3 zM4B#+-3n_jblM>Im}=IrtjUmfI}Q5L$8&@}{;qA5Gi*Z$9f^TA!Fy&mLgFurFD4FF zKav5?w9#UQOPINsJusp8C7qQ#m0!65n=KNfyZ(4X8^(scBe_0^5`vvw(?3T`NZ8F_ z^L1L#(c^P*TF*1wnG(`J-!i!w?FQ;1!okmW21r}ta$f2y1Rv90THw!J5PIUkW5y+N101SO1X0nf&3@v1b0 zR#iUIwL9Xpj`+@fdgSv*OeLx)U6=()CW^x2I{cT2AG^gC+G~IB%uW-N$4=o z>80NchN>L3!<8u#0w1i%m9N+C)F2iqC}_|u(<`;iEFB2ZtjYCEIaLr;&cloO;bO6R zSJqU-Wm?vOGXP;G4#F$nu2Gp4@_>A0Wxu?sWyX3lgMV=A+Q0drH7w zMm)dmWQR0JUuU%#YnY9OfKo?ih0Z|2BjaL2?u;-Fr}a6v=5k-Vv-7oOC4PGTTa!8Y zXsyLJUi+t_!Cj|Y4t@791CY(weEAM_b{b`f1*-a)=Rhtt-GCBb_b#f6$=gToPYT^) zHOx1s%_FY+Md@c01K~YP$QU5ZxqVg1PA2rWl>F2LVdI#_tvdSzscK{xn=8o zw$NsRi|Nu5IcQP!=vn5JP?1lEIh``;VdJG3=-1iamFtL)tcglXIx0)sd?>4_DPBq9v$EzE03LZ3UH@V| zcI`{G%WG!f8Y-pJ#ccI%+vHYUd1vIM zo~s6BK)hjt$D{IFwc@=`g40dLLoyDo9AW+=s;v4f5rfsrkG9WNxPNn45D|9Q2|FN}9c0w_1BAJGnXT)cK()*K)kL6M46-bF6e|vaxi0 z-dJ<0Dq#BTqd{gio)ZNEgD^`Ygep)R>ZiIODcg6iG{@~NC`6`5~ z@tp$+YPkXW$o&*wm}@Kj43v333D#*E_@u>iugKF|#x&|)3@vK2NlFq(iz;PU&=L~; z2aLH2+R~<9)fjUGc#i*ss!;5@p4C9Vw|}T>8h;S_-0>@92kclq_hwGaWiaF++&e9})*^P#!ILk1`*$wW47SoD-&@Kz?{;K~`BT87pS9Hi;FR zR8y^QZUW}XI!VzSj2pDC^wc)Hk6~uFa3rIT6RB(1#fDt9^*qJt$NSIcuHEAhXeg31 zecx=Ba^|^wFJQU-&o%s=7Kr*!KrI2HdmN~?Fl40WK;pO9}bhP1{ z>n71uhuPARx|nik!Ew!xsN;04=rz3yE1`#8LG;0sOeiD58|G0I$@}xZR*Qa4Mjzv+ zNR|^RBtrqGnoY~zz<__^$9C;Rm2Yc@IG5&3SxURsBPS3NjcNSGEnmY%QWwunFrZQg z>+?M&8i1#==D(EGZwvER&F}8d`7dzXOOniM@K+cSzb^E7PtytCT0bNGFOz)3uHQs?bhzs(G2skc&-P1sK?38zqxJuMr@^N={QB-iRgORS} zveE7Qvx0K`k|_tTIk!*5r|F*`R8Ph0_S~&sIDHp{aK5)1^h_#y_9aNTB7s0r)6KK) zIaGXD7l2GMbqMqXet0g~wfLDG;<-2JiuJyBzgC}Q0y!MAv;))CjZ@$C((rM_Y5Nbo zmET?~o+}c!%b^)Z2Gn8lyW|;?6FX>jzef;m<6@KY^&14DUQx;24}G&aq^O!A?77w^ zWJ8~^bL5Z7FgD0-Gv`*>Ou4|HVY*#B3}?U(9K}v|_*2b}6f9}WC0yU14CM{(9eLg9 zY=du>y9!;Y{xs2hM0_Pa8J_6;E^(1UVcQCA2Y21M6MO3*kImJ<j2uyQjme^CEAM6OElSDrEE%v(&>B&nDq%bg=rjFLI_)VDwAH=jX9KJe@ zdW8D%Ko_cSNDv6xt(xe!udwIhw7aTKwC%Y=@N{$&>ypp*4Xd(?yX~SnlN?lRA>uGq zHAL)^4o0(is253rb-LEDx=Z~j15FC|`Toc!BJx^xVz%h|px5$XewJWbnjXY5jSXrf zNpU+NQd&j16odT^X_)N)1bWuy zcaAu&d0~F=ID!KqYgK%M!vDm z1)z4C9bYarcY7r}@-FX;B;mz6c}cPt9c$lcYQN7rv<` z`}v5S3?$uncWe2jkhjpaY0Ri2g5%KTe$~AXt;+23MWB3`0))(91>B2^hQ}|L9$ZVbvU4HA9J}WBRom|8hYQ zLBB@x?@MyOs74U`e62i3*3dB)x92@kza>;R{R6j2rtks2@ z%v^nr`E#sqzt@CrOxABCJO3d!zY&VezlGAGSbAv~FV83bWK>w*&%wiC4|(|Tgl({S zng^bpf1<(Ph+ zZs{5T+mY+OBlrCmYl3%^ux* zsT9_!KejHi+@y{>&>5aWvPQ&qwav4PaH#ZDl{d25(S~*s63ndWF=O|XQg?4 z4CGZenpfQRZlt|^s97NIdNkJ*%E0Ghk?DfdhMa8X$hkax7kKU$#XmeL3FGZxFaP5Y zCs-(AxgA=1Z(txx?q}Y&Hx8b;q1{zbd9ZM_vieOHnwxU}+rsb7u0ZGZi2;S7Z?gd_ zN@I~E=b8VAvd>|q$Nzt#?Ee)t_W$W;|BHyS%dolJJq!&4qRJ!9{VYGU&=Khj$H=1? z+6cMt&82^*pgxoLlaRNCM1jU)5rg&NYx5K=2ZV3xSMr z11idnY378RR{&RSFgEoQ(&+@pag+fSp44@g&f(is#6wd&fG{Qjzn<2BKxbWwg>(;v z&d}%y{nd|<{bW;N4C(DK!z}X-v=}@O5?nK~eQ!(QoE(UV2hF&zt7QzIe(`g6-|etF z9mJ%JXs`p`oAjDg)Xwm7Jc-bwmfx?yXP3()2UuFTKxI>lR!S_(WLK z$W|ELU~lWF42)Er?%x-S-FK6n#F)}}VlpFe4;dUwSN&$Gw1j7&;@;h<${0VrPDay< zn+My8+gkolDAMREm-;8h&%on2X#Cx+x$xVC{~Bx+V8?c^h1k%_tLbcg zaa05!sAE3^exSJH$fh&fo)5pPyRC%_Ro zasX`MFgqEM`M^u!Y`K3*$)_OP(@*5}VHMpy-G>%Yd5?Y@E{hfgzy3;ub4c8Fmv4B) zxB!+4?yh=|u$L^N2lrXQgC|2`-h+N(fR?a@Jrn?4(rMu6+VbUvDH$3k-Pg=3;LE#+ z5+H=`q{6?tcp*e;sVP@q^Q*uM9oLt?rZ-u;GtQt`j<8Ubh(iYuTg1GYaSU~%{!j$W zU{n|~y92TU7H%tyhGhOO4p&EK9PQd>qr-`p@i=H}I_%r^w(65AlkkjZkvH zKxF72s38Z+>VNQYT}NM_dHh`FPDI9L@ZnvC=TSnm9uh&#?XC%kltdV|CXe?@ z3AeVi!2fgQr#7pZ)F5Shr_>6YpIB4~AleH00z=I$6qLemiL=+klLB8~~q{wrJw#}NB zCja^kd|j*ZhqI^K3X)yc(mZUEZU}^b#-r#fE z#2mB>x6jMY#>An?I<&3io-m9k=*CvAg-X{lbf+`f?$u*JRuR2$a+_dovHo*|$=k`| z3-)Kvh9&OiZ=^=#I(@|d`o_3|&2NSe?HYi@(w(?#J zD^XdX_XwV%`(LOSHmM@FC!{Q&w&miok`$pYkCfk~hkeXV=|wxym|jpD-=#W{Jmh+V zDgX`OQ7@FQD$m4H+d*Hk!>mzWLIrA_MKlF6%5u9&d+8e^M?S{5?=WmL zqxdgNI%&^j3BOytMBPE3!GHfw%RNf<{mZi6uCC`~#o zQeZ|D`PZi6IhiRrXnW;>Xwiji1zX}&=RwLc}^74;K5YfJZQK$I8!KQ>>{STppAtDYGF1 z@`Gl&g4NfsZJrrMCtaskUy~M4FM~Ps0Budo6AV_m1l{l&=+xyvmJr+oCKx)3bxEQP zJbbHCN&r7yXu~KUscK9CjnsboO=};xo}g957@*+ec`LXdIPh%#2(AXd0qs9aMdAHq zM7+L)SroVir;$WZ3g|~D|0?979gLQRv?dfOXGZM)ySw4Mm(LVJ5UbK|1WNdIsWQKg zpPLNb8QWFZJ`4J3baHc_qBrbkN7mfxcA zAuE5d^3`*S1lektq#Ixf9xR$`_ zMq5g-`!GNe76(OByklJc%Zvuhc5vy;3vKa&>Yu$s@nQ@QAjyxsS}Sem7{aLNWA)Xkp ziL0)?)Ywtq-u%+DxwWzN88vT_!e)6t-rMzJvZ1|^9ZSYqJCn^B>{+kSrwK=XMn`#| zixACg4%!dU^d~B@icAG0**LMom9|W>gKuuvBbkSH%qp1Y8CtC-i}SANvuOszJjpoX zzU8`DSDGgzA-B07J$u*()gZJc@CGfkg!FG_C=u*>S0ohDmjc9Tq~3L1cFh%g;f$pK zRoXVsvq6n7)2ufH)dbWze_sH>Ox}vH$)J{pwx&4Nq`}yZdxL7goUY=dK3cSL2Nlls z+G?n7mc%vCke8-+rOCO_q6Q@+RlVR2eIP6hpJ_cb&6exapMoqvVo+XWcw)5hD9Uds z5NzBlfO^5rS9eCC*NYbk?|t&JOWOPHH@7}}!$E*Pns@!@(5s<69@N2bkI99PUYi2iaAy$)&QDx!z{qoguZZ4M+P>(jb<<13GYQ<|T7x)!#^P zmAycQLX9+WUu?M5Q-z?C(58|Gj%ocE52;<;grFf5PUGL-?6cFX!A3$|?gY_3Ssn?Q ztFPFSkkIM#BSCkv)_yR|3E+bVSPXv%U8e1dcQ3zYRczNN-bJsaVnG_JNU}(!TF)|) z{Y6Oz;YL82!bCzNfkMl6vZ{I3Z+WyQRGka;x94%1T!j~a2ePFMm;Z5bW_$sk=|Ut& zzrH+R=2OeiAG3C(>%^n3&@V{J!oB&7Cw8yd-x}Sn-VyOaaYQtJr)^DPco(okp;>3| za^i=C(w1=C%+bY@(|F&E+58?ntzj9?iYH{uqxX#4l>(`qUOjnX1x-V>Yk8*+6}qV- zCkSl01{30+KTcMMo>4xRCuwGeuK&yONFA^s^-T#s;atD(op&u@?jl^>@u%j$wZ)kt z)RR{~)J>=aXqN=QyhQA_7?|jJSY2Ur4BGoL_-AJVsR8+i3ejL^cw&yo7DeGebECMA ziYJw0b(}EI^)D{C7%n+SJz;_?1~#=z5;^tTq*d&5TYb^uzD>Hg-^hXQQNClJZ7;%L znEPMn5XaMz{R;~DqiGRi6<{=FCI0N!DzOPKi!Qznnu~ERB?!!BFT7<-u&Ob|Hl*GK z(NEBTlH>t~#TT`&ABz+?GM9B7O$&Ulci)wc$?{|~3a*0BEme)zu=U+3kkt!GiOENd z=y%dc-HVbm|Lq<)FYpl}z#NuRow`Kl`GiUD8)I^eJjDoTDMYGlshnasjmb7Pf>A?0 z5nT{&;P>s82BD-111vCj-8nzp3sy~{nUm%s`!U=Br9e2fN>m2Or}g*z@|HS3dRNt4 zmSHx;Izi5=XlU~@d**k#+%x7oI+et~3*Kk9p*Ez( z{>?SY_EU%;^kxrS63ns>jLq91ClI}VN;_bzLHBS=&DPG5I?3^OKyA>3F$3)v1Xv zB?Cg2Bp*UuXGC~WhZgu8PqxB;+D>URYNnh73g4BdaA!4tbOVHqev99sU+Q|s-R$RI zjf^y$+ET3988Rd2CANN@b#mAlQtu7;If*Yu-KMok$t{-{uz>lmyqYMeb32aM1$>ry`oMi`-8#x-sjQNdEZ3X>G7Z#2ulAXeWkk#6k z9!(KE+_x$w-Y-;67VF*%mh7vizaV&_y_Mg|fC8+h>2U+4u}0$ct&_oDUbu|-dN!+j zY^DW1QYwxpY5sMxIYeiWsRCdEBmINcqUWC4<$Aox1E_{m+4ofp033)dC-oca|%IyV;7_$!Brpqg8LDKGNqZaUi9-hW1Y?m#fj ztVWqP$1rTETt?1Htb}H&EqSA9A|^N5s_bXKrWUhB%F1l?WM>A2=6ZF#j4Aw?`Q#E=Ms``ta zUXB$8C$aYX>Fiuan#_7TwX`!8rdWC3LOtJXePgkhFcr!5SL;cV&*z2zvfN6Zqlnx~ z*F8V{NAQhganX#aM8Dt{YnK;7k@m;Uk`SALv%+LdT;nz$F15pl(kb0j#7{e)&|joS zS4r~6T^jeIrN@r?iVeSch%lRIaQxo;zA01E;7()qWc5zZ#iC_Dg=kr_{bq9wfFpNN13DV6Xmk^K2O5d z{rKlc-s{X?m?)dSeB}K6*JXO&wI2-KHS5oh4rU(e@U1u?d#YEhs^WU7=bsI3$yt>9 zy#Crvxokxo#oEO??^aNqaVZCd!T@Ws!$5~57^XrOlrZABIvg}vcjff;#B5XDg5e@@ zelw0EZ2sWOal#MLu!sJ7F9$a!vB^VKJvP$v0&cQr83ub*z(xrJ0qp53!k0dury0jg zZCpQkh4x}Q&r9k`(fVEujiNdmI@n(y-Q~K0*fO{9D{uCBLmsUzadrRsbB9L^um@w$ z@Pg2=8XpojWit9A>M>9s@qP|Tpm1l1i$k~^NlvaZ_!6WM)7D{g`NNp`a()Hyc3~b2 zP>B|OW!v6@Z>0-k_aV;uY10;f3=_b4DJsyieM)&T_=LkE zfJfv_Em9Qjvm2GwnnjQs>mwSbfRH^0rPLl8TIw7-$$HKBD)e)RT10eVhU zUo0KM8eeS2Wvx6Iq>GXfW{ayZA!h{vrZzrzS9@YBZEM&?oNPQkv)5|**;)}Pon=0{ z{QwSfyuz#MqfMnw?d79@|QDbBYSY^oyyKw`L zLyx4p?VP@xC2+Ub__e*huGQvDGCTTUPr)#F5BDAbqBLW|;sppt7!N4ib){{U7ndSe z`r`Kn{78Jr=N$g(-5tV9Rl1k*WNEl(H4KDL4KjwP7vi#ZkdA-v{dKKvBysCv%ap?2 zM|?MIZks6j*nW58nba&+Pus=d=+-WH%AwdAMPMWj1hSi0@Vo1My>ChEc$_iTMk zKbsC7Os|q-YRuw(GaioH1pnF9y%WIP--~v%h>K7t3$3J-oZOvK((VC4m%kn|6WO<5 zOE1vB{_B%kp*I;F=l`-)a~ulT3%g<&d^}8JJRlE0!sN!ncAuf|fv0I3{CxzY)EHE! z%;pcHck7o3fBv$pfv%^EZq{HuqYZv%8}a7Q1jIia@k4sa|0N6m2Uc)`{0CML2nWFm z)O`@F@Ca}2_gjI#rL- zQ+Rd!QVQu;5*&~fK6=yq336orL^3+>>#_esygT?O|5v_7j2Lf$Z&MBh{07ehw4)^S z?mJlE95Zg?&+1VL`iBZe3cV!-sZ(J#7;haSdSMM_%sbRR#NkOY&k<7MVsyz8o>9;x z`j-XwCYM?9n|~PXhvr>po&`mXK5zkK^x7uM;4SJj&{_#Z@2MNi`AtP1pI#mfu+6Hl zK3(4QG2o=&e2bLA?-Gj6bCNlD@q`&*T=|K64~@YO=pG^&EpT^SQSe#vG$l8-!x)U1 zItXj9eEJ3FL#eqpcGdd@8*f}kP~}G=%mU_(V_8QC;=Q)h(VUt-d`eyvm2Qw>9({Ur z`9)=^SaUK%w8q=Xvpc*8`!Xu(WX}!boICnP3mF*j0m4LU(pGx$GX(N&1+1ZdN+~kX z8t@1wcLt1IDTQ+(-G1&9x*6pebJx7Ty|x8F9`R7 ztt&TwY}P^MM4Na$ezyVa*^-yu1i6Lel6~ix15MHrtM}HgyXstauX}C!DmlxAY;KIz zgr$tkh%?zd4h_699J~1WcFK1A&UP$F_(JKB&ER}U9#?vE8uS|Nci#)((Z1DqEffyA z#WpB8VB*bU3!bN#E|oz0Z%JtVDm&hF5!wC;&)=atEwm^+zOAAU1?mpVNGmQy^3>Igw4o)wjwUbHDp(`z8j7zi;qW)T4~l!cqR$IgoS}U?|{E78F&t@?HE#hUp5)f!_c0bzutnU!w7+? zACUIcBVwE2(qwTxXalEaBsj4?l^)HtZXB!S8#D)gEM0r-mnMG#bcw_j6-GpsPt&pw zjhLSh4d@;fF_MqlrBSF~4YJ>+==U8d0s2aOBZd|AVEV?t`lIMFz|Wz5sv$5%n43ab zW^OO35P8xbi}{!GBmDAe3(r2nZ%vPSt(|xc{LZJVBuXGCDzPrIeGyIS4$*u|n{8>_ z7l)84&psd{-D$52EPV3ZE65s9Pt)CXua-?CRt~FBvhMU3^#v(q2QNllKSRp*E+Y9(YHpQ-Zo*xk3Y;0>cnJG1 zJEGnJ#=FDe2NPjjnhtX{>jACC3>At$2Nf(1V(|Q-BvxeQA)!c~mX4#6($HMd{0yB} z#3FIJU0UVZ6PYrwJ0gni>7}s}m1MX)Ktxxx)@bPAYgjYc%ndecyG~4nrDoMbXd0|vh<;PTqaq+rR$UDHfcYoAeusR%5PBE6B9N zCwEDLZZfV&*AMkY9D@)(hAz-c0pCmdcAviZgf(Fw&%;ze{ln{Rg~atp=`?(096OSa zCSo|D&LG9Z0k}%D@0;`5d(cXYBuwKu&MTljD-5cUe&CD)%wFwwlW%JK(At*f-{G+| zr0@^jMkrkAbVa#wwep+lnYDw)!mTts9X&qXry}x;vBFDeopdS^33f9k>UtY!ElJ7r z-$!Bubj8&N>r@9r9u7N7DV*!KXlAE#ThK&OH7hATiu!?>_ll$ipXNC4@{BVskZVP2 z;^K8U1Tmg7)e`fBWk5`~<^GjM_OD^I9UsF3Do?dnR8_8N}h!uldY37O~-D!)52|k=Hc;6Jxk@PL2BJp$QoNS>%JO z71YLrJM?lq)|^Z_;r)(+_-3fxPUW&U81*lLzi=V-wx>=PGCy^3!jCimMV#E3*{ZF+ zN9T^IL7695bS2+X*=f;N1KNo&p{21#j);FU7yq)DCG>s9lAK}M`*!07uj*w1R{l53 z5zR3!micrc_l%)>iQj#0QoZgWiqoPXUf?(9IM=6we}EE6gm7w&vtSBwa*z(yF$Q1Q zb(*FZ%4==34a?&;&lVf-5N9~G*}-lhrz|JcXQDU(%dY87Udg{Zbv#RMEY)WmEB3YD zwD58tugSoj1f@UGpTK4fJ!B268{QuOfBV&`!aM_N056X3O@R&l6y_-6APpsl)5P5Z zZ+nd@7=dTrQ^+_D!(^8`G?E__N&U>P6R$6L?BYF#ABk;zqBrYIMDL#H+sKA(*l#}j z%kpZPf<4MBP+>M-ac6Apya2IK&Ix~6Hs4l&Sg6XC&A3NQHG2PZrj)mRv>Z6GOkt=j z1#-?PZ-6TSvY#jhj}KM2#6Ik_Z9i4J*>LDNmpYqAK0WDCASVq1MZw>C4r(O3?aWc&F0ioYO;jc?u4yxZrrnuGNFU#mQThOuzQ5WxCK<_i?&T5^oMQt1-inL6a%lt6^ zAsQ_o%QvZ$OmrX1LOb96pW{~Y@lgzrNi)$YaT_Rf zuG*Z!&tm#8fC`$ycXi2cVa^ZJgae7=PQ=p=C105=&d8FzO+U0d=8B2A#OKsMEcI_J8)rN|;4C^ZQN!EfSExb^ ze>`9z_K)Aed5{6+rZ0jD0Y+e38}FGT=qBSt*n=Y-lL`C-2gY@9a_rTEevT2Yf%^pmyv-)tdaletIpr!ud$msZ1>@$eK|Co9Kj=j6a7Sw)Jd`wONIb#KWP>% zvHWr9SI5Z@t+u!Ga`@6AVs)7~HwRP4bQL`-?53Qd8Sjla-7CypqmVQ$dWTM5hhbr` z_<)8!Kas}dx?6|Lb{3Tg-LR-(y>4AzHNs)cGSOK&Z&PVg&>A(^r)<1`WElMbO^{}i zFgrQuWHgY7uiO61a@7e&ehGHHM-I$jy)ed2#LWI*mcknJRY*CeJk);Ki=htN0!wfc zum2)45>pPP{<8dTEMba5_86ewzn%eBK*qS0ZhX>Dcyl4*+^Krwm1F!#?e~Kmg%_!mxhW77YmgbeCOBf1< zc|m0}@-NHqR0eP#J^!1TIYI|#_`Je<;CW-k?;ptj{X3}5?M8px-fDk~?C*K94c4_w zSTr9hk{l&WY!j-Xz)v8e2QeSZpLtTRoiLwN3e?JATl8C$0-`)|t2td4#*14=e`-Z> z{~C7~ckhTCQeWnnxtq-bGpPFiY}%(8*6C$I`w8Zk$JnAB+>i5DIA-+4BZDA)YRBb!=>Hqi@u-=4t)yUzKL8f5#90=NwMe*V7I z3YZ5{*G8Th_6<#U36Dn0`r!GsFl_Ut<4Wl&3mb1jgsMek-+vl z?+xkox&Cfk(t%yhi|3wE#&>8&tv>hbPW?$u3(>rO{FlSiE4WpP07W=+TPE*-p zObOPB{^Uy&y*yn^C@@GK{8OD3BEO!FFlq}lghG9-T&7Sjh$e?Mi-_fBS|GW$^U#1{ z|H^!Fx5mW)33|)Aq=9ZlWvDssdTH4lyoxmI6Tdtc$OlaKIxUxB0Yvu`fw{OOdN>g# z04mf!`ab5VK5Bw=F+vW_81hFi!}3Ss@W=HfeDX3B z1B6ZVQ1y*h#a|~Fz{u3wt(o74Jf(oOW`_B1)T?8_$Gc|%h zT%s&_Bvlty_P~$WisPj52t9D)3yM}x;0fwF0qRt1IR=nZ9dhOrBu+4AxDh(#0y|?_ z^6cLauTv#H>`IGVr>O4IfQ8ebQ$mki*#&W@>7pJ7=iZ?x4iwN|AIyO2dQGBd&?A>O zVS4N8gldmR*)FcPY^}|kighireGZ%BVGq%9=mv`t9#Ajj15cPc4errwCo9U=+_dSe zY0;Na7Bsu;kVicV4k$AUIu$ga)E^q5H0tu!-ew{aAsqUe@be(PKxNbLPzc=e4fKTooW&G0h{+F- zqe4QcFgEYGgjl8kP-QaB6xe8s&JFWB{YE9RL!76#&}opIn;Za|e&X=pteAWXAdq3g zt3}eZp{C++in9U_KM-g)g)hSavN@gaH!yYBPxIIA4RGn$(}d!14AIHZL%$j#ZhKN}|+YaaX(Z8XDw$CrAIb6lb6#Rujd zK|Y9dag2P_mla_2S3bA@whhygT^WyaH0A~SOTpF^U{SR>dML>pcamlB3-_Wy1wGiP;bDZ(Wyy=LC@@Y2 zNSsJ$1h1_q5<%1xjypdN^`PlT+3pUB6P{GW^h7H+$Mo>8>ZNDgQw9SFJGJ}5^SEw& zpPt2kknJ@FYx@f*A$q}F8nZs+^s@@2Jk@!!ln*>rfr*ud)eQY+x?MFv6bz~KAm_t{ zTy$^cc+^zW2?AE7e!Dxr34SN1b@=*Eb#_?6p}*St1yqUgCY~>6;%-q5y~6Ja+VI^v zj@JP9l9#-<(C(!8eF|$+{e+fMlwysmqthhg+BJMkSi4p2357YJgy6K>(fu^A!B8%^ zqY<40HST?rkjRuo7WdBX@yK;A>t=}QdL^&9|AKajT9`ivv2h7NQ-;v^z@vZdiQ|JG zW_w*?PUYKuB3E^2K_9AxkvS&cefZ0QU;4OyMJDXUj~Ua~$qnuVkR?%}8Lw*(Uky|6a$yNm zq&21qW_aA1w7`S0Ro8*Rz_NAx8K@W4FZKF+#!Z@e*Sl$b2n~{=)zGG~SQ9%ZR25mN zw8`Y3{Hc{@WiH0E;AHP3)o(jaEWfOkrhIs-J*;UwP*Q38t+$hRO=F}a+$=BBOD^Q( zlk`Hg`^C|V;Zr(If!9h&a~QDmR}K+50!b+xFKlXJ`v5r61)eaZJ1s->9OO?ewyH&# zU8*Sjfn0$4KCtn<`yq=qQ()m7UuKv7;6v9zx=gzGT(m0%9{St$2@Do0+|#Za#0YnJb1NUXxJWj2pb$@i=U^vG3PpqZ{=l!@j7ruWS0!|78Y zdM0Fi0z$wJ#-cPBy&PEu<6hU%G3Osy&W=p8@SD%9B;HDqDDSYQ$i^_GfkT20UH~P1 zsJw`T-2@b>*WC2zUdbzTD`W{#C|bOsP^nSr!d9q~y19aJeP?n+0P9}wE@tHT^?R>w zd#1zJ2z#U8NAZ|BCk9Uu?t^eZLk=$?L9R_(Y0c5INSwDF`b>wdSmh;RjujxMe}Mr5 zJUzq86^NoJHA$+jZO;1K(Cj%_4yhr7z~w>SC#*o4!70{fGDOg@EJ^$m;-gMCNpzK| zKG|3p`bsda5_y8$S6scO@M9rUXurQpDm_a=kGXxUf+eUkXUL{}^7vK# zK!r7#Fx3MNq6^dn>evNVOv~gN3djndEoc^8Ay)z|tYcDF{72-*DEA2=)>_i7m|~ zD%F-YHz!lBwon)+#%s5#ySRNw$I(723HCbZQ_<2$d~cBkaEu&yB5q0_#vD30+O%u_ zFCtcCIJ^O=UXeLA1ltRE2dhe+reWpGmW7wXDRe1jHkFu-k^?Xyvt}Nn6p`{2WROy9e zy@zLJt)gwBAk3_m4A#pOU9T(TieSh|4-E+;A2YVtzA?gzql|)DnNgAZE_+Lxt*U7J z=|)paqT*?NU8k%nBP~_n-`_T6)>AML%iO4vvZEsDjb>qre<@<8(=-2 zFfPAd`%x#~yz)-{x2ei=>&tt#EsZbCmmM8zvP(~2bx?YjvU8Qm_Ki}ZuZse~7DNbm zeDK63hYsC9oI>VY@f_Rq@35=$X%nw)gr0!=fh++d!ktdD*E^rLYH%udb11wpF)RmimFFM+`2*G26RsXX?_@MCC6Jh2d;uTfzv^oVp3s1m)}CbIcz zB94LUGke%KkKUTVN|eXc&XyMe%#@P)w&1+(rc(5m#Vy&7!#~7%eCvF3QBOZ%=-SY5 zVPpjVdib=u!@_K}rE%b;ZIEis%`h)UX#%!OIKTjeh$ELH8X;-X*G3z+?)W_3_Q1I; z&VgNh#%F)DmtQ29+BAhN^VNCwkh^eC;gw=IUu*#8)<@cQEF;jJ9zyLWw!`M6sUt~H zYaftpv)(p2`4dM==`*%^Jm-ICJfdf9RYZ zH*cLYbAHdbT6z6(Uh@nPOl~qEqq*FHz{|MQFY;}Z8j4h{zQdNy4GrA&yHyVaFS}RD zBOmIEb1zE8pEwOplHPtZi8S3+6Re63qu^7ZCX{_a3KE;>p3w7XH2s9^KoBUqxZmok zc(X33+r7|pt7@_)@fDF;x9e_-?6_S3`e=Q~tCl<0R4CW_63-=pgd0+_6Y9kWQ5vH6 zNPFHS$00`gDrxQb;;^&#cbSWsdvZ_f%`;X18Nk39Cjqm=N6}OEuK*C90*HeUJDT;v zKV7Oo21s?fUgZ;9)#GeAi2}D#ECF-IPmWXZ-cn*rFNYV-_K z*IyefFZ+98vp9-k$mf$eQWvInaq;@XbW#6RkC!_uKn195#oxW>nYF40{bGPEy!h%3 zx>98(WzQE_qZ#x#Su`G+0AQ#fUq|?*)czY0C^!WJS(iH7h_A0tt6}JX5z*=SNv#G9vefrOPc}1PKuYGMMp8wC&5k}XQ+9=c0Yul zVH_cZr#ttD!$U4*<=#oz=!Eo0i5!Oh_GK$s4PQJ**Dk3dAriwNe8_yKiN+yQjw=sh zZjJrdvi!@EgBFFlP_`vHZjN-AQc>oLMv+BONgl6+GK+Na6FHv9!1q6{1c()0wkof< z`@zII`_@<~U2q+oF=5%JgApVKC>0E6zu$5@Lm{>}w&&3Cw}n-q=_Fn7TGNG26O#d# zN#DZ(WvlPcotyRVM+ z5+GT0Zu6}1knlu+jOB1{zN_Wglfy4vMQ7qQL3do zMmbfw^*zegG3JfweIyI3^q_5#H(F%%tZdZIreYH;F{RUmC>y|#hNosc--RcjMW83h z@Fb}-Qvy+VLbS?gbz_ZId8%r2S5x{gIVpneM=uSZwl2)2+KO_QSdd+?RqJ75|J%zL z)?~aXE`|(%v2VbdSU0;%FQ*WuyF{9b;Atf8(941yg_0 zOr8qiQ4^`0VKmvS8&W({fX*% zv>aBwIB1oi9bZY}pvG(KG_ke*oYJ7(4XcXWWu#A4%W#}i!OmP*(1ciK!gtsfI21V9 zNZ;SYfdHeunxk~6Yz-r1lA#DaPubGx(aG!W?eE8*@kMZg(qvZZ>2yWZb*;utOoMUE z_ZAupt#LV<>hJ^DE@$CQ-n|IrGa%f_}MfsP* zj#-c*)>P2ng_s-bqjtmU_j_ub_q2giwd-O<#gxEg%vr^Njw^Io=M17);V_o+j0|D- zZgz6r%dYU7i~F{RjjTrU+hC08D5>);^n^H28UZr&%7<4hrtl7wgDwSRYd1q0BK+$| z&#tbDU`lZeJu-a*o{$5Jt#g1%N?2S^8BkMCckjJYWScgq+OnB@Wd3hiM(3SP zOwYI7pu4$rVZpNn>a+i)vc*EW{COM_;m|S->Vz_q7DXG6e3LIPrR%zW7|Z*_xAGUBR=#CnVX;qSj$rCX2!XRD{y0M*3*<0fcI4;2B`uGl>6A8chm7!7U<79|wnI=Oc zdqs_WI5Xl}OmmbIPSV0SA3$V^^b0OOh}iRaGgX#I;Z_+|-N9Prh^vm&={{6~Y9H59 zP{dpq{FPc}UuBo0UCOM#{ONyV@4dsCO#5|F9BeeBBE7^B0qKG?5y&_WA|OP1CjtTj zBA_5aLNbE%HcC?jA|gh*bkssx!Rea>~x z`Tl?_7v<&6%Ts>O{kx0Db$vJYM;*EAmwQ482{zZ}F7U(^@PO1%8bMafBK4?{qG@QZ z2UGXWXs+=|Peq^$wM6CRfBg6Kq5t}O_C)|x6D57g!H!RDJ;04C0qI+1jMi-C0*-M} zZCegs-@ty3+5+42pg+wVR}Sn!I7n0?e#|Vg97MiE5jZ8K_^Mh< zBizSeR?yE}Q3v;e;P`8Y(Z{2k_l63!KxVW+GMvlr^QjRc4`c3qKJN%7&=7xn+T6dz z?Jxs$HZ}uAJ}oHSePi36s3j$VtR{}k4Tx9`+9N@p;)78)5=$l-V$-ZCq9kcxF z59}W77-=mFbpSVht`f0XBu&Ek|3xQ(6}PbkcuNT81m}ak2&XPr5}QU7Vddr@1zPA7 z6x-h0_|h-OqxOJzAhuWf;Bm%zDI=@{_PzaAh6G)wJ#f^Xa`{cjlmHPKK0OtsUA-Iy zoO+t7gfo2!6W2Ssd-K5JG~&3?zmIZW+LLkhI!oM$$9zxX>>7e4N6J<=IQA#zhjcN{G)v^%)G5xuc~w8V^u?Bf2wqjXx= z-k`lCsMzZ4_7Hd`$rPooIX2M%S`kNK6}Nw#eRjOM&tK$ zG=0Oy)0%;v?nBX6btlo<)t^|tgG3`HAK9{}Och&{{g@Q6x)0;~8X?ehV$_6z+DiIZks3oM-OpE_Dx7qKqQ(a& zC*`B&2FK5oJuaJ$yowHZ9(c_0`Yk7P>Nx|{`<(Xs#87%=3-Ar2az3%0?T;$&K$ciG*`zYQr7A|G_{AQlA(Iu;*q@wr&d0Bl!y*x*&oQEM+ z--=jV7&&$h2cVwK;56a;#J^X16lknI!$D#T&a^0)&@V+yQ_bm>DiJEPB7uZc=~QAF?EEV)-o0Qv9r+8^*dMiXC6je6ie2< zgmf>Y``qPzqC4IEHvLcm`+?@eg*TP)EMIge=`cEROn~ZDB2!z~w~t(ygY08oq9dHoJZB#BBHQ}1BY09< zhX}me-il}P#39AL;^)2|r$es-FV^&2rC!)(xcjNWtt`K8q zrbTXg#Ol%lqnyLTfBx)*P! z4eVWqRhCC@Mk&oCBxz(Jgt0xi{Y{FjyHKmot`BzbE+6E!eyO^#nw{6g^VtZK!k9Y` zlCv0@{=<58S&xgy{IiGGh+BGh>YmSYWCzt&1l!<;L(KW?`>;YRZAfS*92LhL!jNJb zedHN$mD;K6E_V)SQK(4I1qy|LD3FGX`tEi)0Yo?EKDn8NlVt~0$$C9k;pn=}2VbC5!1eD&k)7O{wg1pmT?;iS47 z8_Op?x3%?o!~~Sn5C1ANL!x~^F@TO&wFN-d<(fEeW6e8fV2L=%ti?USYIr5SW~Qd= zhclO*yz(7Cqi3?hWgbX}=OBmll;%bHofm}bnP1zCo~7o?G86lhWCNEY9953iJ?xW2 zEvoGWjF_LvaLA(*w~gOf!Co^4g*d2pqtKL+2P`3G$n~d+&#?XQx}(ota_zH)i~m&e zlIs-LK5ni(j$t^4Q5qzNE!5X>YFL_(dwqNFt4{u%?_6zZ<9w(bxqCy?JaRQmr|n^t z4(|7`bj2Cjls+IWcRi-|yrEyk>9Ya)&)3$L4GAt+Ut3RJ9IKu|mZT|0TElnJnsFPK z7`?ddBVKuctntg_<|ab(IJhgY05$8Xuyp8^2aR_%7vjiRtv89^C^y)A$Pu9j zx4j!4PSYhD#H~LlHireXA818Q`UyMTEV?B}8qnN*;tw!=#w8LYpI=@Gv}%A{iVIlK zGf378NO|#^iJHdN3b&0NRWfsaT!&1s57S{fG#|4YN0V~q7q%W4`&_$PmvREtuXqZu zd9!wm-lEzo#X@{5p|M=gLX(ptEajUIO?Ss+@6?LyBsH7awn%E=+40rA9B)Gr2vlo( zhuMh;A2s0%)0Ovd`@kefdWupBT|J1o0F}Q$5d|pq*@yD=t^wlUWpcRtZOLK#`lYRr zAmrXOiO4a{YNT>a#|1OZH05NWE1D10!+t)jcuLuXH?id1F)pr`^ObSau%nm@OkM{C z=BiXMPQs=$(>8mM-gBZ`H@0HGR)(zuO>wr4srB;LXUX9-i-wv2SF8KE1cbB7pKCWB z+d5vf&YJNfsnt8);e$n|xS6d*T%yqqcDJo`0~f7N-Hs;!yFJn1pY-Q{oii95It~W= zcdjphoe~9hn6Yg%=tnt-Y@MpyG}|)z&eic-a4-8Yaqc^pvmrkM&v`&vGnzqcS-X=q z?H}W7Ge9}or_ORaW@*GFw4DjgT?PN0ul|3<3@ZJ1x_T|*2VMQtDxj;kuL8RI3>W;b zQU-sJ;Saw1A7uDo9N@z5`N4%R7+EOi`te8p@A?q>>zKiLH&Xu8_=(@rfVnSo6>|iM zhvegyOwzOn62ZH_VW-9>zI4M}*58JmPri+(_m0CwJLf~EPkL!tsPVLjje(uP#-NX=DF{+4t zR^_Kmiw-1rH2S5K^xw|pt!eRe73;{IRIIz+kxQ5!Y4@00J~c?o#mZ%C7Ov9KcZ*TSu#>eZ6*pvHqW1DWNUh!?BBsRlMVnwT)n&sEF7Z@d~M9KFQ%;MOHgtAkjEWk z(GcGdbJezs#(QI}D5rIgCvMz@j5%VZTdx5Uim5-etFkcx|@LV{rGxSnv^Yyn-Ax0YOjQ#R$z*&=q z0EQO-Z5J$3>qUUG_HS=$M1JRS3vMF}k_WW0ULnMefF@_K3pf9y8^>sf`_8pJ8#!r& zk@>4z2VhyOAG-p#ATtHfV?c}Zf^$M@amBgdQpUI_9B>=}+_)N!PE3UJv3;ovv)vgukzwycSxW|6O};$K5g;lM}oU+y*jA4$~YG6`D4az(T7 zX&ki>UTb+UrUUF=_x))|Ue`PZV%*#C`N&TB?$5scaVc&JjUGQcl6YSgw`o=#8%KR@ zb1V%l6s?O?&f8hSAtGgF3 zt86zRUePqagZyd!P096dR@Z&EAgk?Xz8>hYV{ulvY)+2L8H&E=hBFX)qmd`OptSg! zRIwKK>aujX7Mu3j@YEBM<}IU-Et_el>a5;5&=`$5J%@cuLKJ(ipIOD6Zoj(r*^rid z$33wis@c72Q_(}+A?HEiugTH}PDkZAJ^bb_qW4E);If5MiNXHFZ8MH|90j*=4bQMb zuzmrLU*bF0qa6h8<&Q+hizc9w0;@R%#x5Xjr&Vs3fb!LR#{v}p_n7_w$|)NF9Xy4WpdRjkJ#K0viZ%*y^6Hh6x8!n|ye2X$5oig4P#t!3PM?zNbAsAQG;_vFj zQ2$K31eH?__~;`E1gojH4JZ+Gr{yq9mbPp-e)`q8uNw?9dg?p;$FuW3fdMy?_C}Vh%1vuw8Zdm|8X_0Wopdt89;Ym<$0zNnW0O#Wrt9@ktEG!yuyWFHZeXpSd z_Yp0-HTd<5^mSlNWUTH@^*>+T&igd?d#5g8Pi|kQm)xf!_G4$Y7qijTHS^uy1qXrKJ1RCFUww2a=~F54pXZmAD_^CUirj7JGY%#ErWO zLVNetZ7{!NHJya&m=12_5;Lat^#0O7`joJg-}t!yIox6A=Kc60^sSNBJ6j_5dQQ-? zCWv5*DC`;cuA?tIP0Sb=v$SCGAfNdIg8Cc>-2wA7#qK-71TeH&*Y2lv-|(qJp;b4umR-oQLDz{L}^aX{j7nfHT)M(Wb%~C5iFu| zorr$t@pgSEg}=IkzrNYcZ34?Qus@8G3`;^mG2VDq?KcGdXNEjmSn}L=uDHvHZTNre ziW@k}3${FN{{25yLw2Ch?YzJ_0sjft=MFOdLdf5_9&82(t!4lH&(8Q?-{C)Q@E=d` zf6S}D9@YOCgRI(rGf76kRNM=e=Lf4C-gMCWn*sXmtEkauP2eyQTfl^~#pGGXz_If% zVk`DL*Q{aF7qGbN`WhO7zD(d$e3K@GU_PM^XEGzUx_}WURX}7qn+y}i$TDN!(#$2c z4B44j$w?>{&WrA~7|;rSj!0q&&{Iwf1CsS}z-{gHTPOZ_G-=O1&VJ-}5Rl9Xskxqc zPz)_if?k_32)AA$d#oJJ)bLo8%7>wi0k1lIYIwTvu~{ z1|ARG_tOS3A^^wACL=c2H2|t-=n=L7@WYM;Hs?PB>k0j3Gd;ZME{b&|iDN=oE(iTS z5%x3ErZ{Ac`uh~L0if5vA&Haxn~m_l)gb@ReEl!S1Y4`Js}fRyv7T9TctK(19l!)& zpzY_^za02mqk`1|)?YPThb#h6V7I)dxNw`U^PxNbf8Emm&)o69_q%^REOtcx7Rl`x zr%!GBLYf$ENf5ZKP=g-qq(yz_TDt}LaGJbPJA^I^4nVWFT@j>~zgKttS3mbRwb*9h zq5WImRkk1d55(GCmJOJA)-hmg&nYAFn*Mik9slJL_h0e)Zww36i@LwY;ZJe>^{Du< zrx~sOaHSDU0gzjKXrfi=fwJ7Eg!+~2vB2;ZQ8rsX*5amuCd75F+!Te?SWK*7OlK6={OrJJ=)rb_vM0Axt zGMbh%b`x&UYSpb9rbwQtTaWix^vWn5rc3`!+p)^m7UlOW6xRaAQ|n2lE>+n*K163S z@r*SO$U80gy)-o?oTktTOQBd0Pxs_hp1QCvs?9{vqR!CgRI6&p(9k&N$$aH3FiQXu z@N|;Tq=-ZRvY|Go167A>4&bwWoBBcDvJ66A7%Wr%lAdlbl=r!uHfb7hT}D8wWqxbC z{`t=r{R6ZY-UIgAF9=?a0?PoJWURKpg|Ww=N;4*jOp?A{KmNm3(X!A)X4LPE*N2cp zN72-`HE-)06CY~>{w#XaJ*=={b7b0S@&2(D@vq@W9v4L4X)!_8RY#iufj{yXQ z7mWBUj3D?N1o)PzBxYO-{wT&*zBLc$_EBH$8Ag48c&6Cj&?ing&I(KrUDz^A z?+_l^C^gc~)(KMy#ofgF9CR{*dIYFVN=#Tnb%g*mISEerWSwtYX{_+)+MkyB=cKF! z?zeg}k36dqEfd)L^6D#xGIPh_R@y>K3h%>AqiaPAv*9mL=~sir^8J$v@4a{Tn=}_KyH5L1MRyZwu8_!E= zDh?26X$=>6Q4kR*x%gG6tArc>nkoMtCPsvJR(DNNrVg!h_&aYWN4iuhwRx|7n3TNf zeqldz^Hm0}2A!l=yzEOIpqP#K6(GmT6+3Wm^~=(ebv+Z5M#$G3hhb+bV++MM7u>Vt zb27ySx73T(0;5{mGl#y3D8E=GT764%eAWa)&PX?L(YRL!-oLY-Mz)sLlNuu)Z3OON z84ReEEfXD?GOdEO5g`beQHZ0JgoIC|wcF5a!cwiPBF|0v^_wqVRlnQers62Oh?J>) zO@}c)1GS~)d`Rdmf*d=I1uK;}=QMhP zHi^Gqxf%+jSWYTSdYP4pEIwMA)XA;8y0LS1sZ!d#t-|#pHD<6Z)vFJGX;F~rjqU{= z(6WFeOLaA->j1fc8(M~J`G#-#&h+_@QYxN4ye`HSZfLi*i(=cJ*>?4ZMp5b}-PpsN+Qv%!TWf%7`i!-{xz@r-Cjt61hP#?X@6-vA!C@_ z+Mg4g`|j=i0PIa?9kxOrN*3Erss|@J+HNT3ES`>BTAqH+)QZgv4J4pz$WBGMZ{$;m zuu|7w*C!U5lo>+nsGhTWy&?O;@{pt5Xo|f8YtMZHG;?P|v*T7FV zk%WqBqpmBf@ZUitlBa_lO8hF|LNTSh8%ow;rXh<1H#O|7lH8UGPjv|1mlyk0R%m+_ ztS3Oz6?GpCQeuY~BeW?>r3A|mM3Ua{G;7BYNfNzX*OGK_zAy*M@tuG1Qn zucX!-EF@{5ht7Faa;t;sSb@6umO=~qm|JxPj7AyphlD)IPHtdyQ{AB(Z__@L!LSV; zy;hVKZ%X;@W(##=!FCgQ$I1H+vdo9L`hJ2ur z)JendY(K^=;?>XX0D06*2nPr?PCfhm$A@k&fS=cp`k?RQ;gg8iXpcnoG_b^nzH`Yb zFl#tH1FfVT0+wfF!nxx`mkjnO_9jD zQgwknu@UiSqggyB5ogj>nbNqD7ALk3c@&#kx5&IG6MJSwjc@@t*rL<)h4+2Q)v?O* zwR22y94e4BKU*SdY&1wA@cv=^<&#%ZR}he>%E>5pc;!tC8@Ihm{YjK1=d3W0t6^l< zFkID_C9Qbh#(SZz*ZN78aInwjCYaBMP*H)qN3jE*Tlc{Zdz&K^#!^_7lyc@Awf6p5 z{LQ>hInBD@N$(Sm;1PQ8bNoJleMOhyTCQkTF8v+~uSsOR0i~9YbsJd4_fEYtRNM{Q z;s+9k)&r357U|5N;F_ndW4VE)}4*or1*q)}Nz@Z=!D``SqJ;>6Blr-FoX}h?CABvU5 zH>WS6)GGH!da=(GoEW+o+CP zEEWFWs%~v*qz<0m=Ex*Wx1Z%0Nk;D@vvhL225&9x*T5g13$JPSINg|7U5ZpB_untR zN(1MCCT&g~y8dS0i_F3W>63$;15@ZitA0&8#?sxMKQz0;SyCQ3*z&T4H}CPg zch|^QbRn-ls7*;Db}v#k6b`z*b@atze^{>JCCCvJ8b@%=IvhF7`2p6Rm*{MI zc1zlF#GlF`cyX2^L!dH_bs${pQ5 zdsGk+&bK`u*98a04-9+!SOfK2`**HUiLI(RmqY-*){yZJ#V-r^}?}h4L6%XOeUS$#yc=~#cE=lWfE4vwHC|c#K#$be1Gb3zGuaqM5^*CVVZ@x^TKEc(drtFGi zZnEFus0FB6^SL(Uc$~!(T7EQ8fY820`)HGRu!rUWe~Umd4VbPPf_*W3-`j)NwX<8!#&(v?8C0#1JpEYH5^&o<^9! z1gj;}7X{_Z18U4w>dDi)Dxzad%x&*xhaVyR;IRlGV7o;9b0DOlDFLL(s;^{%|e?M zwkP*zi#$cm>-_}YVAjbWBU;Ir(~sH;92eo#Oug6RJX0+X2rR#OBe1-DRk`wb&hQGz z7hF-fS$J4db129U4i&8D7#NJ+fjKEx{|XiyFzGu+&KQ5|c}J!^iRH z>wp(X%FQ$8nmNAHj1MpJ2F$f{d|x~<*Br-v5J@2JE5J3YfpJQL?^)s;95<$}{yx=U z92deCY=sMKgzg@Q3F!`N-&uJ}6X^paH+{!Z-yI~STcWw?Y+v~@-66yuci68otUa3s1=) zJeeI;&Q66Iex|xioh`Q|+Nnt-Q(02HHcV*D7Kqt&C8eAmC7T9U+QVV)ATb0=$fg#G zdWlMFmrK4$IhiFPU@w$0GfJEgh)u?YS!C*Wl+7q=X887(+LhTHUp)wRQm`o8o@3=y zE`deC$Ned8@ii2UDwtx}^g^fXlW_tg1UkuKa09*J ztdyd)`oyL>Qk!RdcERyC51y7^?H`U+_QIjF>l}0YEl+^?z50mQbYY!;4mSGCNAhI& zX!s~iaI13Q@uQ6^`UdJJ@lWOFVMW*>>bL!j-gtfZ#(wIGddKxSqE)(PVoZ1xC3zbrv7)$EB+tD^L$=Sv?+&pc~Gu%3ak&$M3~%T5~0cZ|;x zl)C?csFx2va&RD{*z|dorre<4K&knD78cU~tkv>fLxdv5Y z%Oc~N8+V#w2rL9`WOmgu4v?uU!Pv@b{0OXadWBui|N`d^7Zc|fJNcCMkU&g|M zN^4g&UN#_evgf`3wlf*aL;JM*9`@WvczW&nG=z_?fpecGDm*rtmQC!K5(#cUJR>&4 zFDD&)LKI`}GO;hFnI@%gAtGkQc>by+#VIuu@k`J8<(q=Zx=N~ri6KE^nTM2%A6@Z# zNQme3bi8s%R$jCSx_v)r)6cfJn>S;)dMnk^M9qT;Znz#h3XapQxI`3;M9o4}t;RH+ zMe|W-Nouhe>)l^49?W+QF|0l1UypPKb4iQ!_r?>CHE8Pu_^NzP{s=YLjD)I)M;Lem z3e8=CJc^t%f*U;0a(rDFd3Ai97PbVspZnz54_W6Jur`F0TG>Wg4C1Jv7?in5+UvJ7 zTaF&Lk6Ut^tozO-F}iriX{B-a4foVMM=RZ$u~PNY*KTJnmR2`-vgs9LH44SBf~8Ce zu5e^P%GSZRpl+;WNcFzYlV~4*G=x?3Plt@Dfn<~*^w||*RyU}%PF+^#NX~2T)MHO3~|>LiC6_^rC?G>F$xIMU`~H}st=$A1aQa~%rVYCQ3E zH|{t?=l2@SH$z5m0`Qo%Cu5#)e$E!36*~meXJTK3Z!~s7>9P8!dUXd>d(m;HXch{+ z8ke=*6M8hnyv0`eW^>Px!?hjB&}LMO==5nu0cx$xM`#whAtz|?o@so{2VJ@RsUlVN zg<$OTea3A40XRkXaz(x1zJx9fmYiadsC$)PsvtbBZMw>qnenbPy+}tFR1broTl6q) zud2GU$<8Bv&Zfde+n`-7?uzl%Qa0<)@x(9Z>r)0IcSu z2@~yc6Q%kM6BXxxv6Bx2>id6uq1sPrU4lYt(4nA`n@$aJB(cp?e9ML^pXb+%z;<|x z`Sfiqq(J+y0^+4QW`~Z0_@7Yvq~3M8s(0)56pqADC{Dm%50Tm=dL1r|kq_4Tgi>c2 zF}>eW*>|Q*+2uIut0`_n7*u#L6n0z+K6lqc6H$AE z4gfSP^x>6a-i$d@jF}-kcUt$hJENya$bKf+#rgLlF`JgY(o}LwVUcn(U1O={)K*o1 zUdX!3v{W`N7zD0ZIS3`25PSzMv(;A0g`i3XncSoSJyyqW8G_ZN5t5)6ZQ%voK0|I3 zZlD5ddxyM|s4VDJ?3b?$6)+!Te)c-`p4fznb;=^}Uwd+~_Q6A&Ek5{!{8kh@x9*(` z8Qy?sk&sa1Til6xk@B4L5x2Lz4tE&Z?`p9VT3=l?tZ#^&EZ0w6_4UpUZl=EmFuf(#w$h*K>^_R8>sP|P2U zwsSi8sv^5;^0mfKceFza6s|N+pDf}Hy^t8xldCih!f=ESJ^gjzvH<2`X8P1;QOGK>x! zrpD!2vQ7J#*%SIok&Fr2oqPTzIA1h3g`?Q7!kR>pbGiwmH!G=w)=OASmTy3?zvg$Y zx_l`nJdTBWI{#UL@uC3)gOd$U4BXhvm`p4dC)&RK- zd04-OCn}>#*H70pRB0|eMtKUB+Uf7%!q_ObLW|c1AIbKXIoa%4)Ab~N#;K;&OH^`z zCptwjBmZbUTrU;XIJ?xE$d#GNY<>}p@I3u`2 zhyXS>hc^Ojfiv}t%4Dpn%e*#L6q;g4w2l|0#`!RnOso2oS?VgYPa;eFa`vZ0_?Dub zO+GHwrHIeDeGGL)xG;K>=xH!Fzc+Q1VLRN%JfR&_jGH18e&59?rMH@2)#M57b`!iC zGEQtnC9KUo2_lIwvLY=~^rzy`(Wr3!i1yuHNaXb!eeMqzSbZTZJBQ@pA%XVJ+*Q+HZ!Y9YX^|#g-`zBHs(@IQ>Ja zP2GF7IW8tE8TKT)TFT=zNk)^&dolR~K|ZmDQeV#Y=p?*iiM)S=S-x7Ms@QcpsIyAa zoZ{Fn=z}>=aXJ6Qs`GetS=IEqD7E@VwQbO2@BMMZ>bi-na5X;5jw+~ZS_t^EuY@MG z^uO=b>?Xu))oSc$xuUNIIovoTav-XiHseY(3cZ+Anov<__0Dn4`aVL9M6H^tX=p=? zmvVU6OdK`sJ@NqHhleu}t$I@}U%UCpaK;~K=N6Fu(7>3ZO!1=Q9MgCG+wM-qVGR7Y z4B+PPh-2ZU&L4umMCK3qym=^ka_8&TZw$4>CK1jDP{SV}Bc*(CqgZVy?4K<2)sjPy z4Zh>}Ekq(wmN7wgIuIX1T2_%>ztXP-TVkV-#M<3E*|$YKJ%1n3dgUjE!F7%;P zl9)33ZII&ww6Q&3W_v7zOG777E=z0YNm})k%(TwMLE2^X^qkSAOEdzlzx@kenfZC;|vS>^JIINMYa?vz%~`N8`_TDJC? zH(W0bW|VY1A&8zDNX{ryo3Y+{#?B^D%MhTaNv%Xlk^qDE6up%=PI#L1i7- z!W#2q-05zP4?X?d7dpzFG8V6)tbrxJm%jeI&6fJMEbY@N`Wd~(L#L-NSHuS7c&=mY zxK+BUyR?sZtSf$=5T0*%Fw$z3{H0K|Lzm<$+NPb8GYdSze`swX*}z1QV=RR+VVC0k z(h`QJq;UaiDLfG(i5TAiSpfIOv4oy4f>Z8JPd07R*sgj&tu6)S+*ti8$!5g);>WU$ zNw`H7gAf}MiMSYN**Ib_y~Q3OQH$;(D6p}+@KO0@H!&va_fXg|C=oG!YZdhtatsJA zfLygmaSF7BjXEfSJ|*CH#!Nd2K{2@|eXM?Hg*-OF_sAo!_RkfP`KijT+XyM$ngo_5 zR*AV{*~~dUJ2f`6cGu-ht0cmlA;%}52J=J*p6t+Q68aDvZYZeG(TLoaSd>6ZCaG3l z5Xklx!}5vPdX^|#x9*N&1v_7f{X|Qfu!f}@HH&3mPD;^+VQnM%a0k{RQo8LcW)eyQLT@pPK^s* zVzwt}_CjVvJ}PL}P4PKFN^Ro5?GPp~5p*1%@3(xnf|5~Zc4EuQSIa;|x7o!gg`%_( z9JLx)*QS8c`4nE=^n_Y@f4nL4ImQ#D=^ZcwY0zs1H@7#+)hPCM;)ZnvejLHZVY{>0 zMz4o7**?oVh6K%DhYcbw_Lqn9m7lvzd^cDIoag5&dPH_E02paM4Rfr3T=geIi*qEXQ`@$DB#~T|ymT7*BA_E;q)NiF0e8+ERXGKV?TbD zA~CXKIojxNZH7V&orD6W$i2;X)~zIdtx9e`!=IAc`kc^+R%tmT3^nE8Qt>oL`<+%S z!8iC+qW={c@5*_@#2w7;fH$#w`^;<22ueEhjK)S-&t3Bx1!`NQOuof)8UDdx3s%DWGC@@XL_OX6JlJY4$+C z=H7mmB{;3}FOHkf^c39)?Y1`MbUhq-z$PHv)gUFpvh1!g=L5XKz7@xXF#s2A62b&P z5hdf;4g@bToEm8eivln9O&h@4D{+z2csMlm3!^<5<4-TQM>aJuVJw;P`ugsZPA9V( zil3hpmyactmneNLW}ktc@U%T9B!v6icjNQ=EE8;Z;B05(dUEj>7srGyU9tcLV~|X1 zI)U7mGVOBFvPG+gC9O6wC)&i*xkd!AJjyB@* z|LoK8Zjc}u5mq{K!kN>rwrhl2)MC6K_WunM+h*z3FQD=Fm1)iCwh#f5?c7(KJ3E(f zA5_TSxwfv@06f2s2Nks0lDF{ccBtJ1Y=gKZ7`aFMhdAt*)(ObkiQxiU&!}r9wP{J|E zqFKt~>RM%Tj*_eO$bIVQfPHvveR5yw~&FEEObCsTqRTPM+7$kGA!)vSn8BZ+{A zu4kG#@IlN4oVd1x|GSDj#nONq>IV)KVSikW9ZJ-?5(%5LpN^%eqJ7G z|1G}_&jk9XeUe%?PgSl6}-D;az? z7hC9-m}~17M+1>8?HpcqF{EQZLb?ikBW6pmhcQBsV`vFlhmNF7?fLv^3?j6DR&IFP zh!UR1iZT6M%*w~-gZu-rO=`>zKMm+D-9AymaWGJ8H}B{oeYF+UNgOZ>R<7w)PVd!E z(;T?Ge6q$&Mg$-Zw|Y-LJSP%%M|sIi{bV}o7fv^cyACl9qr13?tCdTMAfrZ{n65oB z0fz|mq>sAD zoaXej%whcTb`&Z@EGzsm{aI68Yi?xgBZ#igva0?4WX0iv`vvBlRn-q`i>k+H#(YLrDR(<^rTiY` zIc>_Htw44Ph&T;n&X)S_e2c3KK%O7bOll0=DEBuaz3JZ!(Ab%zWPN*sE%a0t$+8c+ z#7({(plSUZRYUI&0h}$0VTy-TD=L8{pU)C7BHSl2q)AFd@HYM2l7E2ltqmV9JnU3H z`*6HPKm*2y3COlgG*c6Siy;VjLt6G#3A$r1+35(^FL!qE{`3zFAMM64BVrc7D1TW?Q)xa|5+dWTc z;r8@*u06nWKE%24A-xM-`Cbq9yS}eZbm%*Sybb(e-;pXeZ<+G3gnnQe zj1AvN>cXZG16o9T1b1v{w{Qn*9IUp8QmtUx#ANwrdZ#}@D}N(bsC`&lvh%eT$?`t- zYP1Y%&l||?lqG$oo3Y`kr<<%+(`=*LuGm%VZ3wraFr}qBv(Iz}4f-h?o`^!dYw>Zs zDOabj?>kbcFi;qOYwK0U0NKLaR0vU=#v|a#;hEVrLf@uk4wn}%PF2H}R0y=ER321}?r_vZ=H>xd`sj9a&yk}xJC%K^j-jMeG(R(K+! zA`}`Z;`G34K_j+VUMuh(uI|fS`6NSa%svJzzNimlLQNB#^!J~B2dAAB$syhAj!RJ8 zV9U4;)WJkS5JEOhJ~6N|K)G&W5@E>{nCSzD-+^ql5IfUQW)Uxp^9j6eng_eD!WsOoQO5VTx&XwOQdh3&_ z@9){dAA4@ylHz{4*(}pJR}DLfRN8bx2cL& zlMJ?f3vBdt2G_`2tsj3#9QY?_Tcu^12fuDT-hc~_Px=Y){<*h7TULiPR@tN#DQ_`S zn}@tGtV|o!O!2pP*B@%e7c&(YN$}I|ADeRQc`Q-zx<1Fj%O&N{r8C{w>wq=FGJc8C zs|J~%BIuPZ8Y^;FANooenAg#J9#f|#&O$IRmctWHGSgl3uNXzV^!xlX^DJ|iKv+l$ z_NRfytqtT}mUuG!-L;L2raAB`M%uVWe>>T1A zMLK?PY;)+6!h|S{Ti&!eS#UQ|pM;;11X>&XD9A`e?FvA1G<-{CY!0psHjZ#$Y$XLo zlsRF};iqBk-M5_vJ%KeFR9HO!SsYkLV$2!sEz(kba!jMC*v)tHt@#3sx#&$nkDbWb zcl4yVI12nve(;~`jlmewN8SVIi(GEV7w}Pm8JkU02z?TQntXC?r0E#MM{Q3a#GZg< zG@Tq~nV0;066{wQ1q9p%5qh_K>c{yJE`x(y@OwBynBRy#ChjBpCe%FM)mFX8F0ae> zZ*-EZdej8x@7|ZSX?{7s^Dbp$FSk&OJ$-8VG5D|ZLte}Xp*WOFuiuLbm5RQXI3+$W=bFFGTVfgF@lKZ0)OUZ}Z;?z5LQ}si@{F z*RXuk;Xp#J<}1SpFq#0t(Zni{Ct=>a-VoU%nKMJ z>G|U>7o~`*RRqQ;D!dFA7y6V9?BtLqW_M()ENOtN?1PQ!4v_m!JkdH$W4R$|` zlBBi=${Hba1YdC$FhbNo9+uw639=zip9<#OQ|;Gu{E>=ukCFWyQl4%3@ll$83-ka^S%kD#)9JDEn zrEmdzh)^CB*h4a!&~82uoskV!wi2MKmt&LsL10F{ZFn1B+0l17#-d*d!Qs8YG+ig7xb3M8 z(M!w3^GxJc_K*rk5PhLVQ1h);Ikz*QZp*aum9R6thy%oP<-R+!d5qz8O5X*QhM2nE z1Zm0PI;7I2deZCYC1f;kM!#Wr7^46MGHT4<;jL?+a4MjF=@~dJ+XmJZ>mv%seY5pu z3mbmkH1M1K9AIztC@XxmQdRCw*n>wPk!XmZoc?~trV96#68tTG6f>bj?sj^y`~3y9bCF_1*Qy zjT?cTq>_EH>Db85(C%^Em;c7zdxtgk<$I%8k&aZUQHmhFgS3bU2ndmmAVfq!KtMnw zv_wIA6A)0UO0N-VQbP+!S3r78BA^sW0OJNies?=_?%X+Z=CtRTXWsL?_xwe65_YoI z&RY9hKIJD+2JV$5AO@;x#1^FyCIbDM0akGi#U)VdN&#K`Qr8mZK6?KtPFrFap{min_R1JE zxiHNTqfP8^{wC!J`YBzGq;pcdou<}lYF3gsPf-P*C<`gnwejTb-JC!BhtACdOYPXL#=tsO~!hh){D$@zD!~1dLNZrJ)>Se0&itr zzdNi_Ze3GduqYH?U64;5hC7sx6yo5H6seuuyY5vqHPvml@t7C%oibcBK2Dh~ensN$dT;-2 zQR%&xkh^ysw86pH9rYGy81Md7J6eW7>5+a!<1sAXvg)cT-JA6q%GpTT_h8f8*TKrZp{3XqIH%waz~vcMbk*rQ`Uoj&1F6dl!i4Cf`mN^du7 zZyy8pNoV&Vk(#$ulRv8UYV+bZ8Z9`xT75Fz_Ipjjt7Lq;}#y z#GmhSeHm<;%Wv%*mq?p{{;JE}!xKza8>(4*f%`E&q)-lMs$8tJPC*RS3fM52=6Z^( zPjos+<>5x5`6BN$n{3OiT zOneCzO%FJBcdMVy#C^bL<882W4i~>`%Hmi!J=!6u%X+vi8>~l`Xnt%!mFenWS1mmc23Aet~i`18=;6i36>_ z(3=z!f?@rw&8Y04YCF-q>;i=SRT5WG3Cre|XAf0?IGKj`IXiu3E7Z7h<1CgH_Sy(+n->)pX8Su>@cza&8ty74;~o z`CJ^9=Xu+8hxF(jY53uUqLF6kt2|i&3xUjgto`!SIZAT2l?3Igi1b@H_lbb}B^fU1 zB(@<5T!}<#=b%8`8%B*X^PFPhZl0hc^iYOE3lxz~;H%cQat|$SWnPgaE#7&lE>Cr3 z92(XDipv}ECi)|iuPV2N8uO;Gfp(^iRo^qj zaKa4!!Z(`RRnslIa#X;8_DQ$XL&Sp;P-1t$y!$IfE5(JBqp+EIse8mfSMwqlr-WsN zUEMlCk@2yxz^hfY1XHMhV|da!imrH_-5m85AAi1Ddz`-b-C-AD+ z6NhTZFZmo)LBuYZ?%?VrN#q$T!uOavkrK1E9 z^C!>}XR+hyw>1KYU*6S{U*ODN6nO-!5{7ly(qodUFH5=L!Mwpp+}Jv;JVQ{3oc5rapDV6HVa&<4aZsGDvz@ z3xiK^a-gsmkqP;G8YG`TXxKLM|Dbt817}hw zexA~U{M&B|#XAApR1icAj&C}jipc+Oj^BV{?)D7?Tc`1 z1F&q0+nxcPb|BT?c*)t$mEVFFlMl}z$AU9bD(@c@RocvYR}`(QAWvkC-W;!IxU}3- z(^i*d?^)sgHjnOJ+%@OJH1PVf0o$^h*h5`Fr|7wtlYSL?> zca_&N-?^2K^224o*oMydn}>lSjn@axJz?pE5PkA{<3|(oiPxdieK#j%uzj&eZh+SM zD6iFk?!};T?&#(|ehY;YjLKvVl142r(E-l(jUu(mNfq}uv9Bsz4n?#ReVC-~4!1fY zZ0}yeiNcS(`j2vamG4{ijK5x?mfFw4SoEvz_XVCYa%=*BeZ9WT<)zL1s#`8bR_V~q zO_*X4{qrJ;Sk!%re3_aKW;N9Sgw*`^el*Vi=4vqgU-qN>Jf}} zdd4%$k~c?H-qvF>V>YrJ8+g(W%*FoG6|;Z#pR)x2nX~!-gB=a|6zq}kD6t59&p(NB zPd*E5;C!$?&%8*ogt6 z|CHufln)QC%*ju)`cVzkuDeU7u)-?-?F!4i!ilLq-~2d!gFaiviw-%T2flymbQV;J z?{M|-5Bsk)=Q;OZawQCQ`(Muj|Qb5bbxPO{{)&FHuT>swGQN2;i z-?tOuiNC0HPqeu@FN0yotQ%MrlO+~yEk73>zpu^uB><94z3}qs;pY-VFQV&`{zRcp z4Pi>CCOv%V$&x6l^KCwljU~W+=uRC`pSJ6Xp3| zG&cdS@Lseybob!Kv%~U9t|g{+37rQs(&s0B=+h*y@7Pdyw@KMl&PEC+ttH?RhP(i_ z^xS1<3h-jjD);a>?FGViq}{Kmc5%Sf>G`!`mt}i+e17xE>lJ?Emv#s*A>VTvpK3LJ z_SD9sokQ(Nw6wWnWdr-5h1UD#M}TRI>F}Yd=3>2#YZ>O=nzZ|EN&#n&W}d9e47BcO z5LXV+^=@QtylgVQT%1?tzq9=2RKQTvgmqdCHNFm{pD02q{#8K@>4Kbs@1QV5L!Uzl zO#KwKW~yi4=(lFq>;@GEUIvht|Te$ zi3R^-KHz3b9os|o!#u4h_csxY5uM*VFH@fOQ5ZN-@X{d9U(lUKyzR%Ike3C*6Ue)- zDf+>LcC9cdx?WF-O#ZC-iyiC3=wWB*=F51!pe#saHjdVBh_;RU`_x)VRa)baI%xFW zauB$GyXh|z6I8#AMMoZ>UN%BmTlrmM(nE}WSifgBc1Bxrsn~FHCmm^Ddz$l=rm5Ni ztlmN+3lQ;Eq*H?zA4*eB5mu9~DnJAMs6581w6*ccQeQ&>G?Y8r#rEW)hSK0eqf1So zQ{L0A8R@x$UYU5qTZ`XqXF+PB4PYrb@%^w_*$sWvVvOPXBLmOv-tMVJKH?_z|}|Q6j;HI zmcgp{?@2}Hf>h@>bq}6s(h~cON=qz`PQe*7Z-IQPbRslLZDG_!`E7n3ysPq@eWy;YDwuWnCesr{ewuar3L09&#v~Qv zQND?{(TW9>2Q3g|YWp3M++5hVJknogIw&Bz7Z#}=0~5wWp4~}5u=5CB$Ve<@`Bk^z zXfL1xt7)JWVRUUfJxLy*o@##ATHoG)YVvi{43v8(e7^EsZLj|2j}L6d%zB(itX6VA zLC?sxlB@N+L}XflbtPor2L6T1=?Q|ka&wLgS6fg4yY62GA91kvi%e)ck!SE>Eh(Bd zt&cXs9)3W@d`u1fJvR#A#gI7PQX8(OrWKsDaCu|mUdY(LENhyyznmrcPb=2!&#U_Q zjlcY-)}OWn{Xebh*L1&6_NOabO8)bX!1t$p<;o@~y9pnO6Xy0z&S> zeZdg%`Xe+a^3yo-Gbn7(*ojHD0EO5iBd4B3CsGwdkJU%?fle@Y5c-noL~?->SpQ~s zfBxO=mizhfZ8omf^tZcw2cD!gO3ZJwyc&xh_`&^FbPRME6g`X^1uixoy@YRqIPY?n z4&_bV82^Kyd+%-CnuZkIuRdCNp{qRPoIa3iRNi*oSSCsNjthPISe06~G~7%D_=I=Ib9csO8ipvK7h`edLUeO+WAiZ$b4_l>BW9n>}>^y#=DKDg#IgPoO6E z|A{f?zZaDKe*Pa5f4=OWBT>`$!R_s&sXtL zKdU?azdYH0{rBP(HIWljyQ9EOJ`Zeht;9~xvGrizQOBjkQ=eEF7;^}DA4abHA`}Hp zB_PEC;m$lu^b4AxruU{p2?!C zk>}LYD{LxEBPA^HXo+-*FFBXSpIKL1ytvz3|H#t$QvEr7zZX@5=X6F)e+*_w+EnK@ z?rCwTr(QXqGQnJ+nUFNIwK4ljirCGcIw)koe|_xwj@-3tdNM~PVsfo}TJMJi&njItrk(dWciTfq znX!+`-eg+=k$9e;Kvf`2bSkOd7KP()c*Miq;K<`HL|jdK{NbwW_@>kI(qsMnHoHEM zFe%OR%N}W+y6R=vTLa!4J4swcMTr`@9&M>T6iRftd zeuJNWP%T9Jh_~U*>$#=r`-vaC6xOFy9`^W+eT+%y9t=Ru()MznzV^9Q{te*4ioJ*8 z@_e_r&isrdT~rbYZS;z`gDRVFt9$wAk@-WYQo!h(F7C_9e4YT{?nQtk94wR^T>7ld zb>BukBil=e@*CRgD+ zi1+7`v{9Q?5-wv~CA0eG2VXw=yx0S)p^Cnl<0r6Ew`V^hY$97#2g^mJR9x_M+NU-HXf<0(EE_ zz^BhqC=RCPuylV4!uoSHH~$s;%?ZMU%#CfCTVHn@4JEnn8ndB}^#NsgH2;@J^4j8v zL@aytzDow+34)erWinMi5E%OuGj2s^Dq4f^{B(_mWi)2m{G)-MbmOR^ zx|M`Ty~*c-t$KURqO=n1&1P2e*5IM+j6+z&4WM=ztnD~UG_TPu$feEPvzrca=K2;1WVDg_Sp4#taNhcsKEV<+DnITWHk*6+^s#HIj_1~ z(P-2r!GdtZ#(k=fV=y2d$rTo3{vF3DEyLaQ8R2Onp)*|}MgClA=4VTDnnO@NZqE}E zjcQmYbzzsNa8=Sr11gKJs9RaIscCeePQ@%Z{blAZR{;m9h$Ee zB0$-pwF%!*CfPQe?Tmb)0e^U@nY8riI=b9Qo~x-upOlSEm2#Y-7wfF~<7TuGQ33T{i#n${vC-euLl@%ktg#0ppoMbyL@PZy2p~dsR~J27^T%|AXdU{;Y&-mTaOReGXc~yY<3D)+c^}K{|*NTFi94i0YXz_Ey*87Z^MT z;9#Za&Kqjbb2A_1XNHgIH{ORExIMmx0AcDblG?)flhySZ?574=7Nocq_P&HBC&K#B zNwdKbmDGMXdrop2*gs#3Z|C#WJy8}b9SRp2L5N87-b$un$4Vlnyb8;cIYJqaiZ$ip zpdl9k6R>f`Hg`=wP`;U1{i<@VS)4~IRpB`^9lE+2>c%qrzB8tQxaGOOZ&auFI!Z{>Td(yHq13%GF!NA{1R-gynX^?Yu9RXYQ@ zfzpZS!gNh#Zt1N6kw$HJ{ZSLj)i{1)oT5V#)+Hi~3I2AWrk|8qqJO#nK?5#8`LVq~ zbB(AwGh)J=KOC7znO$f;wMnEPBC|_df7dOCIT-oc#^o1r{mz~T^s7}!9?X>%al zx(>cQ2TS^&09V*)Aa2ps+fmD|YjI@f66fx2Wk*#1NB-mtbc*lN2`j7huZvJ1OkH6m zLyRsqnccd!Z-M)n};TYZQH(@t*H$*|}Sr z`|3ZC5#QU@fTyqJ9c1y`al)=p1w^@|57*U~%jKe*4NS-Hr1v15%YWW}>X=zT{nW1Y z&Wbuq?0t$awcNi8WA<2@QOAyG@9o+l5+79wF43yREt%!7oICtlN@*E~y4_bQ#rAcw z%@L96Y2O_ip{n>QU3s-yqPlIeRFITb}s)t39p={`2ldix{dZSJMs z8QGX172#-qi45O_`-AK`pUNTw_-$&JV| z#C3PJw7c*shc(Jn6~5aswEM2bGHn7OrvmPBwxK3rsAb8Fdsi1##;f<3E|fffW^XUc z4%cOgR<;lCNX&9A3HX9)Rs2D2oD7^KF3dRS1iJgPjrs)m2o3va$|$5_m0Su^RrsT= zB@8ZOk+inR8ArxXYw_2C7F@mnh3ShoWOJId8sX0pCFAfuN)pDdb7su@_4DnU*Ut2SliGOwGZXAH^`bhWoJ}^xfTUUk~D_yYjt|b22Bit zR$g_7*Nam+)@YUYpy5a*;6(3~Ny+zv_urdm^+lS9Qcmx!d2DA4C+>_3wG_OlZI`hX_jZ!mWJCCSjQ2BiF> zxICdhXvXzcLUq7+9$elptU)C%%qG~ByXSLs6L}2XNC^U=g3ttzg=zq24Qu+@4p11x=396F#j1VV3so)LdH zhk9}B!1EsgyZc9+;~xgy`%^xI9@++ke*Jb&pu>W5=0&9a?Vb<~FIIR=K^4&$SWC3o z{yXGB$uyEd97SV!gD${_ZGG~<(Cf1;G#mqB-cZ!#=u5}hg^$ebk!niXP)E< z6%tI@%P#B7J#)D{;CC~@=}eQUUrtuSg)^Y`jEN}6bdboLmncW|%Eir8hq?P33R<3n ztzIN}mp0u?JBQoG6&qvvU31;D5>?a+Nf~C*1Y?1=XNc#DhA6F4MEAK2zet-k^f}5s zl0j_yXU`(7r6&{>HoZ9W20viKA%+X4q|>}>LX1otK<7UA1)t06nH(3fX||3Gq4 z3*~5sQWOA1`st0}oCx@2c*Cn@G^3p(q81NN5Y>Ot!){uiv0>ZBqBM4Q+ct0TYW?F3 z#Xu(xHJ=p-2Qr-^+;wifRk~A+-yo*dOVm17vqcETnXz2nm9JQl-1lj%XtQ)-pe6FU zd3P6kp6uBuP--T5>7M4Xm#dcTZCO@H#_3q>NW0`hl{NFo#HHEWl#T0kxpUTb-+wm7 zw@V=Au=ZOe6Uk5OT&>yeJF0Tf@eW*+IUG&l~h?^J6`(&B5n;Lv@Vsp=-FI9$LQ5WVlEEazp<{4 zuzU=uo9gqIT0B2tLxuxZzI@lSwBtoHW2veeS^jbl)(=|t+nI?%3;I{<+roi{1J0D# zruqy}*7o!?g%!}P=*MBg7f(!5B}2_}U-@{4LOB*MlZqDRj`lV62wqOJefkQ? zvt9{qG0XZ4JXBUZsHkU13RFun>$yb@>6so#^JK#1Kl?=;>@@PpQ2G!NC%0Z~Vp@3H zO7n&si&h1ldKuyS2!G0vGidUx4e4&RW;hkzb@go9jop|x!`6j&)61RYEWUi(rd2(C zG$UcE@{&x-+=7vO9W?2da~YPopZ(~+gx`*Rn9mt{rMWI`l{-WG)cX%LpOh{Y>$bC( zJ8o>8r5~HqHcEn706avNu3tAdmg*oq0w@AHuG1zC8hh}463oU<3S_Z#<+IqkFVfXt z-HNfGo(=jDduBLLB&HhU0T`35j|#P=CE#F(B`TL_+?Dn$6?z(Ag8_z`zDjy8Th;qw zy(gEhk9p@Zi#VvyIVKwN$!I$wdjYq@i()lp?m82HC>?QB-@!^THItgV2!{PN5EtHoN*>9H+k2<-J4EHKo!;$<9tztWQyTx zQo;puhxd-FiAb!rz>-06!sKZm@&n^T7=NhuCuJ{`se*o}z%nQ5+{UPK)6U9!v!Y{f zZ#n4qNOqQcT8lokd_j}41N{y9IhFtU51I$?SsOjzGH5{I17v#<=WOFG;eg#iUFp&c zcLrCjLs!5SpXvBdCO%kgt6a>jqwQ+Y+rQeXCMT%W%=JRl=};VIr+HzsuE8$XEYPiD{lfo_(}u28Y7BT(`Im zG(aNuazjRvl&tczjEYp%?PvW3%Pz6H!7ye=mA05ORNW%-DdYLqHAPOd8))Owo z16Bh`<`lNwguCr;iJ+KbtH5##tQJ&tY3C)j6?#;9QMBHC4;CmFXKVqj-K(0NtPC|8 z?+^qOP;AiU*5K_eMdI$VST{NzbByAT2UVT|JCI7M5Y{bf$7>q)f0hVeTx=4&FGb24zZRX({)(-womi;dJYc0zk4013J3|SnIYv zJ!j)ixDmr#aeM|5KBkG2u1CBGo6rBIi4p1F$&&A0339a0ycykTa4ZuPKESP=!M(F= zf@cM4tF%jU#%5{@vpcpf{;2Z!!jAdnVpZ@B9tExI>&Q=7lp{4h(LNV?gSeK^>P(zn zwg;wk$7C*M?CLx>mCi90i*$Of>qnX!RBkcm_Zvu2tjMt$%x|2ca3tfBDeMPR9aB(N z3Lk!y3)K}Ox*2SacpTz+FUpwa)?|>k^DAxyyqSH15Jv$+hzOL|JG`k-J8 zTd!Mxn{DT6OQ6hnN1xG8Mrf51T(qpF6xG@1$k_^0>|CnZ#==+?m$4#w;%7TWd@}UU z&H^&OyjLzn6r}pmn!>j7L4|)9x^Hv_b@ixFR`VEMHX1bxvaD5OWJ6i-T+i1J5X7pH z3ikl+S#PPztn0Fvn%NM;m2tdl6#lY`+=c93l(Uuv*$XzKNPa-#s^#uvVzHUjrVmw} z2ryJWLt!XhYA*`JImp=ewx)j5^%w1)Z+)7jr=av|O>=4*&fzjXzTDW;REK__s~IXs z%4v{w`g#;@Y=LtyMTpd@^vo%@6h!cK@4VlkyUj~O0h^TJKB!KU2Y=A`jIvXFi4#yp z7XZ0*rk?4tw2W!n(fh2$SLN%x*cXaMyaQjhewdqx7T&YIPad*?2xT2PgnDT_kcxJ6>BW0wKEWpSxHlMH8Et_pD764cjctWkKUJOHNWpg-OWExDV- z2FT*p;+4_Nz`D!D!7f4daj!aQnEB3*s0k0Dtu_4UsX5hRsP;jBlF(`H{V{M#9w0{# zxG9{HWc<-AN(BOqCbq@ijn(HfY-IUm zFUa5zJQMZBe@ZgluwT&C8j9&gjz>$-Kx%wqCUfSN2JahoDjZ7sq07mO+DCbqyIUIMe!%(A5YgC$R06eE!({QW zcuhKi++R_au4-uXg|SeR0wCscmZbG9=?B}7T$9%ISX<-XyVjN&&-Elg5~T5-7ZBv zVg5|}u+yu3uon>{G7pM%KNT?3#(RP)sEKuK?iI`wK^@2p7ju9ZX#X#DD+`! zvu?`QIV{vn$WVsRa2?88lJAs3jXl? zxv)#+SiI)a?{rB3$Dw|13DqyVUQ!_=dWe6>6p zGt1HJuv$=dTS4k^2Jd9Lb`x%&_m-{hgUsNf^e=-d(^XN&rZsW0jts*2KmD4K9K%Env|CF`sDsX)5p$c+al%fB|y6IWfh z{&hdm9aLUTY^ZsY&}~%|(~TE5LH@9;*?;V8B%j%K-vJWvl%!to0v7wyasFy0Kk)bU zmE<4c>rG`OWbZ3MShAjDu~eSbL4k+P9`Ls24l#I(OIWZJ!0|RyB8k4 z?tPpu?;$(}FTt`Tyq3!!wqMdHH-e=b?1fguD1`pV28G#Q$eU%ErHgW z;)BqLBB&RSyW~#6dOjWH1`xlj8YduYkKzW9!coM=#A=sjOv9CPpvloW+|L+O_|S=- zZtSVgnlbn4Z*dkJlyso@H3bMErF&^oi##NSbFHJyh={?urWYEOLE|#kx^ATfAG`Zm z`^imLL}srkc#`yCr;wkQj+<-g;%wsXg8MSxRb4~kAl_=v&Zfsp0;}dibn6K@b8(Dv zrSpuv7X+JSnk~E~Ef%|T1#J%alXh{@y*zVWQ<9~Cecvq7Z32V~Qu|wF2@66iI&q$f zBJo8grfM8b$u>mSDrEajHmwQTl!KCJs1b%8fG`+U2gP*(gB>3%-^2|+ltCcnJ`!68 zRELQlN_AB`CrX&DMsx4@GgcSk%f|56cP+B_DH~7xG)D^GL_Pz2RI|O$1;4ja*t9Yj zn(dy1f5=K7Yr8yFigt@ORn7e2aM9p)g8xVuGs{i+)n@vp=&K4I0v(7}*Hj{9cK<=c^&b0@=pCfX z>6or&3`x5?4zk1_%tqIj#1DEJ-sQhE5E{=JnIwBk+eRF3{^AZ&EAQc=PxqGv{y{qR zhkh$1vEhE*);7Of=vzFClg4ap?D8V?g!Ujhlrqnsie3Mzjr}hsEEiC%D3-4h*A5Fv zRM&#PK6oPVH-!}1ON7z=vlKVbuB9Xfv-dd&&Wh?3fv#}o6HR;$U2<;{)Nb-b??aaWk;bER`0U0XG`1Uf7aC;N=YMe#`rGQ$e}0UV zLVm*3`gEc}(MS4D+;%iZkRlmESUL%S>LP>yP`|6&gaF}3xEa@wZYX~`f$CHPxf=5YAYGw` z1iqXH4)m27{1t|{<^za9j`&`nfXCY4dv=EksQlo3p9BFE1%BYCG57UBs6k*Q%|#FC z3jTX8W;qA7=WPapk){FgO`{6QfPW)}J(-#~0HtU^_)+_-H)+48|L?c|-?{%k`pc1w z1y_zG1xiGBX*pBrZHSp2TsE`N?j=wvglIN;7RXm< z#k@EsU|at4?w`D^{=coZ@GhsJ7!9)t(~QI3#HnI7HIb(gyMj-gOGOTs1C;d-4g|C( z@jL7HqGo4RGVnpKoa4j^35p+oT(>3g+55|PXv*G(q-chbvdu}?{B03e4|a8kFE2`B z*sqPAuE*0dT2*N(6w*mOBD~kpZi~#FdF-wz^4#IX&TY3oet8_#APz4hHTW%dcDWK}K9yO9x%=KW$-^YecR@(rVxjt5;q#{f?WuZ}P?^Bis)+x!bqbdp8DT*5jxBTqTKW$5o8miBbebaho+Rd4KVNAq z`8Dm!M+*uksM(c3yu}QMT;=;g8S*fq41fhx4|{=D@9iY!*fNy}F)}(@`<(s487eP= z&9*O_y*_7{jA94EC%gcd*u0C~>wuK2ONS$`^9GD5ec7+s zzpO9sygsK}^jA<5WZmM0oNZS8`feZIO;_ZNwRdV+&fV`{I%MZR1cvWWGEBY{MGx;b z8_!Ob#kj8o>4Md9A-`X4j+az<<^3NU`H_7mUQ*0};X{MV5zEMI6p?^)8RdoxP<#s) zZmlm~0`+u;iQQei36E!sz7%%6t0igIFlRf-LpKrN@EbqtTs))C4^yKTXdCayqXj-6!lYQ1 zr>& zw4YaNh>)n|hKZkCNnWU)gIMY(P?ikMrmWvGsa%n-a6sx`{9IV8a8;lnM&gdm1j203 z5GD}#N4?f!&_#%d-m_)Zql#yIRV&jG+2I_8mggI7QWavbDtZFg@+@SyV)Kk7cNG zic4N1_4;88S#4foZ!Sp@AC|x!zPN$aW+QI3RmYsUn`#202j~QTB$mSGswW@i zjf~uPi}88-)x3~eO&vzn({{o^&ymQ?9&ksdO4N{SqR@6>8dmkR{gax|a;f`M>S8gE zVjnNLXN4O`81vh(mNwUANDewn7xgGYmr<0nePqj{aHt1*I&Vjom2#GdiqRIggL@#) z0u>b-&vhz*w^KIeyWg98BTEHTK=3e_MrD5`+Sj^plt0MaiY^x7H#w=U?w3yFoZu4WsIQEsFe7T1RA)wT<= zPgpq+6oRysxyYNGo9!i|9H z8WjkYAcZB^MMsDF;udsuFi`;pdd72s*QR+qrAfq6^a5OSL)sA3AwshLFu;h4S-FVonKN$fSl3FZ} z$|-@kVc9-GzIT&0U9+YMQ~d=6;`-y#tND%%iFcnq?@i{{y+b46a`PAcjwpJa$w?JxLwUa@%4$RC1(nO%RAGXi&{H`B2twY=so?D<)KO3)QC=Y~&A&JjH`-!sEI1^@W%bQCmfA&|&J^Mf( z`WafnQ&g4s zf{VB?-Ja}Q2?cYz)1U5JyAxH(&qxY&u+pVai}AggCoYFq?YnVp z+5wCutF}GWLwx6?w;e&9^Hcj@3P__{k%t@<-f>=yVe4~sUXJUZZLfdJyF@zt{<*T| zk`$WkaBA&N$63ad8k)2D`K=l_a32tdQqEcsSbByfaV6b+==l7Tts!Nj+UdwgVa683 zhPpgwgSYExup(ht0U~^HNaxhb8$@mo(z4w0Zrd7J@F*3WbJ@9MG9Ij^`>@OjciBaU zQ-pCE6CH!;%kO zZc<&8016I0sl)lTs@?J2B-L1L!BBZ(Z!~U+rGs>Cg%lm9d@{-SA~&0^M;sZ+I=1MV zVX4<}Avc^=AGBym=0-<*9vwsz1|E#mY>_kqh|V!`}O zzq?Ba{?{vtvR7e>GwX!RND(>6i8-}dD!c*eI)R#Pp)&j=YzrDin|;>i@kFYTj`yw) zGu0&x^$i+@J6J@MOGtWsq@-e4W$airR=8&sy1N*^iJ)(Cc71g^^ z5q=7J1=ZPtVGN}MGii3@XDF}sMGr@2l5AqASt&YlQ&Seb_-$(TC&4i&?*hpbB*33J z+Du(&%PaG((qnBwa41cVZ#h4KeSr{t8~ggf36#X4H@Dt6sBb{IC>C6`)iYg(t|;bj z+$T0qzNL&ZP1f=>Oe3vn&tXHia1cN>?+^~K5YzAwFv3Yf3IlGW##==0$WSx9mY8MS zEhRn{w)F$6JhWD&4R2s(`K*bPD6alFou$a9ceiQ8PyEuo4es=Jkv#`}SQZA#-H7Fk zr?_nagt5bWl4#N!T#*;o?1s&|v@I@GyY#|i%dIN4$qGu(u4#^+(>w-00j@b$%yJ>P z%AB{1mm9lAXSU62pxl};v@Sl(bs+5W&!=Kh(${NhKUFK0l0=5_(ndRD8up0W^TPu5 zed+A)u*f&aK{yM=_fU>HD9A-D>C2Cuf}9OC1pP09$wdSR#KXqMM&CiD*YoJ+*`QL5 zg<;QP_v;s8tM3J|iBFz?-1`J202-{h!@}Y9U}I=@oc!ddG}PS<=kqL>CCLRtjPUF* ze0z#`uNKq2AhhnT=;KzD`&h%vG^nKKIL-PJ@(I)#;{pL>x1WUG!fR>ZV4$w?t{uQb z*bVe4bVMZFS{TFyOyrI&KpUlgT!^?u+#Qt{^q2?ZrMnG`p>yxb?J%#~EUpqWlk3ji zov5ty;kX}MRa8f=eQ&?cW%F3odPBK>D{?~g)0~5@5X?)fu2(flFW`AN6G{w1gpbCf zYQ?a8kf%s4Kxy$5sj-*I*^WAqk9B0=^`gGV1Vk*syf zu)1Nhw{&;`Aq+-j%upB1%yx&iN}gvv7eaS=ySwT{kF?*&u0f?cl5?y|cB?Rm&ehZS zW!{%~Hh((WC5b(8{QZeHF-1mgyzkQ0>pU$Y?W`_{x?e3)e_lq{Ygk7RH&oj4E-$!b zk(whaZYr%d!1h8UYo<)E>|(Rhr~oN{v#R{Qkb@15`9qlpPZ8=AA_{LXK6kPv+ThE> z)&BVvE{12UrRNkArm!gXc22|zd}J2_j$aGkZdE2!sbyF3-5koIjeis$|9B`kGm>IV z|J0X}t$h9(aX7$7SV$^1+#2)H!7}2xd`ixfkRul5Zp0dHDuOEH4l4xE`t=iA$)hK? zc&k=klrzt4{&+!GCBv>!kjG^xe5X2rM+f~C&Vh_+z0mV>og^Fmvbmk#w@%cqjo;gJ zeQdz@Wn5fflC5C@ zG_@`FO%^guza>f(U%b@rS=dxRPP_vo6Gk@|Un3^xY{6D7(RBi+>5r?@HeQNDGSt96 zEQ%AW-u8#!HyAAOCdS=msM1pwBD0|=Ido||1UT$kVtv%chmY=p^4l$nZfZYH!-MfR zyfg4rxA#y6FSgZB%0}CGRlvY#0y!Gy`4H_TA9p{Od%87%Xw$pI_-yJxzL|sxe{)MD zz-JMN)_hc}cL2B_Iz@xqXyP(e)y3&WfvBHAY3QUuUZt$IP{ zYd`<&Nyp&0NS5EA6SIrg&nhK8wmPm)q!xNruMMFKW!|`ZDR+gzcusL7JwsXSp}Sb3 z@&)$bG3vzyL^K{A&4*jVwrOKUr?dq(Hlqd|#>dR#@v^iYY*Yg1!JN0MA~$busMN3{ zq5JS!spl3Z8qQk}g39H)3xRSk5L){;r$n0+xSPQ&=QyR2+0Hmu zVnS*q4OaishP)J>Zw#v@yyK@OnDDDIkxUR~QC8T8>1Q4;v6=UX{*8&JS|+*5y_uZrUg6F?d61Nkq91h&^pwkBh{@HJyta-tl>A7WGNSM4 zB%eg5rJj0y-{AJIA7L;@&%uNK0Zp^#M%)xSEpe{AA!>h*qk znt#xwfELDN2}JxKG$!2XBw7laF4gQ7Sd^XwLr#XH6wFT@;B@=ae~HbfbnJlhZ`uyW z{ywn|V*=U@{^qo&9f3DBW7LclNXz?~)P4~xXIK3V-1XFd^%&`rzkeeOHLI`!a^*{+ zFeZ|_QlOQ>y>aU2Oj&BZrqZ!pc$e(Vl-&^;bsr4SF3Gf!Sjgz351~A6#0c_I11NH^ z(TO>Q@fZcQ;5ESl)-hXZFQx{>&G(GgZJ$9nTSOR!uM&FU9GWf_j*fcth5<5#Cttse zfE1!|Q|+u^8UHu(0c<7UgDHN0(5wt=Q0cb+pb>4P(t|;VyD}((=|BSK_6S7L(ojBv z-2z8Imzr!$rS}2lm^Mg*f6!zqp}NtbV86ux%;Zji@n_FZ036R?){*MlCr}0G-~Sv4 zabxKW>hpIHh5`yFX(2D8c2+Sa-(Ir}B?AH5&!FG-Fw4c@kn=G7n0w6M8&Y{KT#>RUib%a-by(T*6Sr(0#Jh+n>R^RvR(;NHCMau>=NAQv`4j zGM;;jasLwsAV#Hg4k4TZj1Tn@s#x&rYKu{9;m?*DVO#FR=q?bw-bu*y$3v58pMaPU z!+c$0UP=W5(__P}-cYVorNYq|W&FyJriLC=ejWGtlO~!I>LdE_0czF+<(>Th5cl3u zO?O?JumwZ}iS$lTdRKar+!nfkqS7G>(xoUOQ9`01ARt7#A`q1>O$0(GbW}v7OHV@Y zi3NT_l6%hmu4iVwGxMxj@3+=`-}et$h)K@xl)ca1`?{{pa1jjM^ZyGD(%MIX2)3*L zP75O++^QzGyVNF|c1ToLJiv8K-R&dwc2*vt3ouHJCTBs{`Z?=88WB>eAx zhVt^?E&ab+bY$VL%WO;kX6f_(_eCF{{QE$SPWP0}1o$3UFC3?{C(|2u8^exn?!;+_V3_r%&NnQ_=3DML$d`pC=wOFI$!6E?G6NL3nMc9NXJv=Zk+A^2gn^IeUr_Wy~tnr*=B!Fba0!3Q^Wm?YSyr=yRwn z%*%*!OWE9n9e)nXm(sC)k>=M9ufhI{i||P$gvn(F?NakDfs4?l958=Mz({7%`61&s zJ>#=ypiH?=Mu_83vqIj5*rw4?J+vjjcaoQ5Ra7?L@L2ShLUksDQ-)g8H!^I11^Pa< z)6W0|<{<1N3@pwvqz5<}W^HL1V9I|HFAsQP>g z8bn^|n@y;<7Dh|0s98^}wIH|9$uWUpINA44u}~Hc!Br3X3vy1xa0OcRFOX ze~&qaJlZTnAwDzG8#j`IXlQou;1uO7xoFJ@=Wgby`i9ZkD+RuT$|pXBC`byNw7_8?xeH&7OG4jVjKsYAOhylJV5?HC){Q!{e0cHxxaJJ{ewi^-`DzWVj*iG5SW#;?s z4UKA(%|lwbtx>h}-_{kf;V z@La2zlV59#&lRl_xNGWkcnPENnliz!6?{GKi@GNs)_ivUwe->}iW;xatk7WP@BXkW zb;Fu1Mn|%iwn!HD(x6GNYcy??K7R17mR^1CIKB3CEs{+0#&Lu}NU_ zL2A-aNaC)!uya6IH^(8^MiA#zeRcFa&)PZC#cB)^I7e=}=e{W_&mOu-z2J&Bp>m~T z@8r`Rq3uATZ<6!V2@fLGrjs47@Xr4)C1-z(T-T&qLa^J{&V7?Lg+g34bt?xRv+$nr zis%`1)OpQK-5^ja(b`ew)j2BK-n6fkmf2;)U6K)DL_xX>w1Ev}vs_Kg&K4dGC06I@&xztLBLi*LK-FYa8TZzSfVW>z&Uo5<6?5yK<|( zF|CwRY!RbmR36zj+PUx&x9u2+Obc#xbY4qeB~dj=^Dk+f4IT+!iuguv%U;#<|6DX+ zOgZ((JuRJ0Kcj>zywgpLDz`zpHC&@)a{}!Sf>h+P0^G3 zW~jpQRT^hONb0*VyqWA8@T{s7UXS6#^axHes|wLq7{#i}%}9!YeawC*f+L{Min`s- zqohnI+_rqt?4~$Y{&i0Mr?YdDL&d?A&!5MS3Cu*uyH`<3WL2hW<2rBXALh<#y2OZCcBh@M65gh5ZbYp z8oO!!4syOe+$@SM_f^MsDCMJOcWu&E8gK9AKPeci67TC;zeN}jD>E!EOt~u+v^~Ju zny803FkaLn<{OvSgOPS06{# z2mo|$zw?k0(=4YlfUEruG(g+}A&Qe^!Kp zu8o6+LFAwls0&?o0(-g9lmMyAgIeJnY4&x^!@rdrRa8kYg>KGg2n)M}*+wY6PI#j$ z{^;gtnm0?uk?DJfbM=aJKfL@p3I4p&Nx6*MjNn$VQVAr(qe<3jayhCo+Iv7m{S=)TwPg$8Qa`!;kLET^1)Og7bL$ElSexhKI?b2(E~?ORRB0^eW}7XFu}J98^=? z3UrZD`^3S2|Ex(+>@T%P@WUH{l2n~2Lw?eTx~0}I%H!Nn&D5(BujGO(%a-$#N4Emq ze1%`m`YxceBWuat%{HCWXP)F5JPm2Clxc5wb9go&8q^2)|}f!<<)rI{plwHlID>DWEn+vMhx_ZItSt*Aq*T< zN3O)x)Q1w;pz(_h-+phZ`#MQyeO>TI+ZIlM-liZgxSW_`wv;IBuyF+`Nq1zlg60@n zgj}nj?pcY!jDshW18a|}svZ2xjGa&Y^~#aM3c782Ygkz$bznO}jgCX8nJHA*m9b{W z&^VqmMUsR%<)r;{$u1>VCmPdx9*Qwlp6*>(c#!T(Zaz!4)}hIrDA>q*O5RA|j{YR> zmZUcuWUAV(Z$EV1x3MbTrQflXaY-Pk8eh0v> z2=tEU<~ySyl~M1TZ{!)F7eSM2-!XnNS!NqxDAXV<_PGATVl2y@A9YF}KQa|srT%%i zR)zKBh8T8gKu+YxTinxYVVlw)%OB-erk;u!K)%{qW-Bz3r{U@R&O5cVOQ}M1d(XU1 zg^%%{$Go^pKA!Z{QAnM70riGlWmZKLb24~x@p z^HZ%lCqFCnTvJ?N|Qb=iM0tHyz(1PY=d{AdDd- zFdVFt@Ti*@euq;s!!TRpgo*ij+t~vZcFQ}tRMt}deXm??So$kl!bc(96`g}gY=#GW z595C3gLp2$X42oyONS_cHha@PO&C^|S2yoiba@Od|I})C!3-kB0(Uh*yi9lLqMD7$ z+O({{=S!mO)vQCQ3i2eRd!O9*jgMqFA0fCz%{(=w0qEeHS<`(SI zD>vb^q243o6nsLSWH6#;F_oZiDSA?BPEx{DOD&R_5{w?9-y-edOg}k4vW?z%)6E!) zaIz;%rZbA#w#|dbZl(VY?$0j>QYx%mE5jC)<3XZ;b^5l^o$EsIrurDthu>`nVnW7C zLl;im^)IV|sz|R!FZsEd1)np2&U*3#7gan;VZh+A@N{?zwm<4G28bp7;9Q?X9qG44sh4s3S-OK6YYRg?O>CAooYgjG=bF0^U>I_Fz*n)X#U41 z7o7>NU)V*Tm>~5wGQHmR_Ri; zXNKnaN>elb+@C_lH)wyN=C-<-C<{J1mKQNHyVivTG zOhI8DB?s9d_`%Tc)Hr{4{oQklo~KZUN~Apt4~ui1aS1har^QCU%9KEH)MS5R<``k2l_wT(t5h z8m2fG{su=j64VacK^S@)H|e|+I|SNTL}f~F(kh}!IlLFEsl-RM!il++Hzv<_hu^Q7 za_xQKS(z_%21J({VVnI@h>I$d9h|;@xJ! z2ANSRBIK0v>{Zl4&(&vzGM5IbR0*m+#LO(I4CN~VAw ztk6{fe9BWN{hUCSR`gA4URBkqLWwVktX_@O1!JnTWJjh~$$@xpTu zB%%@f*l*DE{lYgxL2|jXeGTxSU2})yZr6zGFJFn!F!@l|{2}H+K-rBHY_+pqO?1x9 zMEkp*u`0;=p>m7nleW+1?Xu^EJIeJ;3KTjlXlaU9vsb^WJC$^VJW0>?l-@#@+9upd z^JF)!nb#yskKtz0^UHquc598of$UzpJlOw9#KVQuqK(~sFVHg&gi(-8`1pl&L z_u!PW?x$s4E$SSd*R*qQAO?F=Z6f3Xjq7E2p1*z=@bqk*;RS2lXInO((8LWGh@wb$&ACepy&z6B@eIIq-j zMN>JM{UFRV7z6g^Ky+B^Stz;0_yL7uMRk)7BZ-Q>!a`DZb5y!<6* z|4M5@N25#PdtVWw)SFUkvx+%&Yl1*?<3nBKIRmX1Y`Yx$oJ;_1hG7GNAgMi2+`_;i ztSj}4h*8TOa=*vL@hrUxl^}Q4d7o|fB>6y6mh^1Dn3+35iO0VID%v;lWu9zkpxHd0 zo$AD>B!|tIvdA}@G_O2d6M0xUG2fCFSy?>Q%ip=IZZ3l^2PW<=1VCWNq;`%$XN!;% zqKFgFwl((YL+W$)#lU7;V@7R3oBU(9&+HeE9m^^06d>V7w0b3z>^UB%SVRUlOxpXb z=FFX5j1(*W<93ErAv`~g`FRR=tE64Q|7woqGko5 zazC^n%>dlpx1Z7V?rXu1uQ#GoSB+GtF*SL+ZYQZWaVl8`eGW@Xq886xA`-4ViO9VE zq4A`5 zBuDbhG+UfP`=+L*34e$|pi_@Jb-XM5pnuuq z>9=C8eMBmrYsR4HmmyakpzL(qNEH=kJx3sgNcG<-K^keezu>XtQ;+okz1RO`tz(6X~8%( z!)z^Um+x6tv#Pc7`+_4V-X5kTbhX(09m-2^6s-`UJ_E(J3;gK$bUKxDuQys}E56hI zGJ2^hE+(gx)J1C#Ipx;9$3dDCLxuM`$>5)&&lH;$uhtcpl{LBNvY&}l2~wFsuRHg7 zNw^S(6&vd%t9oomb}uV|zNq>l4OJL2SR$zo50cZ%uPkv{6uM=j}<&m0%>i zcd~!s*Su|xV5V0{#k%{+=(f+bio!9@xYRH8fp4F!_K7EtcTjAk5>QgGoL=6S3-#WS zUxTLyG(HVSqGB2fe#f&r@r3eu+NL|%#VEp3{P@Z8y}wWCczwOoE3UWJSv>#xz&uoU zzpcdo36%|Jc$UV|nc*fw9VIusZ?uc|k;8o&(VT(~2xi%p`qtOxmUt=&ZQU@)%Uo!z z%?el8Tu!aGpN^;kB5TRJ;;IC|1VwGqsVP|=bvNAMk{pe%i_8J^vi3u|Aj_%@H6Ts^CDIlB+&som7(co-vy_d z!~Ph1(|MhlU(|L0+-sDLB(jg~#s83k2AJJ8+}PE(KU#rSW271Ovl4=oHMesU`$30U zj5zR(ZRPs^TAKa0V&?nH6#O$SwOAr2MhdlWLhT<<48Tc6GGLF zqp(-T%Fr6##h_a&fAm;OsHZ@BP`FIaq*LGh)RvlcVL&oTQ4<2L%>$#!96|^nZmLaI z0nzL-&A|*ScSx2k&@U8rDK4e>rVZ32Icg= zGN$_qpzDqosQQH#+ZP=h@xPj$*Kb{}n6`G_&gEP7trRPXSwa4o-kZVSr^O$lvSl@3 zru@-egPCW=OhkDta?ocVUafhsYL^FE=G|R%`BuU%o%S5G)vEgTf0BUzcYovmlYw1S z2cRpTzRbT5IOU2kG%LS=2w5T3X5YkxxHm%mb_m;k_U{7=APd~?0?HE~{ywnYiXh=@ z|3ikCYJ>fwLZsTm_sz?Qd)qijZWELB?VvF~bP_~Gpzs;_1;R7gT|KDq4(yRu)>UK; zt{3)f3@=2F2&L|UJ62Y16fD~4DE%;%bs0bk(C0^_2k*_;{y8=D3(6n4q0xCfJ4-I6 z*&8LDVkMmX7b1M6@+c#d=z}=S9D`Tm+u@V;c@G)(Z*`zxUn(J4K{{v>N9YAro1GPK z%G$$_g|&auf%690rDWvJcaXBoV$Q(#>Q&c&je$Zxk%UM5aKVx)kUOc|e;=sW1rLrL zUoHQK4rPR0sQ+i~h?}w?+;9a515mg82U75lP%zZQJZ22&np=z(;zl3Q&xUbjR==`; z4$|6ZUUuE*z>XJf@`Fa3{BO)o5+u5Cl8!hjoIBPhUQBgk6$nz(^@}k@o{E# zJR@`G?b4)Ljialxt8ptkCHWEJEin%M!4*==0_EZIsU=ol$s8L^USxPMF^))Jh#fG|C zSPBK^N1`?t8y!-@Vy?x#%nL@mKtP)7^Sv93|1`f)$%DcuVLix53>)n{a}X|~hCEMO z?y@-qc_W=Uim1fzTT_>4N2)xF6D%K#;k~lkPQLQ^V?E`30R9&7!IUlrimoi(3<8M$ zVz3{U+bRX8Bf2#)Hj>;!nJv zMA-ucy-j1 z=e9ZOT_l~GtsA2SAb4~*IRZ|`_Bz&Lc~C`;!_A1-zQF^p(N}9?TumKDD*`mvg_fG? z>uTe+0^J=|%Z2bm9ENy$PeVa%PDOFb zM&eM)vN@HIRZkewTmZ53SwyFQ!0mXh1Ry@<(15B5zl_$KeY#WEE_U&2YIHoLf zVy;>z#!&6`_vyJ=7h(_Yz#8C+J9Q1!=Ejm|1YH4cnd0gmTxf8dqqEVjq}vlW|KrsA?|>iy zocd|v9-#t+YmpDIpWML9`+v%~p#zMYbKkvi|5%O$Bw_9!!?6esXzd+SI&UA-VwcVz z%N+8rz^-#KI|1Li%xpty20H7wOg>>{3LK^YA@!)qTe? zwUfg&E$Wlu>r;QGm9@vlXxk6Olhn;VUU!}KNRQ*NSV=4hQ8ecL_(R#8$KaFH`)kI= z(_c2s4qiW}+(m!Qn;Z{$Q0%+pXtQtNDS$G4G%y)GZ&r0Knikkl_@&L?{@Dw)w?5VE zf);hb?oA`3+pey^R)jGeT{v#tuud-iFZI=NXRhQuX}2vAQx(vXtkTQS8_cGD=Ty=D zvt|brD`Ok83fL{mO@%tPM?QUc7Wm-B<-Yft)9ZFAw&{2o5vyAL(OczxM@=>f!!2bm z6XvnvbI{cFSjUl@S>u-o_cPmPMe*J_2NXXE#%c9k9sr5UIEwq^*#xPx&uq0iD{~h4 z=}WZO1iIz^WmKIT&n?7O>q1<=0 zC6Ect#%!-Vl&OeUc@BLc_cr-H@p26tQ)jlyOMKuT<~GJXyx)q;T_O-@@VJ1J$c=%R zRss1_89SRJn0;j9Q=Md%=nC(qpd3pce|pwe4dRJrKN_#<7sZ>zTGam2g`##tHO=*f zTrujBqQyN_oDOV9zvvZV!owRDDwe2uvp zWue#VA$Z$5hML=7>CM0Suo2YesR8WTCR%I)vG^b zKBlOs`wlsDx$oG{t!4s0L*0)0Bept-oTNLxl8K`PD)tmOpXonSJL2!|J6w4+w?&Na z3~%YD3zH4kQbO0imRltD(ySFI&yd`dTFc`ZGk@(rRBi^Gdym zcC16Hsh}=rY~MYvKl{vM2GqlC2*P;BSzhL`sC|xgovher&04G#l{C4(26=o8ulwyC zQ~t1~zIwlHO(0jE`u)kP{p%*-^*6#3OzWp#?*r9>3)g{d^F;%IVq_Tfvm^Hm75|7X znJYqFoTF9PSu1cE9$&bTt6JkVHd2Q0$sxkx5l+$QY=JC0P(cT{X zB(c5qM1+kC1CO^cujymhPWo&F)*dX6NU+YZ^tJyinE6oQVtthN%bhTpak23&w$J!? zaH`ohq`;N4A3&Fg?T|2Nt*&LfF%tIOX$*Q+({6aioU*At%NNtzvv*CIG;LaZ@zGks z(a_qFp@o!y{MxLbejKFYy>S*?)v+hgAiu^c#CQ>~RTJQSeq6I}AfAw=sBTr@e?O#4 z6DMZMA}aigVXYM**!3peR(qeLuWA4MRW^VcY&S*R!p9+~mk^V&o%lM$MkW93D{7q^ z?dqCHMM9y1fCTTjmQqwmIm(?m37?URZa&xO`0HcA71rve$&38AM_{XJJ4i;J5hwVp z3qXxj$k4vX@w*>Wf|eT_Mn=R*u#XrvEPng_^0uwG_xX{4xsX4BGCEEXovJdm;r`L? zq%5m~Cd)!1;>V2;Jh*dBg>(?>U>kql(El2ijf9E$u=~G8TTy=uh`OvANykhdykB+e z(mlp4Qm1b*9uEiZYcrY_ zMlp(`Np#puOm&NBmlmPI+uz#+hn_X_vw!Zon(Qy|h>;;h?oBcy)qC<7+L}DCI^xH8 zPV4Q4bE0HFKiJ+bZ~o3>68zItFlt<^FGZ@j**Dguk}{wP~>>2QOWwKXGv>5rj5Mj?mysjH6g{a ztVm|7gI#udS-0ES?p~`hbvee+@vW;*tNP%toS?tz&zv30DR*|BUj13aC83j{^qkt- zb69j_b3>`O8L)Q9y&W?=W^Wn>H4`<=pXT2@PRPugFy<+~7Jb5)>wEI~Cy9sV`Jp%f z8g2IkOe-~gVhsIcaVKSt@BD`g;u$&WmcHJ>1taV;j%gcmkAxy&W5mquN%+nt^n3rJ zUzjZ_v)g{}eu9#L@mt?I^{L5TUNP2W4^J+OdC7&~qG_gBeP4GFU#48Fu%Rvt$WVg2 zf3{~-iSj%=HYjx}c$>q@wpM=-{p-xjM28CwUo|J481_5fum%0)7cag3#K)(6zB^f! zB#_{@>QU9YmzHX+B|n(z>#C=O9|lVYPAO|OWJCR7b>Sj4w@589bcH3kAmfSU_X~>o zRgYyl==DE^(H*@kocE;1e==z6%wygArgWEvCc>ar2&tUMSM+mTRfb8Uyv?z#C#(h$ z9|!9A{{+Z%T1uI1{P_5%?~L-7jkc68=E^o_BQUk$*2AiyN>A$QxJ`ymh*!9tw9Y$V z@LYc(7)5DKkfg#Q-|N0ucCk0?>%z#UwUl34PCS$P<&EWu-$94dtpAuCc_KYkV3EXQ ztzc}CpVc(qeJ9Yv_EqO1^-ao6fwUFRw0RRh0KBK9pyF#q>RL8WrQEg9pPr_v;n1Fx zsRmWLCB@alxjubj(sFA5Ws);XWu}xuuXwxe3YYO+g9M{v&%1s!7~l*K99>AAqMtS@ zrFyql#-5pWki(&Ua&J=$W_oZ%N>i^;j_4lqK%{@h<={&J&wgex4njr%K(7{ER`bbF zgA9_v6^(%lk;7Lp_GNY*<61dI+KP`4A3R!!T3ZZ3m2Rm-A-1KR8 z;(I?L|E++v_KkI-{xwqh&}p+jFGosjZF9`O<}Yk3e7&1Jg`G_UF&poX(zdz7m@{be zmr_)UDh99clj6CvHeyVvtes6c%E6H=z5FcA7hRET2}en%_@@_cnu}%g zW}h&6gzNMC=R4?%@gtUq&65;0qX*jU#~_|*9bt0cy3f0i9*yi@Y;3~cfaN_%S1Ngs z?8N*g@;miUyHry%^?F?O^^XBVFMf|Fhsn!7_6W+ZFcX&A@vxwQ9@2BS8y-z``m-l_ z-+1k!IrZ}8_eTxS^n|6hQnw5WXb~;tIV~Hf&EHMVwC|LNS~VtlCu&4$$DT~Olhbkp z_3Hqg3(zt|KT)7CY=^?W86?4oo4KvE$?H1IbB!a#&5}dh>dNB{9nQOVz8ZznV(BN4 zJJa7(w!Eobcn;=C(?Fa&uCrBlxGYfm*{#BlhL(&twHNbS#lq9UdaDdy=a~t&DTjgE zn=x^>8sf>3EYB)P9=7LLOB3n$bMuCJQT zwumC1m%XGPM_&Rnhh*##T{KTr>CTUGU_E~nJjO=tvdnfItUG875BQ1bmi1ZFsr z>*2jW5<8!N+B9Z-We%-%{P_N%-#?sXr|yjY0)O~}Jo9;_n3*M$rlVTSEbR}y*g(S4 zO--JoS@%5BWumq&+e>-`Nt4jiw|=^X(L{Hg7&%6|tM($;ZbTFuW*A(_lE6A!PM$ei z>w|F-B#ex)HbiEb+!8; z*o23bpYCDu^d%MV5*uNQAMS~9p3tov0(~v1_G*(ba{gF`n>q^p;O#|zPv86>T4rP} zjOTrIQ-fk@^pf%cw#!zSWpofopkNSQL2)Ns*5+8~jud26?#Tvo*(l>yUqfRuwnopr zs>WX8ex83&{i6h*cTej%9-To(BWnie+)X=!j8~Kqt#qmZ{TkIRdx+ieDs@$QY)DAT zwcjW&ze8rEW@XgGv4U(&djIEWWh`a;IEn*zdh~R&bH_{V5aHf*`^u;{mf}_u#Upty zz7?5@n&j(czp>R?npd$sd#TB=|3}>ZrKZzeyd46t-L_UnNLEx<~?z^(oS;RpHn2`mHx-i*Ib;;q&upP^-0E!-XWse2L7bFTqyS0 z#j#H7G=?&=d-P7dl&NVT&};5 zt9};C@3m0u*^ngj?mPQPBAKIEeJQxbzd&w>56U|^aH^Q*WpmU%JuRf{%>~%gf^fO3 z+_BI2lnmCjQ)|>bKOlxKShNmpmAhw}XMOcQm7Fg-NIvm4`k=@4r+<9-O%5F>_^W3y z3Ms;zLlSzUh&S<%8j0O_Uf;T`ovM(#jj$-R-i@SXJDSWw2!~cv{nVn9FSW+qvSi^# zx5>v86KU8d-1l+jv2yCbJjZw6F_6NfpTy|ao24vwKCJzGZl{EU#b;A^!o9(kUYXet zN$>BK+F`RF!Ei8#jQ9{Rj4n#8(@6DO&~kNCswqt-y0!eZ>+E0cWn0{;V;7Td$-IO= zt2UZGcJ4M7-jf1q8iMsD$&w9+uovGA?aH;$gp)L3C2qP9%$OyZvY5FVyvGZxm6;{3$hx4gm@uxYkI_Ur@}(3Qmz9$;ee3w@%b*$=`FyFp?OqtdNOZLa0x2-*d9#(Xiib@W?}9$-9x*56%4KzT-OQ zsKnT1++WnCXkXTXCw2twyL|yg4ii)FI{89wo28k&@M@FHC4OR~bI*}>pSG$3Q*YjC z#2m(R{}N4O z&UF%xp6yya^q9Xjhs;nmY;~f)W=;A|;yTM#Noyw`2d5HbZdnVVewtD@@>r{UKh>XX z^Qe|x@WT5>nndYqATC6(SMQgN%`>~Fi-vhprNIgqSH<@1UvD zols!09}m#xNXwm_Wk_Svl&ekW?5WhNHD?_Cvm{=74$j#PdmZC0Tg*VJcs&0zAtl8R zsez2<;5gkBybOT1C!#MiVlfIX&2C&!Nm=hr(&pW*ldP?8BHp{A)R2UXO9$a`_w>r< z>m@hiov{kk&wt$r52Evy?hG*AVZG+2!~sAd2T91SREyvGEhUR5A^F|rWJ|()iz6Pb zJ2_3PD@2bp>r||)hG;csN?f0b-YlJP>8dkvaA#&2ULmWn^*Eg!i>q|#j_}sKtaEUw z{S;wkD_{|Bc=aOL)$u;PljX!6WR8(E7^){)V;n$v%hh)F#?Zc%goZc1+CStX1M>(0 zM~(+w8ib!Gj7hbm?v9PU_vM)utTlD88nz5c1TF7Dtmc6G4kLSa8Q^0ua?o(V9f~N& ze375MzCd#EdKOnQ>S&UK+V2@7g?sy6(bUXC=8vBeZnd!_T?%AldwKJWt{6rT_N;wg z-mcS~TA!u4{;i9=KAf&tQ)*kv-jOfIt|k9fb>dy8_f2*T4HS* zZT4A}b|>2@#do5pe`w0p0LhCHvLQ=_k&%LqPN3YoM;8={C}%JlU418`^FLFpbnIfR zKG&%TE7bOQA~f}M2ih|1or*R>D<*vQT4oE%n0>jDM9U!9dKfMgTSAA8YOx=v8~pug z!p+x^&G5s!)vU4&;`d_EaG1z0W^RaYasm*2VbF&ecAI{I>>6~QHvYKzil_M3mt{WV z&ykKUrl*dWZ&n1%j48b^x3d*8=Ph3CM_bY^kUda=R+b$S3e^cn>V4wz{`8#wUzQ>M z#SYUkj+zW}F+R%z&W|0J9^@-md0J$F!a4If(R6Q?+g-y*p8SkZ@qo<6Jzl`9p?;C+ ze@1q3S(vxc`K)BkKX#;o=lY^yrN$yb+@jF(Rj**0hcrlKd=nGz9;E2s3wHSYzT=MS zu~!b9o@u^Inqu}dtzj?$4Qo;{&EBBR9oo3Kg3gi6G zs}T3R!CW<6f|ijdT}^zX6(|0M$YE$6e$vP-O(?EeDk4OZyJL9OprieE)E4d#{ah;~ zLvc>@yp&4Uryc)di<-J*>!@iEM>yZAIsE+A1wL*?(~1WNFOD6}OpOt7*9S!w6Ez8c z)Pt9c5`wgzP_f}hP@G9+tf8l4y=_~Bd(#_B`7Z@d<@S%?h*^1N&Y#wee^PWrEl4~l7y0{u&9JS#6_Da?W#q0FR%H1W4qGvSkz)THKpoR|!M$OYJ~9th?Jg#rDaS^TkP z2@^a8Hl@>s{Xk4&@^^~eYMVtc3RG?~qJ!jy-zL0NBhv;tD!JAt6B}`Q+vszw^Q9_V zYjmB}gB|Ip%E%uZ+9F&I&1wSF$pZP_tl+$CFTQ##zh-T~`CMODV9X15Ts4026=dACocuy2a2=sha?5`g#$R^Wx;)jse|KlzBSm+eI zvx#^B_{-A>&m4QZ+VCK5bO3cO9_y#Z-O}Z5u=*P|iR*2Zhj!iT*0amMz9ery6_I_C ztSvD)Y+hUAY4_;yUV}^JW3=dNx<1u3suhlM`sRT0Xv^iN?t%-Hd(-)e6(gY`&}!b~_@e9t(h*=$`wFIMX}!xGua3C zuP}%2?>*5r(x4V~mTn)X%Q*^j)**y2l6|npOc71({>;_{Gn!q~O^TJ%828fg!xu-l z9N)yuI#QUx){tJ#QT^*S0_Kt5op)|SulBDYF+-=BAW#-E5?zH0wkn(hW%MKoIjU@` z=R3N^Pea!?E4vb6!<#QvLg!#8gX`4g*k<#yUv_mevzY0{)BTEZJV*aBN(Et*Kl3D% zx$|HY8>9wF>2#NS0pUhKO9P=;cNV^Vwbq;44Jz6RfC?xaGu{`*?)9l32CUseVi*jk z>ZNeV*q@fynNii&>dZ==n?h20>3rKeN#JB{)4}scx-&n)2|96DFYJ?9Jw`H947JsEykr&WmB!vgbP%=fTx~P;HwA4%BM?J?EI@ZDoNr~IaMev=bg2r!fyU~H zwSW9~vKUEB9x%0_I8VK{4ax3qmhK}!C7maL2%0IXInxju_lSnge?hWTULXW+FS!Qa7<%}{sJ zsCV!Q@M@pwq8W2x@pDpdUULcVG(p|qYAC<}q*yQlBLpe=KTrX;6YY1>!P{c~fkp~p z4U}PB`MDtUnFdal5%wfzdymq`7 z`4rBDX5B|%zRn$G%KE~2)SB%>DMX&tV1FH^QY^W!{M{N8Ru$D*{?5_o$2xW*)dkhF zY(6|Wv@|>Job>H5b_as6;M4sXWq%*=Cq{vspZ5mnDcX&HAG>jicyx<-l8$1$Hx!uT zFtns)b`!Z}S~F&+NI{XBap#DOURfSSl?u(JAS!GCJfc1$JaEP{o28!>sc173~og-uNDyrChY(GfI6+x=F3 znocxb$#b3|cm;QvNK?gmddS5GY6TcYsQ0#0oz^j;Ro{L;XtpUpWvmTY&m#gW`B&x$ zYIH%%YYgxZq<6$xL;~U#_B)>YZ(X#^3AfgQyMXa&u0eoADLnDR&l)$dm z72x=*6v6F03E`cfYBCmPSv(E8dvqZ=RDRhUck`KS*?kHwkbmaEL>>HRx>#;8vWS6d zkTkwS4U(yQ(kkJvU-<}p?Q1Z9MF|Msfuy^rw9S})dkmw92C+sY z0W%E$0DDw<4-Q);%pJi9qXgUbmY-;b_X}D(yV|%$T^$cKuv}^wFR~j^8*<2ymyz*s zkJ5tRV7$Z4-~-|@qX_D?nXn5G;03Z;F^T|2W)3KNZ@5x66^D1Cz>S0^XG*<~Bf%$O z6ar3pJag_)>xtD?c;phC59LQod}1U?i}Y9Xg~hxcF*NnVv{P(iZBb2=;K`c-9K%%& z5I^9*2B1@Opu?p-d0-4Be|DI|NMf?KU=5bJHi>V2| z8^PWDfYk5RF>g0)hzMPp@fF$0B&}4Im;bI5Uw30+STUlp0dU}?H!7(Kq}Yw?`%;)m z?1yJg0twpDB(;N(vl-M*nz8Reo@frEApO*(!z^|*Qa;Gc1tJ)p!@fYF!1skQ@?y*p|EeIL*QI^`|z|6_&_YRw3eS|Xeu zBj^HQEg7#{4bb<-7RGMZs&PWj-A;>(iQ`WU4ajG`J0;Wy7K7Apz{D&3ZInQsR1i+4Sc5MKdOe`^T1x(Y$*c?A^<1?{5*MXT2K^*1APT5xkKKx z2Q9K;wBe4pd=;Qnbd|DsY-?}52k;ECz-})>cR67q7 zh30#WU`D!BTo>X1WT7-z0@Ya$DyyL#?-JfaxHbtD>ZBi#1MW#ET8DekrJ*xmM;)XV z(fRXsE;3#Mc?`t+*l4UDHi0QNN+gFv`#agtnf)8+hcr{5)5e305vjk4BfoY9nPLrNHJhrvUA&M^hagZM5g|U48LD{>+jIly(El%SXT)P*7mzC< zdDBgH@O0l8kMC_y>g;%DwqK^3HbQ@>>*Oz$^K+cU_+JRf)X?TNYW>RSp;g}!--}35 zJPcSj@5cQrCwk;;6zJ2%Y@2Ld_*ekyY@%-W&apF3t^kkv96C(FMuILeKYR7rc4A6E z=_3$@=xGFJJBDtR2g>g&VU1q3g;?K}#+=Q}ofus4>RtgJzmsFMGqk1ajiZh;PXcUP zBp-J0+2042zA(RI87Hp)eDRG)+EURU4Sj(IeupKVb~&D<8P~b$NsFHhxOAJRJgXlt zFZDQWbi17KF2jSCw`MM~y&wXtY`Zdo^nOkN>l-u)r!3QXJDJB|0KJd@U{B{WB_+k9 z?Xjc*n4h4|90&6ZB%w9D&=Qi(nfScWRS_U%+vJsko7>la`nRT0$lxV6SokvSqvq0w(w?V(RVR2YPu{??82?(EUV`8g#x0 z3e21&;KNi)6+h7q?_cyKIOV@?FZlDk`$aPe7K4@nz`lMkJ>1P46e1@y)j_N>-9g6D z#Q~S5+f8f)9PxaFfB5#sW_aghI-xRej*)N$`u(72HUf9Kx~_g-g;6k?-kZ7T>O63` z+3NT5W($}Hux629f!a+Cok@6c%mlG|o33iZkJhIy?mnUaH}c*)s>!eG7R4?gARxWO zpMZ3bDkTz8=>h^$q(wz~69EZQq9DB~RjJZJN~9wK5lBFK???#>(j=jT07*RC_kL%b zJI?ohj`+1)Iti9HnbIr-~5!pUTTEOofLpqL9i)OIDbBK^II7>4_ zu?zq6ynZiYh1tLn5qcqp@^P``^- zq*>hH785~SJyAQ$#_XUS&D<)DDC^)(K3&3M<)U(9y!M-=@?)RpCdZCTNP2`LP=OvI z^DUwof7xEdCxpwF@zHnKvg2Fd7XRYs#REANt1joFUq}2=g;q1p=>}=VGg!8|)SO4I zp3csm+_z85bVlbt{~ux*|6O_Lf2rvK$YAtT4b-eB;DQ}L`$Mxn)0j`C{Ry;eK(nyp zujbSwY(E0|D4m9)@V7cf0WPW}(_b@FI@P~sriA0aW~QJ2gN%A67nsQEBHOf(oBgdY zoIe>B_aw0JnO)V?-G+0~eKMqIi@WUfOjaDxn8{4hk=%%m(G<(^j|K&~ z=Q}UH&Ult=I%m2qn4MgDzry%Zsrp!{nOCs^-9hqCA`08#Sf+vX~-ZHkR%>TP~eauqGpv z@~NSwrnUi2gV%g}{j1?AppqMWxjb8(bWHHO_bJChkB!58GW(xaXLqsyezg75H*PDN za~(0V1snAK&#bdd9yGaK(nfxRaFWfsNWGo+y`z=HrgP|iKIr%0#eWGcq#c05G5C)q z_Xny-dOGIaJD+>PZ*-Y>*}T))Oubp#DCGoCu}a^&l%`D;u2zhG>VqGSZzP4 zYx-iJhFM?@^g`&QE^o%HEDTDHwfc5zOFZ;p{DQOs0S@_+pM#RqOwSbN^PpgSze3Zy zj5LZ(JBC{lJfkYl9)Gtp`9df3_Wg9?$h3|7X2mV58SEve5@;9kHYHoC^^z0EJe2g3 zu#V;m77$yvl^8p}z#dlo?GDkFX*f0`Tbw~jwysw?)l(`N+QTArZkLHl2e{Q|Zd3AL zk8+|R^nn8Sv?Xe&_fm_aA)FZzishFX+1I0pV_1aR;>Zex-!0~+Zrcf7ld^yAU-?Q1 zV^1>(K0mzC28D%X-Y{1jSmhnX*oxKLVLxwK-LEX0OvFf_7)-Ic*&OFryG_+i;#`KD zZ^?^1ayBAo#5U$VAWA7&U-6N(Znf<_6&C%YSlY3l);#lmdh$ozo#x89mbL4misTL| z{WOTqGw_;~7QB`f=m(;i5$6^M6Fn7}E|N6;svBELuN+HlRDV&08|zJ-YvG$=BmMPh zh{59d_fmJ?$ZZS%@+4gaIY-%&=N8aOCGik&lBYW0JgY-RBMLzfm+|RsGUGDKl>qqNp5DoIE?cg*vL5130repw`|FHr|U|E{m zS+m;>Y7^w?zx0lLr@kjuWiYJSk*_Xqy5IdpyY|+;4NPy=Jp;MLlO%8#-4_vye8Lp{ zSC-a=&vnrT6_o^n6>Du7hH&mHs7I&QZyOA&30h($(z3a~;3uOhe(XrrF+A_&;?PM| zE~rYftWDF%{+X>^?D;DnH&_dJ@(Xx<8!MtLVSgKw6K>X23j&fKChk$Xg-^E!9Rg;S z?i~bpqw}RNiQC1{5)XOj?fgWgl@Qe@ZOo!nAmWxR7u3;4p7WpQF9N+K_TF)Wu5hX_)%q?PEq{+g&o-u^z$@1H&5v znwf2=X920sVfhAD_lGp7#K4E z^lN!d%zZf%-hV!h{r7bHwR3xi1iK~25H$s|D#5&cAu^pIEi#a2neXbd)`Wc7RH8*6 zhs-CPT*mX!EB!tC?y`@T-mBj_femB^F&qGoAx{xZRN85#P978kS(9)*#=Z5bE4Tah z^!{OfjQ)_k{)v5){0FnMoganAMkFl}3Jf~ki91RXDItf#u!5%6y5e7{OvoS=jZ4mr zXaC{Xoc(rR5Pk32H4N`>!4)(kaxoW;zb}1;d~#^pCxGGBf*HXFKgj-eX@e_eUNoam z`?mrM?a6EFXWMTxG)pTS8b)S|ERqx}Sugj<9+Azv{J$@~d75pp481>>Ce|ls*^mN7 ziFS-7yF8X@EY?)()|C$`)YG7x)p=vuZ)$CJr4EV~>5wM&b=FpJg7!#nIaJ=4!1~iG zOw2?7%Y3)o7Hp=NxJ&|;-W@8bg(yVyq<%ELe_)+eWGa<-Q%$=9_dUf7DtDFhr}_rG z%X14vo?$30~y+J7n*8<7Q0d&6P+Zl!JAyk#C9 z71}Nnc7h@8w_V7`}|;l;gIBW5)`&War|rgRdLa^-C#MqP^?hj|ikD z$y*9?)(-rI&f~8OHB3T^{Ok~k@jOgWRCvjtbZ=c)p!+g!u${;}W1;1z;E^n@f|(91 zR#Q?`%3gf5u_b-ozp_#a{BwM^Gk14O2vcq-EjaLCI_gKN@Qv=0k!u|<4Uh?f%#A;O zD;>7LY?VvzFn{Qk`VAUV8;LNn_v)N8CyR@pF)f1$`NRY{SiGBmxZ4$c){xIDo+28Yj=l^;5)Zkf%52`7IX`h0x_`b>hvl@< zD=r@~tTqjQP>{Ec5GropmFqJ57s=(Cdgj?%D5)t+GiinP$M*s!2XxMrwpBu^ZiJsu zd%u=rke{8h4r8Fw2U?Immv$78UfB+tq^N0x4jz99VSu%SFqM_kw45d`I!Kd`>v^(>|~A^i<3|g zOIg=hGe}V$&)9NmmrWa(*u7!Zwg9QiP;!@)-WPoxr4sr{Nz&uv5C3X*HCHaqrnYHmCqSX#?#>w*+3R*>#mY{xc+B z$7fgGU~xB|`S0r?-tBaD8P=r=`OxXzne02?c0q23GP?+B<$u&ryk;zjSz_97?Qx6( zy$F8rbtOMsQdi}QzJEDqugDp_ch6od^T8DQ16}bQBFW29xIP9Qb+k9F7F&$L(15S)~ck zbqPP)`*t~7#*;G9GOH~C zIT5hM?3}ZKN)wWf1S=eGQK$H^J;%MZq*)s+WEhZ-Qt*^1f?8mrzs`@LW zMPKnvZ{M+~+^euuT5PF8$J4*FkM(ez*%9FJKbeqd5&5jV=e+slBV?Fw1_O6{m*J;| z@Y%cd>I@a-7H5^-Q{AioF@LDuHfKSjbLvXV4W!*5&23ISNYu>lLD7GhT`VPIhiNK{ z`!vH5f)5hZcRx*|W4AC3kZRvOgZ>YJhQs!EG^`M)y^I*0OD8##pyt=bnxASV>p-Nr z=2SnybRe{Hv>$zH4o#jp2kd>STGNmzmFBQSd(Z1EQwyv-ZqZ^=Zebvty?|W-X?<*=5t7DhxQAR$+Z-l7j(p z!2P1j^L%Zx=41cI2@mZ9`4uyFUmcncN*~`KKOQO2+4?yYsKLvyBH(OU`+QWJ^-UiA z7sQ>)n@bmdF>23=I}B`KshoA($Y`i)*%Z`IDBUW?S+K!JI3(>N?T4?YeqO!#VP}f% zh~E?^eA*F;o+j(1j3p;NjdR&)``qB^1$CFW!C~C5X7RYN*t@UdjibCt8qwFKTNTa# zRg+PuSh&i{YJRaiDVWHwBHlQQEP$$hoTn`c*J&NOumyGc6ytS?p{D0$itymg>xq~P zPhJq#%z`gBhOZAde_MWAlVNg^UUA&+<%?5c0uYQQEf*>qDu?=dzzo+69P`;Jj4RMo z1e>zVafd5Gse6WzW@~o5Jag{dir$jx!;X;jS=15D9C8=Fhif{+2dZWioT0jft(x9UzV=aKR;|-dZ|2MAZO$7 z{^Oat^d92E=FV24V2fnaeW$6zdt%pUs;r;&*E(|XiIr~!I1z(Rrw6$H3Jg0o1o7uO z?1}U&%fMow7Rf&Um)eal(a-BhX^XBFP&wS*XR$lx++p+Y`C8DC%$!vSvijMQES$xx z1Tu|jR*!n#@mQPMU*!@kOEO#u^d;FjI5s9O->RKmmSpLf}6o^xaqM&@-uwguL%5@1mkvRWw)j zXk^uJ%&qc6aMq)y`t+-|%35aDgg4?uVWK=pkE#%$cOlUP4^fk|o+r(=Y1@S`yjao7 zz^G_^o+?`%7;GhSPL@~a)V`73RYt9u5I4Yw?o#_;^^7Scq%{5NIueZV@s4*9>7bpM zntyu&Wutc+w9q{xmW~yQ3i&$TJZY+OhnZ+S{(Zo?GfV2DR3IO1&zvI45V8itf@Kf} z7CzIJPi)S0&Rk1BZkxYaH!$U~_uWGMVz_g%N096heL$~W6HMyn={P(&XsPQgDI?MJ z8)8tf-JwxO(~v1LOW{I?RQY&*RBzQ7t_q<$G?b*|$r=4Ljw~vc};-l+dQPtxPOS3OaNMPTNZab*Da|`Q} z1YZl+uVn3GSQXbS2(M2Qe_Q+Pnc5HbU=~7GC|Rd?O|$a`tdrXVRpiRz{HDwG*|Pa) zrTlSeSARy&60Y;R+N2(*##*aOe}H zpTEnOCiV&x83ODX3q0k6yw%5l0#0Q5ypx&I%ILu8uG~ez6A_O1>|@*@ne6~5hA&Ca z@Mw{cL5q-3^aW|Cs+U*kT=|I9`=tc>F!tx>mXk>y>1mM)0hsLNi)W5iwuBEG2Ovwr8|kF`h1@<;qh)!M%$*y@Ot3uNusSfhD-X=57GsYxz+GWxhJjoh~l0qhtt)HFKvvJ4c)}&~Xl=v*hveSi-Y?=II zRO>T{L-1BX@=Y+Hc{0$0AlzZqOMziH*ewmh{K}jQDu_vWu1&FKDuq9rBk6A@%_e-h zOW3+>TO*+94~vK6^*l*}lbe3WhEyzy;E8LAuK@<`*=j8Wwv^5m@OQvnz!N@8Y`<28 zbXc1)$aj9^TWY2AG(D^@{byy7l$rXet{>f3x{m^mFX|Ns4dBtwQ?nq`lquBQzvBO)VO5LFlR>y{ zUQOWGGCfvp^OmZ^A9rx4BRblfzWh#{nYRjhw%U1(4-{4?b?Un(Dcr>(!-we`VMn??$2N6hxHLBFTdp_?mWHS zKG*rxV0wDqJV4EJ%K) zgz=(eD)-p$$|6yBceUc8b>R4BW35V4=H=qH>|pBJX6+w;>RkGw*Lx59@Z7jw0?DNj z>cPaS%U1IEY2A{TZ^?MRQV*Meapupng*-DlrJDC*mkPPZKkYkDc8q6nj}>z#e;iGU z%~jITl{1i3#g=VXmVQ^vsUklj-7a3A@r(w}i5jC|-2Zoj1Cbi|(a5uczHDkeHA!l+ ze%xnzM7%`mA5WE$qf6Ps#w)F6B=Kb!GlBza65J2x@D(1bqg*#=Y$lm3TMe|2S5VgA$5Yl2?@m^c*lmM*LkG! z?Z|i2jT3sr{)szC7(Uv2sFE62GM6tlcl$IT1|+CK5psrYtpcb-+_+0NGhsrpUM_qW zX=lX@e}#CfId+)OIhJ#k?SA2H*?fb-8Y)-pI@VC>+b3h>Fj*Kg81>W(J4$qo-1+EL z7~dgf0if@POB}sEEt6vLJFjQFa-$67>LhMQA0-iAklrmY25LFuYcOd*u9go+p9JaX zJ)CNO!CxkY3ly~Xez$jA|5#qb@5=nM)bj<_5%8f$Vwt`_UdpOwX8|}gmyKkCPwE;X zKgF{b=8~Fv;Ecd?$aj@20I0>VGaZ%-2tRE7U1(N-M&r#%`bR+$;-$a1%LSnUw}VK- zOlyOivxH~cUFjF7Y=p2ePl7<()f=i9SuqJ(9KH5nN--&K;&hJ|e<@u-L+Ws1>h+ZX zg+#;>D{TK@ShcgfBNA^hNZYs#7zA9CXNJO{Xg1qs*TG1{i&)W*O3@aD*A02BPK9UF zmCMMln_FyVaJ=j@wH&dCU>XQiUrM)7NhZaJ76%r~Ci<@3VuToV=`>ChD_QQ1yUhL8 zHH%XrWXaEDO7AmV8kCW1fD$^Ho@o`SgytBKz7j`qEmU9pT(^!q(dlq%zEl`n1I? zSN)oC-yl6LlK&z_0ab|$cwIZ}ewl@H*%aPKenhYe4`jx#MnUf_(It#4JpYBy)qIy{&4*@D-;tUL2MJ5$Fzpk1Y$UgBEEw3V(Z8NS7Li|B!e8v$L5f4 z@1UtMh7)L~Icw@4opC zz)3D(aqy!XC?GXJ6?WV@^M|J29fI$(1*^&j2!6;LB<^|e5S%aN!6f{%0hx5ci^}8^L?G|LubQ?aED)et`zotps*7fwAWg&5;xnDJ@*Ji*K`pMydN1*bMfRUE9Z5%xdd%~6gR36DBMdPLgY z>RA1N5)$%3Rc&OGrcl$D(MtENWm(;B-bX**UTTgn`8>DzkrpBagy(^G>-M7bCc`lc znUPeO-?g+Ig**p)GB~}kM0*z-#*+3Eq9Z z|9JN=gMGP4`G7vGC|Mv{PyTSSHJml4(kTnfesg%WKwP7I;QNr0mwHM+YQP#3o0m?_ zEkXS}pmN1v(0c)JyfG8mU~q>14^8^a-@x^s7hm>=Cb~L^6aC8w2N(#`@IN#fojC+) zUJ$a>q2L{kkN_hUstN0K(Ny@qzx@1v`(?QD98Kw?O9&7qBcGcC4C*No)9kfCIgQ_@ z@>W5}zhNa};)ekB2!BkFrtkxG_E3Pa)DXebTB%PUfyfI!vxRKah7nX@PSR9Yr~kar zHo#sabRqXxJJ6(O802mv^~3+(#phGSy7wOcp~=;Xfs-Qakra+|WW6pBw1x~BK`q@2 zfQNzQqmVpw+QPqI(Z64OnecE7HH=>piQ`N8L$hZM`QN&qs3ACDlSVcNlm%X-6gI0a z1EMmUnzRmnkocXnjGt@=jI*xgzYYm^33aFtGVB9cscE=Y9K}wmJh(UE>9%*cuYXI= zV)gTru*#L4aX-L;ycxu=mLAL;bQO_tW66*a4|NUeBl-Ok!ECpRIb>%NYu7trBA=VA zspK-{wk@A!Z8%YN(IdIkBs#AU<}~vI3F!>xAV5woUV9(zZ6#iMnCxumq-=7ILYib94DOT{P5lg0`tLmSfBQeV7q;^rG%jlGdx7MWAwzJw z`N{);@pl(f@}=Mu7lhLZ&@BB!vttDiG#D}I0dju^dIEcv zdyswc1|C=uA1Qv$@2IetUVo8Nm|e=3zF;})!ZD<-qT%;6@kP0j#%ZIr(_S4HWD4$e zut<1mTykMiT8^X920!;TPMF>_rJ)hi6*<)%EEjl^#0p$1bQiwDYOlA!U!(b<^v)Fz zNQskeaIRKfgeorLbw#sAvE{t=ojLfUjV_{! zJikOE{zhD9SnitE=a&R*s2U${QwK6j_f+YagK<*LGxh*{T0C99oA zwkabYCQKtc58y07e}4*)1xRuP#&z*8o+N!LKlvZLc{thB-myfJ0AD*&YlF>>}4vgqvdPe2U z!KHO9Fd)#z_{rJ34u{Yi)g@L9^4zKG1YpV>k15&ks&52SIOC3P6 zl5YX~0$DN}VKpAArIuAR{c9$0<{$=YvY2IVJ0VmxBEJRGtx38!CdEIg|EZ?xWno1* zv#{#YAnEEkGOJy~OY`Riu&GvR3;oevZbW`g#cIi4qVKxMw6y^U`2p8;CKJ?I*(tw&24 zkh9cL7!8$~`~p9a;;TT6DsPb z&s^-5(?|wyrenf12hoa>=p$*^0k2`&+{gPZUX80XJTriH#TPGahX=ArNB*ujUFPhI z)7xS)s6i7L#`E+g%+k2W$M+^aeH;2pz&tk}mj4&g=G=<;zX(CdS-Zc4ARpxV;ujzc z_uuJ6|H;VgJsfYCa|lRb=F-PHATgZ`0EsvZDA1w*O946>HZow|wJk5~M7D5H2bLGR zsCjU6(^EiYl z0*&`NAYY8YC4}Vb!6Mb5qphNVG@ddZ$-LkKV`6c4yc0ibwDU3`M#Kjdjl6irA?R1+ z=-XH4XV*S~@1F;PE|}4+Egxl=iy_B`(adcIFyJJI=Ubid)hmcHlGr2d8*(_C$yytV zSUlq3AP&pNzxt^m6!9+jE93&w1z4#Gli6ytL9Wsh3^Mkb?F6*_;Iui>j`ZLoS%ea% z#vBMAbr=p7ByAWI_!6ROzu(4%w=9*t%iY=3NQiH?Ls`3)xyiq;3%dQ4n<;c3#W9Ou zwIJ}(1a<)1_dYZSaxouVB6@54nAQ~r=m=dXaPU^&2VVvI$`k|VlV^IZCLhFPO>hWZ z+>U^pl^;f{^pokaaEndVsqfSKgyAChl`-YEXn6rALiH>ul@{rgBSArHvRZ68|hQt8qFL5vlD?hg&< zf7P6U;H^Cm^&-eTj$qS1IKB{~Nzzk; ztmTO(c{;qAA(bvm^HAp&@LsEJIn%rC{4xZyoMTmFn^-H&JU|P!3Q2w#mDaaQ3mn0J zM@^PTq}2Eka#&`kgQrs)T^gg(!Ca(Kozc2?zj3d~;>(n4ST_%8menRORq_^8C}kRy z_uxuE*b$j*w~=*Sh(qG_5@z(47PdqSE8f67Ct5GU5g8p#kWRz%EFU17K?dURbBF{C z)s^xN*gvVv$zdhT8G)8%{Q_;XRe5k9gde>K?jFb9v;Gzf4f z0TBv*(Fu93`EuAKY%1N&99)rb*c~^?$@ckc!?_`xk6*FBgt0nM3jfg90f(=Kt=VI@ z4ZxSkA&FocHfN8ysC{tGee}zmYUHMKF?IMknnr#wY6t-{8LtfrSoXu5Um9~$Kr$JCI8{D>lw}8Avf9l%QI}Si^)qpPE z8l?eBk2`kf`O3Y}S;iE9)UcUESZ!C)id3Ko8{!9}-77sjeNc1=th}D2Sg%&vrp)?V z#7E+;MX33BGlwh6g`WejcZU)RTZ~6GAh$-3mB4%Y81}^Qb<^rsLm+VTl3=*Sddwa? z17}CtOVSfV@gO;U-R$fa;8zkTJO;fN%#YZ{T53=up3I!)u;fp&Q%H@#^)hj+r;n#5 z<>*<#LH$QyfhAuft?KGCE%RWw_~8rg(SKg ztV^)hwcoWcGk$>Ne1UXjnrup7#m)~QAe_8C+Ku>vT zdzy#nMY?^gh%o7dT~xb_2mtBRYxh8*BE%>zC$fNGo

R#Btp`(ZyD1lAp)vx5v-M z=JyZlt81%A_P$)I8}W(Z;gjkd7=f%#QfY4hrPX7w#a|;gC69%W>l`>SYQevzB2Vp# zQ)$5kT$$Wz_)83>d`9lOTN{D9w*!QATfohH^jD5>Bj>0C{iz>!7wk z@>u4A10xmx*?aEP-o#%a;=kubEo>*skR-BAdEd~rO)-D*GdO(`oJZ^t|DuSV;R8`b zkwp1R5w-qsih3S=qewD%ZeGagjKC8>+R!g|axFFs4OxSOfijKl!#l-f));Ev>>?Aj ztc4N%AD(kG@#Us3s&4)r2IV?9n0Vpd(odm$uZv5`WU;ZCw;5!stE(s%d6JI9IcF>7 zh6`%?3#ClR-|XAG#0t-9l_Vs$3Xdsxa<9wk*fCbPiv4=tu<)z+7XH4zAaUgTZK=*r zV+z_Zoa0CTT!(tOx~!hgM+)0;2-%!(AKTC|>u&@ixfq{km#W3}tOAWI8B7d)WvN|} z9^`kZipc)XP)c!~6&I=pHDiKFU%&tnO(f9^AGeQ9{YU!UjuA*MDPRfX`gRdRXL@srbEkXrX{EUD0d zIcB&}S#(!^?7on)<+YU0un4&>!Y)p#0_5=T_0jE25r!4O$I?B#@Lh#(Xwlq_hFCS} zIjefR02`D0)oFV8lnxJJ%~6e`z^3TQ>4j>;_Ad!>*-%*RV7#OQKNEhgDLeuw52X!h zfBFtYFJ=xfuHOW0iu8(Kuc`4KK1iLoVX#IF%A3x?XuT33Wi7)_2ZJ6K)5DlM_~%i1 zYw0-{Fzfr%3P^r(KZu{y#jkhspY}T<)Fz%E{pV*xUDKNoY|W7kp=;T%ooT9Lk-dz- z(|MpsW5>eJT{Eu6%cqi=61yz!PIm(0q5{7`aUMw(MG*V^i|^{P&YxM*<|H z+sasJPVe%vb!9VFCQ9g%txl}b$LjJV2IE>WN46`tQk=I$f3ukYYn-##VYaFarhP9r zBplL!fl`YYqnFARub5!W(k8q&Z4_}EkGW&>!()@0oi&u6VQ&Z+zAaNk43aM)i4mm1 zW69v&R!LGFUV3RRhZ$=3;k$FGAk!oN@&^dyoopiKKAd^o(jmJdD8RA!LGy@>#4RPs zy#D_0*op$@HDV8Tn*3;NGp-teG;gY_4L>%U>h&xq zD-iU1J{Fa(x~KE87)l%MqKC1CKdhd(c}|;9>638CnG9kwkp0W>oPI%NipXJsYEpSe z$@*uo^SMYnhouR9SF4aaL6_Giu7x#@8w(@FhVGi`Nr?gd4xl2m+P-k@vWiem zvLn3UDOKo2pP%lNM>3GosfyRn25~!Ca>_Hf;C$!H;}~j371wwqTqz82@%mY3F!?uY zzP`URMRpe#x2YSUaJcSI{NA=PTwNfN!Aox+s6~0DCfw$a3y_3&A!`O|K7K*ifpI9i zYX+&ZeU>+vtZ!9!<&p9_WglE=&Q@j6>y6t)O>^}H9wfl*QDDA`qa98c_?&cRx!;PI zK~lvZ+gZ*bJOawLV<4wJ1yjWrHX+;yv0Ff6+<0Q;+x*&5b{u=dl0&reZ?`(9X%8b9 zhlsI%m zT>vI^L!AI-mXl`ZNd`&}V!6rR2+k&V&@QPwk&9+$9|jM?P6l&=1Ji-Zlp*P98M=6| zg~nfH5H=)SkIx@obv2B#z0{DZD$Zw!sZU*Se6Qe2YbG9$@#{jv#4ac1t$~ogJBZTA zFk2S*^zkCHV<95@G9fs3SsX=!fN9_{RPjm9%2J$a9Dk>{`IyJs=_x&*;rH6k1#WLY zcXyXGv*OW9o*jx~RN<*WMLhgf>tzzKKjgukEnE67*3)%wd>eDo`uo~JTIz7V?QO;n zeD~^~T~zaqChLK#1}RIMPI>DEr?hzne9)$OD{SI%;;3F#$m0%uof^)@H=@GNPK_G+_Vl8&@FoGOo@pBY&N^S>_4gO!+$I%D znqlGtZbuRkLKX*bNJ2*Ylj(q!&d2G7Gu`5&?e|)e0m1r5NNZY<+hb�dlcq#;;wR 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�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¢DKuABF#6V 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 N-?hrvB2cSCe+5giBhUZ<