Skip to content
Snippets Groups Projects
Commit 135ff00f authored by Florian Hölzl's avatar Florian Hölzl
Browse files

Added simple rumble feature actuator.

refs 2507
parent 0a07add9
No related branches found
No related tags found
No related merge requests found
Showing
with 204 additions and 28 deletions
......@@ -51,13 +51,16 @@
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.ActuatorPWM">
</modelElementClass>
<modelElementClass
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase">
</modelElementClass>
<modelElementClass
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.RumblepadReceiverBase">
</modelElementClass>
<modelElementClass
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature">
</modelElementClass>
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.brick.UIDUnit">
</modelElementClass>
</editPartFactory>
......@@ -237,6 +240,9 @@
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.Right_StickY_Position">
</modelElementClass>
<modelElementClass
modelElementClass="org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature">
</modelElementClass>
</modelElementHandler>
</extension>
<extension
......
......@@ -27,6 +27,7 @@ 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.RumblepadReceiverBase;
import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
import org.fortiss.af3.platform.ui.DefaultStyle;
import org.fortiss.af3.platform.ui.editpart.generic.ExecutionUnitEditPart;
import org.fortiss.af3.platform.ui.editpart.generic.StickyPlatformConnectorUnitEditPart;
......@@ -63,7 +64,7 @@ public class EditPartFactory implements IEditPartFactory {
return new TransmissionUnitDefaultEditPart((CanBus)model);
} else if(model instanceof CanConnector || model instanceof ActuatorPWM ||
model instanceof GamepadReceiverBase || model instanceof RumblepadReceiverBase ||
model instanceof UIDUnit) {
model instanceof SimpleRumbleFeature || model instanceof UIDUnit) {
return new StickyPlatformConnectorUnitEditPart((PlatformConnectorUnit)model);
}
return null;
......
/*--------------------------------------------------------------------------+
$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.rumblepad.SimpleRumbleFeature;
import org.fortiss.tooling.kernel.ui.extension.base.NamedCommentedModelElementHandlerBase;
/**
* Handler for {@link SimpleRumbleFeature}s.
*
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating GREEN Hash: D80CF94CBBADB4627AAEDA1F34ABF0A5
*/
public class RumblepadSimpleRumbleFeatureHandler extends
NamedCommentedModelElementHandlerBase<SimpleRumbleFeature> {
/** {@inheritDoc} */
@Override
public ImageDescriptor getIconImageDescriptor() {
return getImageDescriptor("icons/gamepad.png");
}
}
......@@ -64,6 +64,7 @@ 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.SimpleRumbleFeature;
import org.fortiss.af3.platform.raspberry.util.RaspberryModelElementFactory;
import org.fortiss.tooling.kernel.extension.base.PrototypeProviderBase;
import org.fortiss.tooling.kernel.extension.data.PrototypeCategory;
......@@ -326,5 +327,11 @@ public class ProtoypeProvider extends PrototypeProviderBase {
setNodePosition(rpbh, 0, 0);
setConnectorPosition(rpbh, 0, 0);
registerPrototype(rpbh.getName(), rpbh, RUMBLEPAD);
SimpleRumbleFeature srf =
RaspberryModelElementFactory.createRumbleSimpleRumbleFeaturePosition();
setNodePosition(srf, 0, 0);
setConnectorPosition(srf, 0, 0);
registerPrototype(srf.getName(), srf, RUMBLEPAD);
}
}
......@@ -72,5 +72,6 @@
<eClassifiers xsi:type="ecore:EClass" name="ButtonStart" eSuperTypes="#//rumblepad/RumblepadReceiverBase"/>
<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="../../org.fortiss.af3.platform/model/platform.ecore#//Transmitter"/>
</eSubpackages>
</ecore:EPackage>
......@@ -585,6 +585,19 @@
</objectClass>
</target>
</transformationProvider>
<transformationProvider
transformationProvider="org.fortiss.af3.platform.raspberry.generator.transform.rumblepad.SimpleRumbleFeatureTransformation">
<source>
<objectClass
objectClass="org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature">
</objectClass>
</source>
<target>
<objectClass
objectClass="org.fortiss.af3.platform.raspberry.generator.executable.rumblepad.SimpleRumbleFeatureExecutable">
</objectClass>
</target>
</transformationProvider>
</extension>
</plugin>
......@@ -34,19 +34,9 @@ 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.ButtonL1;
import org.fortiss.af3.platform.raspberry.model.gamepad.ButtonL2;
import org.fortiss.af3.platform.raspberry.model.gamepad.ButtonR1;
import org.fortiss.af3.platform.raspberry.model.gamepad.ButtonR2;
import org.fortiss.af3.platform.raspberry.model.gamepad.Left_StickX_Position;
import org.fortiss.af3.platform.raspberry.model.gamepad.Left_StickY_Position;
import org.fortiss.af3.platform.raspberry.model.gamepad.Right_StickX_Position;
import org.fortiss.af3.platform.raspberry.model.gamepad.Right_StickY_Position;
import org.fortiss.af3.platform.raspberry.model.gamepad.GamepadReceiverBase;
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;
import org.fortiss.tooling.kernel.extension.data.Prototype;
......@@ -78,16 +68,13 @@ public class RaspberryPiCompositor extends
protected boolean isCorrectElementClass(IPlatformArchitectureElement container,
EObject contained) {
final boolean instanceOfAny2 =
isInstanceOfAny(contained, CanConnector.class, ActuatorPWM.class, Button1.class,
Button2.class, Button3.class, Button4.class, ButtonL1.class,
ButtonL2.class, ButtonR1.class, ButtonR2.class, Left_StickX_Position.class,
Left_StickY_Position.class, Right_StickX_Position.class,
Right_StickY_Position.class, UltraSonicSensor.class,
LaserRangeSensor.class, AccelerationXSensor.class,
AccelerationYSensor.class, AccelerationZSensor.class,
AngularVelocityXSensor.class, AngularVelocityYSensor.class,
AngularVelocityZSensor.class, ActuatorDigits.class,
RumblepadReceiverBase.class);
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);
if(container != null) {
final boolean instanceOfAny = isInstanceOfAny(container, RaspberryPi.class);
return instanceOfAny && instanceOfAny2;
......
/*--------------------------------------------------------------------------+
$Id$
| |
| Copyright 2017 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.generator.executable.rumblepad;
import static org.fortiss.af3.expression.utils.ExpressionModelElementFactory.funcCall;
import org.fortiss.af3.component.model.InputPort;
import org.fortiss.af3.component.model.OutputPort;
import org.fortiss.af3.expression.model.terms.IExpressionTerm;
import org.fortiss.af3.platform.language.executable.TransmitterExecutableBase;
import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
/**
* Executable for {@link SimpleRumbleFeature}.
*/
public class SimpleRumbleFeatureExecutable extends TransmitterExecutableBase<SimpleRumbleFeature> {
/** Constructor. */
public SimpleRumbleFeatureExecutable(SimpleRumbleFeature modelElement) {
super(modelElement);
}
/** {@inheritDoc} */
public IExpressionTerm getInitialization() {
return funcCall("rp_init");
}
/** {@inheritDoc} */
public IExpressionTerm getNoValGuardAccessor(InputPort logicalSignal) {
return funcCall("rp_simpleRumble_is_noval");
}
/** {@inheritDoc} */
public IExpressionTerm getTermination() {
return funcCall("rp_term");
}
/** {@inheritDoc} */
@Override
public IExpressionTerm getValueWriteAccessor(OutputPort logicalSignal, IExpressionTerm value) {
return funcCall("rp_simpleRumble_write");
}
}
......@@ -19,7 +19,6 @@ package org.fortiss.af3.platform.raspberry.generator.transform.rumblepad;
import org.fortiss.af3.platform.raspberry.generator.executable.rumblepad.ButtonAExecutable;
import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonA;
import org.fortiss.af3.platform.raspberry.model.rumblepad.ButtonL1;
import org.fortiss.tooling.kernel.extension.ITransformationProvider;
import org.fortiss.tooling.kernel.extension.data.ITransformationContext;
......@@ -49,7 +48,7 @@ public class ButtonATransformation implements ITransformationProvider {
/** {@inheritDoc} */
@Override
public boolean canTransform(Object source, ITransformationContext context) {
return source instanceof ButtonL1;
return source instanceof ButtonA;
}
/** {@inheritDoc} */
......
/*--------------------------------------------------------------------------+
$Id$
| |
| Copyright 2017 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.generator.transform.rumblepad;
import org.fortiss.af3.platform.raspberry.generator.executable.rumblepad.SimpleRumbleFeatureExecutable;
import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
import org.fortiss.tooling.kernel.extension.ITransformationProvider;
import org.fortiss.tooling.kernel.extension.data.ITransformationContext;
/**
* Transformation for {@link SimpleRumbleFeature}.
*/
public class SimpleRumbleFeatureTransformation implements ITransformationProvider {
/** {@inheritDoc} */
@Override
public Class<?> getTargetClass() {
return SimpleRumbleFeatureExecutable.class;
}
/** {@inheritDoc} */
@Override
public boolean
canHandleChainTransformation(Class<?> sourceClass, ITransformationContext context) {
return SimpleRumbleFeature.class.isAssignableFrom(sourceClass);
}
/** {@inheritDoc} */
@Override
public boolean canTransform(Object source, ITransformationContext context) {
return source instanceof SimpleRumbleFeature;
}
/** {@inheritDoc} */
@Override
public Object transform(Object source, ITransformationContext context) {
return new SimpleRumbleFeatureExecutable((SimpleRumbleFeature)source);
}
}
......@@ -63,6 +63,7 @@ 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.RumblepadFactory;
import org.fortiss.af3.platform.raspberry.model.rumblepad.SimpleRumbleFeature;
import org.fortiss.tooling.base.utils.LayoutModelElementFactory;
/**
......@@ -460,4 +461,12 @@ public class RaspberryModelElementFactory {
createConnectorLayout(button);
return button;
}
/** Creates a {@link SimpleRumbleFeature}. */
public static SimpleRumbleFeature createRumbleSimpleRumbleFeaturePosition() {
SimpleRumbleFeature rumble = RumblepadFactory.eINSTANCE.createSimpleRumbleFeature();
rumble.setName("SimpleRumbleFeature");
createConnectorLayout(rumble);
return rumble;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment