CVS: data/Aircraft/Lightning/Systems instrumentation-fine.nas, 1.10, 1.11 lightning-controls.nas, 1.14, 1.15 lightning-electrical.nas, 1.6, 1.7 lightning-lights.nas, 1.2, 1.3

Vivian Meazza <[email protected]>
Newsgroups gmane.games.flightgear.cvc
Message-ID <[email protected]>
Update of /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems
In directory baron.flightgear.org:/tmp/cvs-serv3024

Modified Files:
	instrumentation-fine.nas lightning-controls.nas 
	lightning-electrical.nas lightning-lights.nas 
Log Message:
Clean up by Alan Teeder

Index: instrumentation-fine.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/instrumentation-fine.nas,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- instrumentation-fine.nas	24 Nov 2007 17:29:49 -0000	1.10
+++ instrumentation-fine.nas	27 Mar 2010 08:42:11 -0000	1.11
@@ -1,216 +1,219 @@
-# $Id$
-
-# ==================================== timer stuff =========================================
-
-# set the update period
-
-var UPDATE_PERIOD = 0;
-
-# set the timer for the selected function
-
-var registerTimer = func {
-
-	settimer(gmeterUpdate, UPDATE_PERIOD);
-	settimer(setRPM, UPDATE_PERIOD);
-	settimer(icewarn, UPDATE_PERIOD);
-	settimer(gearLights, UPDATE_PERIOD);
-	settimer(func {navdisplay("comm")}, UPDATE_PERIOD);
-	settimer(func {navdisplay("nav")}, UPDATE_PERIOD);
-
-}
-
-# =============================== end timer stuff ===========================================
-
-# =============================== G-Meter stuff =============================================
-
-var gmeterUpdate = func {
-
-	var GCurrent = props.globals.getNode("/accelerations/pilot-g[0]").getValue();
-	var GMin = props.globals.getNode("/accelerations/pilot-gmin[0]").getValue();
-	var GMax = props.globals.getNode("/accelerations/pilot-gmax[0]").getValue();
-
-	if(GCurrent < 1 and GCurrent < GMin){setprop("/accelerations/pilot-gmin[0]", GCurrent);}
-	else {if(GCurrent > GMax){setprop("/accelerations/pilot-gmax[0]", GCurrent);}}
-
-registerTimer();
-
-}
-
-# ====================== Standby / Master AI  ===============================
-
-var setRPM = func{
-	
-	var sb_volts = getprop("/systems/electrical/outputs/standby_instruments") ;
-	if (sb_volts == nil ){ sb_volts = 0;}
-	if (sb_volts > 22){	rpm = 2000;	} 
-	else { rpm = 0; }
-
-	setprop("/engines/engine/rpm", rpm);
-
-} # end function
-
-#### Ice Warning Light - values taken from RAF "Pilot's Notes General, 3rd ed. 1946" ####
-#### Any suggestions for improvement welcomed! ####
-
-var icewarn = func {
-
-	var temp = getprop("environment/temperature-degc");
-	var volts = getprop("systems/electrical/outputs/annunciators");
-
-	if (temp < -1 and temp > -8 and volts > 23 ) { warn = 1 }
-	else {warn = 0}
-
-	setprop("sim/model/lightning/lights/ice_warn", warn);
-	
-} # End func
-
-# ==================== Undercarriage Indicator Lights =======================
-
-var gearLights = func {
-
-	var volts = getprop("systems/electrical/outputs/undercarriage");
-	if (volts == nil) {volts = 0}
-	if (volts > 1) {power = 1}
-		else {power = 0}
-
-	var dayNight = getprop("controls/switches/dayNight");
-	var changeLamps = getprop("controls/switches/changeLamps");
-	var port = getprop("gear/gear[0]/position-norm");
-	var nose = getprop("gear/gear[1]/position-norm");
-	var stbd = getprop("gear/gear[2]/position-norm");
-
-	var brightness = power * (dayNight + 0.5);
-
-	# Port Leg
-	if (port < 1) {
-		setprop("sim/model/lightning/lights/port-red",brightness);
-		setprop("sim/model/lightning/lights/port-green-1",0);
-		setprop("sim/model/lightning/lights/port-green-2",0);
-	} elsif (changeLamps < 1){
-		setprop("sim/model/lightning/lights/port-red",0);
-		setprop("sim/model/lightning/lights/port-green-1",brightness);
-		setprop("sim/model/lightning/lights/port-green-2",0);
-	} else {
-		setprop("sim/model/lightning/lights/port-red",0);
-		setprop("sim/model/lightning/lights/port-green-1",0);
-		setprop("sim/model/lightning/lights/port-green-2",brightness);
-	}
-	# Nose Leg
-	if (nose < 1) {
-		setprop("sim/model/lightning/lights/nose-red",brightness);
-		setprop("sim/model/lightning/lights/nose-green-1",0);
-		setprop("sim/model/lightning/lights/nose-green-2",0);
-	} elsif (changeLamps < 1){
-		setprop("sim/model/lightning/lights/nose-red",0);
-		setprop("sim/model/lightning/lights/nose-green-1",brightness);
-		setprop("sim/model/lightning/lights/nose-green-2",0);
-	} else {
-		setprop("sim/model/lightning/lights/nose-red",0);
-		setprop("sim/model/lightning/lights/nose-green-1",0);
-		setprop("sim/model/lightning/lights/nose-green-2",brightness);
-	}
-	# Starboard Leg
-	if (stbd < 1) {
-		setprop("sim/model/lightning/lights/stbd-red",brightness);
-		setprop("sim/model/lightning/lights/stbd-green-1",0);
-		setprop("sim/model/lightning/lights/stbd-green-2",0);
-	} elsif (changeLamps < 1){
-		setprop("sim/model/lightning/lights/stbd-red",0);
-		setprop("sim/model/lightning/lights/stbd-green-1",brightness);
-		setprop("sim/model/lightning/lights/stbd-green-2",0);
-	} else {
-		setprop("sim/model/lightning/lights/stbd-red",0);
-		setprop("sim/model/lightning/lights/stbd-green-1",0);
-		setprop("sim/model/lightning/lights/stbd-green-2",brightness);
-	}
-
-} # End of Function
-
-# ==================== Nav Radio Frequency Display  =========================
-
-var navdisplay = func(radio) {
-	var total=getprop("/instrumentation/"~radio~"[0]/frequencies/selected-mhz");
-	var digit1=int(total/100);
-	var digit2=int((total/10)-(10*digit1));
-	var digit3=int(total-(100*digit1)-(10*digit2));
-	var digit4=int(10*(total-int(total)));
-	var digit5=int(10*(10*(total-int(total)))-(10*digit4));
-	setprop("sim/model/lightning/radios/"~radio~"[0]/digit1",digit1);
-	setprop("sim/model/lightning/radios/"~radio~"[0]/digit2",digit2);
-	setprop("sim/model/lightning/radios/"~radio~"[0]/digit3",digit3);
-	setprop("sim/model/lightning/radios/"~radio~"[0]/digit4",digit4);
-	setprop("sim/model/lightning/radios/"~radio~"[0]/digit5",digit5);
-}
-
-####################### Initialise ##############################################
-
-var initialize = func {
-
-	### Initialise gmeter stuff ###
-	props.globals.getNode("accelerations/pilot-g[0]", 1).setDoubleValue(1.01);
-	props.globals.getNode("accelerations/pilot-gmin[0]", 1).setDoubleValue(1);
-	props.globals.getNode("accelerations/pilot-gmax[0]", 1).setDoubleValue(1);
-	props.globals.getNode("/sim/rendering/redout/alpha", 1).setDoubleValue(0.0);
-	props.globals.getNode("/sim/rendering/redout/red", 1).setDoubleValue(0.0);
-	props.globals.getNode("/sim/rendering/redout/blue", 1).setDoubleValue(0.0);
-	props.globals.getNode("/sim/rendering/redout/green", 1).setDoubleValue(0.0);
-
-	### Initialise Gear ###
-	props.globals.getNode("sim/lightning/controls/gear", 1).setIntValue(1);
-
-	### Initialise fuel stuff ###
-	props.globals.getNode("instrumentation/fuel/bingo[0]", 1).setIntValue(0);
-	props.globals.getNode("instrumentation/fuel/bingo[1]", 1).setIntValue(0);
-
-	### Initialise RPM (Vacuum) stuff ###
-	props.globals.getNode("engines/engine[0]/rpm", 1).setIntValue(0);
-
-	### Initialise Ice Warning stuff ###
-	props.globals.getNode("sim/model/lightning/lights/ice_warn", 1).setIntValue(0);
-
-	### Initialise Seat stuff ###
-	props.globals.getNode("sim/model/lightning/controls/seat", 1).setIntValue(0);
-
-	### Initialise Instrumentation stuff ###
-	props.globals.getNode("sim/model/lightning/controls/radarview", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/syn-knob", 1).setIntValue(0);
-	props.globals.getNode("instrumentation/heading-indicator/heading-source", 1).setBoolValue(0);
-
-	### Initialise Radio stuff ###
-	props.globals.getNode("sim/model/lightning/radios/nav[0]/vol", 1).setDoubleValue(0.5);
-	props.globals.getNode("sim/model/lightning/radios/comm[0]/vol", 1).setDoubleValue(0.5);
-
-	### Initialise Chute stuff ###
-	props.globals.getNode("sim/model/lightning/controls/flight/chute_open", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/flight/chute_deployed", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/flight/chute_jettisoned", 1).setBoolValue(0);
-
-	### Initialise Tank stuff ###
-	props.globals.getNode("sim/model/lightning/controls/tank_jettisoned_lever", 1).setIntValue(0);
-	
-	### Initialise Gear stuff ###
-	props.globals.getNode("sim/model/lightning/controls/emergency_uc_selected", 1).setBoolValue(0);
-	
-	### Initialise AP stuff ###
-	props.globals.getNode("sim/model/lightning/controls/flight/ap_ILS", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/flight/ap_glide", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/flight/ap_pitch", 1).setIntValue(0);
-	props.globals.getNode("sim/model/lightning/controls/flight/ap_ry", 1).setIntValue(0);
-	
-	### Initialise Camera stuff ###
-	props.globals.getNode("sim/model/lightning/controls/camera-start-time", 1).setIntValue(0);
-
-	### Initialise Dialogue stuff ###
-	Lightning.dialog.open();
-
-	### Initialise Steering stuff ###
-	aircraft.steering.init();
-		
-	registerTimer();
-	# Finished Initialising
-	initialized = 1;
-
-} #end func
-
-######################### Fire it up ############################################
-setlistener("/sim/model/lightning/electrical-initialized",initialize);
+# $Id$
+
+# ==================================== timer stuff =========================================
+
+# set the update period
+
+var UPDATE_PERIOD = 0;
+
+# set the timer for the selected function
+
+var registerTimer = func {
+
+	settimer(gmeterUpdate, UPDATE_PERIOD);
+	settimer(setRPM, UPDATE_PERIOD);
+	settimer(icewarn, UPDATE_PERIOD);
+	settimer(gearLights, UPDATE_PERIOD);
+	settimer(func {navdisplay("comm")}, UPDATE_PERIOD);
+	settimer(func {navdisplay("nav")}, UPDATE_PERIOD);
+
+}
+
+# =============================== end timer stuff ===========================================
+
+# =============================== G-Meter stuff =============================================
+
+var gmeterUpdate = func {
+
+	var GCurrent = props.globals.getNode("/accelerations/pilot-g[0]").getValue();
+	var GMin = props.globals.getNode("/accelerations/pilot-gmin[0]").getValue();
+	var GMax = props.globals.getNode("/accelerations/pilot-gmax[0]").getValue();
+
+	if(GCurrent < 1 and GCurrent < GMin){setprop("/accelerations/pilot-gmin[0]", GCurrent);}
+	else {if(GCurrent > GMax){setprop("/accelerations/pilot-gmax[0]", GCurrent);}}
+
+registerTimer();
+
+}
+
+# ====================== Standby / Master AI  ===============================
+
+var setRPM = func{
+	
+	var sb_volts = getprop("/systems/electrical/outputs/standby_instruments") ;
+	if (sb_volts == nil ){ sb_volts = 0;}
+	if (sb_volts > 22){	rpm = 2000;	} 
+	else { rpm = 0; }
+
+	setprop("/engines/engine/rpm", rpm);
+
+} # end function
+
+#### Ice Warning Light - values taken from RAF "Pilot's Notes General, 3rd ed. 1946" ####
+#### Any suggestions for improvement welcomed! ####
+
+var icewarn = func {
+
+	var temp = getprop("environment/temperature-degc");
+	var volts = getprop("systems/electrical/outputs/annunciators");
+	var warn = 0;
+
+	if (temp < -1 and temp > -8 and volts > 23 ) { warn = 1 }
+	else {warn = 0}
+
+	setprop("sim/model/lightning/lights/ice_warn", warn);
+	
+} # End func
+
+# ==================== Undercarriage Indicator Lights =======================
+
+var gearLights = func {
+
+	var volts = getprop("systems/electrical/outputs/undercarriage");
+	var power = 0;
+	if (volts == nil) {volts = 0}
+	if (volts > 1) {power = 1}
+		else {power = 0}
+
+	var dayNight = getprop("controls/switches/dayNight");
+	var changeLamps = getprop("controls/switches/changeLamps");
+	var port = getprop("gear/gear[0]/position-norm");
+	var nose = getprop("gear/gear[1]/position-norm");
+	var stbd = getprop("gear/gear[2]/position-norm");
+
+	var brightness = power * (dayNight + 0.5);
+
+	# Port Leg
+	if (port < 1) {
+		setprop("sim/model/lightning/lights/port-red",brightness);
+		setprop("sim/model/lightning/lights/port-green-1",0);
+		setprop("sim/model/lightning/lights/port-green-2",0);
+	} elsif (changeLamps < 1){
+		setprop("sim/model/lightning/lights/port-red",0);
+		setprop("sim/model/lightning/lights/port-green-1",brightness);
+		setprop("sim/model/lightning/lights/port-green-2",0);
+	} else {
+		setprop("sim/model/lightning/lights/port-red",0);
+		setprop("sim/model/lightning/lights/port-green-1",0);
+		setprop("sim/model/lightning/lights/port-green-2",brightness);
+	}
+	# Nose Leg
+	if (nose < 1) {
+		setprop("sim/model/lightning/lights/nose-red",brightness);
+		setprop("sim/model/lightning/lights/nose-green-1",0);
+		setprop("sim/model/lightning/lights/nose-green-2",0);
+	} elsif (changeLamps < 1){
+		setprop("sim/model/lightning/lights/nose-red",0);
+		setprop("sim/model/lightning/lights/nose-green-1",brightness);
+		setprop("sim/model/lightning/lights/nose-green-2",0);
+	} else {
+		setprop("sim/model/lightning/lights/nose-red",0);
+		setprop("sim/model/lightning/lights/nose-green-1",0);
+		setprop("sim/model/lightning/lights/nose-green-2",brightness);
+	}
+	# Starboard Leg
+	if (stbd < 1) {
+		setprop("sim/model/lightning/lights/stbd-red",brightness);
+		setprop("sim/model/lightning/lights/stbd-green-1",0);
+		setprop("sim/model/lightning/lights/stbd-green-2",0);
+	} elsif (changeLamps < 1){
+		setprop("sim/model/lightning/lights/stbd-red",0);
+		setprop("sim/model/lightning/lights/stbd-green-1",brightness);
+		setprop("sim/model/lightning/lights/stbd-green-2",0);
+	} else {
+		setprop("sim/model/lightning/lights/stbd-red",0);
+		setprop("sim/model/lightning/lights/stbd-green-1",0);
+		setprop("sim/model/lightning/lights/stbd-green-2",brightness);
+	}
+
+} # End of Function
+
+# ==================== Nav Radio Frequency Display  =========================
+
+var navdisplay = func(radio) {
+	var total=getprop("/instrumentation/"~radio~"[0]/frequencies/selected-mhz");
+	var digit1=int(total/100);
+	var digit2=int((total/10)-(10*digit1));
+	var digit3=int(total-(100*digit1)-(10*digit2));
+	var digit4=int(10*(total-int(total)));
+	var digit5=int(10*(10*(total-int(total)))-(10*digit4));
+	setprop("sim/model/lightning/radios/"~radio~"[0]/digit1",digit1);
+	setprop("sim/model/lightning/radios/"~radio~"[0]/digit2",digit2);
+	setprop("sim/model/lightning/radios/"~radio~"[0]/digit3",digit3);
+	setprop("sim/model/lightning/radios/"~radio~"[0]/digit4",digit4);
+	setprop("sim/model/lightning/radios/"~radio~"[0]/digit5",digit5);
+}
+
+####################### Initialise ##############################################
+
+var initialize = func {
+        var initialized = 0;
+	
+	### Initialise gmeter stuff ###
+	props.globals.getNode("accelerations/pilot-g[0]", 1).setDoubleValue(1.01);
+	props.globals.getNode("accelerations/pilot-gmin[0]", 1).setDoubleValue(1);
+	props.globals.getNode("accelerations/pilot-gmax[0]", 1).setDoubleValue(1);
+	props.globals.getNode("/sim/rendering/redout/alpha", 1).setDoubleValue(0.0);
+	props.globals.getNode("/sim/rendering/redout/red", 1).setDoubleValue(0.0);
+	props.globals.getNode("/sim/rendering/redout/blue", 1).setDoubleValue(0.0);
+	props.globals.getNode("/sim/rendering/redout/green", 1).setDoubleValue(0.0);
+
+	### Initialise Gear ###
+	props.globals.getNode("sim/lightning/controls/gear", 1).setIntValue(1);
+
+	### Initialise fuel stuff ###
+	props.globals.getNode("instrumentation/fuel/bingo[0]", 1).setIntValue(0);
+	props.globals.getNode("instrumentation/fuel/bingo[1]", 1).setIntValue(0);
+
+	### Initialise RPM (Vacuum) stuff ###
+	props.globals.getNode("engines/engine[0]/rpm", 1).setIntValue(0);
+
+	### Initialise Ice Warning stuff ###
+	props.globals.getNode("sim/model/lightning/lights/ice_warn", 1).setIntValue(0);
+
+	### Initialise Seat stuff ###
+	props.globals.getNode("sim/model/lightning/controls/seat", 1).setIntValue(0);
+
+	### Initialise Instrumentation stuff ###
+	props.globals.getNode("sim/model/lightning/controls/radarview", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/syn-knob", 1).setIntValue(0);
+	props.globals.getNode("instrumentation/heading-indicator/heading-source", 1).setBoolValue(0);
+
+	### Initialise Radio stuff ###
+	props.globals.getNode("sim/model/lightning/radios/nav[0]/vol", 1).setDoubleValue(0.5);
+	props.globals.getNode("sim/model/lightning/radios/comm[0]/vol", 1).setDoubleValue(0.5);
+
+	### Initialise Chute stuff ###
+	props.globals.getNode("sim/model/lightning/controls/flight/chute_open", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/flight/chute_deployed", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/flight/chute_jettisoned", 1).setBoolValue(0);
+
+	### Initialise Tank stuff ###
+	props.globals.getNode("sim/model/lightning/controls/tank_jettisoned_lever", 1).setIntValue(0);
+	
+	### Initialise Gear stuff ###
+	props.globals.getNode("sim/model/lightning/controls/emergency_uc_selected", 1).setBoolValue(0);
+	
+	### Initialise AP stuff ###
+	props.globals.getNode("sim/model/lightning/controls/flight/ap_ILS", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/flight/ap_glide", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/flight/ap_pitch", 1).setIntValue(0);
+	props.globals.getNode("sim/model/lightning/controls/flight/ap_ry", 1).setIntValue(0);
+	
+	### Initialise Camera stuff ###
+	props.globals.getNode("sim/model/lightning/controls/camera-start-time", 1).setIntValue(0);
+
+	### Initialise Dialogue stuff ###
+	Lightning.dialog.open();
+
+	### Initialise Steering stuff ###
+	aircraft.steering.init();
+		
+	registerTimer();
+	# Finished Initialising
+	initialized = 1;
+
+} #end func
+
+######################### Fire it up ############################################
+setlistener("/sim/model/lightning/electrical-initialized",initialize);

Index: lightning-controls.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-controls.nas,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- lightning-controls.nas	7 Oct 2008 20:17:25 -0000	1.14
+++ lightning-controls.nas	27 Mar 2010 08:42:12 -0000	1.15
@@ -1,522 +1,525 @@
-# ==================================== timer stuff =========================================
-
-# set the update period
-
-var UPDATE_PERIOD = 0.5;
-var UPDATE_PERIOD_FINE = 0.1;
-var UPDATE_PERIOD_NIL = 0.0;
-
-# set the timer for the selected function
-
-var registerTimerControls = func {
[...1016 lines suppressed...]
+	} 
+
+} # end of function
+
+var emergencyGearDown = func(set){
+
+	if (set < 1){
+		setprop("sim/model/lightning/controls/emergency_uc_selected", 0);
+	} else {
+		setprop("sim/model/lightning/controls/emergency_uc_selected", 1);
+		setprop("controls/gear/gear-down", 1);
+	}
+} # End Func
+
+# ========================= Rudder Trim  =====================================
+controls.rudderTrim = func(direction){
+	var volts = getprop("systems/electrical/outputs/control_pos_indicator");
+	setprop("sim/model/lightning/controls/flight/rudder-trim", direction);
+	controls.slewProp("controls/flight/rudder-trim", direction * 0.6 * (volts/28));
+} # end 

Index: lightning-electrical.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-electrical.nas,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- lightning-electrical.nas	1 Aug 2007 18:51:32 -0000	1.6
+++ lightning-electrical.nas	27 Mar 2010 08:42:12 -0000	1.7
@@ -1,483 +1,473 @@
-##
-# Lightning electrical system.
-# From the F.6 Pilot's Notes; making educated guesses about F.1A
-# Used Syd Adams' DHC2 as initial template
-##
-
-# Initialize internal values
-#
-
-external = nil;
-battery = nil;
-alternator = nil;
-
-last_time = 0.0;
-
-vbus_volts = 0.0;
-
-ammeter_ave = 0.0;
-
-##
-# Initialize the electrical system
-#
-
-init_electrical = func {
-    print("Initializing Nasal Electrical System");
-    external = ExternalClass.new();
-    battery = BatteryClass.new();
-    alternator = AlternatorClass.new();
-
-    props.globals.getNode("systems/electrical/suppliers/rpm_source", 1).setDoubleValue(1);
-    props.globals.getNode("systems/electrical/outputs/standby_instruments", 1).setDoubleValue(0);
-	props.globals.getNode("systems/electrical/outputs/annunciators", 1).setDoubleValue(0);
-    props.globals.getNode("controls/switches/dayNight", 1).setBoolValue(1);
-    props.globals.getNode("controls/switches/changeLamps", 1).setBoolValue(0);
-
-    setprop("controls/electric/engine/generator", "true");
-    setprop("controls/switches/autopilot", "0");
-    setprop("controls/switches/battery", "0");
-    setprop("controls/switches/cabin_air", 0);
-    setprop("controls/switches/chute_jett", "0");
-    setprop("controls/switches/eng_start_master", "0");
-    setprop("controls/switches/engine_start_0", 0);
-    setprop("controls/switches/engine_start_1", 0);
-    setprop("controls/switches/gw_fcr", 0);
-    setprop("controls/switches/ignition", 0);
-    setprop("controls/switches/iris", 0);
-    setprop("controls/switches/instrument_master", 1);
-    setprop("controls/switches/inverter_normal", 1);
-    setprop("controls/switches/rain_dispersal", 0);
-    setprop("controls/switches/taxi-lights", 0);
-    setprop("controls/switches/nav_lights", 0);
-    setprop("controls/anti-ice/pitot_heater", 0);
-    setprop("controls/anti-ice/standby_pitot_heat", 0);
-    setprop("controls/switches/instr-lights-port", 0);
-    setprop("controls/switches/instr-lights-stbd", 0);
-    setprop("controls/switches/wscreen_front", 0);
-    setprop("controls/switches/wscreen_side", 0);
-
-	setprop("systems/electrical/suppliers/gen_online", 0);
-	setprop("systems/electrical/suppliers/external", 0);
-	setprop("controls/electric/external-power", 1);
-
-	setprop("sim/model/lightning/electrical-initialized", "true");
-
-    # Request that the update fuction be called next frame
-    settimer(update_electrical, 0);
-}
-
-ExternalClass = {};
-
-ExternalClass.new = func {
-    obj = { parents : [ExternalClass],
-			extvolts : getprop("/systems/electrical/suppliers/external")};
-    return obj;
-}
-
-ExternalClass.get_output_volts = func {
-
-		me.extvolts = getprop("systems/electrical/suppliers/external");
-
-		return me.extvolts * 29;
-
-}
-	
-BatteryClass = {};
-
-BatteryClass.new = func {
-    obj = { parents : [BatteryClass],
-            ideal_volts : 24.0,
-            ideal_amps : 30.0,
-            amp_hours : 25.0,
-            charge_percent : 1.0,
-            charge_amps : 7.0 };
-    return obj;
-}
-
-
-BatteryClass.apply_load = func( amps, dt ) {
-    amphrs_used = amps * dt / 3600.0;
-    percent_used = amphrs_used / me.amp_hours;
-    me.charge_percent -= percent_used;
-    if ( me.charge_percent < 0.0 ) {
-        me.charge_percent = 0.0;
-    } elsif ( me.charge_percent > 1.0 ) {
-        me.charge_percent = 1.0;
-    }
-    #print( "battery percent = ", me.charge_percent);
-    return me.amp_hours * me.charge_percent;
-}
-
-
-BatteryClass.get_output_volts = func {
-    x = 1.0 - me.charge_percent;
-    tmp = -(3.0 * x - 1.0);
-    factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
-    return me.ideal_volts * factor ;
-}
-
-
-BatteryClass.get_output_amps = func {
-    x = 1.0 - me.charge_percent;
-    tmp = -(3.0 * x - 1.0);
-    factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
-    return me.ideal_amps * factor;
-}
-
-
-AlternatorClass = {};
-
-AlternatorClass.new = func {
-    obj = { parents : [AlternatorClass],
-			rpm_source : "/systems/electrical/suppliers/rpm_source",
-            rpm_upper_threshold : 58,
-            rpm_lower_threshold : 57,
-            ideal_volts : 28.0,
-            ideal_amps : 200.0 };
-    setprop( obj.rpm_source, 0.0 );
-    return obj;
-}
-
-AlternatorClass.update_source = func( dt ) {
-	# Choose fastest spinning engine to supply, prefer no2	
-	rpm1 = getprop("/engines/engine[0]/n1");
-	rpm2 = getprop("/engines/engine[1]/n1");
-	if (rpm1 == nil){rpm1="0"};
-	if (rpm2 == nil){rpm2="0"};
-
-	if (rpm2 < rpm1) {
-		setprop("/systems/electrical/suppliers/rpm_source", rpm1);
-		if (rpm1 > 58) {
-			setprop("/systems/electrical/suppliers/gen_online", 1);
-			} else {
-				setprop("/systems/electrical/suppliers/gen_online", 0);
-			}	
-		}
-	else {
-		setprop("/systems/electrical/suppliers/rpm_source", rpm2);
-		if (rpm2 > 58) {
-			setprop("/systems/electrical/suppliers/gen_online", 1);
-			} else {
-				setprop("/systems/electrical/suppliers/gen_online", 0);
-				}
-		}
-}
-
-AlternatorClass.apply_load = func( amps, dt ) {
-    # give full output.  This is as documented in the Pilot's Notes.
-    rpm = getprop( me.rpm_source );
-    factor = rpm / me.rpm_upper_threshold;
-    if ( factor > 1.0 ) {
-        factor = 1.0;
-    }
-    if ( rpm < me.rpm_lower_threshold ) {
-        factor = 0.000001;
-    }
-	# print( "alternator amps = ", me.ideal_amps * factor );
-    available_amps = me.ideal_amps * factor;
-    return available_amps - amps;
-}
-
-
-AlternatorClass.get_output_volts = func {
-    # give full output.  This is as documented in the Pilot's Notes.
-	rpm = getprop( me.rpm_source );
-    factor = rpm / me.rpm_upper_threshold;
-    if ( factor > 1.0 ) {
-        factor = 1.0;
-    }
-    # print( "alternator volts = ", me.ideal_volts * factor );
-	if ( rpm < me.rpm_lower_threshold ) {
-        factor = 0.000001;
-    } 
-	return me.ideal_volts * factor;
-}
-
-
-AlternatorClass.get_output_amps = func {
-    # give full output.  
-    rpm = getprop( me.rpm_source );
-    factor = rpm / me.rpm_upper_threshold;
-    if ( factor > 1.0 ) {
-        factor = 1.0;
-    }
-    # print( "alternator amps = ", ideal_amps * factor );
-	if ( rpm < me.rpm_lower_threshold ) {
-        factor = 0.000001;
-    } 
-    return me.ideal_amps * factor;
-}
-
-
-update_electrical = func {
-    time = getprop("/sim/time/elapsed-sec");
-    dt = time - last_time;
-    last_time = time;
-
-    update_virtual_bus( dt );
-
-    # Request that the update fuction be called again next frame
-    settimer(update_electrical, 0);
-}
-
-
-
-update_virtual_bus = func( dt ) {
-    battery_volts = battery.get_output_volts();
-    alternator_source = alternator.update_source(dt);
-    alternator_volts = alternator.get_output_volts();
-    external_volts = external.get_output_volts();
-    load = 0.0;
-
-    # switch state
-    master_bat = getprop("/controls/switches/battery");
-    master_alt = getprop("/controls/electric/engine/generator");
-
-    # determine power source
-
-
-    bus_volts = 0.0;
-    power_source = nil;
-	if ( master_bat > 0) {
-        bus_volts = battery_volts;
-        power_source = "battery";
-    }
-    if ( master_alt and (alternator_volts > bus_volts) ) {
-        bus_volts = alternator_volts;
-        power_source = "alternator";
-    }
-	if ( external_volts > bus_volts ) {
-        bus_volts = external_volts;
-        power_source = "external";
-    }
-    
-    # print( "virtual bus volts = ", bus_volts );
-
-    # bus network (1. these must be called in the right order, 2. the
-    # bus routine itself determins where it draws power from.)
-	load += electrical_28VDC_bus();
-    load += electrical_115VAC3phase_unswitched_bus();
-    load += electrical_115VAC3phase_with_standby_inverter_bus();
-	load += electrical_115VAC3phase_without_standby_inverter_bus();
-	load += electrical_115VAC1phase_bus();
-	load += electrical_28VAC1phase_bus();
-
-    # system loads and ammeter gauge
-    ammeter = 0.0;
-    if ( bus_volts > 1.0 ) {
-        # normal load
-        load += 15.0;
-
-        # ammeter gauge
-        if ( power_source == "battery" ) {
-            ammeter = -load;
-        } else {
-            ammeter = battery.charge_amps;
-        }
-    }
-    # print( "ammeter = ", ammeter );
-
-    # charge/discharge the battery
-    if ( power_source == "battery" ) {
-        battery.apply_load( load, dt );
-    } elsif ( bus_volts > battery_volts ) {
-        battery.apply_load( -battery.charge_amps, dt );
-    }
-
-    # filter ammeter needle pos
-    ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
-
-    # outputs
-    #setprop("/systems/electrical/amps", ammeter_ave);
-    #setprop("/systems/electrical/volts", bus_volts);
-    vbus_volts = bus_volts;
-
-    return load;
-}
-
-electrical_28VDC_bus = func() {
-	
-    engSw = (getprop("controls/switches/eng_start_master"));
-    ignSw = (getprop("controls/switches/ignition"));
-	start = engSw * ignSw;
-    portlightSw = getprop("controls/switches/instr-lights-port");
-    stbdlightSw = getprop("controls/switches/instr-lights-stbd");
-
-	bus_volts = vbus_volts ;
-	load = 0.0;
-	
-	# Voltmeter	
-    setprop("/systems/electrical/outputs/annunciators", bus_volts);
-	# Airbrakes control and position indicator
-    setprop("/systems/electrical/outputs/airbrakes", bus_volts);
-    # Armament circuits
-    setprop("systems/electrical/outputs/armaments", bus_volts);
-    # Standby AI and Direction Indicator
-    setprop("systems/electrical/outputs/standby_instruments", bus_volts);
-    # Brake Chute Jettison
-	setprop("systems/electrical/outputs/chute_jett", bus_volts);
-    # Camera Controls
-   	setprop("systems/electrical/outputs/camera", bus_volts);
-    # Com 1 Power
-    setprop("systems/electrical/outputs/comm[0]", bus_volts);
-    # Com 2 Power
-    setprop("systems/electrical/outputs/comm[1]", bus_volts);
-    # Controls and Trim indication
-    setprop("systems/electrical/outputs/control_pos_indicator", bus_volts);
-    # DME Power
-    setprop("systems/electrical/outputs/dme[0]", bus_volts);
-    # Engine Start and Relight
-	setprop("systems/electrical/outputs/ignition[0]", bus_volts * start);
-	setprop("systems/electrical/outputs/ignition[1]", bus_volts * start);
-    # Flaps power and indication
-    setprop("systems/electrical/outputs/flaps", bus_volts);
-	# HSI Power
-    setprop("systems/electrical/outputs/hsi", bus_volts);
-    # Instruments Lights-Port
-	setprop("systems/electrical/outputs/instr-lights-port", bus_volts * portlightSw);
-    # Instruments Lights-Stbd
-	setprop("systems/electrical/outputs/instr-lights-stbd", bus_volts * stbdlightSw);
-    # Nav Lights
-    if( getprop("controls/switches/nav_lights") != "0"){
-    	setprop("systems/electrical/outputs/nav_lights", bus_volts);
-		load +=1;
-	}
-	else {setprop("systems/electrical/outputs/nav_lights",0);}
-    # Nav 1 Power
-    setprop("systems/electrical/outputs/nav[0]", bus_volts);
-    setprop("systems/electrical/outputs/adf", bus_volts);
-    # Nav 2 Power
-    setprop("systems/electrical/outputs/nav[1]", bus_volts);
-    # Seat
-    setprop("systems/electrical/outputs/seat", bus_volts);
-    # TACAN
-    setprop("systems/electrical/outputs/tacan", bus_volts);
-    # Taxi Lights
-    if( getprop("controls/switches/taxi-lights") != "0"){
-    	setprop("systems/electrical/outputs/taxi-lights", bus_volts);
-		load +=3;
-	}
-	else {setprop("systems/electrical/outputs/taxi-lights",0);}
-    # Turn Co-ordinator
-	setprop("systems/electrical/outputs/turn-coordinator[0]", bus_volts);
-    # Undercarriage operation and indicators
-    setprop("systems/electrical/outputs/undercarriage", bus_volts);
-	
-
-    # return cumulative load
-    return load;
-}
-
-electrical_115VAC3phase_unswitched_bus = func() {
-	gen_online = getprop("systems/electrical/suppliers/gen_online");
-    bus_volts = vbus_volts * gen_online * 4.1072;
-	load = 0.0;
-
-    # A.I. 23B Radar
-    setprop("systems/electrical/outputs/radar", bus_volts);
-	if(bus_volts > 114){setprop("instrumentation/radar/switch","on" );}
-	else{setprop("instrumentation/radar/switch","off");}
-    # G.W. Supply
-    setprop("systems/electrical/outputs/gw", bus_volts);
-    # Ventral Pack Fuel Pump
-    setprop("systems/electrical/outputs/ventral_fuel_pump", bus_volts);
-    # Windscreen Heaters Side and Centre
-    setprop("systems/electrical/outputs/windscreen_heaters", bus_volts);
-	# Anti-icing
-	if ( getprop("/controls/switches/rain_dispersal") == "-1") {
-		setprop("systems/electrical/outputs/de-ice", bus_volts);
-		load += 3.5;
-	}
-	else {setprop("systems/electrical/outputs/de-ice", 0 );}
-
-    # return cumulative load
-    return load;
-}
-
-electrical_115VAC3phase_with_standby_inverter_bus = func() {
-    # Can run from either main or standby inverter
-    ins_master_switch = getprop("controls/switches/instrument_master");
-    inverter_norm_switch = getprop("controls/switches/inverter_normal");
-    if (inverter_norm_switch != 0) {
-									inv_switch = 1;
-	}
-	else { inv_switch = 0 }
-    bus_volts = vbus_volts * 4.1072 * ins_master_switch * inv_switch ;
-    load = 0.0;
-
-    # Fuel Contents Display
-    setprop("systems/electrical/outputs/fuel_contents", bus_volts);
-	#Also Cockpit Temp - not implementing for now :-)
-
-    # return cumulative load
-    return load;
-}
-
-electrical_115VAC3phase_without_standby_inverter_bus = func() {
-	# Contains instruments with no standby AC power available
-    switch = getprop("controls/switches/instrument_master");
-    switch2 = getprop("controls/switches/inverter_normal");
-	gen_online = getprop("systems/electrical/suppliers/gen_online");
-    bus_volts = vbus_volts * 4.1072 * gen_online * switch * switch2;
-    load = 0.0;
-
-    # Autopilot Power
-	
-	if( getprop("controls/switches/autopilot") != "0"){
-		setprop("systems/electrical/outputs/autopilot", bus_volts);}
-	else {setprop("systems/electrical/outputs/autopilot",0);}
-
-    # Autothrottle Servos (Don't require main AP to be switched on)
-    setprop("/systems/electrical/outputs/autothrottle", bus_volts);
-
-    # Main AI and HSI - Automatic Failover to 28VDC on loss of AC
-	#if( bus_volts < 113 )
-	#if( gen_online < 1) {
-	#	setprop("/systems/electrical/outputs/", vbus_volts);
-	#	}
-	#else {
-	#	setprop("/systems/electrical/outputs/standby_instruments", bus_volts);
-	#}
-    
-	# MRG (Master Reference Gyro) - feeds AI (and NAV display on F.6)
-    setprop("/systems/electrical/outputs/MRG", bus_volts);
-    setprop("/systems/electrical/outputs/DG", bus_volts);
-
-	# JPT Control 
-    setprop("/systems/electrical/outputs/JPT", bus_volts);
-
-    # return cumulative load
-    return load;
-}
-
-electrical_115VAC1phase_bus = func() {
-	gen_online = getprop("/systems/electrical/suppliers/gen_online");
-    bus_volts = vbus_volts * 4.1072 * gen_online;
-	load = 0.0;
-
-    # TACAN Power
-    setprop("/systems/electrical/outputs/TACAN", bus_volts);
-	# I.F.F
-	# Spraymat Auto Temp. Control
-
-    # return cumulative load
-    return load;
-}
-
-electrical_28VAC1phase_bus = func() {
-	gen_online = getprop("/systems/electrical/suppliers/gen_online");
-    bus_volts = vbus_volts * gen_online;
-	load = 0.0;
-
-    # Pitot Heaters
-    setprop("/systems/electrical/outputs/pitot-heat", bus_volts);
-	# Services Hydraulic Pressure Gauge
-    setprop("/systems/electrical/outputs/Hydraulic_services_gauge", bus_volts);
-
-    # return cumulative load
-    return load;
-}
-# Setup a timer based call to initialized the electrical system as
-# soon as possible.
-#settimer(init_electrical, 0);
-setlistener("/sim/signals/fdm-initialized",init_electrical);
+##
+# Lightning electrical system.
+# From the F.6 Pilot's Notes; making educated guesses about F.1A
+# Used Syd Adams' DHC2 as initial template
+##
+
+# Initialize internal values
+#
+
+var external = nil;
+var battery = nil;
+var alternator = nil;
+var last_time = 0.0;
+var vbus_volts = 0.0;
+var ammeter_ave = 0.0;
+
+##
+# Initialize the electrical system
+#
+
+var init_electrical = func {
+    print("Initializing Nasal Electrical System");
+    external = ExternalClass.new();
+    battery = BatteryClass.new();
+    alternator = AlternatorClass.new();
+
+    props.globals.getNode("systems/electrical/suppliers/rpm_source", 1).setDoubleValue(1);
+    props.globals.getNode("systems/electrical/outputs/standby_instruments", 1).setDoubleValue(0);
+    props.globals.getNode("systems/electrical/outputs/annunciators", 1).setDoubleValue(0);
+    props.globals.getNode("controls/switches/dayNight", 1).setBoolValue(1);
+    props.globals.getNode("controls/switches/changeLamps", 1).setBoolValue(0);
+
+    setprop("controls/electric/engine/generator", "true");
+    setprop("controls/switches/autopilot", "0");
+    setprop("controls/switches/battery", "0");
+    setprop("controls/switches/cabin_air", 0);
+    setprop("controls/switches/chute_jett", "0");
+    setprop("controls/switches/eng_start_master", "0");
+    setprop("controls/switches/engine_start_0", 0);
+    setprop("controls/switches/engine_start_1", 0);
+    setprop("controls/switches/gw_fcr", 0);
+    setprop("controls/switches/ignition", 0);
+    setprop("controls/switches/iris", 0);
+    setprop("controls/switches/instrument_master", 1);
+    setprop("controls/switches/inverter_normal", 1);
+    setprop("controls/switches/rain_dispersal", 0);
+    setprop("controls/switches/taxi-lights", 0);
+    setprop("controls/switches/nav_lights", 0);
+    setprop("controls/anti-ice/pitot_heater", 0);
+    setprop("controls/anti-ice/standby_pitot_heat", 0);
+    setprop("controls/switches/instr-lights-port", 0);
+    setprop("controls/switches/instr-lights-stbd", 0);
+    setprop("controls/switches/wscreen_front", 0);
+    setprop("controls/switches/wscreen_side", 0);
+    setprop("systems/electrical/suppliers/gen_online", 0);
+    setprop("systems/electrical/suppliers/external", 0);
+    setprop("controls/electric/external-power", 1);
+    setprop("sim/model/lightning/electrical-initialized", "true");
+
+    # Request that the update fuction be called next frame
+    settimer(update_electrical, 0);
+}
+
+var ExternalClass = {
+
+new: func {
+    var obj = { parents : [ExternalClass],
+			extvolts : getprop("/systems/electrical/suppliers/external")};
+    return obj;
+},
+
+get_output_volts: func {
+	me.extvolts = getprop("systems/electrical/suppliers/external");
+	return me.extvolts * 29;
+    },
+};	
+var BatteryClass = {
+
+new: func {
+    var obj = { parents : [BatteryClass],
+            ideal_volts : 24.0,
+            ideal_amps : 30.0,
+            amp_hours : 25.0,
+            charge_percent : 1.0,
+            charge_amps : 7.0 };
+    return obj;
+    },
+
+apply_load: func( amps, dt ) {
+#    print("Battery Apply Load ", me.amp_hours );
+    var amphrs_used = amps * dt / 3600000.0;
+    var percent_used = amphrs_used / me.amp_hours;
+    me.charge_percent -= percent_used;
+    if ( me.charge_percent < 0.0 ) {
+        me.charge_percent = 0.0;
+    } elsif ( me.charge_percent > 1.0 ) {
+        me.charge_percent = 1.0;
+    }
+    #print( "battery percent = ", me.charge_percent);
+    return me.amp_hours * me.charge_percent;
+    },
+
+get_output_volts: func {
+    var x = 1.0 - me.charge_percent;
+    var tmp = -(3.0 * x - 1.0);
+    var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+    return me.ideal_volts * factor ;
+    },
+
+get_output_amps: func {
+    var x = 1.0 - me.charge_percent;
+    var tmp = -(3.0 * x - 1.0);
+    var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
+    return me.ideal_amps * factor;
+    },
+};
+
+
+var AlternatorClass = {
+
+new: func {
+    var obj = { parents : [AlternatorClass],
+	rpm_source : "/systems/electrical/suppliers/rpm_source",
+        rpm_upper_threshold : 58,
+        rpm_lower_threshold : 57,
+        ideal_volts : 28.0,
+        ideal_amps : 200.0 };
+    setprop( obj.rpm_source, 0.0 );
+    return obj;
+},
+
+update_source: func( dt ) {
+	# Choose fastest spinning engine to supply, prefer no2	
+	var rpm1 = getprop("/engines/engine[0]/n1");
+	var rpm2 = getprop("/engines/engine[1]/n1");
+	if (rpm1 == nil){rpm1="0"};
+	if (rpm2 == nil){rpm2="0"};
+	if (rpm2 < rpm1) {
+		setprop("/systems/electrical/suppliers/rpm_source", rpm1);
+		if (rpm1 > 58) {
+			setprop("/systems/electrical/suppliers/gen_online", 1);
+			} else {
+				setprop("/systems/electrical/suppliers/gen_online", 0);
+			}	
+		}
+	else {
+		setprop("/systems/electrical/suppliers/rpm_source", rpm2);
+		if (rpm2 > 58) {
+			setprop("/systems/electrical/suppliers/gen_online", 1);
+			} else {
+				setprop("/systems/electrical/suppliers/gen_online", 0);
+				}
+		}
+},
+
+apply_load: func( amps, dt ) {
+    # give full output.  This is as documented in the Pilot's Notes.
+    var rpm = getprop( me.rpm_source );
+ #   print("Alternator Apply Load ", me.rpm_upper_threshold );
+    var factor = rpm / me.rpm_upper_threshold;
+    if ( factor > 1.0 ) {
+        factor = 1.0;
+    }
+    if ( rpm < me.rpm_lower_threshold ) {
+        factor = 0.000001;
+    }
+	# print( "alternator amps = ", me.ideal_amps * factor );
+    var available_amps = me.ideal_amps * factor;
+    return available_amps - amps;
+},
+
+get_output_volts: func {
+    # give full output.  This is as documented in the Pilot's Notes.
+    var rpm = getprop( me.rpm_source );
+  #  print("Get Alternator Output Volts ", me.rpm_upper_threshold );
+    var factor = rpm / me.rpm_upper_threshold;
+    if ( factor > 1.0 ) {
+        factor = 1.0;
+    }
+    # print( "alternator volts = ", me.ideal_volts * factor );
+	if ( rpm < me.rpm_lower_threshold ) {
+        factor = 0.000001;
+    } 
+	return me.ideal_volts * factor;
+},
+
+get_output_amps: func {
+    # give full output.  
+    var rpm = getprop( me.rpm_source );
+#    print("Get  Alternator Output Amps ", me.rpm_upper_threshold );
+    var factor = rpm / me.rpm_upper_threshold;
+    if ( factor > 1.0 ) {
+        factor = 1.0;
+    }
+    # print( "alternator amps = ", ideal_amps * factor );
+	if ( rpm < me.rpm_lower_threshold ) {
+        factor = 0.000001;
+    } 
+    return me.ideal_amps * factor;
+    },
+};
+
+var update_electrical = func {
+    var time = getprop("/sim/time/elapsed-sec"); ## NB this is time in miliiseconds since sim started
+    var dt = time - last_time;
+    last_time = time;
+    update_virtual_bus( dt );
+    # Request that the update fuction be called again next frame
+    settimer(update_electrical, 0);
+}
+
+var update_virtual_bus = func( dt ) {
+#    print ("update virtual bus");
+    var battery_volts = battery.get_output_volts();
+    var alternator_source = alternator.update_source(dt);
+    var alternator_volts = alternator.get_output_volts();
+    var external_volts = external.get_output_volts();
+    var load = 0.0;
+
+    # switch state
+    var master_bat = getprop("/controls/switches/battery");
+    var master_alt = getprop("/controls/electric/engine/generator");
+
+    # determine power source
+
+    var bus_volts = 0.0;
+    var power_source = nil;
+	if ( master_bat > 0) {
+        bus_volts = battery_volts;
+        power_source = "battery";
+    }
+    if ( master_alt and (alternator_volts > bus_volts) ) {
+        bus_volts = alternator_volts;
+        power_source = "alternator";
+    }
+	if ( external_volts > bus_volts ) {
+        bus_volts = external_volts;
+        power_source = "external";
+    }
+    
+    # print( "virtual bus volts = ", bus_volts );
+
+    # bus network (1. these must be called in the right order, 2. the
+    # bus routine itself determins where it draws power from.)
+	load += electrical_28VDC_bus();
+    load += electrical_115VAC3phase_unswitched_bus();
+    load += electrical_115VAC3phase_with_standby_inverter_bus();
+	load += electrical_115VAC3phase_without_standby_inverter_bus();
+	load += electrical_115VAC1phase_bus();
+	load += electrical_28VAC1phase_bus();
+
+    # system loads and ammeter gauge
+    var ammeter = 0.0;
+    if ( bus_volts > 1.0 ) {
+        # normal load
+        load += 15.0;
+
+        # ammeter gauge
+        if ( power_source == "battery" ) {
+            ammeter = -load;
+        } else {
+            ammeter = battery.charge_amps;
+        }
+    }
+    # print( "ammeter = ", ammeter );
+
+    # charge/discharge the battery
+    if ( power_source == "battery" ) {
+        battery.apply_load( load, dt );
+    } elsif ( bus_volts > battery_volts ) {
+        battery.apply_load( -battery.charge_amps, dt );
+    }
+
+    # filter ammeter needle pos
+    ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
+
+    # outputs
+    setprop("/systems/electrical/amps", ammeter_ave);
+    setprop("/systems/electrical/volts", bus_volts);
+    vbus_volts = bus_volts;
+
+    return load;
+}
+
+var electrical_28VDC_bus = func() {
+	
+    var engSw = (getprop("controls/switches/eng_start_master"));
+    var ignSw = (getprop("controls/switches/ignition"));
+    var start = engSw * ignSw;
+    if (start == nil){start="0"};
+    var portlightSw = getprop("controls/switches/instr-lights-port");
+    var stbdlightSw = getprop("controls/switches/instr-lights-stbd");
+    if (vbus_volts == nil){vbus_volts="0"};
+    var bus_volts = vbus_volts ;
+    var load = 0.0;
+
+	
+	# Voltmeter	
+    setprop("/systems/electrical/outputs/annunciators", bus_volts);
+	# Airbrakes control and position indicator
+    setprop("/systems/electrical/outputs/airbrakes", bus_volts);
+    # Armament circuits
+    setprop("systems/electrical/outputs/armaments", bus_volts);
+    # Standby AI and Direction Indicator
+    setprop("systems/electrical/outputs/standby_instruments", bus_volts);
+    # Brake Chute Jettison
+    setprop("systems/electrical/outputs/chute_jett", bus_volts);
+    # Camera Controls
+    setprop("systems/electrical/outputs/camera", bus_volts);
+    # Com 1 Power
+    setprop("systems/electrical/outputs/comm[0]", bus_volts);
+    # Com 2 Power
+    setprop("systems/electrical/outputs/comm[1]", bus_volts);
+    # Controls and Trim indication
+    setprop("systems/electrical/outputs/control_pos_indicator", bus_volts);
+    # DME Power
+    setprop("systems/electrical/outputs/dme[0]", bus_volts);
+    # Engine Start and Relight
+    setprop("systems/electrical/outputs/ignition[0]", bus_volts * start);
+    setprop("systems/electrical/outputs/ignition[1]", bus_volts * start);
+    # Flaps power and indication
+    setprop("systems/electrical/outputs/flaps", bus_volts);
+	# HSI Power
+    setprop("systems/electrical/outputs/hsi", bus_volts);
+    # Instruments Lights-Port
+    setprop("systems/electrical/outputs/instr-lights-port", bus_volts * portlightSw);
+    # Instruments Lights-Stbd
+	setprop("systems/electrical/outputs/instr-lights-stbd", bus_volts * stbdlightSw);
+    # Nav Lights
+    if( getprop("controls/switches/nav_lights") != "0"){
+    	setprop("systems/electrical/outputs/nav_lights", bus_volts);
+		load +=1;
+	}
+	else {setprop("systems/electrical/outputs/nav_lights",0);}
+    # Nav 1 Power
+    setprop("systems/electrical/outputs/nav[0]", bus_volts);
+    setprop("systems/electrical/outputs/adf", bus_volts);
+    # Nav 2 Power
+    setprop("systems/electrical/outputs/nav[1]", bus_volts);
+    # Seat
+    setprop("systems/electrical/outputs/seat", bus_volts);
+    # TACAN
+    setprop("systems/electrical/outputs/tacan", bus_volts);
+    # Taxi Lights
+    if( getprop("controls/switches/taxi-lights") != "0"){
+    	setprop("systems/electrical/outputs/taxi-lights", bus_volts);
+		load +=3;
+	}
+	else {setprop("systems/electrical/outputs/taxi-lights",0);}
+    # Turn Co-ordinator
+	setprop("systems/electrical/outputs/turn-coordinator[0]", bus_volts);
+    # Undercarriage operation and indicators
+    setprop("systems/electrical/outputs/undercarriage", bus_volts);
+	
+
+    # return cumulative load
+    return load;
+}
+
+var electrical_115VAC3phase_unswitched_bus = func() {
+	var gen_online = getprop("systems/electrical/suppliers/gen_online");
+    var bus_volts = vbus_volts * gen_online * 4.1072;
+	var load = 0.0;
+
+    # A.I. 23B Radar
+    setprop("systems/electrical/outputs/radar", bus_volts);
+#######	if(bus_volts > 114){setprop("instrumentation/radar/switch","on" );} # this can crash flightgear !!!!
+#######	else{setprop("instrumentation/radar/switch","off");}
+    # G.W. Supply
+    setprop("systems/electrical/outputs/gw", bus_volts);
+    # Ventral Pack Fuel Pump
+    setprop("systems/electrical/outputs/ventral_fuel_pump", bus_volts);
+    # Windscreen Heaters Side and Centre
+    setprop("systems/electrical/outputs/windscreen_heaters", bus_volts);
+	# Anti-icing
+	if ( getprop("/controls/switches/rain_dispersal") == "-1") {
+		setprop("systems/electrical/outputs/de-ice", bus_volts);
+		load += 3.5;
+	}
+	else {setprop("systems/electrical/outputs/de-ice", 0 );}
+
+    # return cumulative load
+    return load;
+}
+
+var electrical_115VAC3phase_with_standby_inverter_bus = func() {
+    # Can run from either main or standby inverter
+    var ins_master_switch = getprop("controls/switches/instrument_master");
+    var inverter_norm_switch = getprop("controls/switches/inverter_normal");
+    var inv_switch = 0;
+    if (inverter_norm_switch != 0) {
+	inv_switch = 1;
+	}
+	else { inv_switch = 0 }
+    var bus_volts = vbus_volts * 4.1072 * ins_master_switch * inv_switch ;
+    var load = 0.0;
+
+    # Fuel Contents Display
+    setprop("systems/electrical/outputs/fuel_contents", bus_volts);
+	#Also Cockpit Temp - not implementing for now :-)
+
+    # return cumulative load
+    return load;
+}
+
+var electrical_115VAC3phase_without_standby_inverter_bus = func() {
+	# Contains instruments with no standby AC power available
+    var switch = getprop("controls/switches/instrument_master");
+    var switch2 = getprop("controls/switches/inverter_normal");
+	var gen_online = getprop("systems/electrical/suppliers/gen_online");
+    var bus_volts = vbus_volts * 4.1072 * gen_online * switch * switch2;
+    var load = 0.0;
+
+    # Autopilot Power
+	
+	if( getprop("controls/switches/autopilot") != "0"){
+		setprop("systems/electrical/outputs/autopilot", bus_volts);}
+	else {setprop("systems/electrical/outputs/autopilot",0);}
+
+    # Autothrottle Servos (Don't require main AP to be switched on)
+    setprop("/systems/electrical/outputs/autothrottle", bus_volts);
+
+    # Main AI and HSI - Automatic Failover to 28VDC on loss of AC
+	#if( bus_volts < 113 )
+	#if( gen_online < 1) {
+	#	setprop("/systems/electrical/outputs/", vbus_volts);
+	#	}
+	#else {
+	#	setprop("/systems/electrical/outputs/standby_instruments", bus_volts);
+	#}
+    
+	# MRG (Master Reference Gyro) - feeds AI (and NAV display on F.6)
+    setprop("/systems/electrical/outputs/MRG", bus_volts);
+    setprop("/systems/electrical/outputs/DG", bus_volts);
+
+	# JPT Control 
+    setprop("/systems/electrical/outputs/JPT", bus_volts);
+
+    # return cumulative load
+    return load;
+}
+
+var electrical_115VAC1phase_bus = func() {
+	var gen_online = getprop("/systems/electrical/suppliers/gen_online");
+    var bus_volts = vbus_volts * 4.1072 * gen_online;
+	var load = 0.0;
+
+    # TACAN Power
+    setprop("/systems/electrical/outputs/TACAN", bus_volts);
+	# I.F.F
+	# Spraymat Auto Temp. Control
+
+    # return cumulative load
+    return load;
+}
+
+var electrical_28VAC1phase_bus = func() {
+	var gen_online = getprop("/systems/electrical/suppliers/gen_online");
+    var bus_volts = vbus_volts * gen_online;
+	var load = 0.0;
+
+    # Pitot Heaters
+    setprop("/systems/electrical/outputs/pitot-heat", bus_volts);
+	# Services Hydraulic Pressure Gauge
+    setprop("/systems/electrical/outputs/Hydraulic_services_gauge", bus_volts);
+
+    # return cumulative load
+    return load;
+}
+# Setup a timer based call to initialized the electrical system as
+# soon as possible.
+#settimer(init_electrical, 0);
+setlistener("/sim/signals/fdm-initialized",init_electrical);

Index: lightning-lights.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Aircraft/Lightning/Systems/lightning-lights.nas,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- lightning-lights.nas	24 Nov 2007 17:29:49 -0000	1.2
+++ lightning-lights.nas	27 Mar 2010 08:42:13 -0000	1.3
@@ -1,40 +1,41 @@
-# Control Lightning Lights
-
-# Initialise properties
-setprop("sim/model/lightning/lights/nav_lights",0);
-
-#Flasher borrowed from Concorde and heavily modified
-var NavLights = func {
-	var switch = getprop("controls/switches/nav_lights");
-	var light = getprop("sim/model/lightning/lights/nav_lights");
-	var volts = getprop("systems/electrical/outputs/nav_lights");
-	
-	# Off
-	if (switch == "0" or switch == "nil") {
-		setprop ("sim/model/lightning/lights/nav_lights",0);
-	}
-	# Steady
-	elsif (switch == "-1" ) {
-		setprop ("sim/model/lightning/lights/nav_lights",volts);
-		settimer(Lightning.NavLights, 2);
-	}
-	# Flashing
-	elsif (switch > "0") {
-	   if( light == nil or light == "0") {
-       light = "1";
-       lightsec = 3;
-	   }
-	   else {
-	       light = "0";
-	       lightsec = 6;
-	   }
-	   var value = volts*light;
-	   setprop("sim/model/lightning/lights/nav_lights",value);
-
-	   # re-schedule the next call
-		settimer(Lightning.NavLights, lightsec);
-	}
-
-} #End Func	
-setlistener("controls/switches/nav_lights", NavLights);
-
+# Control Lightning Lights
+
+# Initialise properties
+setprop("sim/model/lightning/lights/nav_lights",0);
+
+#Flasher borrowed from Concorde and heavily modified
+var NavLights = func {
+	var switch = getprop("controls/switches/nav_lights");
+	var light = getprop("sim/model/lightning/lights/nav_lights");
+	var volts = getprop("systems/electrical/outputs/nav_lights");
+	var lightsec = 3;
+	
+	# Off
+	if (switch == "0" or switch == "nil") {
+		setprop ("sim/model/lightning/lights/nav_lights",0);
+	}
+	# Steady
+	elsif (switch == "-1" ) {
+		setprop ("sim/model/lightning/lights/nav_lights",volts);
+		settimer(Lightning.NavLights, 2);
+	}
+	# Flashing
+	elsif (switch > "0") {
+	   if( light == nil or light == "0") {
+       light = "1";
+       lightsec = 3;
+	   }
+	   else {
+	       light = "0";
+	       lightsec = 6;
+	   }
+	   var value = volts*light;
+	   setprop("sim/model/lightning/lights/nav_lights",value);
+
+	   # re-schedule the next call
+		settimer(Lightning.NavLights, lightsec);
+	}
+
+} #End Func	
+setlistener("controls/switches/nav_lights", NavLights);
+


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.