Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2013-05-03 07:54:10 +0000
committerHenrik Rentz-Reichert2013-05-03 07:54:10 +0000
commitd11661990c0f99c0c15ff85bce63642b1b5b0007 (patch)
tree04536dcc36e119c71622f9669df023acd217f882
parent35c299b93d2f81ea8b6a14934c1fb910df161ed3 (diff)
downloadorg.eclipse.etrice-d11661990c0f99c0c15ff85bce63642b1b5b0007.tar.gz
org.eclipse.etrice-d11661990c0f99c0c15ff85bce63642b1b5b0007.tar.xz
org.eclipse.etrice-d11661990c0f99c0c15ff85bce63642b1b5b0007.zip
[generator.c] bug 402275: Implementation of Codegenerator and C-Runtime for physical model
https://bugs.eclipse.org/bugs/show_bug.cgi?id=402275 first working version with physical model and several threads
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/Initialization.xtend2
-rw-r--r--plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend162
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/Initialization.java12
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java1029
4 files changed, 605 insertions, 600 deletions
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/Initialization.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/Initialization.xtend
index 14b16a11c..a877ba6a6 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/Initialization.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/Initialization.xtend
@@ -40,7 +40,7 @@ class Initialization {
'''
}
- def private initAttributeArray(InstanceBase instance, List<Attribute> path){
+ def private String initAttributeArray(InstanceBase instance, List<Attribute> path){
var a = path.last
var COMMENT = ''' /* «a.name»«IF a.size>1»[«a.size»]«ENDIF» */'''.toString
if(a.size == 0 || (!a.refType.ref && a.refType.type.primitive))
diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
index 403b8ba2f..6f90198ed 100644
--- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend
@@ -33,6 +33,7 @@ import org.eclipse.etrice.generator.generic.RoomExtensions
import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
+import org.eclipse.etrice.core.etphys.eTPhys.ExecMode
@Singleton
class NodeGen {
@@ -128,12 +129,9 @@ class NodeGen {
#include "«nr.getCHeaderFileName(ssi)»"
- /* include instances for all classes */
- #include "«nr.getInstSourceFileName(ssi)»"
- #include "«nr.getDispSourceFileName(ssi)»"
-
#include "debugging/etLogger.h"
#include "debugging/etMSCLogger.h"
+ #include "messaging/etSystemProtocol.h"
#include "osal/etTimer.h"
#include "etRuntimeConfig.h"
@@ -149,25 +147,38 @@ class NodeGen {
static «clsname» «clsname»Inst = {"«clsname»", 0};
- void «clsname»_initActorInstances(void);
- void «clsname»_constructActorInstances(void);
+ static void «clsname»_initActorInstances(void);
+ static void «clsname»_constructActorInstances(void);
+
+ /* include instances for all classes */
+ #include "«nr.getInstSourceFileName(ssi)»"
+ #include "«nr.getDispSourceFileName(ssi)»"
static void «clsname»_initMessageServices(void) {
ET_MSC_LOGGER_SYNC_ENTRY("«clsname»", "initMessageServices")
-
- /* filling all message service threads with data */
- «FOR thread: nr.type.threads SEPARATOR "\n"»
- msgService_«thread.name».thread.stacksize = «thread.stacksize»;
- msgService_«thread.name».thread.priority = «thread.prio»;
- msgService_«thread.name».thread.threadName = "«thread.name»";
- msgService_«thread.name».thread.threadFunction = (etThreadFunction) etMessageService_execute;
- msgService_«thread.name».thread.threadFunctionData = &msgService_«thread.name»;
+ {
+ etTime interval;
- «ENDFOR»
- /* initialization of all message services */
- «FOR thread: nr.type.threads»
- etMessageService_init(&msgService_«thread.name», msgBuffer_«thread.name», «thread.msgpoolsize», «thread.msgblocksize», MsgDispatcher_«thread.name»_receiveMessage, MsgDispatcher_«thread.name»_execute, EXECMODE_«thread.execmode.toString.toUpperCase»);
- «ENDFOR»
+ /* initialization of all message services */
+ «FOR thread: nr.type.threads»
+ «IF thread.execmode==ExecMode::POLLED || thread.execmode==ExecMode::MIXED»
+««« interval.sec = «thread.sec» <-- use convenience functions to split time in sec and nsec
+ interval.sec = 0;
+ interval.nSec = «thread.time»;
+ «ENDIF»
+ etMessageService_init(
+ &msgService_«thread.name»,
+ msgBuffer_«thread.name»,
+ «thread.name.toUpperCase»_POOL_SIZE,
+ «thread.name.toUpperCase»_BLOCK_SIZE,
+ «thread.stacksize»,
+ «thread.prio»,
+ interval,
+ MsgDispatcher_«thread.name»_receiveMessage,
+ EXECMODE_«thread.execmode.toString.toUpperCase»);
+
+ «ENDFOR»
+ }
ET_MSC_LOGGER_SYNC_EXIT
}
@@ -288,7 +299,7 @@ class NodeGen {
}
- void «clsname»_constructActorInstances(void){
+ static void «clsname»_constructActorInstances(void){
ET_MSC_LOGGER_SYNC_ENTRY("«clsname»", "constructActorInstances")
«FOR ai : ssi.allContainedInstances»
@@ -300,7 +311,7 @@ class NodeGen {
ET_MSC_LOGGER_SYNC_EXIT
}
- void «clsname»_initActorInstances(void){
+ static void «clsname»_initActorInstances(void){
ET_MSC_LOGGER_SYNC_ENTRY("«clsname»", "initActorInstances")
«FOR ai : ssi.allContainedInstances»
@@ -309,7 +320,6 @@ class NodeGen {
ET_MSC_LOGGER_SYNC_EXIT
}
-
'''
}
@@ -339,7 +349,9 @@ class NodeGen {
/* instantiation of message services and message buffers */
«FOR thread: nr.type.threads»
/* «thread.name» */
- static uint8 msgBuffer_«thread.name»[«thread.msgpoolsize» * «thread.msgblocksize»]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */
+ #define «thread.name.toUpperCase»_POOL_SIZE «thread.msgpoolsize»
+ #define «thread.name.toUpperCase»_BLOCK_SIZE «thread.msgblocksize»
+ static uint8 msgBuffer_«thread.name»[«thread.name.toUpperCase»_POOL_SIZE * «thread.name.toUpperCase»_BLOCK_SIZE];
static etMessageService msgService_«thread.name»;
«ENDFOR»
@@ -350,7 +362,7 @@ class NodeGen {
static «ai.actorClass.name» «ai.path.getPathName()»;
«ENDFOR»
- /* forward declaration of variable port structs */
+ /* forward declaration of variable port structs */
«FOR ai: ssi.allContainedInstances»
«IF ai.orderedIfItemInstances.empty»
/*nothing to do */
@@ -456,7 +468,7 @@ class NodeGen {
"{"+getInterfaceItemInstanceData(pi)+", "
+msgSvc+", "
- +(objId+idx)+", "
+ +(objId+idx)+"+BASE_ADDRESS, "
+(root.getExpandedActorClass(ai).getInterfaceItemLocalId(pi.interfaceItem)+1)
+"} /* Port "+pi.name+" */"
}
@@ -506,7 +518,7 @@ class NodeGen {
result = result +
"{"+iiiD
+"&msgService_"+thread+", "
- +p.objId+", "
+ +p.objId+"+BASE_ADDRESS, "
+(root.getExpandedActorClass(ai).getInterfaceItemLocalId(pi.interfaceItem)+1)+", "
+idx
+"}"+comma+" /* Repl Sub Port "+pi.name+" idx +"+idx+"*/\n"
@@ -518,7 +530,6 @@ class NodeGen {
def private generateDispatcherFile(Root root, SubSystemInstance ssi) {
val nr = ETMapUtil::getNodeRef(ssi)
-
'''
/**
* @author generated by eTrice
@@ -533,24 +544,46 @@ class NodeGen {
#include "debugging/etMSCLogger.h"
«FOR thread: nr.type.threads SEPARATOR "\n"»
- «var instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getPhysicalThread(ai)==thread)»
-
+ «val instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getPhysicalThread(ai)==thread)»
«val dispatchedInstances = instancesOnThread.filter(ai|ai.actorClass.commType == ActorCommunicationType::EVENT_DRIVEN || ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS)»
+ «val executedInstances = instancesOnThread.filter(ai|ai.actorClass.commType == ActorCommunicationType::DATA_DRIVEN || ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS)»
+
+ «IF executedInstances.size > 0»
+ /**
+ * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "«thread.name»"
+ */
+ static void MsgDispatcher_«thread.name»_execute(void){
+ ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_«thread.name»", "execute")
+ «FOR ai : executedInstances»
+ «ai.actorClass.name»_execute((void*)&«ai.path.pathName»);
+ «ENDFOR»
+ ET_MSC_LOGGER_SYNC_EXIT
+ }
+ «ENDIF»
/**
- * generated dispatch function all messages for the tread "«thread.name»"
+ * generated dispatch function for all messages for the thread "«thread.name»"
*/
- static void MsgDispatcher_«thread.name»_receiveMessage(const etMessage* msg){
- «IF dispatchedInstances.size > 0»
+ static etBool MsgDispatcher_«thread.name»_receiveMessage(const etMessage* msg){
ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_«thread.name»", "receiveMessage")
switch(msg->address){
- «FOR ai : ssi.allContainedInstances.filter(ai|ETMapUtil::getPhysicalThread(ai)==thread)»
+ case MESSAGESERVICE_ADDRESS:
+ «IF !executedInstances.empty»
+ if (msg->evtID == etSystemProtocol_IN_poll)
+ MsgDispatcher_«thread.name»_execute();
+ else
+ «ENDIF»
+ if (msg->evtID == etSystemProtocol_IN_terminate)
+ return FALSE;
+ break;
+ «FOR ai : dispatchedInstances»
+
/* interface items of «ai.path» */
«FOR pi : ai. orderedIfItemInstances.filter(p|p.protocol.commType==CommunicationType::EVENT_DRIVEN)»
«IF pi.replicated»
«FOR peer: pi.peers»
- case «pi.objId+pi.peers.indexOf(peer)»:
+ case «pi.objId+pi.peers.indexOf(peer)»+BASE_ADDRESS:
«IF (pi.protocol.handlesReceive(pi.isConjugated()))»
switch (msg->evtID){
«FOR h:getReceiveHandlers(pi.protocol,pi.isConjugated())»
@@ -559,7 +592,7 @@ class NodeGen {
break;
«ENDFOR»
default: «ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name».ports[«pi.peers.indexOf(peer)»], msg);
- break;
+ break;
}
«ELSE»
«ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name».ports[«pi.peers.indexOf(peer)»], msg);
@@ -567,61 +600,34 @@ class NodeGen {
break;
«ENDFOR»
«ELSE»
- case «pi.objId»:
- «IF (pi.protocol.handlesReceive(pi.isConjugated()))»
- switch (msg->evtID){
- «FOR h:getReceiveHandlers(pi.protocol,pi.isConjugated())»
- case «pi.protocol.name»_«h.msg.codeName»:
- «pi.protocol.getPortClassName(pi.isConjugated)»_«h.msg.name»_receiveHandler((etPort *)&«ai.path.pathName»_const.«pi.name»,msg,(void*)&«ai.path.pathName»,«ai.actorClass.name»_receiveMessage);
- break;
- «ENDFOR»
- default: «ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name», msg);
+ case «pi.objId»+BASE_ADDRESS:
+ «IF (pi.protocol.handlesReceive(pi.isConjugated()))»
+ switch (msg->evtID){
+ «FOR h:getReceiveHandlers(pi.protocol,pi.isConjugated())»
+ case «pi.protocol.name»_«h.msg.codeName»:
+ «pi.protocol.getPortClassName(pi.isConjugated)»_«h.msg.name»_receiveHandler((etPort *)&«ai.path.pathName»_const.«pi.name»,msg,(void*)&«ai.path.pathName»,«ai.actorClass.name»_receiveMessage);
+ break;
+ «ENDFOR»
+ default: «ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name», msg);
+ break;
+ }
+ «ELSE»
+ «ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name», msg);
+ «ENDIF»
break;
- }
- «ELSE»
- «ai.actorClass.name»_receiveMessage((void*)&«ai.path.pathName»,(etPort*)&«ai.path.pathName»_const.«pi.name», msg);
- «ENDIF»
- break;
«ENDIF»
«ENDFOR»
«ENDFOR»
default:
etLogger_logErrorF("MessageService_«thread.name»_receiveMessage: address %d does not exist ", msg->address);
- break;
+ break;
}
ET_MSC_LOGGER_SYNC_EXIT
- «ELSE»
- /* nothing to dispatch -> empty function generated to satisfy interface of message service */
- «ENDIF»
- }
-
- «val executedInstances = instancesOnThread.filter(ai|ai.actorClass.commType == ActorCommunicationType::DATA_DRIVEN || ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS)»
- /**
- * generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread "«thread.name»"
- */
- static void MsgDispatcher_«thread.name»_execute(void){
- «IF executedInstances.size > 0»
- ET_MSC_LOGGER_SYNC_ENTRY("MsgDispatcher_«thread.name»", "execute")
- «FOR ai : executedInstances»
- «ai.actorClass.name»_execute((void*)&«ai.path.pathName»);
- «ENDFOR»
- ET_MSC_LOGGER_SYNC_EXIT
- «ELSE»
- /* nothing to execute -> empty function generated to satisfy interface of message service */
- «ENDIF»
+ return TRUE;
}
«ENDFOR»
'''
}
- def private generateDatadrivenExecutes(Root root, SubSystemInstance ssi) {'''
- «FOR ai : ssi.allContainedInstances»
- «IF ai.actorClass.commType == ActorCommunicationType::ASYNCHRONOUS || ai.actorClass.commType == ActorCommunicationType::DATA_DRIVEN»
- «ai.actorClass.name»_execute(&«ai.path.getPathName()»);
- «ENDIF»
- «ENDFOR»
- '''
- }
-
}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/Initialization.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/Initialization.java
index f5871bdac..334c5a5ff 100644
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/Initialization.java
+++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/Initialization.java
@@ -60,7 +60,7 @@ public class Initialization {
}
ArrayList<Attribute> _arrayList = new ArrayList<Attribute>();
List<Attribute> _union = this._roomExtensions.<Attribute>union(_arrayList, a);
- CharSequence _initAttributeArray = this.initAttributeArray(instance, _union);
+ String _initAttributeArray = this.initAttributeArray(instance, _union);
_builder.append(_initAttributeArray, "");
_builder.newLineIfNotEmpty();
}
@@ -68,8 +68,8 @@ public class Initialization {
return _builder;
}
- private CharSequence initAttributeArray(final InstanceBase instance, final List<Attribute> path) {
- CharSequence _xblockexpression = null;
+ private String initAttributeArray(final InstanceBase instance, final List<Attribute> path) {
+ String _xblockexpression = null;
{
Attribute a = IterableExtensions.<Attribute>last(path);
StringConcatenation _builder = new StringConcatenation();
@@ -89,7 +89,7 @@ public class Initialization {
}
_builder.append(" */");
String COMMENT = _builder.toString();
- CharSequence _xifexpression = null;
+ String _xifexpression = null;
boolean _or = false;
int _size_2 = a.getSize();
boolean _equals = (_size_2 == 0);
@@ -134,7 +134,7 @@ public class Initialization {
_builder_1.append(" } ");
_builder_1.append(COMMENT, "");
_builder_1.newLineIfNotEmpty();
- _xifexpression = _builder_1;
+ _xifexpression = _builder_1.toString();
}
_xblockexpression = (_xifexpression);
}
@@ -182,7 +182,7 @@ public class Initialization {
}
_builder.append("\t");
List<Attribute> _union = this._roomExtensions.<Attribute>union(path, subA);
- Object _initAttributeArray = this.initAttributeArray(instance, _union);
+ String _initAttributeArray = this.initAttributeArray(instance, _union);
_builder.append(_initAttributeArray, " ");
_builder.newLineIfNotEmpty();
}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
index 7dc3cc5b3..8f1d2f05e 100644
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
+++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java
@@ -284,23 +284,12 @@ public class NodeGen {
_builder.append("\"");
_builder.newLineIfNotEmpty();
_builder.newLine();
- _builder.append("/* include instances for all classes */");
- _builder.newLine();
- _builder.append("#include \"");
- String _instSourceFileName = this._cExtensions.getInstSourceFileName(nr, ssi);
- _builder.append(_instSourceFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.append("#include \"");
- String _dispSourceFileName = this._cExtensions.getDispSourceFileName(nr, ssi);
- _builder.append(_dispSourceFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
_builder.append("#include \"debugging/etLogger.h\"");
_builder.newLine();
_builder.append("#include \"debugging/etMSCLogger.h\"");
_builder.newLine();
+ _builder.append("#include \"messaging/etSystemProtocol.h\"");
+ _builder.newLine();
_builder.newLine();
_builder.append("#include \"osal/etTimer.h\"");
_builder.newLine();
@@ -344,15 +333,28 @@ public class NodeGen {
_builder.append("\", 0};");
_builder.newLineIfNotEmpty();
_builder.newLine();
- _builder.append("void ");
+ _builder.append("static void ");
_builder.append(clsname, "");
_builder.append("_initActorInstances(void);");
_builder.newLineIfNotEmpty();
- _builder.append("void ");
+ _builder.append("static void ");
_builder.append(clsname, "");
_builder.append("_constructActorInstances(void);");
_builder.newLineIfNotEmpty();
_builder.newLine();
+ _builder.append("/* include instances for all classes */");
+ _builder.newLine();
+ _builder.append("#include \"");
+ String _instSourceFileName = this._cExtensions.getInstSourceFileName(nr, ssi);
+ _builder.append(_instSourceFileName, "");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append("#include \"");
+ String _dispSourceFileName = this._cExtensions.getDispSourceFileName(nr, ssi);
+ _builder.append(_dispSourceFileName, "");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
_builder.append("static void ");
_builder.append(clsname, "");
_builder.append("_initMessageServices(void) {");
@@ -363,102 +365,115 @@ public class NodeGen {
_builder.append("\", \"initMessageServices\")");
_builder.newLineIfNotEmpty();
_builder.append("\t");
+ _builder.append("{");
_builder.newLine();
- _builder.append("\t");
- _builder.append("/* filling all message service threads with data */");
+ _builder.append("\t\t");
+ _builder.append("etTime interval;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("/* initialization of all message services */");
_builder.newLine();
{
NodeClass _type = nr.getType();
EList<PhysicalThread> _threads = _type.getThreads();
- boolean _hasElements = false;
for(final PhysicalThread thread : _threads) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate("\n", " ");
+ {
+ boolean _or = false;
+ ExecMode _execmode = thread.getExecmode();
+ boolean _equals = Objects.equal(_execmode, ExecMode.POLLED);
+ if (_equals) {
+ _or = true;
+ } else {
+ ExecMode _execmode_1 = thread.getExecmode();
+ boolean _equals_1 = Objects.equal(_execmode_1, ExecMode.MIXED);
+ _or = (_equals || _equals_1);
+ }
+ if (_or) {
+ _builder.append("\t\t");
+ _builder.append("interval.sec = 0;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("interval.nSec = ");
+ int _time = thread.getTime();
+ _builder.append(_time, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
}
+ _builder.append("\t\t");
+ _builder.append("etMessageService_init(");
+ _builder.newLine();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("msgService_");
+ _builder.append("&msgService_");
String _name_6 = thread.getName();
- _builder.append(_name_6, " ");
- _builder.append(".thread.stacksize = ");
- int _stacksize = thread.getStacksize();
- _builder.append(_stacksize, " ");
- _builder.append(";");
+ _builder.append(_name_6, " ");
+ _builder.append(",");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("msgService_");
+ _builder.append("msgBuffer_");
String _name_7 = thread.getName();
- _builder.append(_name_7, " ");
- _builder.append(".thread.priority = ");
- int _prio = thread.getPrio();
- _builder.append(_prio, " ");
- _builder.append(";");
+ _builder.append(_name_7, " ");
+ _builder.append(",");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("msgService_");
String _name_8 = thread.getName();
- _builder.append(_name_8, " ");
- _builder.append(".thread.threadName = \"");
+ String _upperCase = _name_8.toUpperCase();
+ _builder.append(_upperCase, " ");
+ _builder.append("_POOL_SIZE,");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
String _name_9 = thread.getName();
- _builder.append(_name_9, " ");
- _builder.append("\";");
+ String _upperCase_1 = _name_9.toUpperCase();
+ _builder.append(_upperCase_1, " ");
+ _builder.append("_BLOCK_SIZE,");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("msgService_");
- String _name_10 = thread.getName();
- _builder.append(_name_10, " ");
- _builder.append(".thread.threadFunction = (etThreadFunction) etMessageService_execute;");
+ int _stacksize = thread.getStacksize();
+ _builder.append(_stacksize, " ");
+ _builder.append(",");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("msgService_");
- String _name_11 = thread.getName();
- _builder.append(_name_11, " ");
- _builder.append(".thread.threadFunctionData = &msgService_");
- String _name_12 = thread.getName();
- _builder.append(_name_12, " ");
- _builder.append(";");
+ int _prio = thread.getPrio();
+ _builder.append(_prio, " ");
+ _builder.append(",");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
+ _builder.append("interval,");
_builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("/* initialization of all message services */");
- _builder.newLine();
- {
- NodeClass _type_1 = nr.getType();
- EList<PhysicalThread> _threads_1 = _type_1.getThreads();
- for(final PhysicalThread thread_1 : _threads_1) {
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("etMessageService_init(&msgService_");
- String _name_13 = thread_1.getName();
- _builder.append(_name_13, " ");
- _builder.append(", msgBuffer_");
- String _name_14 = thread_1.getName();
- _builder.append(_name_14, " ");
- _builder.append(", ");
- int _msgpoolsize = thread_1.getMsgpoolsize();
- _builder.append(_msgpoolsize, " ");
- _builder.append(", ");
- int _msgblocksize = thread_1.getMsgblocksize();
- _builder.append(_msgblocksize, " ");
- _builder.append(", MsgDispatcher_");
- String _name_15 = thread_1.getName();
- _builder.append(_name_15, " ");
- _builder.append("_receiveMessage, MsgDispatcher_");
- String _name_16 = thread_1.getName();
- _builder.append(_name_16, " ");
- _builder.append("_execute, EXECMODE_");
- ExecMode _execmode = thread_1.getExecmode();
- String _string = _execmode.toString();
- String _upperCase = _string.toUpperCase();
- _builder.append(_upperCase, " ");
+ _builder.append("MsgDispatcher_");
+ String _name_10 = thread.getName();
+ _builder.append(_name_10, " ");
+ _builder.append("_receiveMessage,");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("EXECMODE_");
+ ExecMode _execmode_2 = thread.getExecmode();
+ String _string = _execmode_2.toString();
+ String _upperCase_2 = _string.toUpperCase();
+ _builder.append(_upperCase_2, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.newLine();
}
}
_builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("ET_MSC_LOGGER_SYNC_EXIT");
@@ -478,13 +493,13 @@ public class NodeGen {
_builder.append("\t");
_builder.newLine();
{
- NodeClass _type_2 = nr.getType();
- EList<PhysicalThread> _threads_2 = _type_2.getThreads();
- for(final PhysicalThread thread_2 : _threads_2) {
+ NodeClass _type_1 = nr.getType();
+ EList<PhysicalThread> _threads_1 = _type_1.getThreads();
+ for(final PhysicalThread thread_1 : _threads_1) {
_builder.append("\t");
_builder.append("etMessageService_start(&msgService_");
- String _name_17 = thread_2.getName();
- _builder.append(_name_17, " ");
+ String _name_11 = thread_1.getName();
+ _builder.append(_name_11, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -509,13 +524,13 @@ public class NodeGen {
_builder.append("\t");
_builder.newLine();
{
- NodeClass _type_3 = nr.getType();
- EList<PhysicalThread> _threads_3 = _type_3.getThreads();
- for(final PhysicalThread thread_3 : _threads_3) {
+ NodeClass _type_2 = nr.getType();
+ EList<PhysicalThread> _threads_2 = _type_2.getThreads();
+ for(final PhysicalThread thread_2 : _threads_2) {
_builder.append("\t");
_builder.append("etMessageService_stop(&msgService_");
- String _name_18 = thread_3.getName();
- _builder.append(_name_18, " ");
+ String _name_12 = thread_2.getName();
+ _builder.append(_name_12, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -540,13 +555,13 @@ public class NodeGen {
_builder.append("\t");
_builder.newLine();
{
- NodeClass _type_4 = nr.getType();
- EList<PhysicalThread> _threads_4 = _type_4.getThreads();
- for(final PhysicalThread thread_4 : _threads_4) {
+ NodeClass _type_3 = nr.getType();
+ EList<PhysicalThread> _threads_3 = _type_3.getThreads();
+ for(final PhysicalThread thread_3 : _threads_3) {
_builder.append("\t");
_builder.append("etMessageService_destroy(&msgService_");
- String _name_19 = thread_4.getName();
- _builder.append(_name_19, " ");
+ String _name_13 = thread_3.getName();
+ _builder.append(_name_13, " ");
_builder.append(");");
_builder.newLineIfNotEmpty();
}
@@ -716,11 +731,11 @@ public class NodeGen {
if (_not) {
_builder.append("\t");
ActorClass _actorClass_1 = ai.getActorClass();
- String _name_20 = _actorClass_1.getName();
+ String _name_14 = _actorClass_1.getName();
ActorClass _actorClass_2 = ai.getActorClass();
- String _name_21 = _actorClass_2.getName();
- String _destructorName = this.languageExt.destructorName(_name_21);
- String _memberInUse = this.languageExt.memberInUse(_name_20, _destructorName);
+ String _name_15 = _actorClass_2.getName();
+ String _destructorName = this.languageExt.destructorName(_name_15);
+ String _memberInUse = this.languageExt.memberInUse(_name_14, _destructorName);
_builder.append(_memberInUse, " ");
_builder.append("(&");
String _path = ai.getPath();
@@ -775,7 +790,7 @@ public class NodeGen {
_builder.newLine();
_builder.newLine();
_builder.newLine();
- _builder.append("void ");
+ _builder.append("static void ");
_builder.append(clsname, "");
_builder.append("_constructActorInstances(void){");
_builder.newLineIfNotEmpty();
@@ -804,11 +819,11 @@ public class NodeGen {
if (_not_1) {
_builder.append("\t");
ActorClass _actorClass_4 = ai_1.getActorClass();
- String _name_22 = _actorClass_4.getName();
+ String _name_16 = _actorClass_4.getName();
ActorClass _actorClass_5 = ai_1.getActorClass();
- String _name_23 = _actorClass_5.getName();
- String _constructorName = this.languageExt.constructorName(_name_23);
- String _memberInUse_1 = this.languageExt.memberInUse(_name_22, _constructorName);
+ String _name_17 = _actorClass_5.getName();
+ String _constructorName = this.languageExt.constructorName(_name_17);
+ String _memberInUse_1 = this.languageExt.memberInUse(_name_16, _constructorName);
_builder.append(_memberInUse_1, " ");
_builder.append("(&");
String _path_1 = ai_1.getPath();
@@ -828,7 +843,7 @@ public class NodeGen {
_builder.append("}");
_builder.newLine();
_builder.newLine();
- _builder.append("void ");
+ _builder.append("static void ");
_builder.append(clsname, "");
_builder.append("_initActorInstances(void){");
_builder.newLineIfNotEmpty();
@@ -844,8 +859,8 @@ public class NodeGen {
for(final ActorInstance ai_2 : _allContainedInstances_2) {
_builder.append("\t");
ActorClass _actorClass_6 = ai_2.getActorClass();
- String _name_24 = _actorClass_6.getName();
- _builder.append(_name_24, " ");
+ String _name_18 = _actorClass_6.getName();
+ _builder.append(_name_18, " ");
_builder.append("_init(&");
String _path_2 = ai_2.getPath();
String _pathName_2 = this._roomExtensions.getPathName(_path_2);
@@ -861,7 +876,6 @@ public class NodeGen {
_builder.newLine();
_builder.append("}");
_builder.newLine();
- _builder.newLine();
_xblockexpression = (_builder);
}
return _xblockexpression;
@@ -938,20 +952,38 @@ public class NodeGen {
_builder.append(_name_4, "");
_builder.append(" */");
_builder.newLineIfNotEmpty();
- _builder.append("static uint8 msgBuffer_");
+ _builder.append("#define ");
String _name_5 = thread.getName();
- _builder.append(_name_5, "");
- _builder.append("[");
+ String _upperCase = _name_5.toUpperCase();
+ _builder.append(_upperCase, "");
+ _builder.append("_POOL_SIZE\t\t");
int _msgpoolsize = thread.getMsgpoolsize();
_builder.append(_msgpoolsize, "");
- _builder.append(" * ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("#define ");
+ String _name_6 = thread.getName();
+ String _upperCase_1 = _name_6.toUpperCase();
+ _builder.append(_upperCase_1, "");
+ _builder.append("_BLOCK_SIZE\t");
int _msgblocksize = thread.getMsgblocksize();
_builder.append(_msgblocksize, "");
- _builder.append("]; /* msgBuffer_<threadname>[<msgpoolsize> * <msgblocksize>] */ ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("static uint8 msgBuffer_");
+ String _name_7 = thread.getName();
+ _builder.append(_name_7, "");
+ _builder.append("[");
+ String _name_8 = thread.getName();
+ String _upperCase_2 = _name_8.toUpperCase();
+ _builder.append(_upperCase_2, "");
+ _builder.append("_POOL_SIZE * ");
+ String _name_9 = thread.getName();
+ String _upperCase_3 = _name_9.toUpperCase();
+ _builder.append(_upperCase_3, "");
+ _builder.append("_BLOCK_SIZE]; ");
_builder.newLineIfNotEmpty();
_builder.append("static etMessageService msgService_");
- String _name_6 = thread.getName();
- _builder.append(_name_6, "");
+ String _name_10 = thread.getName();
+ _builder.append(_name_10, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
}
@@ -967,8 +999,8 @@ public class NodeGen {
for(final ActorInstance ai : _allContainedInstances) {
_builder.append("static ");
ActorClass _actorClass = ai.getActorClass();
- String _name_7 = _actorClass.getName();
- _builder.append(_name_7, "");
+ String _name_11 = _actorClass.getName();
+ _builder.append(_name_11, "");
_builder.append(" ");
String _path = ai.getPath();
String _pathName = this._roomExtensions.getPathName(_path);
@@ -978,7 +1010,7 @@ public class NodeGen {
}
}
_builder.newLine();
- _builder.append("/* forward declaration of variable port structs */\t\t");
+ _builder.append("/* forward declaration of variable port structs */");
_builder.newLine();
{
EList<ActorInstance> _allContainedInstances_1 = ssi.getAllContainedInstances();
@@ -1432,7 +1464,7 @@ public class NodeGen {
String _plus_4 = (_plus_3 + ", ");
int _plus_5 = (objId + idx);
String _plus_6 = (_plus_4 + Integer.valueOf(_plus_5));
- String _plus_7 = (_plus_6 + ", ");
+ String _plus_7 = (_plus_6 + "+BASE_ADDRESS, ");
ExpandedActorClass _expandedActorClass = root.getExpandedActorClass(ai);
InterfaceItem _interfaceItem = pi.getInterfaceItem();
int _interfaceItemLocalId = _expandedActorClass.getInterfaceItemLocalId(_interfaceItem);
@@ -1572,7 +1604,7 @@ public class NodeGen {
String _plus_8 = (_plus_7 + ", ");
int _objId = p.getObjId();
String _plus_9 = (_plus_8 + Integer.valueOf(_objId));
- String _plus_10 = (_plus_9 + ", ");
+ String _plus_10 = (_plus_9 + "+BASE_ADDRESS, ");
ExpandedActorClass _expandedActorClass = root.getExpandedActorClass(ai);
InterfaceItem _interfaceItem = pi.getInterfaceItem();
int _interfaceItemLocalId = _expandedActorClass.getInterfaceItemLocalId(_interfaceItem);
@@ -1650,9 +1682,8 @@ public class NodeGen {
return Boolean.valueOf(_equals);
}
};
- Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function);
+ final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function);
_builder.newLineIfNotEmpty();
- _builder.newLine();
final Function1<ActorInstance,Boolean> _function_1 = new Function1<ActorInstance,Boolean>() {
public Boolean apply(final ActorInstance ai) {
boolean _or = false;
@@ -1672,451 +1703,454 @@ public class NodeGen {
};
final Iterable<ActorInstance> dispatchedInstances = IterableExtensions.<ActorInstance>filter(instancesOnThread, _function_1);
_builder.newLineIfNotEmpty();
+ final Function1<ActorInstance,Boolean> _function_2 = new Function1<ActorInstance,Boolean>() {
+ public Boolean apply(final ActorInstance ai) {
+ boolean _or = false;
+ ActorClass _actorClass = ai.getActorClass();
+ ActorCommunicationType _commType = _actorClass.getCommType();
+ boolean _equals = Objects.equal(_commType, ActorCommunicationType.DATA_DRIVEN);
+ if (_equals) {
+ _or = true;
+ } else {
+ ActorClass _actorClass_1 = ai.getActorClass();
+ ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
+ boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.ASYNCHRONOUS);
+ _or = (_equals || _equals_1);
+ }
+ return Boolean.valueOf(_or);
+ }
+ };
+ final Iterable<ActorInstance> executedInstances = IterableExtensions.<ActorInstance>filter(instancesOnThread, _function_2);
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ {
+ int _size = IterableExtensions.size(executedInstances);
+ boolean _greaterThan = (_size > 0);
+ if (_greaterThan) {
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread \"");
+ String _name_2 = thread.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("static void MsgDispatcher_");
+ String _name_3 = thread.getName();
+ _builder.append(_name_3, "");
+ _builder.append("_execute(void){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
+ String _name_4 = thread.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("\", \"execute\")");
+ _builder.newLineIfNotEmpty();
+ {
+ for(final ActorInstance ai : executedInstances) {
+ _builder.append("\t");
+ ActorClass _actorClass = ai.getActorClass();
+ String _name_5 = _actorClass.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("_execute((void*)&");
+ String _path = ai.getPath();
+ String _pathName = this._roomExtensions.getPathName(_path);
+ _builder.append(_pathName, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
_builder.newLine();
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
- _builder.append("* generated dispatch function all messages for the tread \"");
- String _name_2 = thread.getName();
- _builder.append(_name_2, " ");
+ _builder.append("* generated dispatch function for all messages for the thread \"");
+ String _name_6 = thread.getName();
+ _builder.append(_name_6, " ");
_builder.append("\"");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
- _builder.append("static void MsgDispatcher_");
- String _name_3 = thread.getName();
- _builder.append(_name_3, "");
+ _builder.append("static etBool MsgDispatcher_");
+ String _name_7 = thread.getName();
+ _builder.append(_name_7, "");
_builder.append("_receiveMessage(const etMessage* msg){");
_builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
+ String _name_8 = thread.getName();
+ _builder.append(_name_8, " ");
+ _builder.append("\", \"receiveMessage\")");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("switch(msg->address){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("case MESSAGESERVICE_ADDRESS:");
+ _builder.newLine();
{
- int _size = IterableExtensions.size(dispatchedInstances);
- boolean _greaterThan = (_size > 0);
- if (_greaterThan) {
+ boolean _isEmpty = IterableExtensions.isEmpty(executedInstances);
+ boolean _not = (!_isEmpty);
+ if (_not) {
+ _builder.append("\t\t\t");
+ _builder.append("if (msg->evtID == etSystemProtocol_IN_poll)");
+ _builder.newLine();
+ _builder.append("\t\t\t");
_builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
- String _name_4 = thread.getName();
- _builder.append(_name_4, " ");
- _builder.append("\", \"receiveMessage\")");
+ _builder.append("MsgDispatcher_");
+ String _name_9 = thread.getName();
+ _builder.append(_name_9, " ");
+ _builder.append("_execute();");
_builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("switch(msg->address){");
+ _builder.append("\t\t\t");
+ _builder.append("else");
_builder.newLine();
- _builder.append("\t");
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("if (msg->evtID == etSystemProtocol_IN_terminate)");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("return FALSE;");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("break;");
+ _builder.newLine();
+ {
+ for(final ActorInstance ai_1 : dispatchedInstances) {
+ _builder.append("\t\t");
_builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("/* interface items of ");
+ String _path_1 = ai_1.getPath();
+ _builder.append(_path_1, " ");
+ _builder.append(" */");
+ _builder.newLineIfNotEmpty();
{
- EList<ActorInstance> _allContainedInstances_1 = ssi.getAllContainedInstances();
- final Function1<ActorInstance,Boolean> _function_2 = new Function1<ActorInstance,Boolean>() {
- public Boolean apply(final ActorInstance ai) {
- PhysicalThread _physicalThread = ETMapUtil.getPhysicalThread(ai);
- boolean _equals = Objects.equal(_physicalThread, thread);
+ EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances();
+ final Function1<InterfaceItemInstance,Boolean> _function_3 = new Function1<InterfaceItemInstance,Boolean>() {
+ public Boolean apply(final InterfaceItemInstance p) {
+ ProtocolClass _protocol = p.getProtocol();
+ CommunicationType _commType = _protocol.getCommType();
+ boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
return Boolean.valueOf(_equals);
}
};
- Iterable<ActorInstance> _filter = IterableExtensions.<ActorInstance>filter(_allContainedInstances_1, _function_2);
- for(final ActorInstance ai : _filter) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("/* interface items of ");
- String _path = ai.getPath();
- _builder.append(_path, " ");
- _builder.append(" */");
- _builder.newLineIfNotEmpty();
+ Iterable<InterfaceItemInstance> _filter = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function_3);
+ for(final InterfaceItemInstance pi : _filter) {
{
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai.getOrderedIfItemInstances();
- final Function1<InterfaceItemInstance,Boolean> _function_3 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- ProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = _protocol.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<InterfaceItemInstance> _filter_1 = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function_3);
- for(final InterfaceItemInstance pi : _filter_1) {
+ boolean _isReplicated = pi.isReplicated();
+ if (_isReplicated) {
{
- boolean _isReplicated = pi.isReplicated();
- if (_isReplicated) {
- {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- for(final InterfaceItemInstance peer : _peers) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("case ");
- int _objId = pi.getObjId();
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- int _indexOf = _peers_1.indexOf(peer);
- int _plus = (_objId + _indexOf);
- _builder.append(_plus, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- {
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this._roomExtensions.isConjugated(pi);
- boolean _handlesReceive = this._roomExtensions.handlesReceive(_protocol, _isConjugated);
- if (_handlesReceive) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("switch (msg->evtID){");
- _builder.newLine();
- {
- ProtocolClass _protocol_1 = pi.getProtocol();
- boolean _isConjugated_1 = this._roomExtensions.isConjugated(pi);
- List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(_protocol_1, _isConjugated_1);
- for(final MessageHandler h : _receiveHandlers) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("case ");
- ProtocolClass _protocol_2 = pi.getProtocol();
- String _name_5 = _protocol_2.getName();
- _builder.append(_name_5, " ");
- _builder.append("_");
- Message _msg = h.getMsg();
- String _codeName = this._roomExtensions.getCodeName(_msg);
- _builder.append(_codeName, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- ProtocolClass _protocol_3 = pi.getProtocol();
- boolean _isConjugated_2 = this._roomExtensions.isConjugated(pi);
- String _portClassName = this._roomExtensions.getPortClassName(_protocol_3, _isConjugated_2);
- _builder.append(_portClassName, " ");
- _builder.append("_");
- Message _msg_1 = h.getMsg();
- String _name_6 = _msg_1.getName();
- _builder.append(_name_6, " ");
- _builder.append("_receiveHandler((etPort *)&");
- String _path_1 = ai.getPath();
- String _pathName = this._roomExtensions.getPathName(_path_1);
- _builder.append(_pathName, " ");
- _builder.append("_const.");
- String _name_7 = pi.getName();
- _builder.append(_name_7, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- int _indexOf_1 = _peers_2.indexOf(peer);
- _builder.append(_indexOf_1, " ");
- _builder.append("],msg,(void*)&");
- String _path_2 = ai.getPath();
- String _pathName_1 = this._roomExtensions.getPathName(_path_2);
- _builder.append(_pathName_1, " ");
- _builder.append(",");
- ActorClass _actorClass = ai.getActorClass();
- String _name_8 = _actorClass.getName();
- _builder.append(_name_8, " ");
- _builder.append("_receiveMessage);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("default: ");
- ActorClass _actorClass_1 = ai.getActorClass();
- String _name_9 = _actorClass_1.getName();
- _builder.append(_name_9, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_3 = ai.getPath();
- String _pathName_2 = this._roomExtensions.getPathName(_path_3);
- _builder.append(_pathName_2, " ");
- _builder.append(",(etPort*)&");
- String _path_4 = ai.getPath();
- String _pathName_3 = this._roomExtensions.getPathName(_path_4);
- _builder.append(_pathName_3, " ");
- _builder.append("_const.");
- String _name_10 = pi.getName();
- _builder.append(_name_10, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
- int _indexOf_2 = _peers_3.indexOf(peer);
- _builder.append(_indexOf_2, " ");
- _builder.append("], msg);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}\t\t\t\t\t\t\t\t\t\t");
- _builder.newLine();
- } else {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- ActorClass _actorClass_2 = ai.getActorClass();
- String _name_11 = _actorClass_2.getName();
- _builder.append(_name_11, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_5 = ai.getPath();
- String _pathName_4 = this._roomExtensions.getPathName(_path_5);
- _builder.append(_pathName_4, " ");
- _builder.append(",(etPort*)&");
- String _path_6 = ai.getPath();
- String _pathName_5 = this._roomExtensions.getPathName(_path_6);
- _builder.append(_pathName_5, " ");
- _builder.append("_const.");
- String _name_12 = pi.getName();
- _builder.append(_name_12, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_4 = pi.getPeers();
- int _indexOf_3 = _peers_4.indexOf(peer);
- _builder.append(_indexOf_3, " ");
- _builder.append("], msg);");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- } else {
- _builder.append("\t");
- _builder.append("\t");
+ EList<InterfaceItemInstance> _peers = pi.getPeers();
+ for(final InterfaceItemInstance peer : _peers) {
+ _builder.append("\t\t");
_builder.append("case ");
- int _objId_1 = pi.getObjId();
- _builder.append(_objId_1, " ");
- _builder.append(":");
+ int _objId = pi.getObjId();
+ EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
+ int _indexOf = _peers_1.indexOf(peer);
+ int _plus = (_objId + _indexOf);
+ _builder.append(_plus, " ");
+ _builder.append("+BASE_ADDRESS:");
_builder.newLineIfNotEmpty();
{
- ProtocolClass _protocol_4 = pi.getProtocol();
- boolean _isConjugated_3 = this._roomExtensions.isConjugated(pi);
- boolean _handlesReceive_1 = this._roomExtensions.handlesReceive(_protocol_4, _isConjugated_3);
- if (_handlesReceive_1) {
- _builder.append("\t");
+ ProtocolClass _protocol = pi.getProtocol();
+ boolean _isConjugated = this._roomExtensions.isConjugated(pi);
+ boolean _handlesReceive = this._roomExtensions.handlesReceive(_protocol, _isConjugated);
+ if (_handlesReceive) {
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("switch (msg->evtID){");
_builder.newLine();
{
- ProtocolClass _protocol_5 = pi.getProtocol();
- boolean _isConjugated_4 = this._roomExtensions.isConjugated(pi);
- List<MessageHandler> _receiveHandlers_1 = this._roomExtensions.getReceiveHandlers(_protocol_5, _isConjugated_4);
- for(final MessageHandler h_1 : _receiveHandlers_1) {
+ ProtocolClass _protocol_1 = pi.getProtocol();
+ boolean _isConjugated_1 = this._roomExtensions.isConjugated(pi);
+ List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(_protocol_1, _isConjugated_1);
+ for(final MessageHandler h : _receiveHandlers) {
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("case ");
- ProtocolClass _protocol_6 = pi.getProtocol();
- String _name_13 = _protocol_6.getName();
- _builder.append(_name_13, " ");
+ ProtocolClass _protocol_2 = pi.getProtocol();
+ String _name_10 = _protocol_2.getName();
+ _builder.append(_name_10, " ");
_builder.append("_");
- Message _msg_2 = h_1.getMsg();
- String _codeName_1 = this._roomExtensions.getCodeName(_msg_2);
- _builder.append(_codeName_1, " ");
+ Message _msg = h.getMsg();
+ String _codeName = this._roomExtensions.getCodeName(_msg);
+ _builder.append(_codeName, " ");
_builder.append(":");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("\t");
- ProtocolClass _protocol_7 = pi.getProtocol();
- boolean _isConjugated_5 = this._roomExtensions.isConjugated(pi);
- String _portClassName_1 = this._roomExtensions.getPortClassName(_protocol_7, _isConjugated_5);
- _builder.append(_portClassName_1, " ");
+ ProtocolClass _protocol_3 = pi.getProtocol();
+ boolean _isConjugated_2 = this._roomExtensions.isConjugated(pi);
+ String _portClassName = this._roomExtensions.getPortClassName(_protocol_3, _isConjugated_2);
+ _builder.append(_portClassName, " ");
_builder.append("_");
- Message _msg_3 = h_1.getMsg();
- String _name_14 = _msg_3.getName();
- _builder.append(_name_14, " ");
+ Message _msg_1 = h.getMsg();
+ String _name_11 = _msg_1.getName();
+ _builder.append(_name_11, " ");
_builder.append("_receiveHandler((etPort *)&");
- String _path_7 = ai.getPath();
- String _pathName_6 = this._roomExtensions.getPathName(_path_7);
- _builder.append(_pathName_6, " ");
+ String _path_2 = ai_1.getPath();
+ String _pathName_1 = this._roomExtensions.getPathName(_path_2);
+ _builder.append(_pathName_1, " ");
_builder.append("_const.");
- String _name_15 = pi.getName();
- _builder.append(_name_15, " ");
- _builder.append(",msg,(void*)&");
- String _path_8 = ai.getPath();
- String _pathName_7 = this._roomExtensions.getPathName(_path_8);
- _builder.append(_pathName_7, " ");
+ String _name_12 = pi.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
+ int _indexOf_1 = _peers_2.indexOf(peer);
+ _builder.append(_indexOf_1, " ");
+ _builder.append("],msg,(void*)&");
+ String _path_3 = ai_1.getPath();
+ String _pathName_2 = this._roomExtensions.getPathName(_path_3);
+ _builder.append(_pathName_2, " ");
_builder.append(",");
- ActorClass _actorClass_3 = ai.getActorClass();
- String _name_16 = _actorClass_3.getName();
- _builder.append(_name_16, " ");
+ ActorClass _actorClass_1 = ai_1.getActorClass();
+ String _name_13 = _actorClass_1.getName();
+ _builder.append(_name_13, " ");
_builder.append("_receiveMessage);");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("break;");
_builder.newLine();
}
}
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
_builder.append("default: ");
- ActorClass _actorClass_4 = ai.getActorClass();
- String _name_17 = _actorClass_4.getName();
- _builder.append(_name_17, " ");
+ ActorClass _actorClass_2 = ai_1.getActorClass();
+ String _name_14 = _actorClass_2.getName();
+ _builder.append(_name_14, " ");
_builder.append("_receiveMessage((void*)&");
- String _path_9 = ai.getPath();
- String _pathName_8 = this._roomExtensions.getPathName(_path_9);
- _builder.append(_pathName_8, " ");
+ String _path_4 = ai_1.getPath();
+ String _pathName_3 = this._roomExtensions.getPathName(_path_4);
+ _builder.append(_pathName_3, " ");
_builder.append(",(etPort*)&");
- String _path_10 = ai.getPath();
- String _pathName_9 = this._roomExtensions.getPathName(_path_10);
- _builder.append(_pathName_9, " ");
+ String _path_5 = ai_1.getPath();
+ String _pathName_4 = this._roomExtensions.getPathName(_path_5);
+ _builder.append(_pathName_4, " ");
_builder.append("_const.");
- String _name_18 = pi.getName();
- _builder.append(_name_18, " ");
- _builder.append(", msg);");
+ String _name_15 = pi.getName();
+ _builder.append(_name_15, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
+ int _indexOf_2 = _peers_3.indexOf(peer);
+ _builder.append(_indexOf_2, " ");
+ _builder.append("], msg);");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("\t");
+ _builder.append("\t\t");
_builder.append("break;");
_builder.newLine();
+ _builder.append("\t\t");
_builder.append("\t");
_builder.append("\t");
- _builder.append("}");
+ _builder.append("}\t\t\t\t\t\t\t\t\t\t");
_builder.newLine();
} else {
+ _builder.append("\t\t");
_builder.append("\t");
- _builder.append("\t");
- ActorClass _actorClass_5 = ai.getActorClass();
- String _name_19 = _actorClass_5.getName();
- _builder.append(_name_19, " ");
+ ActorClass _actorClass_3 = ai_1.getActorClass();
+ String _name_16 = _actorClass_3.getName();
+ _builder.append(_name_16, " ");
_builder.append("_receiveMessage((void*)&");
- String _path_11 = ai.getPath();
- String _pathName_10 = this._roomExtensions.getPathName(_path_11);
- _builder.append(_pathName_10, " ");
+ String _path_6 = ai_1.getPath();
+ String _pathName_5 = this._roomExtensions.getPathName(_path_6);
+ _builder.append(_pathName_5, " ");
_builder.append(",(etPort*)&");
- String _path_12 = ai.getPath();
- String _pathName_11 = this._roomExtensions.getPathName(_path_12);
- _builder.append(_pathName_11, " ");
+ String _path_7 = ai_1.getPath();
+ String _pathName_6 = this._roomExtensions.getPathName(_path_7);
+ _builder.append(_pathName_6, " ");
+ _builder.append("_const.");
+ String _name_17 = pi.getName();
+ _builder.append(_name_17, " ");
+ _builder.append(".ports[");
+ EList<InterfaceItemInstance> _peers_4 = pi.getPeers();
+ int _indexOf_3 = _peers_4.indexOf(peer);
+ _builder.append(_indexOf_3, " ");
+ _builder.append("], msg);");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ } else {
+ _builder.append("\t\t");
+ _builder.append("case ");
+ int _objId_1 = pi.getObjId();
+ _builder.append(_objId_1, " ");
+ _builder.append("+BASE_ADDRESS:");
+ _builder.newLineIfNotEmpty();
+ {
+ ProtocolClass _protocol_4 = pi.getProtocol();
+ boolean _isConjugated_3 = this._roomExtensions.isConjugated(pi);
+ boolean _handlesReceive_1 = this._roomExtensions.handlesReceive(_protocol_4, _isConjugated_3);
+ if (_handlesReceive_1) {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("switch (msg->evtID){");
+ _builder.newLine();
+ {
+ ProtocolClass _protocol_5 = pi.getProtocol();
+ boolean _isConjugated_4 = this._roomExtensions.isConjugated(pi);
+ List<MessageHandler> _receiveHandlers_1 = this._roomExtensions.getReceiveHandlers(_protocol_5, _isConjugated_4);
+ for(final MessageHandler h_1 : _receiveHandlers_1) {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ ProtocolClass _protocol_6 = pi.getProtocol();
+ String _name_18 = _protocol_6.getName();
+ _builder.append(_name_18, " ");
+ _builder.append("_");
+ Message _msg_2 = h_1.getMsg();
+ String _codeName_1 = this._roomExtensions.getCodeName(_msg_2);
+ _builder.append(_codeName_1, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ ProtocolClass _protocol_7 = pi.getProtocol();
+ boolean _isConjugated_5 = this._roomExtensions.isConjugated(pi);
+ String _portClassName_1 = this._roomExtensions.getPortClassName(_protocol_7, _isConjugated_5);
+ _builder.append(_portClassName_1, " ");
+ _builder.append("_");
+ Message _msg_3 = h_1.getMsg();
+ String _name_19 = _msg_3.getName();
+ _builder.append(_name_19, " ");
+ _builder.append("_receiveHandler((etPort *)&");
+ String _path_8 = ai_1.getPath();
+ String _pathName_7 = this._roomExtensions.getPathName(_path_8);
+ _builder.append(_pathName_7, " ");
_builder.append("_const.");
String _name_20 = pi.getName();
- _builder.append(_name_20, " ");
- _builder.append(", msg);");
+ _builder.append(_name_20, " ");
+ _builder.append(",msg,(void*)&");
+ String _path_9 = ai_1.getPath();
+ String _pathName_8 = this._roomExtensions.getPathName(_path_9);
+ _builder.append(_pathName_8, " ");
+ _builder.append(",");
+ ActorClass _actorClass_4 = ai_1.getActorClass();
+ String _name_21 = _actorClass_4.getName();
+ _builder.append(_name_21, " ");
+ _builder.append("_receiveMessage);");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
}
}
+ _builder.append("\t\t");
+ _builder.append("\t");
_builder.append("\t");
+ _builder.append("default: ");
+ ActorClass _actorClass_5 = ai_1.getActorClass();
+ String _name_22 = _actorClass_5.getName();
+ _builder.append(_name_22, " ");
+ _builder.append("_receiveMessage((void*)&");
+ String _path_10 = ai_1.getPath();
+ String _pathName_9 = this._roomExtensions.getPathName(_path_10);
+ _builder.append(_pathName_9, " ");
+ _builder.append(",(etPort*)&");
+ String _path_11 = ai_1.getPath();
+ String _pathName_10 = this._roomExtensions.getPathName(_path_11);
+ _builder.append(_pathName_10, " ");
+ _builder.append("_const.");
+ String _name_23 = pi.getName();
+ _builder.append(_name_23, " ");
+ _builder.append(", msg);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
_builder.append("\t");
+ _builder.append("\t\t");
_builder.append("break;");
_builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ ActorClass _actorClass_6 = ai_1.getActorClass();
+ String _name_24 = _actorClass_6.getName();
+ _builder.append(_name_24, " ");
+ _builder.append("_receiveMessage((void*)&");
+ String _path_12 = ai_1.getPath();
+ String _pathName_11 = this._roomExtensions.getPathName(_path_12);
+ _builder.append(_pathName_11, " ");
+ _builder.append(",(etPort*)&");
+ String _path_13 = ai_1.getPath();
+ String _pathName_12 = this._roomExtensions.getPathName(_path_13);
+ _builder.append(_pathName_12, " ");
+ _builder.append("_const.");
+ String _name_25 = pi.getName();
+ _builder.append(_name_25, " ");
+ _builder.append(", msg);");
+ _builder.newLineIfNotEmpty();
}
}
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
}
}
}
}
- _builder.append("\t");
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("default:");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t\t");
- _builder.append("etLogger_logErrorF(\"MessageService_");
- String _name_21 = thread.getName();
- _builder.append(_name_21, " ");
- _builder.append("_receiveMessage: address %d does not exist \", msg->address);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- } else {
- _builder.append("\t");
- _builder.append("/* nothing to dispatch -> empty function generated to satisfy interface of message service */");
- _builder.newLine();
}
}
- _builder.append("}");
+ _builder.append("\t\t");
_builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("default:");
_builder.newLine();
- final Function1<ActorInstance,Boolean> _function_4 = new Function1<ActorInstance,Boolean>() {
- public Boolean apply(final ActorInstance ai) {
- boolean _or = false;
- ActorClass _actorClass = ai.getActorClass();
- ActorCommunicationType _commType = _actorClass.getCommType();
- boolean _equals = Objects.equal(_commType, ActorCommunicationType.DATA_DRIVEN);
- if (_equals) {
- _or = true;
- } else {
- ActorClass _actorClass_1 = ai.getActorClass();
- ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
- boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.ASYNCHRONOUS);
- _or = (_equals || _equals_1);
- }
- return Boolean.valueOf(_or);
- }
- };
- final Iterable<ActorInstance> executedInstances = IterableExtensions.<ActorInstance>filter(instancesOnThread, _function_4);
+ _builder.append("\t\t\t");
+ _builder.append("etLogger_logErrorF(\"MessageService_");
+ String _name_26 = thread.getName();
+ _builder.append(_name_26, " ");
+ _builder.append("_receiveMessage: address %d does not exist \", msg->address);");
_builder.newLineIfNotEmpty();
- _builder.append("/**");
+ _builder.append("\t\t\t");
+ _builder.append("break;");
_builder.newLine();
- _builder.append(" ");
- _builder.append("* generated execute function for all cyclic execute calls for the async or datadriven actor instances of thread \"");
- String _name_22 = thread.getName();
- _builder.append(_name_22, " ");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("*/");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("return TRUE;");
_builder.newLine();
- _builder.append("static void MsgDispatcher_");
- String _name_23 = thread.getName();
- _builder.append(_name_23, "");
- _builder.append("_execute(void){");
- _builder.newLineIfNotEmpty();
- {
- int _size_1 = IterableExtensions.size(executedInstances);
- boolean _greaterThan_1 = (_size_1 > 0);
- if (_greaterThan_1) {
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_");
- String _name_24 = thread.getName();
- _builder.append(_name_24, " ");
- _builder.append("\", \"execute\")");
- _builder.newLineIfNotEmpty();
- {
- for(final ActorInstance ai_1 : executedInstances) {
- _builder.append("\t");
- ActorClass _actorClass_6 = ai_1.getActorClass();
- String _name_25 = _actorClass_6.getName();
- _builder.append(_name_25, " ");
- _builder.append("_execute((void*)&");
- String _path_13 = ai_1.getPath();
- String _pathName_12 = this._roomExtensions.getPathName(_path_13);
- _builder.append(_pathName_12, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- } else {
- _builder.append("\t");
- _builder.append("/* nothing to execute -> empty function generated to satisfy interface of message service */");
- _builder.newLine();
- }
- }
_builder.append("}");
_builder.newLine();
}
@@ -2125,39 +2159,4 @@ public class NodeGen {
}
return _xblockexpression;
}
-
- private CharSequence generateDatadrivenExecutes(final Root root, final SubSystemInstance ssi) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- for(final ActorInstance ai : _allContainedInstances) {
- {
- boolean _or = false;
- ActorClass _actorClass = ai.getActorClass();
- ActorCommunicationType _commType = _actorClass.getCommType();
- boolean _equals = Objects.equal(_commType, ActorCommunicationType.ASYNCHRONOUS);
- if (_equals) {
- _or = true;
- } else {
- ActorClass _actorClass_1 = ai.getActorClass();
- ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
- boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.DATA_DRIVEN);
- _or = (_equals || _equals_1);
- }
- if (_or) {
- ActorClass _actorClass_2 = ai.getActorClass();
- String _name = _actorClass_2.getName();
- _builder.append(_name, "");
- _builder.append("_execute(&");
- String _path = ai.getPath();
- String _pathName = this._roomExtensions.getPathName(_path);
- _builder.append(_pathName, "");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- return _builder;
- }
}

Back to the top