From 68fc719ba9b9ca19e363d6960b5456d70de87e26 Mon Sep 17 00:00:00 2001
From: Thomas Gubler <thomasgubler@gmail.com>
Date: Sun, 29 Dec 2013 22:49:59 +0100
Subject: [PATCH] flightgear HIL add catapult to Malolo1

---
 files/flightgear/Aircraft/Malolo1/Malolo1-set.xml  | 26 ++++++++++++++
 files/flightgear/Aircraft/Malolo1/Malolo1.xml      | 15 ++++++++
 .../flightgear/Aircraft/Malolo1/Nasal/catapult.nas | 42 ++++++++++++++++++++++
 .../Aircraft/Malolo1/readme_qgroundcontrol.txt     |  3 ++
 4 files changed, 86 insertions(+)
 create mode 100644 files/flightgear/Aircraft/Malolo1/Nasal/catapult.nas
 create mode 100644 files/flightgear/Aircraft/Malolo1/readme_qgroundcontrol.txt

diff --git a/files/flightgear/Aircraft/Malolo1/Malolo1-set.xml b/files/flightgear/Aircraft/Malolo1/Malolo1-set.xml
index c85509b..67eda11 100644
--- a/files/flightgear/Aircraft/Malolo1/Malolo1-set.xml
+++ b/files/flightgear/Aircraft/Malolo1/Malolo1-set.xml
@@ -63,9 +63,33 @@ dynamics model, and external 3D model.
     <line>Approach speed: 15-25 mph</line>
     <line>Stall speed (Vs): 10 mph</line>
   </help>
+	<menubar>
+	  <default>
+      <menu n="10">
+      <label>Malolo</label>
+      <enabled type="bool">true</enabled>
+			<item>
+		    <label>Operate catapult</label>
+		    <binding>
+		      <command>nasal</command>
+		      <script>
+		        malolo1.launchCatapult();
+		      </script>
+		    </binding>
+      </item>
+
+      </menu>
+	  </default>
+	</menubar>
 
  </sim>
 
+<nasal>
+	<malolo1>
+		<file>Aircraft/Malolo1/Nasal/catapult.nas</file>
+	</malolo1>
+</nasal>
+
  <controls>
   <flight>
    <aileron-trim>-0.01</aileron-trim>   <!-- fixed -->
@@ -100,4 +124,6 @@ dynamics model, and external 3D model.
    </config>
  </autopilot>
 
+
+
 </PropertyList>
diff --git a/files/flightgear/Aircraft/Malolo1/Malolo1.xml b/files/flightgear/Aircraft/Malolo1/Malolo1.xml
index c12a9ae..a38ff1f 100644
--- a/files/flightgear/Aircraft/Malolo1/Malolo1.xml
+++ b/files/flightgear/Aircraft/Malolo1/Malolo1.xml
@@ -543,4 +543,19 @@
             </function>
         </axis>
     </aerodynamics>
+
+    <external_reactions>
+        <force name="catapult" frame="BODY">
+            <location unit="M">
+                <x> 0 </x>
+                <y> 0 </y>
+                <z> 0 </z>
+            </location>
+            <direction>
+                <x>1</x>
+                <y>0</y>
+                <z>0</z>
+            </direction>
+        </force>
+    </external_reactions>
 </fdm_config>
diff --git a/files/flightgear/Aircraft/Malolo1/Nasal/catapult.nas b/files/flightgear/Aircraft/Malolo1/Nasal/catapult.nas
new file mode 100644
index 0000000..e576822
--- /dev/null
+++ b/files/flightgear/Aircraft/Malolo1/Nasal/catapult.nas
@@ -0,0 +1,42 @@
+var launchCatapult = func {
+	# time on catapult = 1/10 sec
+	# speed when leaving catapult = 50 km/h ?
+	var countdownRunning = 1;
+	var count = 5;
+	var countdown = func {
+		if (countdownRunning) {
+			if (count != 0) {
+				setprop("/sim/screen/white",count);
+				count = count - 1;
+				settimer(countdown, 1);
+			}
+			else {
+				countdownRunning = 0;
+				setprop("/sim/screen/yellow","Go!");
+				launch();
+				var launchPad = aircraft.door.new("/sim/model/X100/launch-pad", 0.2);
+				launchPad.toggle();
+			}
+		}
+	}
+	countdown();
+	
+	var launchRunning = 1;
+	var magnitude = 230; # lbs, unrealisticly high, because the FDM is wrong
+	var launch = func {
+		if (launchRunning) {
+			if (magnitude == 0){
+				launchRunning = 0;
+				
+				# remove launcher contact points 
+				setprop("/fdm/jsbsim/contact/unit[6]/pos-norm",0);
+				setprop("/fdm/jsbsim/contact/unit[7]/pos-norm",0);
+				setprop("/fdm/jsbsim/contact/unit[8]/pos-norm",0);
+			}
+			setprop("/fdm/jsbsim/external_reactions/catapult/magnitude",magnitude);
+			print (magnitude);
+			magnitude = 0;
+			settimer(launch, 0.1);
+		}
+	}
+}
diff --git a/files/flightgear/Aircraft/Malolo1/readme_qgroundcontrol.txt b/files/flightgear/Aircraft/Malolo1/readme_qgroundcontrol.txt
new file mode 100644
index 0000000..a1eb2c4
--- /dev/null
+++ b/files/flightgear/Aircraft/Malolo1/readme_qgroundcontrol.txt
@@ -0,0 +1,3 @@
+This is the original Malolo1 model with added catapult functionality. The catapult is from https://gitorious.org/mavlab/x100/
+
+-Thomas Gubler