From d6c5338dc54fdbf1a82cc226d292e512a484047f Mon Sep 17 00:00:00 2001
From: Jonathan Redpath <legoboyvdlp@gmail.com>
Date: Fri, 14 Sep 2018 15:23:09 +0100
Subject: [PATCH 1/5] Buttons.nas: refactor

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

diff --git a/Nasal/buttons.nas b/Nasal/buttons.nas
index eb1515db..525f2ffd 100644
--- a/Nasal/buttons.nas
+++ b/Nasal/buttons.nas
@@ -55,19 +55,31 @@ var variousReset = func {
 	setprop("/controls/switches/seatbelt-sign", 1);
 }
 
-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 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();
+		}
+	},
+};
 
-# inhibit rain rpt when engines off and on ground
-var rainRepel = func {
+var rainRepel = func() {
 	Lrain = getprop("/controls/switches/LrainRpt");
 	Rrain = getprop("/controls/switches/RrainRpt");
 	wow = getprop("/gear/gear[1]/wow");
@@ -81,39 +93,53 @@ var rainRepel = 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 {
+var EmerCallOnLight = func() {
 	OnLt = getprop("/controls/switches/emerCallLtO");
-	if (OnLt) { 
+	EmerCall = getprop("/controls/switches/emerCall");
+	if ((OnLt and EmerCall) or !EmerCall) { 
 		setprop("/controls/switches/emerCallLtO", 0);
-	} else if (!OnLt) { 
+	} else if (!OnLt and EmerCall) { 
 		setprop("/controls/switches/emerCallLtO", 1);
 	}
 }
 
-var EmerCallLightCall = func {
+var EmerCallLight = func() {
 	CallLt = getprop("/controls/switches/emerCallLtC");
-	if (CallLt) { 
+	EmerCall = getprop("/controls/switches/emerCall");
+	if ((CallLt and EmerCall) or !EmerCall) { 
 		setprop("/controls/switches/emerCallLtC", 0);
-	} else if (!CallLt) { 
+	} else if (!CallLt and EmerCall) { 
 		setprop("/controls/switches/emerCallLtC", 1);
 	}
 }
 
-var CabinCall = func {
-	setprop("/controls/switches/emerCall", 0);
+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);
 	settimer(func() {
 		setprop("/controls/switches/emerCall", 0);
+	}, 10);
+}
+
+var CabinCall = func {
+	setprop("/controls/switches/cabinCall", 0);
+	settimer(func() {
+		setprop("/controls/switches/cabinCall", 0);
 	}, 15);
 }
 		
@@ -134,22 +160,6 @@ 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();
@@ -239,12 +249,3 @@ 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 bdab14a2..56e77c8b 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,6 +206,11 @@ 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)) {

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 2/5] 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)) {

From 02f8a61438ce3b97022b34b89d4a073f4af99ace Mon Sep 17 00:00:00 2001
From: Jonathan Redpath <legoboyvdlp@gmail.com>
Date: Fri, 14 Sep 2018 16:08:33 +0100
Subject: [PATCH 3/5] Bugfix: engines.nas broken by props.nas change

---
 Nasal/engines-cfm.nas | 4 ++--
 Nasal/engines-iae.nas | 4 ++--
 revision.txt          | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Nasal/engines-cfm.nas b/Nasal/engines-cfm.nas
index b2b63fa4..13d12751 100644
--- a/Nasal/engines-cfm.nas
+++ b/Nasal/engines-cfm.nas
@@ -60,7 +60,7 @@ var cutoff_one = func {
 	setprop("/systems/pneumatic/eng1-starter", 0);
 	setprop("/controls/engines/engine[0]/starter", 0);
 	setprop("/controls/engines/engine[0]/cutoff", 1);
-	var engine0_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT");
+	setprop("/engines/engine[0]/state", 0);
 	interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
 	eng_one_n2_check.stop();
 }
@@ -144,7 +144,7 @@ var cutoff_two = func {
 	setprop("/systems/pneumatic/eng2-starter", 0);
 	setprop("/controls/engines/engine[1]/starter", 0);
 	setprop("/controls/engines/engine[1]/cutoff", 1);
-	var engine1_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT");
+	setprop("/engines/engine[0]/state", 0);
 	interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
 }
 
diff --git a/Nasal/engines-iae.nas b/Nasal/engines-iae.nas
index 3eb66872..b8ba6853 100644
--- a/Nasal/engines-iae.nas
+++ b/Nasal/engines-iae.nas
@@ -60,7 +60,7 @@ var cutoff_one = func {
 	setprop("/systems/pneumatic/eng1-starter", 0);
 	setprop("/controls/engines/engine[0]/starter", 0);
 	setprop("/controls/engines/engine[0]/cutoff", 1);
-	var engine0_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT");
+	setprop("/engines/engine[0]/state", 0);
 	interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
 	eng_one_n2_check.stop();
 }
@@ -144,7 +144,7 @@ var cutoff_two = func {
 	setprop("/systems/pneumatic/eng2-starter", 0);
 	setprop("/controls/engines/engine[1]/starter", 0);
 	setprop("/controls/engines/engine[1]/cutoff", 1);
-	var engine1_state = props.globals.initNode("/engines/engine[1]/state", 0, "INT");
+	setprop("/engines/engine[1]/state", 0);
 	interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
 }
 
diff --git a/revision.txt b/revision.txt
index bf388ea4..5bbc35dc 100644
--- a/revision.txt
+++ b/revision.txt
@@ -1 +1 @@
-4637
\ No newline at end of file
+4638
\ No newline at end of file

From 38868ede2a2403d78ebd3e1c024922b0c23d2a87 Mon Sep 17 00:00:00 2001
From: Jonathan Redpath <legoboyvdlp@gmail.com>
Date: Fri, 14 Sep 2018 16:12:06 +0100
Subject: [PATCH 4/5] Refactor buttons.nas

---
 Nasal/buttons.nas   | 115 ++++++++++++++++++++++----------------------
 Nasal/libraries.nas |   6 ++-
 2 files changed, 62 insertions(+), 59 deletions(-)

diff --git a/Nasal/buttons.nas b/Nasal/buttons.nas
index eb1515db..5f0f9e80 100644
--- a/Nasal/buttons.nas
+++ b/Nasal/buttons.nas
@@ -55,19 +55,31 @@ var variousReset = func {
 	setprop("/controls/switches/seatbelt-sign", 1);
 }
 
-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 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();
+		}
+	},
+};
 
-# inhibit rain rpt when engines off and on ground
-var rainRepel = func {
+var rainRepel = func() {
 	Lrain = getprop("/controls/switches/LrainRpt");
 	Rrain = getprop("/controls/switches/RrainRpt");
 	wow = getprop("/gear/gear[1]/wow");
@@ -81,39 +93,53 @@ var rainRepel = 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 {
+var EmerCallOnLight = func() {
 	OnLt = getprop("/controls/switches/emerCallLtO");
-	if (OnLt) { 
+	EmerCall = getprop("/controls/switches/emerCall");
+	if ((OnLt and EmerCall) or !EmerCall) { 
 		setprop("/controls/switches/emerCallLtO", 0);
-	} else if (!OnLt) { 
+	} else if (!OnLt and EmerCall) { 
 		setprop("/controls/switches/emerCallLtO", 1);
 	}
 }
 
-var EmerCallLightCall = func {
+var EmerCallLight = func() {
 	CallLt = getprop("/controls/switches/emerCallLtC");
-	if (CallLt) { 
+	EmerCall = getprop("/controls/switches/emerCall");
+	if ((CallLt and EmerCall) or !EmerCall) { 
 		setprop("/controls/switches/emerCallLtC", 0);
-	} else if (!CallLt) { 
+	} else if (!CallLt and EmerCall) { 
 		setprop("/controls/switches/emerCallLtC", 1);
 	}
 }
 
-var CabinCall = func {
-	setprop("/controls/switches/emerCall", 0);
+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);
 	settimer(func() {
 		setprop("/controls/switches/emerCall", 0);
+	}, 10);
+}
+
+var CabinCall = func {
+	setprop("/controls/switches/cabinCall", 0);
+	settimer(func() {
+		setprop("/controls/switches/cabinCall", 0);
 	}, 15);
 }
 		
@@ -134,22 +160,6 @@ 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();
@@ -238,13 +248,4 @@ var decreaseManVS = func {
 	if (manvs <= 1 and manvs >= 0 and !auto) {
 		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
+}
\ No newline at end of file
diff --git a/Nasal/libraries.nas b/Nasal/libraries.nas
index bdab14a2..7c1f6442 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,6 +206,8 @@ var systemsLoop = maketimer(0.1, func {
 	systems.FUEL.loop();
 	systems.ADIRS.loop();
 	libraries.ECAM.loop();
+	ecam.ECAM_controller.loop();
+	libraries.BUTTONS.update();
 	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)) {
@@ -583,4 +585,4 @@ if (getprop("/controls/flight/auto-coordination") == 1) {
 	setprop("/controls/flight/aileron-drives-tiller", 0);
 }
 
-setprop("/systems/acconfig/libraries-loaded", 1);
+setprop("/systems/acconfig/libraries-loaded", 1);
\ No newline at end of file

From fbfdff0ba7273e634766270691a910cbc520b918 Mon Sep 17 00:00:00 2001
From: Jonathan Redpath <legoboyvdlp@gmail.com>
Date: Fri, 14 Sep 2018 16:16:01 +0100
Subject: [PATCH 5/5] Bugfix

---
 Nasal/libraries.nas | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Nasal/libraries.nas b/Nasal/libraries.nas
index 7c1f6442..d893d8de 100644
--- a/Nasal/libraries.nas
+++ b/Nasal/libraries.nas
@@ -206,7 +206,6 @@ var systemsLoop = maketimer(0.1, func {
 	systems.FUEL.loop();
 	systems.ADIRS.loop();
 	libraries.ECAM.loop();
-	ecam.ECAM_controller.loop();
 	libraries.BUTTONS.update();
 	fadec.fadecLoop();