--[[
X-ATC Chatter Auto Controller
v1.0.2 FrankLFRS 2024
The assistant checks a few parameters to set next logical controller
For ToLiSS A32x Series
--]]
-- Flight steps
X_ATC_CHAT_CLR = 0
X_ATC_CHAT_DEP_GND = 1
X_ATC_CHAT_DEP_TWR = 2
X_ATC_CHAT_DEP = 3
X_ATC_CHAT_CTR = 4
X_ATC_CHAT_APP = 5
X_ATC_CHAT_DEST_TWR = 6
X_ATC_CHAT_DEST_GND = 7
X_ATC_CHAT_END = 8
-- Init first flight step
X_ATC_Chat_Event_Step = X_ATC_CHAT_CLR
-- Datarefs
DataRef("X_ATC_Chat_Is_Engine_Running", "sim/flightmodel/engine/ENGN_running") -- Engine on and using fuel (only reliable in 740 and later)
DataRef("X_ATC_Chat_SpoilerArmed", "ckpt/speedbrakeUp/anim") -- 0 = no, 1 = armed
DataRef("X_ATC_Chat_Gear_Deploy_Ratio", "sim/aircraft/parts/acf_gear_deploy") -- Landing gear deployment, 0.0->1.0
DataRef("X_ATC_Chat_Altitude_ft", "sim/cockpit2/gauges/indicators/altitude_ft_pilot") -- Indicated height, MSL, in feet, primary system, based on pilots barometric pressure input
DataRef("X_ATC_Chat_APPR_On", "AirbusFBW/APPRilluminated") -- 0 = off, 1 = on
DataRef("X_ATC_Chat_APU_Switch", "sim/cockpit/engine/APU_switch") -- APU starter switch 0 = off, 1 = on, 2 = start
-- Next Controller
function X_ATC_Chat_Next_Controller()
command_once("SRS/X-ATC-Chatter/Select_Next_Logical_Controller")
X_ATC_Chat_Event_Step = (X_ATC_Chat_Event_Step+1)%X_ATC_CHAT_END
end
-- Auto Next Controller (every 10s)
function X_ATC_Chat_Auto_Controller_Do_Sometimes()
if(X_ATC_Chat_Event_Step == X_ATC_CHAT_CLR and X_ATC_Chat_Is_Engine_Running == 1) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_DEP_GND and X_ATC_Chat_SpoilerArmed == 1) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_DEP_TWR and X_ATC_Chat_Gear_Deploy_Ratio < 0.9) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_DEP and X_ATC_Chat_Altitude_ft > 19000) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_CTR and X_ATC_Chat_Altitude_ft < 18000) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_APP and X_ATC_Chat_APPR_On == 1) then
X_ATC_Chat_Next_Controller()
elseif(X_ATC_Chat_Event_Step == X_ATC_CHAT_DEST_TWR and X_ATC_Chat_APU_Switch > 0) then
X_ATC_Chat_Next_Controller()
end
end
-- Beginning of the periodic checking
if(PLANE_ICAO == "A319" or PLANE_ICAO == "A20N" or PLANE_ICAO =="A321") then
do_sometimes("X_ATC_Chat_Auto_Controller_Do_Sometimes()")
end