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