From d871e07e97c1ade2b5dad4ed1e00260ee2917c24 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Mon, 15 Jan 2018 15:38:45 +0000
Subject: [PATCH] Backport from multi-Pi deployment branch. refs 3079

---
 .../trunk/build.properties                    |  1 +
 .../trunk/plugin.xml                          | 21 ++++++++++
 .../ui/editpart/EditPartFactory.java          |  9 ++++-
 .../ui/handler/ConsoleOutputHandler.java      | 40 +++++++++++++++++++
 .../ui/prototype/ProtoypeProvider.java        | 18 +++++++++
 .../trunk/META-INF/MANIFEST.MF                |  5 ++-
 .../trunk/model/raspberry.ecore               |  3 ++
 .../compose/RaspberryPiCompositor.java        | 16 +++++---
 .../generator/executable/MainGenerator.java   | 32 +++++++++++++++
 .../util/RaspberryModelElementFactory.java    | 27 +++++++++++++
 10 files changed, 163 insertions(+), 9 deletions(-)
 create mode 100644 org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/handler/ConsoleOutputHandler.java

diff --git a/org.fortiss.af3.platform.raspberry.ui/trunk/build.properties b/org.fortiss.af3.platform.raspberry.ui/trunk/build.properties
index c514c7fd..37c23797 100644
--- a/org.fortiss.af3.platform.raspberry.ui/trunk/build.properties
+++ b/org.fortiss.af3.platform.raspberry.ui/trunk/build.properties
@@ -5,6 +5,7 @@
 
 bin.includes = .,\
                META-INF/,\
+               icons/,\
                plugin.xml
 source.. = src/
 output.. = build/
\ No newline at end of file
diff --git a/org.fortiss.af3.platform.raspberry.ui/trunk/plugin.xml b/org.fortiss.af3.platform.raspberry.ui/trunk/plugin.xml
index c9951a8f..5993c3da 100644
--- a/org.fortiss.af3.platform.raspberry.ui/trunk/plugin.xml
+++ b/org.fortiss.af3.platform.raspberry.ui/trunk/plugin.xml
@@ -51,6 +51,9 @@
       <modelElementClass
             modelElementClass="org.fortiss.af3.platform.raspberry.model.ActuatorPWM">
       </modelElementClass>
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.ConsoleOutput">
+      </modelElementClass>
       <modelElementClass
             modelElementClass="org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase">
       </modelElementClass>
@@ -60,6 +63,12 @@
       <modelElementClass
             modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature">
       </modelElementClass>
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong">
+      </modelElementClass>
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak">
+      </modelElementClass>
       <modelElementClass
             modelElementClass="org.fortiss.af3.platform.raspberry.model.brick.UIDUnit">
       </modelElementClass>
@@ -73,6 +82,12 @@
             modelElementClass="org.fortiss.af3.platform.raspberry.model.ActuatorPWM">
       </modelElementClass>
    </modelElementHandler>
+   <modelElementHandler
+         handler="org.fortiss.af3.platform.raspberry.ui.handler.ConsoleOutputHandler">
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.ConsoleOutput">
+      </modelElementClass>
+   </modelElementHandler>
    <modelElementHandler
          handler="org.fortiss.af3.platform.raspberry.ui.handler.GamepadReceiverHandler">
       <modelElementClass
@@ -243,6 +258,12 @@
       <modelElementClass
             modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature">
       </modelElementClass>
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong">
+      </modelElementClass>
+      <modelElementClass
+            modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak">
+      </modelElementClass>
    </modelElementHandler>
   </extension>
    <extension
diff --git a/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/editpart/EditPartFactory.java b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/editpart/EditPartFactory.java
index 4d8d18ea..630fa7d1 100644
--- a/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/editpart/EditPartFactory.java
+++ b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/editpart/EditPartFactory.java
@@ -23,9 +23,12 @@ import org.fortiss.af3.platform.model.PlatformConnectorUnit;
 import org.fortiss.af3.platform.raspberry.model.ActuatorPWM;
 import org.fortiss.af3.platform.raspberry.model.CanBus;
 import org.fortiss.af3.platform.raspberry.model.CanConnector;
+import org.fortiss.af3.platform.raspberry.model.ConsoleOutput;
 import org.fortiss.af3.platform.raspberry.model.RaspberryPi;
 import org.fortiss.af3.platform.raspberry.model.brick.UIDUnit;
 import org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.RumblepadReceiverBase;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
 import org.fortiss.af3.platform.ui.DefaultStyle;
@@ -63,8 +66,10 @@ public class EditPartFactory implements IEditPartFactory {
 		} else if(model instanceof CanBus) {
 			return new TransmissionUnitDefaultEditPart((CanBus)model);
 		} else if(model instanceof CanConnector || model instanceof ActuatorPWM ||
-				model instanceof GamepadReceiverBase || model instanceof RumblepadReceiverBase ||
-				model instanceof SimpleRumbleFeature || model instanceof UIDUnit) {
+				model instanceof ConsoleOutput || model instanceof GamepadReceiverBase ||
+				model instanceof RumblepadReceiverBase || model instanceof SimpleRumbleFeature ||
+				model instanceof RumbleMagnitudeWeak || model instanceof RumbleMagnitudeStrong ||
+				model instanceof UIDUnit) {
 			return new StickyPlatformConnectorUnitEditPart((PlatformConnectorUnit)model);
 		}
 		return null;
diff --git a/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/handler/ConsoleOutputHandler.java b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/handler/ConsoleOutputHandler.java
new file mode 100644
index 00000000..6d7dc0bd
--- /dev/null
+++ b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/handler/ConsoleOutputHandler.java
@@ -0,0 +1,40 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2011 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.platform.raspberry.ui.handler;
+
+import static org.fortiss.af3.platform.raspberry.ui.AF3PlatformRaspberryUIActivator.getImageDescriptor;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.fortiss.af3.platform.raspberry.model.ConsoleOutput;
+import org.fortiss.tooling.kernel.ui.extension.base.NamedCommentedModelElementHandlerBase;
+
+/**
+ * Handler for {@link ConsoleOutput}s.
+ * 
+ * @author hoelzl
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating GREEN Hash: D80CF94CBBADB4627AAEDA1F34ABF0A5
+ */
+public class ConsoleOutputHandler extends NamedCommentedModelElementHandlerBase<ConsoleOutput> {
+	/** {@inheritDoc} */
+	@Override
+	public ImageDescriptor getIconImageDescriptor() {
+		return getImageDescriptor("icons/console.png");
+	}
+}
diff --git a/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/prototype/ProtoypeProvider.java b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/prototype/ProtoypeProvider.java
index bcf32e06..e7614327 100644
--- a/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/prototype/ProtoypeProvider.java
+++ b/org.fortiss.af3.platform.raspberry.ui/trunk/src/org/fortiss/af3/platform/raspberry/ui/prototype/ProtoypeProvider.java
@@ -27,6 +27,7 @@ import static org.fortiss.tooling.base.utils.LayoutModelElementFactory.createRec
 import org.fortiss.af3.platform.raspberry.model.ActuatorPWM;
 import org.fortiss.af3.platform.raspberry.model.CanBus;
 import org.fortiss.af3.platform.raspberry.model.CanConnector;
+import org.fortiss.af3.platform.raspberry.model.ConsoleOutput;
 import org.fortiss.af3.platform.raspberry.model.RaspberryPi;
 import org.fortiss.af3.platform.raspberry.model.brick.AccelerationXSensor;
 import org.fortiss.af3.platform.raspberry.model.brick.AccelerationYSensor;
@@ -64,6 +65,8 @@ import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadRight;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadUp;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.L2_Position;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.R2_Position;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
 import org.fortiss.af3.platform.raspberry.util.RaspberryModelElementFactory;
 import org.fortiss.tooling.kernel.extension.base.PrototypeProviderBase;
@@ -112,6 +115,11 @@ public class ProtoypeProvider extends PrototypeProviderBase {
 		setConnectorPosition(pwm, 0, 0);
 		registerPrototype("PWM_Actuator", pwm, CATEGORY_NAME);
 
+		ConsoleOutput printf = RaspberryModelElementFactory.createConsoleOutput();
+		setNodePosition(printf, 0, 0);
+		setConnectorPosition(printf, 0, 0);
+		registerPrototype("Console_Output", printf, CATEGORY_NAME);
+
 		ActuatorDigits digits = RaspberryModelElementFactory.createActuatorDigits();
 		setNodePosition(digits, 0, 0);
 		setConnectorPosition(digits, 0, 0);
@@ -333,5 +341,15 @@ public class ProtoypeProvider extends PrototypeProviderBase {
 		setNodePosition(srf, 0, 0);
 		setConnectorPosition(srf, 0, 0);
 		registerPrototype(srf.getName(), srf, RUMBLEPAD);
+
+		RumbleMagnitudeStrong rms = RaspberryModelElementFactory.createRumbleMagnitudeStrong();
+		setNodePosition(rms, 0, 0);
+		setConnectorPosition(rms, 0, 0);
+		registerPrototype(rms.getName(), rms, RUMBLEPAD);
+
+		RumbleMagnitudeWeak rmw = RaspberryModelElementFactory.createRumbleMagnitudeWeak();
+		setNodePosition(rmw, 0, 0);
+		setConnectorPosition(rmw, 0, 0);
+		registerPrototype(rmw.getName(), rmw, RUMBLEPAD);
 	}
 }
diff --git a/org.fortiss.af3.platform.raspberry/trunk/META-INF/MANIFEST.MF b/org.fortiss.af3.platform.raspberry/trunk/META-INF/MANIFEST.MF
index ba6bbcc1..e8655740 100644
--- a/org.fortiss.af3.platform.raspberry/trunk/META-INF/MANIFEST.MF
+++ b/org.fortiss.af3.platform.raspberry/trunk/META-INF/MANIFEST.MF
@@ -22,8 +22,11 @@ Export-Package: org.fortiss.af3.platform.raspberry.model,
  org.fortiss.af3.platform.raspberry.util
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.fortiss.af3.platform.raspberry.AF3PlatformRaspberryActivator
-Require-Bundle: org.fortiss.af3.project,
+Require-Bundle: org.fortiss.af3.project;visibility:=reexport,
+ org.fortiss.af3.expression;visibility:=reexport,
  org.fortiss.tooling.kernel;visibility:=reexport,
+ org.fortiss.af3.allocation;visibility:=reexport,
+ org.fortiss.af3.component;visibility:=reexport,
  org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.fortiss.tooling.base;visibility:=reexport,
diff --git a/org.fortiss.af3.platform.raspberry/trunk/model/raspberry.ecore b/org.fortiss.af3.platform.raspberry/trunk/model/raspberry.ecore
index 6afa6512..d4ea7cdd 100644
--- a/org.fortiss.af3.platform.raspberry/trunk/model/raspberry.ecore
+++ b/org.fortiss.af3.platform.raspberry/trunk/model/raspberry.ecore
@@ -13,6 +13,7 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActuatorPWM" eSuperTypes="platform:/resource/org.fortiss.af3.platform/model/platform.ecore#//Transmitter">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="channelID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConsoleOutput" eSuperTypes="platform:/resource/org.fortiss.af3.platform/model/platform.ecore#//Transmitter"/>
   <eSubpackages name="gamepad" nsURI="http://www.fortiss.org/af3/platform/raspberry/gamepad"
       nsPrefix="org-fortiss-af3-platform-raspberry-gamepad">
     <eClassifiers xsi:type="ecore:EClass" name="GamepadReceiverBase" abstract="true"
@@ -73,5 +74,7 @@
     <eClassifiers xsi:type="ecore:EClass" name="ButtonSelect" eSuperTypes="#//rumblepad/RumblepadReceiverBase"/>
     <eClassifiers xsi:type="ecore:EClass" name="ButtonHome" eSuperTypes="#//rumblepad/RumblepadReceiverBase"/>
     <eClassifiers xsi:type="ecore:EClass" name="SimpleRumbleFeature" eSuperTypes="platform:/resource/org.fortiss.af3.platform/model/platform.ecore#//Transmitter"/>
+    <eClassifiers xsi:type="ecore:EClass" name="RumbleMagnitudeStrong" eSuperTypes="platform:/resource/org.fortiss.af3.platform/model/platform.ecore#//Transmitter"/>
+    <eClassifiers xsi:type="ecore:EClass" name="RumbleMagnitudeWeak" eSuperTypes="platform:/resource/org.fortiss.af3.platform/model/platform.ecore#//Transmitter"/>
   </eSubpackages>
 </ecore:EPackage>
diff --git a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/compose/RaspberryPiCompositor.java b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/compose/RaspberryPiCompositor.java
index 8f81bdb6..9f9c119e 100644
--- a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/compose/RaspberryPiCompositor.java
+++ b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/compose/RaspberryPiCompositor.java
@@ -24,6 +24,7 @@ import org.fortiss.af3.platform.compose.PlatformArchitectureElementCompositorBas
 import org.fortiss.af3.platform.model.IPlatformArchitectureElement;
 import org.fortiss.af3.platform.raspberry.model.ActuatorPWM;
 import org.fortiss.af3.platform.raspberry.model.CanConnector;
+import org.fortiss.af3.platform.raspberry.model.ConsoleOutput;
 import org.fortiss.af3.platform.raspberry.model.RaspberryPi;
 import org.fortiss.af3.platform.raspberry.model.brick.AccelerationXSensor;
 import org.fortiss.af3.platform.raspberry.model.brick.AccelerationYSensor;
@@ -35,6 +36,8 @@ import org.fortiss.af3.platform.raspberry.model.brick.AngularVelocityZSensor;
 import org.fortiss.af3.platform.raspberry.model.brick.LaserRangeSensor;
 import org.fortiss.af3.platform.raspberry.model.brick.UltraSonicSensor;
 import org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.RumblepadReceiverBase;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
 import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
@@ -69,12 +72,13 @@ public class RaspberryPiCompositor extends
 			EObject contained) {
 		final boolean instanceOfAny2 =
 				isInstanceOfAny(contained, CanConnector.class, ActuatorPWM.class,
-						GamepadReceiverBase.class, UltraSonicSensor.class, LaserRangeSensor.class,
-						AccelerationXSensor.class, AccelerationYSensor.class,
-						AccelerationZSensor.class, AngularVelocityXSensor.class,
-						AngularVelocityYSensor.class, AngularVelocityZSensor.class,
-						ActuatorDigits.class, RumblepadReceiverBase.class,
-						SimpleRumbleFeature.class);
+						ConsoleOutput.class, GamepadReceiverBase.class, UltraSonicSensor.class,
+						LaserRangeSensor.class, AccelerationXSensor.class,
+						AccelerationYSensor.class, AccelerationZSensor.class,
+						AngularVelocityXSensor.class, AngularVelocityYSensor.class,
+						AngularVelocityZSensor.class, ActuatorDigits.class,
+						RumblepadReceiverBase.class, SimpleRumbleFeature.class,
+						RumbleMagnitudeStrong.class, RumbleMagnitudeWeak.class);
 		if(container != null) {
 			final boolean instanceOfAny = isInstanceOfAny(container, RaspberryPi.class);
 			return instanceOfAny && instanceOfAny2;
diff --git a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/generator/executable/MainGenerator.java b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/generator/executable/MainGenerator.java
index 6f6d2299..58ed7cb9 100644
--- a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/generator/executable/MainGenerator.java
+++ b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/generator/executable/MainGenerator.java
@@ -32,6 +32,38 @@ import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.af3.platform.model.PlatformConnectorUnit;
 import org.fortiss.af3.platform.model.Receiver;
 import org.fortiss.af3.platform.model.Transmitter;
+import org.fortiss.af3.platform.raspberry.model.ActuatorPWM;
+import org.fortiss.af3.platform.raspberry.model.RaspberryPi;
+import org.fortiss.af3.platform.raspberry.model.brick.AccelerationXSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.AccelerationYSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.AccelerationZSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.ActuatorDigits;
+import org.fortiss.af3.platform.raspberry.model.brick.AngularVelocityXSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.AngularVelocityYSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.AngularVelocityZSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.LaserRangeSensor;
+import org.fortiss.af3.platform.raspberry.model.brick.UltraSonicSensor;
+import org.fortiss.af3.platform.raspberry.model.gamepad.Button1;
+import org.fortiss.af3.platform.raspberry.model.gamepad.Button2;
+import org.fortiss.af3.platform.raspberry.model.gamepad.Button3;
+import org.fortiss.af3.platform.raspberry.model.gamepad.Button4;
+import org.fortiss.af3.platform.raspberry.model.gamepad.ButtonL2;
+import org.fortiss.af3.platform.raspberry.model.gamepad.ButtonR2;
+import org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonA;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonB;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonHome;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonSelect;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonStart;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonX;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonY;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadDown;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadLeft;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadRight;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadUp;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.L2_Position;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.R2_Position;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumblepadReceiverBase;
 import org.fortiss.tooling.kernel.extension.data.ITransformationContext;
 
 /**
diff --git a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/util/RaspberryModelElementFactory.java b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/util/RaspberryModelElementFactory.java
index 19280544..bd140672 100644
--- a/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/util/RaspberryModelElementFactory.java
+++ b/org.fortiss.af3.platform.raspberry/trunk/src/org/fortiss/af3/platform/raspberry/util/RaspberryModelElementFactory.java
@@ -22,6 +22,7 @@ import static org.fortiss.tooling.base.utils.LayoutModelElementFactory.createCon
 import org.fortiss.af3.platform.raspberry.model.ActuatorPWM;
 import org.fortiss.af3.platform.raspberry.model.CanBus;
 import org.fortiss.af3.platform.raspberry.model.CanConnector;
+import org.fortiss.af3.platform.raspberry.model.ConsoleOutput;
 import org.fortiss.af3.platform.raspberry.model.RaspberryPi;
 import org.fortiss.af3.platform.raspberry.model.RaspberryPiModelFactory;
 import org.fortiss.af3.platform.raspberry.model.brick.AccelerationXSensor;
@@ -62,6 +63,8 @@ import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadRight;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.DPadUp;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.L2_Position;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.R2_Position;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeStrong;
+import org.fortiss.af3.platform.raspberry.model.rumblepad.RumbleMagnitudeWeak;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.RumblepadFactory;
 import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
 import org.fortiss.tooling.base.utils.LayoutModelElementFactory;
@@ -112,6 +115,14 @@ public class RaspberryModelElementFactory {
 		return connector;
 	}
 
+	/** Creates a {@link ConsoleOutput}. */
+	public static ConsoleOutput createConsoleOutput() {
+		ConsoleOutput connector = RaspberryPiModelFactory.eINSTANCE.createConsoleOutput();
+		connector.setName("Console");
+		createConnectorLayout(connector);
+		return connector;
+	}
+
 	/** Creates a {@link Button1}. */
 	public static Button1 createButton1() {
 		Button1 button = GamepadFactory.eINSTANCE.createButton1();
@@ -469,4 +480,20 @@ public class RaspberryModelElementFactory {
 		createConnectorLayout(rumble);
 		return rumble;
 	}
+
+	/** Creates a {@link RumbleMagnitudeStrong}. */
+	public static RumbleMagnitudeStrong createRumbleMagnitudeStrong() {
+		RumbleMagnitudeStrong rumble = RumblepadFactory.eINSTANCE.createRumbleMagnitudeStrong();
+		rumble.setName("RumbleMagnitudeStrong");
+		createConnectorLayout(rumble);
+		return rumble;
+	}
+
+	/** Creates a {@link RumbleMagnitudeWeak}. */
+	public static RumbleMagnitudeWeak createRumbleMagnitudeWeak() {
+		RumbleMagnitudeWeak rumble = RumblepadFactory.eINSTANCE.createRumbleMagnitudeWeak();
+		rumble.setName("RumbleMagnitudeWeak");
+		createConnectorLayout(rumble);
+		return rumble;
+	}
 }
-- 
GitLab