-- 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    --
-----------------------------