jit.off()
--[[
*****************************************************************************************
* Script Name :  A333.ecam_fws470.lua
* Process: FWS Status System Pge Selector
*
* Author Name :	Jim Gregory
*
* Revisions:
* -- DATE --  --- REV NO ---  --- DESCRIPTION -------------------------------------------
*
*
*
*
*
*****************************************************************************************
*       					     COPYRIGHT © 2021, 2022
*					 	   L A M I N A R   R E S E A R C H
*								  ALL RIGHTS RESERVED
*****************************************************************************************
--]]


--print("LOAD: A333.ecam_fws470.lua")

--*************************************************************************************--
--** 					              XLUA GLOBALS              				     **--
--*************************************************************************************--

--[[

SIM_PERIOD: this contains the duration of the current frame in seconds (so it is alway a
fraction).  Use this to normalize rates,  e.g. to add 3 units of fuel per second in a
per-frame callback you’d do fuel = fuel + 3 * SIM_PERIOD.


IN_REPLAY: evaluates to 0 if replay is off, 1 if replay mode is on

--]]


--*************************************************************************************--
--** 					               CONSTANTS                    				 **--
--*************************************************************************************--



--*************************************************************************************--
--** 					            GLOBAL VARIABLES                				 **--
--*************************************************************************************--



--*************************************************************************************--
--** 					            LOCAL VARIABLES                 				 **--
--*************************************************************************************--
local bool2num = {[true] = 1, [false] = 0}

local sp_pulse01 = newLeadingEdgePulse('sp_pulse01')
local sp_SRRlatch01 = newSRlatchResetPriority('sp_SRRlatch01')

local SDmsgsAreReset = false




--*************************************************************************************--
--** 				             FIND X-PLANE DATAREFS            			    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				             FIND X-PLANE COMMANDS                   	    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				             FIND CUSTOM DATAREFS             			    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				             FIND CUSTOM COMMANDS								**--
--*************************************************************************************--



--*************************************************************************************--
--** 				        CREATE READ-ONLY CUSTOM DATAREFS               	         **--
--*************************************************************************************--



--*************************************************************************************--
--** 				       READ-WRITE CUSTOM DATAREF HANDLERS     	        	     **--
--*************************************************************************************--



--*************************************************************************************--
--** 				       CREATE READ-WRITE CUSTOM DATAREFS                         **--
--*************************************************************************************--



--*************************************************************************************--
--** 				            CUSTOM COMMAND HANDLERS            				     **--
--*************************************************************************************--



--*************************************************************************************--
--** 				             CREATE CUSTOM COMMANDS              			     **--
--*************************************************************************************--



--*************************************************************************************--
--** 				          X-PLANE WRAP COMMAND HANDLERS              	    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				              WRAP X-PLANE COMMANDS                  	    	 **--
--*************************************************************************************--


--*************************************************************************************--
--** 				         X-PLANE REPLACE COMMAND HANDLERS              	    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				            REPLACE X-PLANE COMMANDS                  	    	 **--
--*************************************************************************************--



--*************************************************************************************--
--** 					          OBJECT CONSTRUCTORS         		        		 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				                 CREATE OBJECTS              	     			 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				              FUNCTION DEFINITIONS         	    				 **--
--*************************************************************************************--

function A333_status_page_manager()

	local a = {E1 = ZNMLSTSPD, E2 = ZASTSPD, E3 = ZMSTSPD, E4 = ZSTSCAPPR}
	a.S = bOR4(a.E1, a.E2, a.E3, a.E4)

	sp_pulse01:update(a.S)

	local b = {E1 = ZNMLSTSPD, E2 = ZASTSPD, E3 = ZMSTSPD, E4 = ZSTSCAPPR}
	b.S = bNOR4(b.E1, b.E2, b.E3, b.E4)

	local c = {E1 = ZASTSPD, E2 = ZSTSCAPPR, E3 = ZNMLSTSPD}
	c.S = bOR(c.E1, c.E2)

	local d = {E1 = ZMSTSPD, E2 = bNOT(c.S)}
	d.S = bAND(d.E1, d.E2)

	sp_SRRlatch01:update(sp_pulse01.OUT, b.S)

	ZSTSPD = sp_SRRlatch01.Q
	ZMSTSPD = d.S												-- TRUE IF MANUAL, FALSE IF ANY AUTO MODE

	A333_ecam_status_system_page_num = bool2num[ZSTSPD] * 15


	-- RESET THE CLEARED MESSAGES WHEN STATUS PAGE IS CLOSED
	if not ZSTSPD then											-- STATUS PAGE IS CLOSED
		if not SDmsgsAreReset then								-- SD MESSAGES ARE NOT RESET
			A333_resetClearedSDmessages()						-- RESET THE SD MESSSAGES
			SDmsgsAreReset = true								-- SET THE FLAG
		end
	else														-- STATUS PAGE IS OPEN
		if SDmsgsAreReset then									-- IF MESSAGES ARE RESET
			SDmsgsAreReset = false								-- CHANGE RESET FLAG
		end
	end

end






function A333_resetClearedSDmessages()
	for _, sts in pairs(A333_sts_msg) do
		if sts.Video.OUT == 2 then
			sts.Video.OUT = 1
			for _, msg in ipairs(sts.Msg) do
				if msg.Cleared == 1 then
					msg.Cleared = 0
				end
			end
		end
	end
end






function A333_resetManualStatusPageData()
	ZMSTSPD = false
	A333_resetClearedSDmessages()
end








--*************************************************************************************--
--** 				                   PROCESSING             	     	  			 **--
--*************************************************************************************--



--*************************************************************************************--
--** 				                 EVENT CALLBACKS           	    	 			 **--
--*************************************************************************************--

function A333_fws_470()

	A333_status_page_manager()

end




--*************************************************************************************--
--** 				               SUB-SCRIPT LOADING             	     			 **--
--*************************************************************************************--

-- dofile("fileName.lua")







