Cédric Brun, OBEO (@bruncedric)
Benoit Combemale, INRIA and Univ. Rennes 1 (@bcombemale)
Slides available at http://siriuslab.github.io/talks/BreatheLifeInYourDesigner/slides
Business Processes, Orchestrations, Functional chains, Activities, Protocoles, Scenarios...
------------------------------------------------------------
Language files blank comment code
------------------------------------------------------------
Java 14 229 318 1185
XML 5 0 0 329
Maven 2 12 18 54
------------------------------------------------------------
SUM: 21 241 336 1568
------------------------------------------------------------
public class LoopSwitch extends ArduinoSwitch {
//...
@Override
public Object caseSensor(Sensor sensor) {
final Pin pin = ArduinoUtils.getPin(simulator.getProject(),
sensor.getModule());
return interpretObjectValueToBoolean(simulator.getPinLevel(pin));
}
@Override
public Object caseRepeat(Repeat repeat) {
final Instruction first = repeat.getInstructions().get(0);
for (int i = 0; i < repeat.getIteration(); ++i) {
Instruction current = first;
while (current != null) {
doSwitch(current);
current = current.getNext();
}
}
return null;
}
// ...
}
public class SimulatorDebugger extends AbstractDSLDebugger {
//...
public void start() {
new Thread(new Runnable() {
public void run() {
spawnRunningThread(Thread.currentThread().getName(),
simulator.getProject());
simulator.init();
simulator.loop();
}
}, "Arduino Simulator").start();
}
public void updateData(String threadName, EObject instruction) {
if (!hardwareFramePushed) {
pushStackFrame(Thread.currentThread().getName(), simulator
.getProject().getHardware().getName(), simulator
.getProject().getHardware(), instruction);
hardwareFramePushed = true;
} else {
setCurrentInstruction(Thread.currentThread().getName(), instruction);
}
for (Entry<Variable, Object> entry : nextSuspendVariables.entrySet()) {
variable(threadName,
simulator.getProject().getHardware().getName(), "variable",
entry.getKey().getName(), entry.getValue(), true);
}
if (!nextSuspendVariables.isEmpty()) {
lastSuspendVariables = nextSuspendVariables;
nextSuspendVariables = new HashMap<Variable, Object>();
}
for (Entry<Pin, Integer> entry : nextSuspendPins.entrySet()) {
variable(threadName,
simulator.getProject().getHardware().getName(), "pin",
String.valueOf(entry.getKey().getId()), entry.getValue(),
true);
}
if (!nextSuspendPins.isEmpty()) {
lastSuspendPins = nextSuspendPins;
nextSuspendPins = new HashMap<Pin, Integer>();
}
}
// ...
}
A Language Workbench for concurrent execution and simulation of heterogeneous models
GEMOC is an open international initiative that aims to coordinate and disseminate the research results regarding the support of the coordinated use of various modeling languages that will lead to the concept of globalization of modeling
languages, that is, the use of multiple modeling languages to support coordinated development of diverse aspects of a system.
- Try executable Arduino Designer 0.1.x
- Read the GEMOC Publications
- Join the GEMOC Initiative
- Get in touch with us to
breath life into your designer