From eedfb9fda271d459a11e83bc664084b693c975e0 Mon Sep 17 00:00:00 2001
From: Joshua Davidson <joshuadavidson2000@gmail.com>
Date: Fri, 14 Sep 2018 10:25:49 -0400
Subject: [PATCH] Revert "Buttons.nas: refactor"

This reverts commit d6c5338dc54fdbf1a82cc226d292e512a484047f.
---
 Nasal/buttons.nas   | 113 ++++++++++++++++++++++----------------------
 Nasal/libraries.nas |   7 +--
 2 files changed, 57 insertions(+), 63 deletions(-)

diff --git a/Nasal/buttons.nas b/Nasal/buttons.nas
index 525f2ffd..eb1515db 100644
--- a/Nasal/buttons.nas
+++ b/Nasal/buttons.nas
@@ -55,31 +55,19 @@ var variousReset = func {
 	setprop("/controls/switches/seatbelt-sign", 1);
 }
 
-var BUTTONS = {
-	init: func() {
-		var stateL = getprop("/engines/engine[0]/state");
-		var stateR = getprop("/engines/engine[1]/state");
-		var Lrain = getprop("/controls/switches/LrainRpt");
-		var Rrain = getprop("/controls/switches/RrainRpt");
-		var OnLt = getprop("/controls/switches/emerCallLtO");
-		var CallLt = getprop("/controls/switches/emerCallLtC");
-		var EmerCall = getprop("/controls/switches/emerCall");
-		var wow = getprop("/gear/gear[1]/wow");
-		var wowr = getprop("/gear/gear[2]/wow");
-		var gndCtl = getprop("/systems/CVR/gndctl");
-		var acPwr = getprop("/systems/electrical/bus/ac-ess");
-	},
-	update: func() {
-		rainRepel();
-		CVR_master();
-		if (getprop("/controls/switches/emerCall")) {
-			EmerCallOnLight();
-			EmerCallLight();
-		}
-	},
-};
+setlistener("/sim/signals/fdm-initialized", func {
+	var stateL = getprop("/engines/engine[0]/state");
+	var stateR = getprop("/engines/engine[1]/state");
+	var Lrain = getprop("/controls/switches/LrainRpt");
+	var Rrain = getprop("/controls/switches/RrainRpt");
+	var OnLt = getprop("/controls/switches/emerCallLtO");
+	var CallLt = getprop("/controls/switches/emerCallLtC");
+	var wow = getprop("/gear/gear[1]/wow");
+	rainTimer.start();
+});
 
-var rainRepel = func() {
+# inhibit rain rpt when engines off and on ground
+var rainRepel = func {
 	Lrain = getprop("/controls/switches/LrainRpt");
 	Rrain = getprop("/controls/switches/RrainRpt");
 	wow = getprop("/gear/gear[1]/wow");
@@ -93,53 +81,39 @@ var rainRepel = func() {
 	}
 }
 
-var EmerCallOnLight = func() {
+var EmerCall = func {
+	setprop("/controls/switches/emerCall", 1);
+	EmerCallTimer1.start();
+	EmerCallTimer2.start();
+	settimer(func() {
+		setprop("/controls/switches/emerCall", 0);
+		EmerCallTimer1.stop();
+		EmerCallTimer2.stop();
+	}, 10);
+}
+
+var EmerCallOnLight = func {
 	OnLt = getprop("/controls/switches/emerCallLtO");
-	EmerCall = getprop("/controls/switches/emerCall");
-	if ((OnLt and EmerCall) or !EmerCall) { 
+	if (OnLt) { 
 		setprop("/controls/switches/emerCallLtO", 0);
-	} else if (!OnLt and EmerCall) { 
+	} else if (!OnLt) { 
 		setprop("/controls/switches/emerCallLtO", 1);
 	}
 }
 
-var EmerCallLight = func() {
+var EmerCallLightCall = func {
 	CallLt = getprop("/controls/switches/emerCallLtC");
-	EmerCall = getprop("/controls/switches/emerCall");
-	if ((CallLt and EmerCall) or !EmerCall) { 
+	if (CallLt) { 
 		setprop("/controls/switches/emerCallLtC", 0);
-	} else if (!CallLt and EmerCall) { 
+	} else if (!CallLt) { 
 		setprop("/controls/switches/emerCallLtC", 1);
 	}
 }
 
-var CVR_master = func() {
-	stateL = getprop("/engines/engine[0]/state");
-	stateR = getprop("/engines/engine[1]/state");
-	wow = getprop("/gear/gear[1]/wow");
-	wowr = getprop("/gear/gear[2]/wow");
-	gndCtl = getprop("/systems/CVR/gndctl");
-	acPwr = getprop("/systems/electrical/bus/ac-ess");
-	if (acPwr > 0 and wow and wowr and (gndCtl or (stateL == 3 or stateR == 3))) {
-		setprop("/controls/CVR/power", 1);
-	} else if (!wow and !wowr and acPwr > 0) {
-		setprop("/controls/CVR/power", 1);
-	} else {
-		setprop("/controls/CVR/power", 0);
-	}
-}
-
-var EmerCall = func {
-	setprop("/controls/switches/emerCall", 1);
+var CabinCall = func {
+	setprop("/controls/switches/emerCall", 0);
 	settimer(func() {
 		setprop("/controls/switches/emerCall", 0);
-	}, 10);
-}
-
-var CabinCall = func {
-	setprop("/controls/switches/cabinCall", 0);
-	settimer(func() {
-		setprop("/controls/switches/cabinCall", 0);
 	}, 15);
 }
 		
@@ -160,6 +134,22 @@ var CVR_test = func {
 	}
 }
 
+var CVR_master = func {
+	var stateL = getprop("/engines/engine[0]/state");
+	var stateR = getprop("/engines/engine[1]/state");
+	var wowl = getprop("/gear/gear[1]/wow");
+	var wowr = getprop("/gear/gear[2]/wow");
+	var gndCtl = getprop("/systems/CVR/gndctl");
+	var acPwr = getprop("/systems/electrical/bus/ac-ess");
+	if (acPwr > 0 and wowl and wowr and (gndCtl or (stateL == 3 or stateR == 3))) {
+		setprop("/controls/CVR/power", 1);
+	} else if (!wowl and !wowr and acPwr > 0) {
+		setprop("/controls/CVR/power", 1);
+	} else {
+		setprop("/controls/CVR/power", 0);
+	}
+}
+
 var mcpSPDKnbPull = func {
 	setprop("/it-autoflight/input/spd-managed", 0);
 	fmgc.ManagedSPD.stop();
@@ -249,3 +239,12 @@ var decreaseManVS = func {
 		setprop("/systems/pressurization/outflowpos-man", manvs - 0.001);
 	}
 }
+
+var update_CVR = func {
+	CVR_master();
+}
+
+var CVR = maketimer(0.1, update_CVR);
+var EmerCallTimer1 = maketimer(0.5, EmerCallOnLight);
+var EmerCallTimer2 = maketimer(0.5, EmerCallLightCall);
+var rainTimer = maketimer(0.1, rainRepel);
\ No newline at end of file
diff --git a/Nasal/libraries.nas b/Nasal/libraries.nas
index 56e77c8b..bdab14a2 100644
--- a/Nasal/libraries.nas
+++ b/Nasal/libraries.nas
@@ -185,13 +185,13 @@ var systemsInit = func {
 	mcdu1.MCDU_init();
 	mcdu2.MCDU_init();
 	systemsLoop.start();
+	libraries.CVR.start();
 	icing.icingInit();
 	lightsLoop.start();
 	var autopilot = gui.Dialog.new("sim/gui/dialogs/autopilot/dialog", "Aircraft/IDG-A32X/Systems/autopilot-dlg.xml");
 	setprop("/it-autoflight/input/fd1", 1);
 	setprop("/it-autoflight/input/fd2", 1);
 	libraries.ECAM.init();
-	libraries.BUTTONS.init();
 	libraries.variousReset();
 }
 
@@ -206,11 +206,6 @@ var systemsLoop = maketimer(0.1, func {
 	systems.FUEL.loop();
 	systems.ADIRS.loop();
 	libraries.ECAM.loop();
-<<<<<<< Updated upstream
-=======
-	ecam.ECAM_controller.loop();
-	libraries.BUTTONS.update();
->>>>>>> Stashed changes
 	fadec.fadecLoop();
 	
 	if ((getprop("/controls/pneumatic/switches/groundair") or getprop("/controls/switches/cart")) and ((getprop("/velocities/groundspeed-kt") > 2) or getprop("/controls/gear/brake-parking") == 0)) {