diff --git a/plugins/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF b/plugins/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF index 396dad0..d7a054a 100644 --- a/plugins/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF +++ b/plugins/fr.obeo.dsl.arduino.design/META-INF/MANIFEST.MF @@ -21,4 +21,5 @@ Require-Bundle: org.eclipse.ui, Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Import-Package: com.google.common.collect -Export-Package: fr.obeo.dsl.arduino.design +Export-Package: fr.obeo.dsl.arduino.design, + fr.obeo.dsl.arduino.design.services diff --git a/plugins/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino b/plugins/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino index 4328eaf..af755ba 100644 --- a/plugins/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino +++ b/plugins/fr.obeo.dsl.arduino.design/resources/ArdublockKit.arduino @@ -2,7 +2,7 @@ - + diff --git a/plugins/fr.obeo.dsl.arduino.simulator.design/description/simulator.odesign b/plugins/fr.obeo.dsl.arduino.simulator.design/description/simulator.odesign index 69c101a..f078bfb 100644 --- a/plugins/fr.obeo.dsl.arduino.simulator.design/description/simulator.odesign +++ b/plugins/fr.obeo.dsl.arduino.simulator.design/description/simulator.odesign @@ -18,6 +18,9 @@ + + + diff --git a/plugins/fr.obeo.dsl.arduino.simulator.design/src/fr/obeo/dsl/arduino/simulator/design/services/SimulatorServices.java b/plugins/fr.obeo.dsl.arduino.simulator.design/src/fr/obeo/dsl/arduino/simulator/design/services/SimulatorServices.java index 885273e..8a64042 100644 --- a/plugins/fr.obeo.dsl.arduino.simulator.design/src/fr/obeo/dsl/arduino/simulator/design/services/SimulatorServices.java +++ b/plugins/fr.obeo.dsl.arduino.simulator.design/src/fr/obeo/dsl/arduino/simulator/design/services/SimulatorServices.java @@ -1,15 +1,22 @@ package fr.obeo.dsl.arduino.simulator.design.services; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; import java.util.ArrayList; import java.util.List; +import org.eclipse.core.runtime.FileLocator; import org.eclipse.emf.ecore.EObject; +import org.osgi.framework.Bundle; import fr.obeo.dsl.arduino.ArduinoUtils; import fr.obeo.dsl.arduino.Connector; import fr.obeo.dsl.arduino.Module; import fr.obeo.dsl.arduino.Pin; import fr.obeo.dsl.arduino.Platform; +import fr.obeo.dsl.arduino.design.services.ArduinoServices; import fr.obeo.dsl.arduino.simulator.Simulator; import fr.obeo.dsl.arduino.simulator.design.launcher.LauncherDelegate; import fr.obeo.dsl.debug.ide.sirius.ui.services.AbstractDSLDebuggerServices; @@ -124,4 +131,34 @@ public int getLevel(Platform platform) { return 0; } + public String getSimulatingImage(Module module) { + int level = getLevel(module); + String imageName = getImageLevel(module, level); + Bundle bundle = org.eclipse.core.runtime.Platform + .getBundle("fr.obeo.dsl.arduino.simulator.design"); + URL fileURL = bundle.getEntry("images/" + imageName); + File file; + try { + file = new File(FileLocator.resolve(fileURL).toURI()); + if (!file.exists()) { + ArduinoServices service = new ArduinoServices(); + return service.getImage(module); + } + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return "fr.obeo.dsl.arduino.simulator.design/images/" + imageName; + } + + private String getImageLevel(Module module, int level) { + String imageName = module.getImage().substring(0, + module.getImage().indexOf(".jpg")) + + "_" + level + ".jpg"; + return imageName; + } } diff --git a/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/LoopSwitch.java b/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/LoopSwitch.java index 635d65c..fc96052 100644 --- a/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/LoopSwitch.java +++ b/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/LoopSwitch.java @@ -139,7 +139,7 @@ private Integer getStatusValue(Status status) { public Object caseSensor(Sensor sensor) { final Pin pin = ArduinoUtils.getPin(simulator.getProject(), sensor.getModule()); - return simulator.getPinLevel(pin); + return interpretObjectValueToBoolean(simulator.getPinLevel(pin)); } @Override @@ -171,7 +171,7 @@ public Object caseWhile(While _while) { @Override public Object caseIf(If _if) { final Instruction first = _if.getInstructions().get(0); - if (Boolean.TRUE.equals(_if.getCondition())) { + if (Boolean.TRUE.equals(doSwitch(_if.getCondition()))) { Instruction current = first; while (current != null) { doSwitch(current); diff --git a/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/SetupSwitch.java b/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/SetupSwitch.java index 40537de..5b4fcdc 100644 --- a/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/SetupSwitch.java +++ b/plugins/fr.obeo.dsl.arduino.simulator/src/fr/obeo/dsl/arduino/simulator/SetupSwitch.java @@ -4,6 +4,7 @@ import org.eclipse.emf.ecore.EObject; +import fr.obeo.dsl.arduino.Connector; import fr.obeo.dsl.arduino.Pin; import fr.obeo.dsl.arduino.Variable; import fr.obeo.dsl.arduino.util.ArduinoSwitch; @@ -53,7 +54,9 @@ public void setup() throws SimulationStoppedException { Iterator it = simulator.getProject().eAllContents(); while (it.hasNext()) { EObject eObj = it.next(); - if (eObj instanceof Variable || eObj instanceof Pin) { + System.out.println(eObj); + if (eObj instanceof Variable || eObj instanceof Pin + || eObj instanceof Connector) { doSwitch(eObj); } } @@ -67,8 +70,16 @@ public Void caseVariable(Variable variable) { @Override public Void casePin(Pin pin) { + System.out.println("Init : " + pin); simulator.setPinLevel(pin, Integer.valueOf(0)); return null; } + @Override + public Void caseConnector(Connector connector) { + System.out.println("Init : " + connector.getPin()); + simulator.setPinLevel(connector.getPin(), Integer.valueOf(0)); + return null; + } + }