diff --git a/Makefile b/Makefile index 959493a8b7f7e74eb470f08ffdc356a41ffec582..094dbc7c1b17ac3ed8861d8ddb78b7e04024b073 100755 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ TAR = tar DEBUG = -g CLASSPATH = -classpath SOURCEPATH = -sourcepath -#PACKAGE = avatartranslator avatartranslator/toexecutable avatartranslator/directsimulation avatartranslator/tocppsim avatartranslator/touppaal avatartranslator/toturtle avatartranslator/toproverif avatartranslator/totpn automata compiler/tmlparser vcd nc ddtranslator launcher myutil tpndescription sddescription sdtranslator tepe translator tmltranslator tmltranslator/tmlcp tmltranslator/toautomata tmltranslator/tosystemc tmltranslator/tomappingsystemc tmltranslator/tomappingsystemc2 tmltranslator/touppaal tmltranslator/toturtle translator/tojava translator/tosimujava translator/totpn translator/touppaal ui ui/avatarbd ui/avatardd ui/avatarsmd ui/avatarrd ui/avatarpd ui/avatarcd ui/avatarad ui/ad ui/cd ui/oscd ui/osad ui/dd ui/ebrdd ui/file ui/graph ui/iod ui/ncdd ui/procsd ui/prosmdui/prosmd/util ui/tmlad ui/tmlcd ui/tmldd ui/tmlcomp ui/req ui/sd ui/tree ui/ucd ui/window ui/avatarmethodology ui/sysmlsecmethodology tmltranslator tmltranslator/toturtle req/ebrdd tmltranslator/tosystemc tmatrix proverifspec uppaaldesc fr/inria/oasis/vercors/cttool/model remotesimulation tmltranslator/ctranslator attacktrees myutil/externalSearch +#PACKAGE = avatartranslator avatartranslator/toexecutable avatartranslator/directsimulation avatartranslator/tocppsim avatartranslator/touppaal avatartranslator/toturtle avatartranslator/toproverif avatartranslator/totpn automata compiler/tmlparser vcd nc ddtranslator launcher myutil tpndescription sddescription sdtranslator tepe translator tmltranslator tmltranslator/tmlcp tmltranslator/toautomata tmltranslator/tosystemc tmltranslator/tomappingsystemc tmltranslator/tomappingsystemc2 tmltranslator/touppaal tmltranslator/toturtle translator/tojava translator/tosimujava translator/totpn translator/touppaal ui ui/avatarbd ui/avatardd ui/avatarsmd ui/avatarrd ui/avatarpd ui/avatarcd ui/avatarad ui/ad ui/cd ui/oscd ui/osad ui/dd ui/ebrdd ui/file ui/graph ui/iod ui/ncdd ui/procsd ui/prosmdui/prosmd/util ui/tmlad ui/tmlcd ui/tmldd ui/tmlcomp ui/req ui/sd ui/tree ui/ucd ui/window ui/avatarmethodology ui/sysmlsecmethodology tmltranslator tmltranslator/toturtle req/ebrdd tmltranslator/tosystemc tmatrix proverifspec uppaaldesc fr/inria/oasis/vercors/cttool/model remotesimulation tmltranslator/modelcompiler attacktrees myutil/externalSearch BUILDER = builder.jar BUILD_INFO = build.txt BUILD_TO_MODIFY = src/ui/DefaultText.java @@ -167,7 +167,7 @@ jar: launcher ttooljar tiftranslator tmltranslator rundse remotesimulator webcra ttooljar: rm -f $(TTOOL_BIN)/$(TTOOL_BINARY) cp $(TTOOL_SRC)/ui/images/$(STD_LOGO) $(TTOOL_SRC)/ui/images/$(LOGO) - cd $(TTOOL_SRC); $(JAR) cmf $(TTOOL_JAR_TXT) $(TTOOL_BIN)/$(TTOOL_BINARY) Main.class vcd/*.class avatartranslator/*.class avatartranslator/toexecutable/*.class avatartranslator/directsimulation/*.class avatartranslator/modelchecker/*.class avatartranslator/touppaal/*.class avatartranslator/toproverif/*.class avatartranslator/totpn/* avatartranslator/*.class avatartranslator/toturtle/*.java automata/*.class compiler/tmlparser/*.class nc/*.class tepe/*.class tmltranslator/*.class tmltranslator/toavatar/*.class tmltranslator/tmlcp/*.class tmltranslator/toautomata/*.class tmatrix/*.class tmltranslator/toturtle/*.class tmltranslator/touppaal/*.class tmltranslator/tosystemc/*.class tmltranslator/tomappingsystemc/*.class tmltranslator/tomappingsystemc2/*.class tpndescription/*.class ddtranslator/*.class launcher/*.class myutil/*.class sddescription/*.class sdtranslator/*.class translator/*.class translator/tojava/*.class translator/tosimujava/*.class translator/touppaal/*.class translator/totpn/*.class req/ebrdd/*.java ui/*.class ui/*/*.class ui/*/*/*.class proverifspec/*.class uppaaldesc/*.class ui/images/*.* ui/images/toolbarButtonGraphics/general/*.gif ui/images/toolbarButtonGraphics/navigation/*.gif ui/images/toolbarButtonGraphics/media/*.gif $(TTOOL_BIN)/$(LAUNCHER_BINARY) RTLLauncher.class launcher/*.class fr/inria/oasis/vercors/cttool/model/*.class remotesimulation/*.class tmltranslator/ctranslator/*.class attacktrees/*.class myutil/externalSearch/*.class ddtranslatorSoclib/*.class ddtranslatorSoclib/toSoclib/*.class ddtranslatorSoclib/toTopCell/*.class dseengine/*.class #compiler/tmlCPparser/parser/*.class + cd $(TTOOL_SRC); $(JAR) cmf $(TTOOL_JAR_TXT) $(TTOOL_BIN)/$(TTOOL_BINARY) Main.class vcd/*.class avatartranslator/*.class avatartranslator/toexecutable/*.class avatartranslator/directsimulation/*.class avatartranslator/modelchecker/*.class avatartranslator/touppaal/*.class avatartranslator/toproverif/*.class avatartranslator/totpn/* avatartranslator/*.class avatartranslator/toturtle/*.java automata/*.class compiler/tmlparser/*.class nc/*.class tepe/*.class tmltranslator/*.class tmltranslator/toavatar/*.class tmltranslator/tmlcp/*.class tmltranslator/toautomata/*.class tmatrix/*.class tmltranslator/toturtle/*.class tmltranslator/touppaal/*.class tmltranslator/tosystemc/*.class tmltranslator/tomappingsystemc/*.class tmltranslator/tomappingsystemc2/*.class tpndescription/*.class ddtranslator/*.class launcher/*.class myutil/*.class sddescription/*.class sdtranslator/*.class translator/*.class translator/tojava/*.class translator/tosimujava/*.class translator/touppaal/*.class translator/totpn/*.class req/ebrdd/*.java ui/*.class ui/*/*.class ui/*/*/*.class proverifspec/*.class uppaaldesc/*.class ui/images/*.* ui/images/toolbarButtonGraphics/general/*.gif ui/images/toolbarButtonGraphics/navigation/*.gif ui/images/toolbarButtonGraphics/media/*.gif $(TTOOL_BIN)/$(LAUNCHER_BINARY) RTLLauncher.class launcher/*.class fr/inria/oasis/vercors/cttool/model/*.class remotesimulation/*.class tmltranslator/modelcompiler/*.class attacktrees/*.class myutil/externalSearch/*.class ddtranslatorSoclib/*.class ddtranslatorSoclib/toSoclib/*.class ddtranslatorSoclib/toTopCell/*.class dseengine/*.class #compiler/tmlCPparser/parser/*.class launcher: rm -f $(TTOOL_BIN)/$(LAUNCHER_BINARY) diff --git a/src/tmltranslator/HwCPU.java b/src/tmltranslator/HwCPU.java index 96c212c5ccdf57b9c16acb78ccd1847132e709d7..ecb0f4f1ef62de78050da7f46dc59b8befc86c75 100755 --- a/src/tmltranslator/HwCPU.java +++ b/src/tmltranslator/HwCPU.java @@ -45,7 +45,7 @@ knowledge of the CeCILL license and that you accept its terms. package tmltranslator; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import java.util.*; diff --git a/src/tmltranslator/HwExecutionNode.java b/src/tmltranslator/HwExecutionNode.java index 8224b0f43ac13dc2c8ed03b0dff8519e288619f7..514ff7ecdf3d97be99218ed47b0aff4f181a09f5 100755 --- a/src/tmltranslator/HwExecutionNode.java +++ b/src/tmltranslator/HwExecutionNode.java @@ -46,7 +46,7 @@ knowledge of the CeCILL license and that you accept its terms. package tmltranslator; import java.util.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public abstract class HwExecutionNode extends HwNode { protected int maximumNbOfTasks; diff --git a/src/tmltranslator/HwMemory.java b/src/tmltranslator/HwMemory.java index 1e9276ebe87bc28c24a169498c995beedf2acd1b..d5525fa0f32a2fab910e06f475b62705bec93936 100755 --- a/src/tmltranslator/HwMemory.java +++ b/src/tmltranslator/HwMemory.java @@ -46,7 +46,7 @@ knowledge of the CeCILL license and that you accept its terms. package tmltranslator; import java.util.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class HwMemory extends HwCommunicationNode { diff --git a/src/tmltranslator/HwNode.java b/src/tmltranslator/HwNode.java index 0b2ded9150eb1df2222b142ab7e939c809bbb706..5dddcfc2a45a70599e2f03b5f8d7c9c9f51b1a80 100755 --- a/src/tmltranslator/HwNode.java +++ b/src/tmltranslator/HwNode.java @@ -46,7 +46,7 @@ knowledge of the CeCILL license and that you accept its terms. package tmltranslator; import java.util.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public abstract class HwNode extends DIPLOElement { diff --git a/src/tmltranslator/TMLCPLib.java b/src/tmltranslator/TMLCPLib.java index 9b37a754cf26269f2a9edd11eac13f0c9001e643..80c136e33703d497db421009cbb075f6791ae3a7 100755 --- a/src/tmltranslator/TMLCPLib.java +++ b/src/tmltranslator/TMLCPLib.java @@ -48,7 +48,7 @@ package tmltranslator; import java.util.*; import myutil.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class TMLCPLib extends TMLElement { diff --git a/src/tmltranslator/TMLTask.java b/src/tmltranslator/TMLTask.java index f89c4be4811e156c25b3d9e84f63f2046a1213ec..4b45fbdda1d7d208734120ca1f10aa2899f0412c 100755 --- a/src/tmltranslator/TMLTask.java +++ b/src/tmltranslator/TMLTask.java @@ -47,7 +47,7 @@ package tmltranslator; import myutil.*; import java.util.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class TMLTask extends TMLElement { diff --git a/src/tmltranslator/ctranslator/AdaifBuffer.java b/src/tmltranslator/modelcompiler/AdaifBuffer.java similarity index 99% rename from src/tmltranslator/ctranslator/AdaifBuffer.java rename to src/tmltranslator/modelcompiler/AdaifBuffer.java index 88ca079c88d0a0c61ed9e2a66c8dfd3932b10cb8..5a27071662d6ac36f88016069ef557994b09ad64 100644 --- a/src/tmltranslator/ctranslator/AdaifBuffer.java +++ b/src/tmltranslator/modelcompiler/AdaifBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/AdaifMEC.java b/src/tmltranslator/modelcompiler/AdaifMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/AdaifMEC.java rename to src/tmltranslator/modelcompiler/AdaifMEC.java index 28ce717aa501c20a63829c622f609b23a33f9df8..65e1b7a73b36f121f92872d27a2e2ca2c95afd67 100644 --- a/src/tmltranslator/ctranslator/AdaifMEC.java +++ b/src/tmltranslator/modelcompiler/AdaifMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/AdaifOperationMEC.java b/src/tmltranslator/modelcompiler/AdaifOperationMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/AdaifOperationMEC.java rename to src/tmltranslator/modelcompiler/AdaifOperationMEC.java index f9c55cb7478c0f3e4dd470be076e1e0fce8253d5..11f3310017adeb5facca66b72ce1df4ee420a136 100644 --- a/src/tmltranslator/ctranslator/AdaifOperationMEC.java +++ b/src/tmltranslator/modelcompiler/AdaifOperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/ArchUnitMEC.java b/src/tmltranslator/modelcompiler/ArchUnitMEC.java similarity index 96% rename from src/tmltranslator/ctranslator/ArchUnitMEC.java rename to src/tmltranslator/modelcompiler/ArchUnitMEC.java index 2e593dc8fccf3dbb4a40fb2793b6187f104570d0..e2c125f3de8afe2f39b862fdd0cfc67a743931a7 100755 --- a/src/tmltranslator/ctranslator/ArchUnitMEC.java +++ b/src/tmltranslator/modelcompiler/ArchUnitMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator; +package tmltranslator.modelcompiler; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/BaseBuffer.java b/src/tmltranslator/modelcompiler/BaseBuffer.java similarity index 96% rename from src/tmltranslator/ctranslator/BaseBuffer.java rename to src/tmltranslator/modelcompiler/BaseBuffer.java index 1fe913cca1da4333332a4ecd39fb50ca1274c25e..be6afe54714a98f2880cbdcbfc0bbe51b0edcded 100755 --- a/src/tmltranslator/ctranslator/BaseBuffer.java +++ b/src/tmltranslator/modelcompiler/BaseBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/Buffer.java b/src/tmltranslator/modelcompiler/Buffer.java similarity index 96% rename from src/tmltranslator/ctranslator/Buffer.java rename to src/tmltranslator/modelcompiler/Buffer.java index b88840691d38e708a9d90f0cd95e6d479d757bdb..511e563ea39d1fa591f92693008592686d004434 100755 --- a/src/tmltranslator/ctranslator/Buffer.java +++ b/src/tmltranslator/modelcompiler/Buffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/BufferMEC.java b/src/tmltranslator/modelcompiler/BufferMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/BufferMEC.java rename to src/tmltranslator/modelcompiler/BufferMEC.java index 08f3457f5855ac9c294d3b8fcdc3f6a38acb137e..179b1cd5e0c78b3de886ec9eb9136d64ee21c8c6 100644 --- a/src/tmltranslator/ctranslator/BufferMEC.java +++ b/src/tmltranslator/modelcompiler/BufferMEC.java @@ -43,7 +43,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/CPMEC.java b/src/tmltranslator/modelcompiler/CPMEC.java similarity index 96% rename from src/tmltranslator/ctranslator/CPMEC.java rename to src/tmltranslator/modelcompiler/CPMEC.java index dd991ce8db709346d7625d4030ae12af8014e58b..867f2626bfdea79c9b480d932ef2f2f57f5e2aa8 100755 --- a/src/tmltranslator/ctranslator/CPMEC.java +++ b/src/tmltranslator/modelcompiler/CPMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/Context.java b/src/tmltranslator/modelcompiler/Context.java similarity index 98% rename from src/tmltranslator/ctranslator/Context.java rename to src/tmltranslator/modelcompiler/Context.java index 7698f93779e117c9401198630a33cc5d3904307f..1bec262efc2ea879e114909148625d659e70702f 100644 --- a/src/tmltranslator/ctranslator/Context.java +++ b/src/tmltranslator/modelcompiler/Context.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/CpuMEC.java b/src/tmltranslator/modelcompiler/CpuMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/CpuMEC.java rename to src/tmltranslator/modelcompiler/CpuMEC.java index 8a40ef8dd370d6b12692e330eab817babcf415b8..c97983cd5a1ca5d012214f99d4d87588cdfb3597 100644 --- a/src/tmltranslator/ctranslator/CpuMEC.java +++ b/src/tmltranslator/modelcompiler/CpuMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; diff --git a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java b/src/tmltranslator/modelcompiler/CpuMemoryCopyMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java rename to src/tmltranslator/modelcompiler/CpuMemoryCopyMEC.java index 33c4356b990b68848d3928dad65c7ce6b86fdacd..207cb21292e308ed42da3c2977d16aee9cd16337 100644 --- a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java +++ b/src/tmltranslator/modelcompiler/CpuMemoryCopyMEC.java @@ -45,7 +45,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import myutil.*; diff --git a/src/tmltranslator/ctranslator/CpuOperationMEC.java b/src/tmltranslator/modelcompiler/CpuOperationMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/CpuOperationMEC.java rename to src/tmltranslator/modelcompiler/CpuOperationMEC.java index ccfa6d051c5a3b862e4a3e10fb6ed067f242ef96..bad4176eb79b94095a5d5da85c24c314805bd926 100644 --- a/src/tmltranslator/ctranslator/CpuOperationMEC.java +++ b/src/tmltranslator/modelcompiler/CpuOperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/CwaMEC.java b/src/tmltranslator/modelcompiler/CwaMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/CwaMEC.java rename to src/tmltranslator/modelcompiler/CwaMEC.java index 4799555dbefd4ae8cb5c9ea4a2516b107b97b7af..c48314fcf52f7b51f5a61db1cf7546235924cec5 100644 --- a/src/tmltranslator/ctranslator/CwaMEC.java +++ b/src/tmltranslator/modelcompiler/CwaMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/CwlMEC.java b/src/tmltranslator/modelcompiler/CwlMEC.java similarity index 97% rename from src/tmltranslator/ctranslator/CwlMEC.java rename to src/tmltranslator/modelcompiler/CwlMEC.java index 435c7ef56534fe75db7e7121bb1be442eb49a254..2e69d274defbc29ad7d7f8c45779c78f73cc1c84 100755 --- a/src/tmltranslator/ctranslator/CwlMEC.java +++ b/src/tmltranslator/modelcompiler/CwlMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/CwmMEC.java b/src/tmltranslator/modelcompiler/CwmMEC.java similarity index 97% rename from src/tmltranslator/ctranslator/CwmMEC.java rename to src/tmltranslator/modelcompiler/CwmMEC.java index f06ba2841cf23c62251216ec856c53dec44e96f4..8bbed09772c780cd22331708d3d577b713d96309 100755 --- a/src/tmltranslator/ctranslator/CwmMEC.java +++ b/src/tmltranslator/modelcompiler/CwmMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/CwpMEC.java b/src/tmltranslator/modelcompiler/CwpMEC.java similarity index 97% rename from src/tmltranslator/ctranslator/CwpMEC.java rename to src/tmltranslator/modelcompiler/CwpMEC.java index 99310867286c795050211a8fc5d608f461a3137e..05268a653ada5e1247927e8cffa249cb38180a5a 100755 --- a/src/tmltranslator/ctranslator/CwpMEC.java +++ b/src/tmltranslator/modelcompiler/CwpMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/DMAContext.java b/src/tmltranslator/modelcompiler/DMAContext.java similarity index 98% rename from src/tmltranslator/ctranslator/DMAContext.java rename to src/tmltranslator/modelcompiler/DMAContext.java index 52b8d9c56349e5e00100bf7156d23aa3a0deb9a0..a215f8c7e050a5837f25457cbd0b05fe02e35ea3 100644 --- a/src/tmltranslator/ctranslator/DMAContext.java +++ b/src/tmltranslator/modelcompiler/DMAContext.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/DataTransfer.java b/src/tmltranslator/modelcompiler/DataTransfer.java similarity index 95% rename from src/tmltranslator/ctranslator/DataTransfer.java rename to src/tmltranslator/modelcompiler/DataTransfer.java index f76c513acb8a6a72edac5566e22e1acb7781d53b..29053667847b9ef6a114df031be38206a8c42160 100755 --- a/src/tmltranslator/ctranslator/DataTransfer.java +++ b/src/tmltranslator/modelcompiler/DataTransfer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/DoubleDmaMEC.java b/src/tmltranslator/modelcompiler/DoubleDmaMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/DoubleDmaMEC.java rename to src/tmltranslator/modelcompiler/DoubleDmaMEC.java index 95665d2289c029ae50c10123d19539d505144c0f..3eeadeb9ca9724bef1d4d6c0b9978522d82888dc 100755 --- a/src/tmltranslator/ctranslator/DoubleDmaMEC.java +++ b/src/tmltranslator/modelcompiler/DoubleDmaMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import myutil.*; diff --git a/src/tmltranslator/ctranslator/FepBuffer.java b/src/tmltranslator/modelcompiler/FepBuffer.java similarity index 97% rename from src/tmltranslator/ctranslator/FepBuffer.java rename to src/tmltranslator/modelcompiler/FepBuffer.java index c888f1b9faf4d9e348dfb7bfdafc5af1c5cfd1ca..a67bb6a6691fbdc5546b335511a5ef5eb74c6a64 100755 --- a/src/tmltranslator/ctranslator/FepBuffer.java +++ b/src/tmltranslator/modelcompiler/FepBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/FepMEC.java b/src/tmltranslator/modelcompiler/FepMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/FepMEC.java rename to src/tmltranslator/modelcompiler/FepMEC.java index 216ebfae6752373b96ea14180f2df8da20cbbfa6..b9fbc270501e50add67a6fd558e5570204d0f7b2 100644 --- a/src/tmltranslator/ctranslator/FepMEC.java +++ b/src/tmltranslator/modelcompiler/FepMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/FepOperationMEC.java b/src/tmltranslator/modelcompiler/FepOperationMEC.java similarity index 96% rename from src/tmltranslator/ctranslator/FepOperationMEC.java rename to src/tmltranslator/modelcompiler/FepOperationMEC.java index c75e0f5e2126bd2e7b20cc1764f428a91e0f0aaa..035240f16fd36874abf94b91db5effbfade06ef5 100755 --- a/src/tmltranslator/ctranslator/FepOperationMEC.java +++ b/src/tmltranslator/modelcompiler/FepOperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator; +package tmltranslator.modelcompiler; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/FftMEC.java b/src/tmltranslator/modelcompiler/FftMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/FftMEC.java rename to src/tmltranslator/modelcompiler/FftMEC.java index 2958ea6810aef56cc7c6f7cfa6db845c19e8512d..614459d75d4fa0e925b7c1cb5912600bf6fc101e 100644 --- a/src/tmltranslator/ctranslator/FftMEC.java +++ b/src/tmltranslator/modelcompiler/FftMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/InterleaverBuffer.java b/src/tmltranslator/modelcompiler/InterleaverBuffer.java similarity index 99% rename from src/tmltranslator/ctranslator/InterleaverBuffer.java rename to src/tmltranslator/modelcompiler/InterleaverBuffer.java index ce0b9c7d357f2c1c9ff1f935793d971559f24924..7318750e5b91a555e8fad83b557e964e15ab8b08 100644 --- a/src/tmltranslator/ctranslator/InterleaverBuffer.java +++ b/src/tmltranslator/modelcompiler/InterleaverBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/InterleaverMEC.java b/src/tmltranslator/modelcompiler/InterleaverMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/InterleaverMEC.java rename to src/tmltranslator/modelcompiler/InterleaverMEC.java index 5be9a7bfb36eee179ef490a4f407d31b0161b6ec..134482a943de443e58b365b9ff45db95e38429a4 100644 --- a/src/tmltranslator/ctranslator/InterleaverMEC.java +++ b/src/tmltranslator/modelcompiler/InterleaverMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/IntlOperationMEC.java b/src/tmltranslator/modelcompiler/IntlOperationMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/IntlOperationMEC.java rename to src/tmltranslator/modelcompiler/IntlOperationMEC.java index 948d63b484d7cd287a7064673e8818fea4626e6b..0a63201fb8748ec93373ab21fb89825f5a6b688f 100644 --- a/src/tmltranslator/ctranslator/IntlOperationMEC.java +++ b/src/tmltranslator/modelcompiler/IntlOperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; diff --git a/src/tmltranslator/ctranslator/MMBuffer.java b/src/tmltranslator/modelcompiler/MMBuffer.java similarity index 99% rename from src/tmltranslator/ctranslator/MMBuffer.java rename to src/tmltranslator/modelcompiler/MMBuffer.java index 36ac2e6ca2ff5d211bb49761277716435cd255cc..d48317e9bfb23272bf9c6f5ae071a832dede7820 100644 --- a/src/tmltranslator/ctranslator/MMBuffer.java +++ b/src/tmltranslator/modelcompiler/MMBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/MappOperationMEC.java b/src/tmltranslator/modelcompiler/MappOperationMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/MappOperationMEC.java rename to src/tmltranslator/modelcompiler/MappOperationMEC.java index df1aab4c352a68014c74dc5748f92a8932b5cf0a..8825c4c638fbeba55f79e463f4b59059d919be02 100644 --- a/src/tmltranslator/ctranslator/MappOperationMEC.java +++ b/src/tmltranslator/modelcompiler/MappOperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; diff --git a/src/tmltranslator/ctranslator/MapperBuffer.java b/src/tmltranslator/modelcompiler/MapperBuffer.java similarity index 99% rename from src/tmltranslator/ctranslator/MapperBuffer.java rename to src/tmltranslator/modelcompiler/MapperBuffer.java index 43f9f28ae1236a545f33b0b89c8903d6ec23e558..5dbc759b66fcdf7dd0ab31e22431578209614493 100644 --- a/src/tmltranslator/ctranslator/MapperBuffer.java +++ b/src/tmltranslator/modelcompiler/MapperBuffer.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/MapperMEC.java b/src/tmltranslator/modelcompiler/MapperMEC.java similarity index 98% rename from src/tmltranslator/ctranslator/MapperMEC.java rename to src/tmltranslator/modelcompiler/MapperMEC.java index a4c9fd082c8162f87e40d5d09bf930f4e090c7a4..70e508833b956a522a3714b3115665f9c4dc19ec 100644 --- a/src/tmltranslator/ctranslator/MapperMEC.java +++ b/src/tmltranslator/modelcompiler/MapperMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; //import Ctranslator.*; diff --git a/src/tmltranslator/ctranslator/Operation.java b/src/tmltranslator/modelcompiler/Operation.java similarity index 96% rename from src/tmltranslator/ctranslator/Operation.java rename to src/tmltranslator/modelcompiler/Operation.java index 21eed5690429d92787a0917ce4e074474d37d379..40226d5fa1888862362ae149f68dbdc293a1591f 100755 --- a/src/tmltranslator/ctranslator/Operation.java +++ b/src/tmltranslator/modelcompiler/Operation.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/OperationMEC.java b/src/tmltranslator/modelcompiler/OperationMEC.java similarity index 96% rename from src/tmltranslator/ctranslator/OperationMEC.java rename to src/tmltranslator/modelcompiler/OperationMEC.java index 177657224a8a71d2726ba4e41d9a5f637de8e717..7a752dcf675d131ae1e735c48dffa1c4c8574902 100755 --- a/src/tmltranslator/ctranslator/OperationMEC.java +++ b/src/tmltranslator/modelcompiler/OperationMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator; +package tmltranslator.modelcompiler; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/Scheduler.java b/src/tmltranslator/modelcompiler/Scheduler.java similarity index 98% rename from src/tmltranslator/ctranslator/Scheduler.java rename to src/tmltranslator/modelcompiler/Scheduler.java index 4ef8381faf7cc5d136a1766a3da3712bd787b08f..67b80c1319bd7e22b44d2c72a286cfaf07db6553 100644 --- a/src/tmltranslator/ctranslator/Scheduler.java +++ b/src/tmltranslator/modelcompiler/Scheduler.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/Signal.java b/src/tmltranslator/modelcompiler/Signal.java similarity index 96% rename from src/tmltranslator/ctranslator/Signal.java rename to src/tmltranslator/modelcompiler/Signal.java index 3d0ddd074a4876d81b6cd2fcb83dbb4a89d5b49b..8af66a61a56528db6ea20e1391ff8f2f38db1278 100755 --- a/src/tmltranslator/ctranslator/Signal.java +++ b/src/tmltranslator/modelcompiler/Signal.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.nio.*; diff --git a/src/tmltranslator/ctranslator/SingleDmaMEC.java b/src/tmltranslator/modelcompiler/SingleDmaMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/SingleDmaMEC.java rename to src/tmltranslator/modelcompiler/SingleDmaMEC.java index 7f889eb9d369dda7c141a629767ffc4035292eec..1f48a173a1894f5bf078760e8c61948460d875d4 100755 --- a/src/tmltranslator/ctranslator/SingleDmaMEC.java +++ b/src/tmltranslator/modelcompiler/SingleDmaMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import myutil.*; diff --git a/src/tmltranslator/ctranslator/SumMEC.java b/src/tmltranslator/modelcompiler/SumMEC.java similarity index 99% rename from src/tmltranslator/ctranslator/SumMEC.java rename to src/tmltranslator/modelcompiler/SumMEC.java index 58fa4d7b685f53210d1aedf7184d8891f59483df..0f97ed3efc86926e9e2def8d752a61a1db09e3f7 100644 --- a/src/tmltranslator/ctranslator/SumMEC.java +++ b/src/tmltranslator/modelcompiler/SumMEC.java @@ -44,7 +44,7 @@ * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; diff --git a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java b/src/tmltranslator/modelcompiler/TMLModelCompiler.java similarity index 96% rename from src/tmltranslator/ctranslator/TMLCCodeGeneration.java rename to src/tmltranslator/modelcompiler/TMLModelCompiler.java index 976dfbd36324aba0f2540dff1136cb25767aa2c7..1343099c48c7020e234923b742f06e4ec549c655 100755 --- a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java +++ b/src/tmltranslator/modelcompiler/TMLModelCompiler.java @@ -1,7 +1,7 @@ /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici ludovic.apvrille AT enst.fr - andrea.enrici AT enstr.fr + andrea.enrici AT nokia.com This software is a computer program whose purpose is to allow the edition of TURTLE analysis, design and deployment diagrams, to @@ -37,14 +37,16 @@ knowledge of the CeCILL license and that you accept its terms. /** - * Class TMLCCodeGeneration + * This class is the one of the model compiler that produces the control code of a system design + * Class TMLModelCompiler * Creation: 09/02/2014 * @version 1.0 09/02/2014 + * @modified 09/09/2016 * @author Andrea ENRICI * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.io.*; @@ -58,7 +60,7 @@ import ui.tmlcompd.*; import ui.ConfigurationTTool; import ui.*; -public class TMLCCodeGeneration { +public class TMLModelCompiler { public String title; @@ -95,15 +97,15 @@ public class TMLCCodeGeneration { private ArrayList<TMLCommunicationPatternPanel> tmlcpps; private ArrayList<TMLCP> tmlcpsList; - private ArrayList<TMLCCodeGenerationError> errors; - private ArrayList<TMLCCodeGenerationError> warnings; + private ArrayList<TMLModelCompilerError> errors; + private ArrayList<TMLModelCompilerError> warnings; private String debugFileName; PrintWriter outputStream; public JFrame frame; //Main Frame - public TMLCCodeGeneration( String _title, String _applicationName, JFrame _frame, ArrayList<TMLCommunicationPatternPanel> _tmlcpps, TMLMapping _tmap ) { + public TMLModelCompiler( String _title, String _applicationName, JFrame _frame, ArrayList<TMLCommunicationPatternPanel> _tmlcpps, TMLMapping _tmap ) { title = _title; applicationName = _applicationName; frame = _frame; @@ -120,7 +122,7 @@ public class TMLCCodeGeneration { private void init() { mappedTasks = new ArrayList<TMLTask>(); commElts = new ArrayList<TMLElement>(); - errors = new ArrayList<TMLCCodeGenerationError>(); + errors = new ArrayList<TMLModelCompilerError>(); mainFileString = new StringBuffer(); headerString = new StringBuffer(); programString = new StringBuffer(); @@ -227,7 +229,7 @@ public class TMLCCodeGeneration { boolean[] list = new boolean[2]; - for( TMLChannel ch: xTask.getWriteTMLChannels() ) { //perche testa tutti i canali + for( TMLChannel ch: xTask.getWriteTMLChannels() ) { //test all channels if( ch.isBasicChannel() ) { if( ch.getOriginPort().isPrex() ) { list[0] = true; @@ -243,7 +245,7 @@ public class TMLCCodeGeneration { } } } - for( TMLChannel ch: xTask.getReadTMLChannels() ) { //perche testa tutti i canali + for( TMLChannel ch: xTask.getReadTMLChannels() ) { //test all channels if( ch.isBasicChannel() ) { if( ch.getDestinationPort().isPostex() ) { list[0] = false; @@ -1678,7 +1680,7 @@ public class TMLCCodeGeneration { public void saveFile( String path, String filename ) throws FileException { - TMLCCodeGenerationMakefile make = new TMLCCodeGenerationMakefile( applicationName ); + TMLModelCompilerMakefile make = new TMLModelCompilerMakefile( applicationName ); path = path.substring( 0, path.length()-1 ); TraceManager.addUser( "Saving C files in " + path ); diff --git a/src/tmltranslator/modelcompiler/TMLModelCompilerError.java b/src/tmltranslator/modelcompiler/TMLModelCompilerError.java new file mode 100755 index 0000000000000000000000000000000000000000..08734bfb7db09d0974c9a3d23be789a823732e54 --- /dev/null +++ b/src/tmltranslator/modelcompiler/TMLModelCompilerError.java @@ -0,0 +1,92 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea ENRICI + * + * ludovic.apvrille AT enst.fr + * andrea.enrici AT nokia.com + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + * + * /** + * Class TMLModelCompilerError + * Used to store a compilation error generated by the TMLModelCompilerParser + * Creation: 12/09/2007 + * @version 1.0 12/09/2007 + * @modified 09/09/2016 + * @author Ludovic APVRILLE, Andrea ENRICI + * @see + */ + + +package tmltranslator.modelcompiler;; + +import tmltranslator.*; + +public class TMLModelCompilerError { + + // type + public final static int ERROR_STRUCTURE = 0; + public final static int WARNING_STRUCTURE = 1; + public final static int ERROR_BEHAVIOR = 2; + public final static int WARNING_BEHAVIOR = 3; + + public int type; // ERROR, WARNING + public String message; + public TMLTask task; + public TMLActivityElement element; + + public TMLModelCompilerError( int _type ) { + type = _type; + } + + @Override public String toString() { + String error_type = ""; + switch( type ) { + case 0: + error_type = "ERROR_STRUCTURE"; + break; + case 1: + error_type = "WARNING_STRUCTURE"; + break; + case 2: + error_type = "ERROR_BEHAVIOR"; + break; + case 3: + error_type = "WARNING_BEHAVIOR"; + break; + default: + error_type = "NO RECOGNIZED ERROR TYPE"; + break; + } + return "TMLModelCompilerError of type: " + error_type; + } +} diff --git a/src/tmltranslator/ctranslator/TMLCCodeGenerationMakefile.java b/src/tmltranslator/modelcompiler/TMLModelCompilerMakefile.java similarity index 93% rename from src/tmltranslator/ctranslator/TMLCCodeGenerationMakefile.java rename to src/tmltranslator/modelcompiler/TMLModelCompilerMakefile.java index a974e1958f12e7b2cc05f48f3f6fddd87e5bb401..42e2de6e78d55ebba8d2e6a61597095cc6acdffe 100644 --- a/src/tmltranslator/ctranslator/TMLCCodeGenerationMakefile.java +++ b/src/tmltranslator/modelcompiler/TMLModelCompilerMakefile.java @@ -1,7 +1,7 @@ /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici ludovic.apvrille AT enst.fr - andrea.enrici AT enstr.fr + andrea.enrici AT nokia.com This software is a computer program whose purpose is to allow the edition of TURTLE analysis, design and deployment diagrams, to @@ -37,14 +37,16 @@ knowledge of the CeCILL license and that you accept its terms. /** - * Class TMLCCodeGeneration + * This class is used to generate the Makefile of a control code generation project + * Class TMLModelCompilerMakefile * Creation: 09/02/2014 * @version 1.0 09/02/2014 + * @modified 09/09/2016 * @author Andrea ENRICI * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import java.util.*; import java.io.*; @@ -57,13 +59,13 @@ import tmltranslator.*; import ui.tmlcompd.*; import ui.ConfigurationTTool; -public class TMLCCodeGenerationMakefile { +public class TMLModelCompilerMakefile { private String CR = "\n"; private String CR2 = "\n\n"; private StringBuffer code = new StringBuffer(); - public TMLCCodeGenerationMakefile( String ApplicationName ) { + public TMLModelCompilerMakefile( String ApplicationName ) { code.append( "#In order to compile wpd, please define EMBB_INSTALL, either as an environment" + CR + diff --git a/src/tmltranslator/ctranslator/TMLCCodeGenerationSyntaxCheck.java b/src/tmltranslator/modelcompiler/TMLModelCompilerParser.java similarity index 68% rename from src/tmltranslator/ctranslator/TMLCCodeGenerationSyntaxCheck.java rename to src/tmltranslator/modelcompiler/TMLModelCompilerParser.java index 0a3b0c61a9f3f7f4bdeb9f098473d2ededdefc03..07a6ea00ec4e7c397b852c2fbcc8647bff64625e 100755 --- a/src/tmltranslator/ctranslator/TMLCCodeGenerationSyntaxCheck.java +++ b/src/tmltranslator/modelcompiler/TMLModelCompilerParser.java @@ -1,6 +1,7 @@ -/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea ENRICI * * ludovic.apvrille AT enst.fr + * andrea.enrici AT nokia.com * * This software is a computer program whose purpose is to allow the * edition of TURTLE analysis, design and deployment diagrams, to @@ -36,25 +37,26 @@ * knowledge of the CeCILL license and that you accept its terms. * * /** - * Class TMLCCodeGenerationSyntaxCheck - * Used for checking for errors before generating the application C code + * Class TMLModelCompilerParser + * Parse models before compiling them into control code * Creation: 20/03/2015 * @version 1.0 20/03/2015 + * @modified 09/09/2016 * @author Andrea ENRICI * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import tmltranslator.*; import java.util.*; import myutil.*; -public class TMLCCodeGenerationSyntaxCheck { +public class TMLModelCompilerParser { public TMLActivityElement element; - private ArrayList<TMLCCodeGenerationError> errors; + private ArrayList<TMLModelCompilerError> errors; private ArrayList<TMLTask> mappedTasks; private TMLMapping tmap; private TMLModeling tmlm; @@ -69,9 +71,9 @@ public class TMLCCodeGenerationSyntaxCheck { public String message; public TMLTask task; - public TMLCCodeGenerationSyntaxCheck( TMLMapping _tmap, TMLModeling _tmlm, TMLArchitecture _tmla ) { + public TMLModelCompilerParser( TMLMapping _tmap, TMLModeling _tmlm, TMLArchitecture _tmla ) { //mappedTasks = _mappedTasks; - errors = new ArrayList<TMLCCodeGenerationError>(); + errors = new ArrayList<TMLModelCompilerError>(); tmap = _tmap; tmlm = _tmlm; tmla = _tmla; @@ -79,12 +81,12 @@ public class TMLCCodeGenerationSyntaxCheck { } public void addError( String message, int type ) { - TMLCCodeGenerationError error = new TMLCCodeGenerationError( type ); + TMLModelCompilerError error = new TMLModelCompilerError( type ); error.message = message; errors.add( error ); } - public ArrayList<TMLCCodeGenerationError> getErrors() { + public ArrayList<TMLModelCompilerError> getErrors() { return errors; } @@ -122,13 +124,13 @@ public class TMLCCodeGenerationSyntaxCheck { destinationPort = ch.getDestinationPort(); if( originPort.isPrex() ) { if( ch.getOriginTask().getReadChannels().size() > 0 ) { - addError( "Port " + originPort.getName() + " cannot be marked as prex. Task " + ch.getOriginTask().getName() + " has input channels", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + originPort.getName() + " cannot be marked as prex. Task " + ch.getOriginTask().getName() + " has input channels", TMLModelCompilerError.ERROR_STRUCTURE ); } foundPrex = true; } if( destinationPort.isPostex() ) { if( ch.getDestinationTask().getWriteChannels().size() > 0 ) { - addError( "Port " + destinationPort.getName() + " cannot be marked as postex. Task " + ch.getDestinationTask().getName() + " has output channels", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + destinationPort.getName() + " cannot be marked as postex. Task " + ch.getDestinationTask().getName() + " has output channels", TMLModelCompilerError.ERROR_STRUCTURE ); } foundPostex = true; } @@ -137,13 +139,13 @@ public class TMLCCodeGenerationSyntaxCheck { originPort = ch.getOriginPorts().get(0); if( originPort.isPrex() ) { if( ch.getOriginTasks().get(0).getReadChannels().size() > 0 ) { - addError( "Port " + originPort.getName() + " cannot be marked as prex. Task " + ch.getOriginTask().getName() + " has input channels", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + originPort.getName() + " cannot be marked as prex. Task " + ch.getOriginTask().getName() + " has input channels", TMLModelCompilerError.ERROR_STRUCTURE ); } foundPrex = true; } for( TMLPort port: ch.getDestinationPorts() ) { //check all destination ports: they cannot be marked as postex if( port.isPostex() ) { - addError( "Port " + port.getName() + " belongs to a fork channel: it cannot be marked as postex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + port.getName() + " belongs to a fork channel: it cannot be marked as postex", TMLModelCompilerError.ERROR_STRUCTURE ); } } } @@ -152,28 +154,28 @@ public class TMLCCodeGenerationSyntaxCheck { destinationPort = ch.getDestinationPorts().get(0); if( destinationPort.isPostex() ) { if( ch.getDestinationTasks().get(0).getWriteChannels().size() > 0 ) { - addError( "Port " + destinationPort.getName() + " cannot be marked as postex. Task " + ch.getDestinationTask().getName() + " has output channels", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + destinationPort.getName() + " cannot be marked as postex. Task " + ch.getDestinationTask().getName() + " has output channels", TMLModelCompilerError.ERROR_STRUCTURE ); } foundPostex = true; } for( TMLPort port: ch.getOriginPorts() ) { //check all origin ports: they cannot be marked as prex if( port.isPrex() ) { - addError( "Port " + port.getName() + " belongs to a join channel: it cannot be marked as prex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + port.getName() + " belongs to a join channel: it cannot be marked as prex", TMLModelCompilerError.ERROR_STRUCTURE ); } } } if( originPort.isPostex() ) { - addError( "Port " + originPort.getName() + " cannot be marked as postex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + originPort.getName() + " cannot be marked as postex", TMLModelCompilerError.ERROR_STRUCTURE ); } if( destinationPort.isPrex() ) { - addError( "Port " + destinationPort.getName() + " cannot be marked as postex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Port " + destinationPort.getName() + " cannot be marked as postex", TMLModelCompilerError.ERROR_STRUCTURE ); } } if( !foundPrex ) { - addError( "No suitable channel in the application diagram has been marked as prex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "No suitable channel in the application diagram has been marked as prex", TMLModelCompilerError.ERROR_STRUCTURE ); } if( !foundPostex ) { - addError( "No suitable channel in the application diagram has been marked as postex", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "No suitable channel in the application diagram has been marked as postex", TMLModelCompilerError.ERROR_STRUCTURE ); } } @@ -187,7 +189,7 @@ public class TMLCCodeGenerationSyntaxCheck { for( TMLPort port: channel.getDestinationPorts() ) { if( port.getName().equals( portName ) ) { addError( "Port " + portName + " is part of a fork channel. It cannot be mapped to a CP", - TMLCCodeGenerationError.ERROR_STRUCTURE ); + TMLModelCompilerError.ERROR_STRUCTURE ); } } } @@ -195,38 +197,40 @@ public class TMLCCodeGenerationSyntaxCheck { } } } - - private void checkForXFTasks() { //check that the Operations have been correctly modeled with X and F tasks - - HashSet<String> xTasksList = new HashSet<String>(); - HashSet<String> fTasksList = new HashSet<String>(); - - for( TMLTask task: tmlm.getTasks() ) { - if( task.getTaskName().length() > 2 ) { - String name = task.getTaskName(); - String prefix = task.getTaskName().substring(0,2); - if( prefix.equals( "X_" ) ) { - xTasksList.add( name.substring( 2, name.length() ) ); - } - else if( prefix.equals( "F_" ) ) { - fTasksList.add( name.substring( 2, name.length() ) ); - } - else { - addError( "Task " + task.getTaskName() + " has a not a valid name: no X_ or F_ prefix has been detected", TMLCCodeGenerationError.ERROR_STRUCTURE ); - } - } - else { - addError( "Task " + task.getTaskName() + " has a not a valid name (too short)", TMLCCodeGenerationError.ERROR_STRUCTURE ); - } - } - if( ( xTasksList.size() > 0 ) && ( fTasksList.size() > 0 ) ) { - for( String name: xTasksList ) { - if( !fTasksList.contains( name ) ) { - addError( "F task for operation " + name + " has not been instantiated", TMLCCodeGenerationError.ERROR_STRUCTURE ); - } - } - } - } + + // Check that a Composite component contains only one data-processing Primitive component...TO DO + private void checkForXFTasks() { + + HashSet<String> xTasksList = new HashSet<String>(); + HashSet<String> fTasksList = new HashSet<String>(); + + for( TMLTask task: tmlm.getTasks() ) { + TraceManager.addDev( "Task " + task.toString() + " is of " + task.getClass() ); + if( task.getTaskName().length() > 2 ) { + String name = task.getTaskName(); + String prefix = task.getTaskName().substring(0,2); + if( prefix.equals( "X_" ) ) { //This is erroneous, there cannot be such a check. The data-processing task is defined as the one that is connected to data channels + xTasksList.add( name.substring( 2, name.length() ) ); + } + else if( prefix.equals( "F_" ) ) { + fTasksList.add( name.substring( 2, name.length() ) ); + } + else { + addError( "Task " + task.getTaskName() + " has a not a valid name: no X_ or F_ prefix has been detected", TMLModelCompilerError.ERROR_STRUCTURE ); + } + } + else { + addError( "Task " + task.getTaskName() + " has a not a valid name (too short)", TMLModelCompilerError.ERROR_STRUCTURE ); + } + } + if( ( xTasksList.size() > 0 ) && ( fTasksList.size() > 0 ) ) { + for( String name: xTasksList ) { + if( !fTasksList.contains( name ) ) { + addError( "F task for operation " + name + " has not been instantiated", TMLModelCompilerError.ERROR_STRUCTURE ); + } + } + } + } private void checkMappingOfTasks() { //check that all tasks in the application have been mapped @@ -237,7 +241,7 @@ public class TMLCCodeGenerationSyntaxCheck { } for( TMLTask task: tmlm.getTasks() ) { if( !mappedTasksList.contains( task.getTaskName() ) ) { - addError( "Task " + task.getTaskName() + " has not been mapped", TMLCCodeGenerationError.ERROR_STRUCTURE ); + addError( "Task " + task.getTaskName() + " has not been mapped", TMLModelCompilerError.ERROR_STRUCTURE ); } } } diff --git a/src/tmltranslator/modelcompiler/TMLPECParser.java b/src/tmltranslator/modelcompiler/TMLPECParser.java new file mode 100755 index 0000000000000000000000000000000000000000..bf66c7c3ccad26f39bab9d0f97ecabf39389aba7 --- /dev/null +++ b/src/tmltranslator/modelcompiler/TMLPECParser.java @@ -0,0 +1,1923 @@ +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici + + ludovic.apvrille AT enst.fr + andrea.enrici AT enstr.fr + + This software is a computer program whose purpose is to allow the + edition of TURTLE analysis, design and deployment diagrams, to + allow the generation of RT-LOTOS or Java code from this diagram, + and at last to allow the analysis of formal validation traces + obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + from INRIA Rhone-Alpes. + + This software is governed by the CeCILL license under French law and + abiding by the rules of distribution of free software. You can use, + modify and/ or redistribute the software under the terms of the CeCILL + license as circulated by CEA, CNRS and INRIA at the following URL + "http://www.cecill.info". + + As a counterpart to the access to the source code and rights to copy, + modify and redistribute granted by the license, users are provided only + with a limited warranty and the software's author, the holder of the + economic rights, and the successive licensors have only limited + liability. + + In this respect, the user's attention is drawn to the risks associated + with loading, using, modifying and/or developing or reproducing the + software by the user in light of its specific status of free software, + that may mean that it is complicated to manipulate, and that also + therefore means that it is reserved for developers and experienced + professionals having in-depth computer knowledge. Users are therefore + encouraged to load and test the software's suitability as regards their + requirements in conditions enabling the security of their systems and/or + data to be ensured and, more generally, to use and operate it in the + same conditions as regards security. + + The fact that you are presently reading this means that you have had + knowledge of the CeCILL license and that you accept its terms. + + /** + * Class TMLPECParser + * Creation: 01/09/2016 + * @version 1.0 01/09/2016 + * @author Andrea ENRICI + * @see + */ + +package tmltranslator.modelcompiler;; + +import java.util.*; +import java.io.*; +import java.nio.*; +import java.nio.charset.*; +import java.nio.file.*; +import javax.swing.*; +import javax.swing.event.*; +import myutil.*; + +import tmltranslator.*; +import ui.tmlcompd.*; +import ui.ConfigurationTTool; +import ui.*; + +public class TMLPECParser { + + public String title; + + private String CR = "\n"; + private String CR2 = "\n\n"; + private String TAB = "\t"; + private String TAB2 = "\t\t"; + private String TAB3 = "\t\t\t"; + private String TAB4 = "\t\t\t\t"; + private String SPACE = " "; + private String SEMICOLON = ";"; + private String COLON = ","; + private String FORBIDDEN_CHARACTERS = ";|é|è|ê|ë|ù|ü|à |â|ö|ï|ç|\"|\\/|\\%|\\(|\\)|\\.|\\'|\\?|\\!|\\,|\\@|\\$|\\#|\\-"; // Characters forbidden in ID names + + // List of reserved keywords + private final static String DMA_KW = "DMA"; + private final static String CPU_KW = "CPU"; + private final static String MEMORY_KW = "MEMORY"; + private final static String HWA_KW = "HWA"; + + private final static String Operation_KW = "Operation"; + private final static String Execute_KW = "executes"; + + // List of error codes + private final static int ERROR_SEPARATOR = 0; + private final static int ERROR_SEMICOLON = 1; + private final static int ERROR_MULTIPLE_DECLARATION = 2; + private final static int ERROR_UNVALID_CHARACTERS = 3; + + // Parser data structures + private ArrayList<String> cpus; + private ArrayList<String> dmas; + private ArrayList<String> memories; + private ArrayList<String> hwas; + + private ArrayList<String> operations; + private ArrayList<ArrayList<String>> unitsOps; + + private ArrayList<TMLPECParserError> errors; + private ArrayList<TMLPECParserError> warnings; + + private File file; + + private String debugFileName; + PrintWriter outputStream; + + JFrame frame; + + public TMLPECParser( File _file ) { + file = _file; + init(); + } + + private void init() { + cpus = new ArrayList<String>(); + dmas = new ArrayList<String>(); + memories = new ArrayList<String>(); + hwas = new ArrayList<String>(); + operations = new ArrayList<String>(); + unitsOps = new ArrayList<ArrayList<String>>(); + errors = new ArrayList<TMLPECParserError>(); + warnings = new ArrayList<TMLPECParserError>(); + } + + public void parsePEC() { + + // Temporary data structures to store the three sections of a .pec file + ArrayList<String> unitDeclarationLines = new ArrayList<String>(); + ArrayList<String> opLines = new ArrayList<String>(); + ArrayList<String> unitToOpsLines = new ArrayList<String>(); + ArrayList<String> errorLines = new ArrayList<String>(); + + Charset charset = Charset.forName("US-ASCII"); + try( BufferedReader reader = Files.newBufferedReader( Paths.get( file.getAbsolutePath() ), charset ) ) { + String line = null; + while( (line = reader.readLine()) != null ) { + if( line.length() > 0 ) { // Filter empty lines + if( line.charAt(0) != '%' ) { // Ignore lines starting with % as they are comments + // So far there are three cases: diplodocus-to-unit mapping, operation declatation, operation-to-unit mapping + // Therefore trim the file in 3 separate data structures, then parse each of these + // data-structures + String arr[] = line.split( SPACE ); + String word = arr[0]; + switch( word ) { + case Operation_KW: + //System.out.println( "OPERATION DECLARATION: " + line ); + opLines.add( line ); + break; + case DMA_KW: + //System.out.println( "DMA DECLARATION: " + line ); + unitDeclarationLines.add( line ); + break; + case CPU_KW: + //System.out.println( "CPU DECLARATION: " + line ); + unitDeclarationLines.add( line ); + break; + case HWA_KW: + //System.out.println( "HWA DECLARATION: " + line ); + unitDeclarationLines.add( line ); + break; + case MEMORY_KW: + //System.out.println( "MEMORY DECLARATION: " + line ); + unitDeclarationLines.add( line ); + break; + default: + if( arr[1].equals( Execute_KW ) ) { + //System.out.println( "UNIT-TO-OPERATION MAPPING: " + line ); + unitToOpsLines.add( line ); + } + else { + System.out.println( "PEC PARSER ERROR: " + line ); + errorLines.add( line ); + JOptionPane.showMessageDialog( frame, "The PEC file contains several errors", "Syntax analysis failed", JOptionPane.INFORMATION_MESSAGE ); + } + break; + } + // Associate each unit to an index that will be used in the data structure unitsOps to access + // the list of operations that are associated to that unit, e.g., FEP_PSS has index 0 and + // operations FFT, CWL, CWP, CWA, CWM, CWS, MOV. + // Then unitsOps[0] contains the list FFT, CWL, CWP, CWA, CWM, CWS, MOV* + } + } + } // End of while loop + // Parse the declaration of operations: at this point the only certain thing is that the line begins with + // the keyword Operation + for( String s: opLines ) { + String[] opArray = s.split( SPACE ); + for( int i = 1; i < opArray.length; i++ ) { // i = 1 to skip the keyword Operation + char c = opArray[i].charAt( opArray[i].length()-1 ); + if( c == ',' ) { + parseIdentifier( opArray[i], operations ); + } + else { // Test if the last character of the identier is a semicolon + if( (c == ';') && (i != (opArray.length-1)) ) { + raiseError( opArray[i], ERROR_SEMICOLON ); // ERROR: semicolon has been used as a wrong separator + } + else { + if( (c == ';') && (i == (opArray.length-1)) ) { + parseIdentifier( opArray[i], operations ); + } + else { // ERROR: the identifier is not followed by a valid separator + raiseError( opArray[i], ERROR_SEPARATOR ); + } + } + } + } + } + // Parse the declaration of units: at this point the only certain thing is that the line begins with a valid keyword + for( String s: unitDeclarationLines ) { + String[] unitArray = s.split( SPACE ); + for( int i = 1; i < unitArray.length; i++ ) { // i = 1 to skip the keyword Operation + char c = unitArray[i].charAt( unitArray[i].length()-1 ); + if( c == ',' ) { + switch( unitArray[0] ) { + case DMA_KW: + parseIdentifier( unitArray[i], dmas ); + break; + case MEMORY_KW: + parseIdentifier( unitArray[i], memories ); + break; + case CPU_KW: + parseIdentifier( unitArray[i], cpus ); + break; + case HWA_KW: + parseIdentifier( unitArray[i], hwas ); + break; + } + } + else { // Test if the last character of the identier is a semicolon + if( (c == ';') && (i != (unitArray.length-1)) ) { + raiseError( unitArray[i], ERROR_SEMICOLON ); // ERROR: semicolon has been used as a wrong separator + } + else { + if( (c == ';') && (i == (unitArray.length-1)) ) { + parseIdentifier( unitArray[i], operations ); + switch( unitArray[1] ) { + case DMA_KW: + parseIdentifier( unitArray[i], dmas ); + break; + case MEMORY_KW: + parseIdentifier( unitArray[i], memories ); + break; + case CPU_KW: + parseIdentifier( unitArray[i], cpus ); + break; + case HWA_KW: + parseIdentifier( unitArray[i], hwas ); + break; + } + } + else { // ERROR: the identifier is not followed by a valid separator + raiseError( unitArray[i], ERROR_SEPARATOR ); + } + } + } + } + } + // Parse the mapping of operations to units + for( String s: unitToOpsLines ) { + String[] mapArray = s.split( SPACE ); + ArrayList<String> mappingLine = new ArrayList<String>(); + mappingLine.add( mapArray[0] ); + parseIdentifier( mapArray[1], new ArrayList<String>() ); // Parse the keyword "executes", pass a fake data structure + for( int i = 2; i < mapArray.length; i++ ) { // i = 1 to skip the keyword Operation + char c = mapArray[i].charAt( mapArray[i].length()-1 ); + if( c == ',' ) { + parseIdentifier( mapArray[i], mappingLine ); + } + else { // Test if the last character of the identier is a semicolon + if( (c == ';') && (i != (mapArray.length-1)) ) { + raiseError( mapArray[i], ERROR_SEMICOLON ); // ERROR: semicolon has been used as a wrong separator + } + else { + if( (c == ';') && (i == (mapArray.length-1)) ) { + parseIdentifier( mapArray[i], mappingLine ); + } + else { // ERROR: the identifier is not followed by a valid separator + raiseError( mapArray[i], ERROR_SEPARATOR ); + } + } + } + } + unitsOps.add( mappingLine ); + } + //TraceManager.addDev( "\nFinished parsing the operations of line:\n" + operations.toString() ); + } catch( IOException x ) { + System.err.format( "IOException: %s%n", x ); + } + TraceManager.addDev( "*** Finished parsing ***\nOPERATION DECLARATION:\n" + operations.toString() ); + TraceManager.addDev( "\nDMAS DECLARATION:\n" + dmas.toString() ); + TraceManager.addDev( "\nHWAS DECLARATION:\n" + hwas.toString() ); + TraceManager.addDev( "\nMEMORIES DECLARATION:\n" + memories.toString() ); + TraceManager.addDev( "\nCPUS DECLARATION:\n" + cpus.toString() ); + TraceManager.addDev( "\nUNIT TO OPERATIONS DECLARATION:\n" + unitsOps.toString() ); + } + + private void parseIdentifier( String id, ArrayList<String> dataBase ) { + + // Remove trailing character: comma or semicolon + id = id.substring( 0, id.length()-1 ); + // Test that it does not contain special characters at the beginning and at the end + if( id.split( FORBIDDEN_CHARACTERS ).length == 1 ) { // There are no special characters + if( !dataBase.contains( id ) ) { + dataBase.add( id ); + } + else { // ERROR: the operation has been declared multiple times + raiseError( id, ERROR_MULTIPLE_DECLARATION ); + } + } + else { // ERROR: the identifier contains special characters + raiseError( id, ERROR_UNVALID_CHARACTERS ); + } + } + + private void raiseError( String t, int errorCode ) { + + TraceManager.addDev( "Error when parsing string " + t ); + JOptionPane.showMessageDialog( frame, "The PEC file contains several errors", "Syntax analysis failed", JOptionPane.INFORMATION_MESSAGE ); + // Put the error in the error list and pass it to the structure that shows the error in the left + // side of the graphical window + } + +// private void init() { +// mappedTasks = new ArrayList<TMLTask>(); +// commElts = new ArrayList<TMLElement>(); +// errors = new ArrayList<TMLCCodeGenerationError>(); +// mainFileString = new StringBuffer(); +// headerString = new StringBuffer(); +// programString = new StringBuffer(); +// initFileString = new StringBuffer(); +// operationsList = new ArrayList<Operation>(); +// SDRoperationsCounter = 0; +// signalsCounter = 0; +// signalsList = new ArrayList<Signal>(); +// postexList = new ArrayList<TMLPort>(); +// prexList = new ArrayList<TMLPort>(); +// buffersList = new ArrayList<Buffer>(); +// dataTransfersList = new ArrayList<DataTransfer>(); +// debugFileName = ConfigurationTTool.CcodeDirectory + "debugFile.txt"; +// tmlcpsList = new ArrayList<TMLCP>(); +// } +// +// public void toTextFormat() { +// +// ArrayList<TMLTask> mappedTasks = tmap.getMappedTasks(); +// ArrayList<TMLElement> commElts = tmap.getMappedCommunicationElement(); +// +// //Create the data structures for signals, buffers, operations and data transfers +// openDebugFile(); +// makeCommunicationPatternsList(); +// makeSignalsList(); //make the signals associated to operations, based on the tasks of operations +// +// for( Signal sig: signalsList ) { +// //TraceManager.addDev( sig.toString() + CR ); +// appendToDebugFile( sig.toString() + CR2 ); +// } +// makeOperationsList( mappedTasks ); //make the list of operations based on the tasks in the app model +// setMappingParametersToBuffers(); +// for( Buffer buff: buffersList ) { +// //TraceManager.addDev( buff.toString() + CR ); +// appendToDebugFile( buff.toString() + CR ); +// } +// makeDataTransfersList(); +// for( DataTransfer dt: dataTransfersList ) { +// //TraceManager.addDev( dt.toString() ); +// appendToDebugFile( dt.toString() ); +// } +// appendToDebugFile( "\n" ); +// for( Operation op: operationsList ) { +// //TraceManager.addDev( op.toString() ); +// appendToDebugFile( op.toString() + CR ); +// } +// closeDebugFile(); +// +// //Generate the C code +// generateMainFile(); +// generateHeaderFile( mappedTasks ); +// generateProgramFile(); +// generateInitFile( mappedTasks ); +// } +// +///********************************************************************************** +// * CREATION OF DATA STRUCTURE PART +// *********************************************************************************/ +// //From the list of mapped tasks, built the list of operations. For SDR operations, only F_ tasks are considered. +// private void makeOperationsList( ArrayList<TMLTask> mappedTasks ) { +// +// ArrayList<TMLTask> SDRXtasks = new ArrayList<TMLTask>(); +// ArrayList<TMLTask> SDRFtasks = new ArrayList<TMLTask>(); +// Buffer inBuffer, outBuffer; +// Signal outSignal; +// ArrayList<Signal> inSignals; +// String[] s; +// boolean[] prexPostexList = new boolean[2]; +// +// for( TMLTask task: mappedTasks ) { +// String taskName = task.getName().split( "__" )[1]; +// s = taskName.split( "X_" ); +// if( s.length > 1 ) { //we are splitting an eXecution task +// SDRXtasks.add( task ); +// } +// else { +// s = taskName.split( "F_" ); +// if( s.length > 1 ) { //we are splitting a Firing task +// SDRFtasks.add( task ); +// } +// } +// } +// //Now couple the tasks to create SDRoperations +// for( TMLTask fTask: SDRFtasks ) { +// String fTaskName = fTask.getName().split( "__" )[1].split( "F_" )[1]; +// for( TMLTask xTask: SDRXtasks ) { +// String xTaskName = xTask.getName().split( "__" )[1].split( "X_" )[1]; +// if( xTaskName.equals( fTaskName ) ) { +// //Mind that signals are based on channels NOT on events! +// prexPostexList = getPrexPostex( xTask ); +// inSignals = getInSignals( xTask ); //is null for Source operation +// outSignal = getOutSignal( xTask ); //is null for Sink operation +// //Get the ports of channels and associated them to buffers +// inBuffer = createInBuffer( xTask, tmap.getHwNodeOf( xTask ) ); //null for Source +// outBuffer = createOutBuffer( xTask, tmap.getHwNodeOf( xTask ) ); //null for Sink +// operationsList.add( new Operation( fTask, xTask, tmap.getHwNodeOf( xTask ), tmap.getHwNodeOf( fTask ), inSignals, outSignal, inBuffer, outBuffer, prexPostexList[0], prexPostexList[1] ) ); +// SDRoperationsCounter++; +// } +// } +// } +// } +// +// private boolean[] getPrexPostex( TMLTask xTask ) { +// +// boolean[] list = new boolean[2]; +// +// for( TMLChannel ch: xTask.getWriteTMLChannels() ) { //perche testa tutti i canali +// if( ch.isBasicChannel() ) { +// if( ch.getOriginPort().isPrex() ) { +// list[0] = true; +// list[1] = false; +// return list; +// } +// } +// if( ch.isAForkChannel() ) { +// if( ch.getOriginPorts().get(0).isPrex() ) { +// list[0] = true; +// list[1] = false; +// return list; +// } +// } +// } +// for( TMLChannel ch: xTask.getReadTMLChannels() ) { //perche testa tutti i canali +// if( ch.isBasicChannel() ) { +// if( ch.getDestinationPort().isPostex() ) { +// list[0] = false; +// list[1] = true; +// return list; +// } +// } +// if( ch.isAJoinChannel() ) { +// if( ch.getDestinationPorts().get(0).isPostex() ) { +// list[0] = false; +// list[1] = true; +// return list; +// } +// } +// } +// return list; +// } +// +// //Create the inBuffer from the port of the read channel associated to the xTask +// private Buffer createInBuffer( TMLTask xTask, HwNode node ) { +// +// if( xTask.getReadTMLChannels().size() > 0 ) { +// TMLChannel readChannel = xTask.getReadTMLChannels().get(0); +// ArchUnitMEC mec = node.getArchUnitMEC(); +// Buffer buff = new Buffer(); +// int i; +// if( readChannel.isBasicChannel() ) { +// if( mec instanceof FepMEC ) { +// buff = new FepBuffer( "buff_" + readChannel.getDestinationPort().getName(), xTask ); +// } +// else if( mec instanceof MapperMEC ) { +// buff = new MapperBuffer( "buff_" + readChannel.getDestinationPort().getName(), xTask ); +// } +// else if( mec instanceof InterleaverMEC ) { +// buff = new InterleaverBuffer( "buff_" + readChannel.getDestinationPort().getName(), xTask ); +// } +// else if( mec instanceof AdaifMEC ) { +// buff = new MMBuffer( "buff_" + readChannel.getDestinationPort().getName(), xTask ); +// } +// else if( mec instanceof CpuMEC ) { +// buff = new MMBuffer( "buff_" + readChannel.getDestinationPort().getName(), xTask ); +// } +// buffersList.add( buff ); //this line has to be commented if ch_in buffers are to be excluded from the C code +// return buff; +// } +// else { +// for( i = 0; i < readChannel.getDestinationTasks().size(); i++ ) { +// if( readChannel.getDestinationTasks().get(i).getName().equals( xTask.getName() ) ) { +// break; +// } +// } +// if( mec instanceof FepMEC ) { +// buff = new FepBuffer( "buff_" + readChannel.getDestinationPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof MapperMEC ) { +// buff = new MapperBuffer( "buff_" + readChannel.getDestinationPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof InterleaverMEC ) { +// buff = new InterleaverBuffer( "buff_" + readChannel.getDestinationPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof AdaifMEC ) { +// buff = new MMBuffer( "buff_" + readChannel.getDestinationPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof CpuMEC ) { +// buff = new MMBuffer( "buff_" + readChannel.getDestinationPorts().get(i).getName(), xTask ); +// } +// buffersList.add( buff ); //this line has to be commented if ch_in buffers are to be excluded from the C code +// return buff; +// } +// } +// return null; +// } +// +// //Create the inBuffer from the port of the write channel associated to the xTask +// private Buffer createOutBuffer( TMLTask xTask, HwNode node ) { +// +// if( xTask.getWriteTMLChannels().size() > 0 ) { +// TMLChannel writeChannel = xTask.getWriteTMLChannels().get(0); +// ArchUnitMEC mec = node.getArchUnitMEC(); +// Buffer buff = new Buffer(); +// int i; +// if( writeChannel.isBasicChannel() ) { +// if( mec instanceof FepMEC ) { +// buff = new FepBuffer( "buff_" + writeChannel.getOriginPort().getName(), xTask ); +// } +// else if( mec instanceof MapperMEC ) { +// buff = new MapperBuffer( "buff_" + writeChannel.getOriginPort().getName(), xTask ); +// } +// else if( mec instanceof InterleaverMEC ) { +// buff = new InterleaverBuffer( "buff_" + writeChannel.getOriginPort().getName(), xTask ); +// } +// else if( mec instanceof AdaifMEC ) { +// buff = new MMBuffer( "buff_" + writeChannel.getOriginPort().getName(), xTask ); +// } +// else if( mec instanceof CpuMEC ) { +// buff = new MMBuffer( "buff_" + writeChannel.getOriginPort().getName(), xTask ); +// } +// buffersList.add( buff ); +// return buff; +// } +// else { +// for( i = 0; i < writeChannel.getOriginTasks().size(); i++ ) { +// if( writeChannel.getOriginTasks().get(i).getName().equals( xTask.getName() ) ) { +// break; +// } +// } +// if( mec instanceof FepMEC ) { +// buff = new FepBuffer( "buff_" + writeChannel.getOriginPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof MapperMEC ) { +// buff = new MapperBuffer( "buff_" + writeChannel.getOriginPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof InterleaverMEC ) { +// buff = new InterleaverBuffer( "buff_" + writeChannel.getOriginPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof AdaifMEC ) { +// buff = new MMBuffer( "buff_" + writeChannel.getOriginPorts().get(i).getName(), xTask ); +// } +// else if( mec instanceof CpuMEC ) { +// buff = new MMBuffer( "buff_" + writeChannel.getOriginPorts().get(i).getName(), xTask ); +// } +// buffersList.add( buff ); +// return buff; +// } +// } +// return null; +// } +// +// private ArrayList<Signal> getInSignals( TMLTask task ) { //Find the signal associated to the write channel of task +// +// TMLPort originPort, destinationPortCh, originPortSigChannel, destinationPortSigChannel; +// TMLChannel sigChannel; +// ArrayList<Signal> sigsList = new ArrayList<Signal>(); +// +// for( TMLChannel ch: task.getReadTMLChannels() ) { +// if( ch.isBasicChannel() ) { +// originPort = ch.getOriginPort(); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isBasicChannel() ) { +// if( sigChannel.getOriginPort().getName().equals( originPort.getName() ) ) { +// sigsList.add( sig ); +// } +// } +// } +// } +// else if( ch.isAForkChannel() ) { +// originPort = ch.getOriginPorts().get(0); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isAForkChannel() ) { +// if( sigChannel.getOriginPorts().get(0).getName().equals( originPort.getName() ) ) { +// sigsList.add( sig ); +// } +// } +// } +// } +// else if( ch.isAJoinChannel() ) { //take all signals that match the destination port of the join channel +// destinationPortCh = ch.getDestinationPorts().get(0); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isAForkChannel() ) { +// destinationPortSigChannel = sigChannel.getDestinationPorts().get(0); +// } +// else { //there are no join channels associated to signals +// destinationPortSigChannel = sigChannel.getDestinationPort(); +// } +// if( destinationPortCh.getName().equals( destinationPortSigChannel.getName() ) ) { +// sigsList.add( sig ); +// } +// } +// } +// } +// return sigsList; +// } +// +// private Signal getOutSignal( TMLTask task ) { //Find the signal associated to the write channel of task +// +// TMLPort originPort, destinationPort, originPortSigChannel; +// TMLChannel sigChannel; +// +// for( TMLChannel ch: task.getWriteTMLChannels() ) { +// if( ch.isBasicChannel() ) { +// originPort = ch.getOriginPort(); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isBasicChannel() ) { +// if( sigChannel.getOriginPort().getName().equals( originPort.getName() ) ) { +// return sig; +// } +// } +// } +// } +// else if( ch.isAForkChannel() ) { +// originPort = ch.getOriginPorts().get(0); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isAForkChannel() ) { +// if( sigChannel.getOriginPorts().get(0).getName().equals( originPort.getName() ) ) { +// return sig; +// } +// } +// } +// } +// else if( ch.isAJoinChannel() ) { //join channels are tricky because of the multiple source tasks and ports. +// ArrayList<TMLTask> tasksList = ch.getOriginTasks(); //get the index of the origin port +// int i; +// for( i = 0; i < tasksList.size(); i++ ) { +// if( tasksList.get(i).getName().equals( task.getName() ) ) { +// break; //i is the index of the correct origin port +// } +// } +// TMLPort sourcePortCh = ch.getOriginPorts().get(i); +// for( Signal sig: signalsList ) { +// sigChannel = sig.getTMLChannel(); +// if( sigChannel.isAForkChannel() ) { +// originPortSigChannel = sigChannel.getOriginPorts().get(0); +// } +// else { //there are no join channels associated to signals +// originPortSigChannel = sigChannel.getOriginPort(); +// } +// if( sourcePortCh.getName().equals( originPortSigChannel.getName() ) ) { +// return sig; +// } +// } +// } +// } +// return null; +// } +// +// private void setMappingParametersToBuffers() { +// +// for( TMLCPLib tmlcplib: mappedCPLibs ) { +// ArrayList<String> bufferParameters = tmlcplib.getArtifacts().get(0).getBufferParameters(); +// String portName = tmlcplib.getArtifacts().get(0).getPortName(); +// for( Buffer buff: buffersList ) { +// if( buff.getName().equals( "buff_" + portName ) ) { +// buff.setMappingParameters( bufferParameters ); +// } +// } +// +// } +// } +// +// private void makeDataTransfersList() { +// +// ArrayList<Signal> inSignals; +// Signal outSignal; +// +// for( TMLCPLib cplib: mappedCPLibs ) { +// if( cplib.getArtifacts().size() == 1 ) { +// String portName = cplib.getArtifacts().get(0).getPortName(); //only one mapped port per CP +// Object o = cplib.getArtifacts().get(0).getReferenceObject(); +// inSignals = getDTInSignals( portName ); +// String cpName = cplib.getName().split("::")[1]; +// for( TMLCP tmlcp: tmlcpsList ) { +// if( tmlcp.getName().equals( cpName ) ) { +// DataTransfer dt = new DataTransfer( cplib, tmlcp, inSignals, null ); //outSignals are added later +// dataTransfersList.add( dt ); +// } +// } +// } +// } +// +// Signal newSig; +// ArrayList<Signal> newInSignalsList = new ArrayList<Signal>(); +// +// for( DataTransfer dt: dataTransfersList ) { +// Operation op = getOperationWithSameInputSignals( dt.getInSignals() ); //IMPORTANT: create a DT output signal and modifies operations input signals +// if( op != null ) { +// for( Signal sig: op.getInSignals() ) { +// newSig = new Signal( sig.getTMLChannel() ); +// newSig.setName( sig.getName() + "_CP" ); +// dt.addOutSignal( newSig ); +// newInSignalsList.add( newSig ); //to be substitued to the inSignals of op +// signalsList.add( newSig ); +// } +// Buffer inBuff = op.getInBuffer(); //the operation inBuffer is the dataTransfer outBuffer +// String portName = "buff_" + dt.getTMLCPLib().getArtifacts().get(0).getPortName(); +// if( inBuff != null ) { //the port mapped on the CP is associated to the CP output buffer +// if( inBuff.getName().equals( portName ) ) { +// dt.setOutBuffer( inBuff ); +// } +// } +// } +// op.setInSignals( newInSignalsList ); +// newInSignalsList = new ArrayList<Signal>(); +// } +// for( DataTransfer dt: dataTransfersList ) { +// for( Signal inSignal: dt.getInSignals() ) { //for each in signal corresponds an inBuffer +// String buffName = "buff_" + inSignal.getName(); +// for( Buffer buff: buffersList ) { +// if( buff.getName().equals( buffName ) ) { +// dt.addInBuffer( buff ); +// } +// } +// } +// } +// } +// +// private Operation getOperationWithSameInputSignals( ArrayList<Signal> inSignals ) { +// +// int counter = 0; +// for( Operation op: operationsList ) { +// for( Signal sig: op.getInSignals() ) { +// if( inSignals.contains( sig ) ) { +// counter++; +// } +// } +// if( counter == inSignals.size() ) { +// return op; +// } +// counter = 0; +// } +// return null; +// } +// +// private Operation getOperationWithSameOutputSignals( ArrayList<Signal> outSignals ) { +// +// int counter = 0; +// for( Operation op: operationsList ) { +// Signal sig = op.getOutSignal(); //operations have one and only one outSignal +// if( sig != null) { +// if( outSignals.contains( sig ) ) { +// counter++; +// } +// if( counter == outSignals.size() ) { +// return op; +// } +// counter = 0; +// } +// } +// return null; +// } +// +// //retrieve the signal whose channel has a destintation port equal to portName +// private ArrayList<Signal> getDTInSignals( String portName ) { +// +// TMLChannel channel; +// ArrayList<Signal> sigsList = new ArrayList<Signal>(); +// +// for( Signal sig: signalsList ) { +// channel = sig.getTMLChannel(); +// if( channel.isBasicChannel() ) { +// if( channel.getDestinationPort().getName().equals( portName ) ) { +// sigsList.add( sig ); +// } +// } +// else { //fork or join channel with multiple destination ports +// for( TMLPort port: channel.getDestinationPorts() ) { +// if( port.getName().equals( portName ) ) { +// sigsList.add(sig ); +// } +// } +// } +// } +// return sigsList; +// } +// +// private void makeCommunicationPatternsList() { +// +// for( TMLCommunicationPatternPanel panel: tmlcpps ) { +// GTMLModeling gtmlm = new GTMLModeling( panel, true ); +// TMLCP tmlcp = gtmlm.translateToTMLCPDataStructure( panel.getName() ); +// tmlcpsList.add( tmlcp ); +// } +// } +// +// //Associate signals to operations and at the same time add signals to signalsList. Only works for SDR operations (so far) +// //If user makes a typo in the event name associated to a channel, then the signal is not created. Should raise an error! +// private void makeSignalsList() { +// +// for( TMLChannel ch: tmlm.getChannels() ) { +// //for basic and for channels there is a one-to-one correspondence with signals. Do not consider events, for simplicity, so +// //far. +// if( ch.isBasicChannel() || ch.isAForkChannel() ) { +// signalsList.add( new Signal( ch ) ); +// } +// else if( ch.isAJoinChannel() ) { //basic signals must be created in order for the SDF scheduler to work +// for( TMLChannel tmlch: transformIntoBasicChannels( ch ) ) { +// signalsList.add( new Signal( tmlch ) ); +// } +// } +// } +// return; +// } +// +///********************************************************************************** +// * CODE GENERATION PART +// *********************************************************************************/ +// +// private void generateMainFile() { +// mainFileString.append( "#include \"" + applicationName + ".h\"" + CR2 ); +// mainFileString.append( "int main(void)\t{" + CR + TAB + "/* USER TO DO */" + +// CR + TAB + "int status = " + applicationName + "_exec();" + CR + "}" ); +// } +// +// private void generateHeaderFile( ArrayList<TMLTask> mappedTasks ) { +// +// getPrexAndPostexChannels(); +// headerString.append( generateCodeForLibraries() ); +// headerString.append( generateCodeForCustomTypes() ); +// headerString.append( generateCodeForPrototypes() ); +// headerString.append( buffersAndInstructionsDeclaration( true ) ); +// headerString.append( generateCodeForSignals() ); +// } +// +// private void getPrexAndPostexChannels() { +// +// boolean foundPrex = false, foundPostex = false; +// TMLPort originPort, destinationPort; +// +// //Fill the the prex and postex lists +// for( TMLChannel ch: tmlm.getChannels() ) { +// if( ch.isBasicChannel() ) { +// originPort = ch.getOriginPort(); +// if( originPort.isPrex() ) { +// prexList.add( originPort ); +// } +// destinationPort = ch.getDestinationPort(); +// if( destinationPort.isPostex() ) { +// postexList.add( destinationPort ); +// } +// } +// if( ch.isAForkChannel() ) { +// originPort = ch.getOriginPorts().get(0); +// if( originPort.isPrex() ) { +// prexList.add( originPort ); +// } +// } +// if( ch.isAJoinChannel() ) { +// destinationPort = ch.getDestinationPorts().get(0); +// if( destinationPort.isPostex() ) { +// postexList.add( destinationPort ); +// } +// } +// } +// } +// +// private String generateCodeForLibraries() { +// String s = "#ifndef " + applicationName + "_H" + CR + +// "#define " + applicationName + "_H" + CR + +// "#include <stdio.h>" + CR + +// "#include <stdint.h>" + CR + +// "#include <embb/fep.h>" + CR + +// "#include <embb/intl.h>" + CR + +// "#include <embb/mapper.h>" + CR + +// "#include <embb/adaif.h>" + CR + +// "#include <embb/memory.h>" + CR2 + +// "extern char fep_mss[];" + CR + +// "extern char adaif_mss[];" + CR + +// "extern char intl_mss[];" + CR + +// "extern char mapper_mss[];" + CR2; +// return s; +// } +// +// private String generateCodeForPrototypes() { +// String s = "/**** prototypes *****/" + CR + +// "extern int " + applicationName + "_exec(void);" + CR + +// "extern void init_buffers(void);" + CR + +// "extern bool exit_rule(void);" + CR + +// "extern void register_operations(void);" + CR + +// "extern void register_dataTransfers(void);" + CR + +// "extern void register_fire_rules(void);" + CR + +// "extern void init_signals(void);" + CR + +// "extern void init_operations(void);" + CR + +// "extern void init_CPs(void);" + CR + +// "extern void cleanup_operations_context(void);" + CR + +// "extern void cleanup_CPs_context(void);" + CR2; +// return s; +// } +// +// private String buffersAndInstructionsDeclaration( boolean declaration ) { +// +// TMLTask xTask, fTask; +// String ctxName; +// ArchUnitMEC taskMEC; +// Buffer inBuff, outBuff; +// StringBuffer buffersString = new StringBuffer( "/**** Buffers *****/" + CR ); +// StringBuffer instructionsString = new StringBuffer( "/**** Operations Data Structures *****/" + CR ); +// +// for( Operation op: operationsList ) { +// if( op.getType() == Operation.SDR ) { +// xTask = op.getSDRTasks().get( Operation.X_TASK ); +// fTask = op.getSDRTasks().get( Operation.F_TASK ); +// inBuff = op.getInBuffer(); +// outBuff = op.getOutBuffer(); +// ctxName = op.getContextName(); +// int xTaskOperationType = xTask.getOperationType(); +// if( declaration ) { +// if( inBuff == null ) { //for source operation +// buffersString.append( "extern" + SP + outBuff.getType() + SP + outBuff.getName() + SC + CR ); +// instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// } +// else { +// if( outBuff == null ) { //for sink operation +// buffersString.append( "extern" + SP + inBuff.getType() + SP + inBuff.getName() + SC + CR ); +// instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// } +// else { //for all the remaining operations +// buffersString.append( "extern" + SP + inBuff.getType() + SP + inBuff.getName() + SC + CR ); +// //if( outBuff != null ) { +// buffersString.append( "extern" + SP + outBuff.getType() + SP + outBuff.getName() + SC + CR ); +// instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// //} +// } +// } +// } +// else { +// if( inBuff == null ) { //for source operation +// buffersString.append( outBuff.getType() + SP + outBuff.getName() + SC + CR ); +// instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// } +// else { +// if( outBuff == null ) { //for sink operation +// buffersString.append( inBuff.getType() + SP + inBuff.getName() + SC + CR ); +// instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// } +// else { //for all the remaining operations +// buffersString.append( inBuff.getType() + SP + inBuff.getName() + SC + CR ); +// //if( outBuff != null ) { +// buffersString.append( outBuff.getType() + SP + outBuff.getName() + SC + CR ); +// instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR ); +// //} +// } +// } +// } +// } +// } +// instructionsString.append( CR2 + "/**** Data Transfers Instructions ****/" + CR ); +// ArchUnitMEC archMEC = new CpuMEC(); +// for( DataTransfer dt: dataTransfersList ) { +// TMLCPLib tmlcplib = dt.getTMLCPLib(); +// int cpMECType = tmlcplib.getCPMECType(); +// ctxName = dt.getContextName(); +// if( cpMECType == CPMEC.CpuMemoryCopyMEC ) { +// if( declaration ) { +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + SC + CR ); +// } +// else { +// instructionsString.append( archMEC.getContext() + SP + ctxName + SC + CR ); +// } +// } +// if( cpMECType == CPMEC.SingleDmaMEC ) { +// int transferType = tmlcplib.getTransferTypes().get(0); +// for( String s: tmlcplib.getMappedUnits() ) { +// if( s.contains( CPMEC.dmaController ) ) { +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// archMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// break; +// } +// } +// if( declaration ) { +// if( transferType == CPMEC.IP2IP ) { //there are two contexts to declare +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + "_1" + SC + CR ); +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + "_0" + SC + CR ); +// } +// else { +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + SC + CR ); +// } +// } +// else { +// if( transferType == CPMEC.IP2IP ) { //there are two contexts to declare +// instructionsString.append( archMEC.getContext() + SP + ctxName + "_0" + SC + CR ); +// instructionsString.append( archMEC.getContext() + SP + ctxName + "_1" + SC + CR ); +// } +// else { +// instructionsString.append( archMEC.getContext() + SP + ctxName + SC + CR ); +// } +// } +// } +// if( cpMECType == CPMEC.DoubleDmaMEC ) { +// int suffix = 0; +// for( String s: tmlcplib.getMappedUnits() ) { +// ArrayList<Integer> transferTypes = tmlcplib.getTransferTypes(); +// if( s.contains( CPMEC.dmaController ) ) { +// int transferType = tmlcplib.getTransferTypes().get(suffix); +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// archMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// if( declaration ) { +// if( transferType == CPMEC.IP2IP ) { //there are two contexts to declare +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + "_0" + SC + CR ); +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + "_1" + SC + CR ); +// } +// else { +// instructionsString.append( "extern" + SP + archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + SC + CR ); +// } +// } +// else { +// if( transferType == CPMEC.IP2IP ) { //there are two contexts to declare +// instructionsString.append( archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + "_0" + SC + CR ); +// instructionsString.append( archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + "_1" + SC + CR ); +// } +// else { +// instructionsString.append( archMEC.getContext() + SP + ctxName + "_" + String.valueOf(suffix) + SC + CR ); +// } +// } +// suffix++; +// } +// } +// } +// } +// return buffersString.toString() + CR + instructionsString.toString(); +// } +// +// private String generateCodeForSignals() { +// +// StringBuffer s = new StringBuffer( CR2 + "enum sigs_enu {" + CR ); +// for( Signal sig: signalsList ) { +// s.append( TAB + sig.getName() + "," + CR ); +// } +// s.append( TAB + postexList.get(0).getName() + "," + CR ); +// s.append( "NUM_SIGS };" + CR2 + "enum ops_enu {" + CR ); +// +// for( Operation op: operationsList ) { +// s.append( TAB + op.getName() + ",\n" ); +// } +// for( DataTransfer dt: dataTransfersList ) { +// s.append( TAB + dt.getName() + ",\n" ); +// } +// s.append( "NUM_OPS };" + CR2 + "#endif" ); +// return s.toString(); +// } +// +// private String generateCodeForCustomTypes() { +// StringBuffer s = new StringBuffer(); +// s.append( Signal.DECLARATION + CR2 ); +// s.append( "/**** Buffers ****/" + CR ); +// s.append( FepBuffer.DECLARATION + CR2 ); +// s.append( MapperBuffer.DECLARATION + CR2 ); +// s.append( InterleaverBuffer.DECLARATION + CR2 ); +// s.append( MMBuffer.DECLARATION + CR2 ); +// s.append( AdaifBuffer.DECLARATION + CR ); +// +// return s.toString(); +// } +// +// private void generateProgramFile() { +// +// /*JOptionPane.showMessageDialog( frame, +// "The TURTLE Analysis contains several errors", +// "Syntax analysis failed", +// JOptionPane.INFORMATION_MESSAGE );*/ +// Scheduler scheduler = new Scheduler( Scheduler.JAIR ); +// programString.append( +// "#include " + "\"" + applicationName + ".h\"" + CR2 + +// "int (*operation[NUM_OPS])();" + CR + +// "bool (*fire_rule[NUM_OPS])();" + CR + +// "SIG_TYPE sig[NUM_SIGS]={{0}};" + CR2 + +// "/******** " + applicationName + "_exec function *********/" + CR + +// "int " + applicationName + "_exec(void) {" + CR + TAB + +// "bool valid_signal = false;" + CR + TAB + +// "bool blocked = true;" + CR + TAB + +// "int status = 0;" + CR + TAB + +// "register_operations();" + CR + TAB + +// "register_dataTransfers();" + CR + TAB + +// "register_fire_rules();" + CR + TAB + +// "init_buffers();" + CR + TAB + +// "init_signals();" + CR + TAB + +// "init_operations();" + CR + TAB + +// "init_CPs();" + CR2 + TAB + +// "/********* INIT PREX OPs signals ********/" + CR + +// generateCodeToInitPrexOperation() + CR + TAB + +// "/********* OPERATIONS scheduling ***************/" + CR + TAB + +// scheduler.getCode() + CR + TAB + +// //generateCodeForSinkOperation() + CR + TAB + +// "cleanup_operations_context();" + CR + TAB + +// "cleanup_CPs_context();" + CR + TAB + +// "return status;" + CR + "}" + CR2 ); +// generateCodeForOperations(); +// generateCodeForCommunicationPatterns(); +// generateCodeToRegisterOperations(); +// generateCodeToRegisterDataTransfers(); +// generateCodeForFireRules(); +// generateCodeToRegisterFireRules(); +// generateCodeForExitRule(); +// } +// +// private String generateCodeToInitPrexOperation() { +// +// StringBuffer s = new StringBuffer(); +// for( TMLPort port: prexList ) { +// s.append( TAB + "sig[ " + port.getName() +" ].f = false;" + CR ); +// } +// return s.toString(); +// } +// +// private String generateCodeForSinkOperation() { +// +// StringBuffer s = new StringBuffer(); +// for( Operation op: operationsList ) { +// if( op.isPostex() ) { +// s.append( "op_" + op.getName() + "()" + SC ); +// break; +// } +// } +// return s.toString(); +// } +// +// private void generateCodeForOperations() { //generate the code for the execution operations +// +// //for each operations add the exec code + the info for all the signals and stuff +// String exec_code = ""; +// +// for( Operation op: operationsList ) { +// if( op.getType() == Operation.SDR ) { +// programString.append( generateSDROperation( op ) ); +// } +// } +// } +// +// private String generateSDROperation( Operation op ) { +// +// //For SDR operations the xTask is used to retrieve the mapped unit +// String signalOutName = ""; +// String signalInName = ""; +// StringBuffer code = new StringBuffer(); +// String ctxName = op.getContextName(); +// TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); +// TMLTask fTask = op.getSDRTasks().get( Operation.F_TASK ); +// +// int xTaskOperationType = xTask.getOperationType(); +// +// if( op.getOutSignal() != null ) { +// signalOutName = op.getOutSignal().getName(); +// } +// for( Signal sig: op.getInSignals() ) { +// signalInName += sig.getName(); +// } +// +// code.append( "int op_" + op.getName() + "()\t{" + CR /*+ getTaskAttributes( fTask )*/ + CR ); +// if( op.isPrex() || op.isPostex() ) { +// code.append( TAB + "int status = 0;" + CR ); +// } +// +// //Mark input signals as false +// for( Signal sig: op.getInSignals() ) { +// code.append( TAB + "sig[" + sig.getName() + "].f = false;" + CR ); +// } +// +// if( xTaskOperationType == FepOperationMEC.CwpMEC ) { +// CwpMEC cwp = new CwpMEC( ctxName, signalInName, signalOutName ); +// code.append( cwp.getExecCode() ); +// } +// else if( xTaskOperationType == FepOperationMEC.CwmMEC ) { +// CwmMEC cwm = new CwmMEC( ctxName, signalInName, signalOutName ); +// code.append( cwm.getExecCode() ); +// } +// else if( xTaskOperationType == FepOperationMEC.CwaMEC ) { +// CwaMEC cwa = new CwaMEC( ctxName, signalInName, "", signalOutName ); +// code.append( cwa.getExecCode() ); +// } +// else if( xTaskOperationType == FepOperationMEC.CwlMEC ) { +// CwlMEC cwl = new CwlMEC( ctxName, signalInName, signalOutName ); +// code.append( cwl.getExecCode() ); +// } +// else if( xTaskOperationType == FepOperationMEC.SumMEC ) { +// SumMEC sum = new SumMEC( ctxName, signalInName, signalOutName ); +// code.append( sum.getExecCode() ); +// } +// else if( xTaskOperationType == FepOperationMEC.FftMEC ) { +// FftMEC fft = new FftMEC( ctxName, signalInName, signalOutName ); +// code.append( fft.getExecCode() ); +// } +// else if( xTaskOperationType == OperationMEC.MappOperationMEC ) { +// MappOperationMEC mapp = new MappOperationMEC( ctxName, signalInName, signalOutName ); +// code.append( mapp.getExecCode() ); +// } +// else if( xTaskOperationType == OperationMEC.IntlOperationMEC ) { +// IntlOperationMEC intl = new IntlOperationMEC( ctxName, signalInName, signalOutName ); +// code.append( intl.getExecCode() ); +// } +// else if( xTaskOperationType == OperationMEC.AdaifOperationMEC ) { +// AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName ); +// code.append( adaif.getExecCode() ); +// } +// +// if( op.getOutSignal() != null ) { +// code.append( TAB + "sig[" + op.getOutSignal().getName() + "].f = true;" + CR ); +// } +// else { //the postex +// if( postexList.size() > 0 ) { +// code.append( TAB + "sig[" + postexList.get(0).getName() + "].f = true;" + CR ); +// } +// else { +// code.append( CR ); +// } +// } +// code.append( TAB + "return status;" + CR + "}" + CR2 ); +// +// return code.toString(); +// } +// +// private String getTaskAttributes( TMLTask task ) { +// +// StringBuffer attributesList = new StringBuffer(); +// String type, value; +// +// String[] attributes = task.getAttributeString().split("/"); +// for( int i = 0; i < attributes.length; i++ ) { +// if( attributes[i].length() > 1 ) { +// String s = attributes[i].split("\\.")[1]; +// String name = s.split(":")[0]; +// if( !name.contains( "__req" ) ) { //filter out request parameters +// type = s.split(":")[1].split("=")[0]; +// value = s.split(":")[1].split("=")[1]; +// if( value.equals(" " ) ) { +// attributesList.append( TAB + type + " " + name + ";" + CR ); +// } +// else { +// attributesList.append( TAB + type + " " + name + " = " + value.substring( 0, value.length() - 1 ) + ";" + CR ); +// } +// } +// } +// } +// return attributesList.toString().substring( 0, attributesList.length() - 1 ); //remove last CR +// } +// +// private String getOutSignalName( TMLTask task ) { +// +// String s = ""; +// if( task.getWriteChannels().size() > 0 ) { +// TMLWriteChannel ch = task.getWriteChannels().get(0); +// String signalName = ch.toString().split("__")[1]; +// if( signalsList.contains( signalName + "_CPin" ) ) { +// s = signalName; +// } +// else { +// s = signalName; +// } +// return s; +// } +// return ""; +// } +// +// private String getInSignalName( TMLTask task ) { +// +// String s = ""; +// if( task.getReadChannels().size() > 0 ) { +// TMLReadChannel ch = task.getReadChannels().get(0); +// String signalName = ch.toString().split("__")[1]; +// if( signalsList.contains( signalName + "_CPin" ) ) { +// s = signalName; +// } +// else { +// s = signalName; +// } +// return s; +// } +// return ""; +// } +// +// private void generateCodeForCommunicationPatterns() { +// +// int srcMemoryType = 0, dstMemoryType = 0; +// TMLCPLib tmlcplib; +// String s, ctxName, counter; +// Vector<String> attributes; +// ArchUnitMEC dmaArchMEC = new CpuMEC(); +// +// for( DataTransfer dt: dataTransfersList ) { +// tmlcplib = dt.getTMLCPLib(); +// ctxName = dt.getContextName(); +// attributes = tmlcplib.getAssignedAttributes(); +// +// TraceManager.addDev( "Getting assigned attributes from tmlcplib:\n" + attributes.toString() ); +// +// String name = tmlcplib.getName().split("::")[0]; +// programString.append( "int op_" + name + "()\t{" + CR + TAB + "int status = 0;" + CR ); +// +// for( Signal sig: dt.getInSignals() ) { +// programString.append( TAB + "sig[ " + sig.getName() + " ].f = false;" + CR ); +// } +// int cpMECType = tmlcplib.getCPMECType(); +// Vector<String> mecAttributes = tmlcplib.getAssignedAttributes(); +// if( cpMECType == CPMEC.CpuMemoryCopyMEC ) { +// CpuMemoryCopyMEC mec = new CpuMemoryCopyMEC( ctxName, mecAttributes ); //mem2ip +// programString.append( mec.getExecCode() ); +// } +// if( cpMECType == CPMEC.SingleDmaMEC ) { +// for( String s1: tmlcplib.getMappedUnits() ) { +// if( s1.contains( CPMEC.dmaController ) ) { +// String dmaUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// } +// if( s1.contains( CPMEC.sourceStorage ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// srcMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType; +// } +// if( s1.contains( CPMEC.destinationStorage ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dstMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType; +// } +// } +// SingleDmaMEC mec = new SingleDmaMEC( ctxName, dmaArchMEC, srcMemoryType, dstMemoryType, tmlcplib.getTransferTypes().get(0), attributes ); +// programString.append( mec.getExecCode() ); +// } +// if( cpMECType == CPMEC.DoubleDmaMEC ) { +// ArrayList<Integer> transferTypes = tmlcplib.getTransferTypes(); +// //first I must get the mapped DMA controllers and the memories +// Vector<Integer> srcMemoryTypes = new Vector<Integer>(); +// Vector<Integer> dstMemoryTypes = new Vector<Integer>(); +// Vector<ArchUnitMEC> dmaArchMECs = new Vector<ArchUnitMEC>(); +// int iDma = 1; +// int iSrc = 1; +// int iDst = 1; +//// int iteration = 1; // fixing compilation +// for( String s1: tmlcplib.getMappedUnits() ) { //there are two DMA_controllers +// /*TraceManager.addDev( "Comparing " + s1 + " with " + CPMEC.dmaController + "_" + String.valueOf(iDma) ); +// TraceManager.addDev( "Comparing " + s1 + " with " + CPMEC.sourceStorage + "_" + String.valueOf(iSrc) ); +// TraceManager.addDev( "Comparing " + s1 + " with " + CPMEC.destinationStorage + "_" + String.valueOf(iDst) );*/ +// if( s1.contains( CPMEC.dmaController + "_" + String.valueOf(iDma) ) ) { +// String dmaUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dmaArchMECs.add( iDma-1, tmla.getHwCPUByName( dmaUnit ).MEC ); +// iDma++; +// } +// if( s1.contains( CPMEC.sourceStorage + "_" + String.valueOf(iSrc) ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// srcMemoryTypes.add( iSrc-1, tmla.getHwMemoryByName( memoryUnit ).BufferType ); +// iSrc++; +// } +// if( s1.contains( CPMEC.destinationStorage + "_" + String.valueOf(iDst) ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dstMemoryTypes.add( iDst-1, tmla.getHwMemoryByName( memoryUnit ).BufferType ); +// iDst++; +// } +// } +// /*TraceManager.addDev( "About to create the DoubleDmaMEC class" ); +// for( Integer i: srcMemoryTypes ) { +// TraceManager.addDev( "srcMemoryTypes = " + i.intValue() ); +// } +// for( Integer i: dstMemoryTypes ) { +// TraceManager.addDev( "dstMemoryTypes = " + i.intValue() ); +// } +// for( ArchUnitMEC i: dmaArchMECs ) { +// TraceManager.addDev( "dmaArchMECs = " + i.toString() ); +// }*/ +// DoubleDmaMEC mec = new DoubleDmaMEC( ctxName, dmaArchMECs, srcMemoryTypes, dstMemoryTypes, transferTypes, attributes ); +// programString.append( mec.getExecCode() ); +// } +// for( Signal sig: dt.getOutSignals() ) { +// programString.append( TAB + "sig[ " + sig.getName() + " ].f = true;" + CR ); +// } +// programString.append( TAB + "return status;" + CR + "}" + CR2 ); +// } +// } +// +// /*private DoubleDmaMEC getDoubleDmaMEC( TMLCPLib tmlcplib, int iteration, String ctxName, Vector<String> attributes, ArrayList<Integer> transferTypes ) { +// +// int srcMemoryType = 0, dstMemoryType = 0; +// ArchUnitMEC dmaArchMEC = new CpuMEC(); +// ArrayList<String> sizes = new ArrayList<String>();*/ +// //sizes.add( (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( DoubleDmaMEC.counter1Index ) ); +// //sizes.add( (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( DoubleDmaMEC.counter2Index ) ); +// +///* for( String s1: tmlcplib.getMappedUnits() ) { //there are two DMA_controllers +// if( s1.contains( CPMEC.dmaController + "_" + String.valueOf(iteration) ) ) { +// String dmaUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// } +// if( s1.contains( CPMEC.sourceStorage + "_" + String.valueOf(iteration) ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// srcMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType; +// } +// if( s1.contains( CPMEC.destinationStorage + "_" + String.valueOf(iteration) ) ) { +// String memoryUnit = s1.split(":")[1].replaceAll("\\s+",""); +// dstMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType; +// } +// } +// DoubleDmaMEC mec = new DoubleDmaMEC( ctxName + "_" + String.valueOf(iteration), dmaArchMEC, srcMemoryType, dstMemoryType, transferTypes.get(iteration), attributes ); +// return mec; +// }*/ +// +// private void generateCodeToRegisterOperations() { +// +// programString.append( "void register_operations( void )\t{" + CR ); +// for( Operation op: operationsList ) { +// programString.append( TAB + "operation[" + op.getName() + "] = " + "op_" + op.getName() + ";" + CR ); +// } +// programString.append( "}" + CR2 ); +// } +// +// private void generateCodeToRegisterDataTransfers() { +// +// programString.append( "void register_dataTransfers( void )\t{" + CR ); +// for( DataTransfer dt: dataTransfersList ) { +// programString.append( TAB + "operation[" + dt.getName() + "] = " + "op_" + dt.getName() + ";" + CR ); +// } +// programString.append( "}" + CR2 ); +// } +// +// private void generateCodeForFireRules() { +// +// programString.append( "/**** OPERATIONS FIRE RULES ****/" + CR ); +// for( Operation op: operationsList ) { +// programString.append( "bool fr_" + op.getName() + "( void )\t{" + CR ); +// programString.append( TAB + "return (" + op.getFireRuleCondition() + ");" + CR ); +// programString.append( "}" + CR2 ); +// } +// programString.append( CR ); +// programString.append( "/**** DATA TRANSFERS FIRE RULES ****/" + CR ); +// for( DataTransfer dt: dataTransfersList ) { +// programString.append( "bool fr_" + dt.getName() + "( void )\t{" + CR ); +// programString.append( TAB + "return (" + SP + dt.getFireRuleCondition() + SP + ");" + CR ); +// programString.append( "}" + CR2 ); +// } +// programString.append( CR ); +// } +// +// private void generateCodeToRegisterFireRules() { +// +// programString.append( "void register_fire_rules( void )\t{" + CR ); +// for( Operation op: operationsList ) { +// programString.append( TAB + "fire_rule[" + op.getName() + "] = " + "fr_" + op.getName() + ";" + CR ); +// } +// for( DataTransfer dt: dataTransfersList ) { +// programString.append( TAB + "fire_rule[" + dt.getName() + "] = " + "fr_" + dt.getName() + ";" + CR ); +// } +// programString.append( "}" + CR2 ); +// } +// +// private void generateCodeForExitRule() { +// +// StringBuffer s = new StringBuffer(); +// for( TMLPort port: postexList ) { +// s.append( "( sig[ " + port.getName() +" ].f == true ) &&" ); +// } +// if( s.length() > 3 ) { +// programString.append( "bool exit_rule(void)\t{" + CR + TAB + "return " + s.toString().substring( 0, s.length() - 3 ) + SC + CR + "}" ); +// } +// else { +// programString.append( "bool exit_rule(void)\t{" + CR + TAB + "return " + s + SC + CR + "}" ); +// } +// } +// +// private void generateInitFile( ArrayList<TMLTask> mappedTasks ) { +// +// String init_code = ""; +// String ctxName; +// String inSignalName = Signal.USERTODO, outSignalName = Signal.USERTODO; +// initFileString.append( "#include \"" + applicationName + ".h\"" + CR2 ); +// initFileString.append( "/**** variables ****/" + CR2 ); +// initFileString.append( "char fep_mss[0x10000];" + CR ); +// initFileString.append( "char adaif_mss[0x10000];" + CR ); +// initFileString.append( "char intl_mss[0x41000];" + CR ); +// initFileString.append( "char mapper_mss[0x8000];" + CR ); +// initFileString.append( buffersAndInstructionsDeclaration( false ) + CR2 ); +// generateCodeToInitializeBuffers(); +// generateCodeToInitializeSignals(); +// initFileString.append( "/**** init code ****/" + CR ); +// +// //Only for SDR operations +// for( Operation op: operationsList ) { +// if( op.getType() == Operation.SDR ) { +// TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); +// TMLTask fTask = op.getSDRTasks().get( Operation.X_TASK ); +// int xTaskOperationType = xTask.getOperationType(); +// int fTaskOperationType = fTask.getOperationType(); +// ctxName = op.getContextName(); +// if( op.getInSignals().size() > 0 ) { +// inSignalName = op.getInSignals().get(0).getName(); +// } +// if( op.getOutSignal() != null ) { +// outSignalName = op.getOutSignal().getName(); +// } +// switch( xTaskOperationType ) { +// case OperationMEC.CwpMEC: +// CwpMEC cwp = new CwpMEC( ctxName, inSignalName, outSignalName ); +// init_code = cwp.getInitCode(); +// break; +// case OperationMEC.CwmMEC: +// CwmMEC cwm = new CwmMEC( ctxName, inSignalName, outSignalName ); +// init_code = cwm.getInitCode(); +// break; +// case OperationMEC.CwaMEC: +// CwaMEC cwa = new CwaMEC( ctxName, inSignalName, "", outSignalName ); +// init_code = cwa.getInitCode(); +// break; +// case OperationMEC.CwlMEC: +// CwlMEC cwl = new CwlMEC( ctxName, inSignalName, outSignalName ); +// init_code = cwl.getInitCode(); +// break; +// case OperationMEC.SumMEC: +// SumMEC sum = new SumMEC( ctxName, inSignalName, outSignalName ); +// init_code = sum.getInitCode(); +// break; +// case OperationMEC.FftMEC: +// FftMEC fft = new FftMEC( ctxName, inSignalName, outSignalName ); +// init_code = fft.getInitCode(); +// break; +// case OperationMEC.IntlOperationMEC: +// IntlOperationMEC intl = new IntlOperationMEC( ctxName, inSignalName, outSignalName ); +// init_code = intl.getInitCode(); +// break; +// case OperationMEC.MappOperationMEC: +// MappOperationMEC mapp = new MappOperationMEC( ctxName, inSignalName, outSignalName ); +// init_code = mapp.getInitCode(); +// break; +// case OperationMEC.AdaifOperationMEC: +// AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName ); +// init_code = adaif.getInitCode(); +// break; +// case OperationMEC.CpuOperationMEC: +// CpuOperationMEC cpu = new CpuOperationMEC( ctxName, inSignalName, outSignalName ); +// init_code = cpu.getInitCode(); +// break; +// } +// initFileString.append( init_code + CR ); +// init_code = ""; +// inSignalName = Signal.USERTODO; +// outSignalName = Signal.USERTODO; +// } +// } +// +// generateInitRoutinesForCPs(); +// +// initFileString.append( "/**** init contexts ****/" + CR + "void init_operations(void)\t{" + CR ); +// for( Operation op: operationsList ) { +// if( op.getType() == Operation.SDR ) { +// TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); +// ArchUnitMEC xTaskArchMEC = tmap.getHwNodeOf( xTask ).getArchUnitMEC(); +// if( xTaskArchMEC instanceof FepMEC ) { +// initFileString.append( TAB + "init_" + xTask.getTaskName() + "();" + CR ); +// } +// if( xTaskArchMEC instanceof MapperMEC ) { +// initFileString.append( TAB + "init_" + xTask.getTaskName() + "();" + CR ); +// } +// if( xTaskArchMEC instanceof InterleaverMEC ) { +// initFileString.append( TAB + "init_" + xTask.getTaskName() + "();" + CR ); +// } +// if( xTaskArchMEC instanceof AdaifMEC ) { +// initFileString.append( TAB + "init_" + xTask.getTaskName() + "();" + CR ); +// } +// } +// } +// initFileString.append( "}" + CR2 ); +// +// //Init Communication Patterns. Only DMA transfers need init code +// initFileString.append( "/**** init CPs ****/" + CR + "void init_CPs(void)\t{" + CR ); +// for( DataTransfer dt: dataTransfersList ) { +// TMLCPLib tmlcplib = dt.getTMLCPLib(); +// String name = tmlcplib.getName().split("::")[0]; +// if( !( tmlcplib.getCPMECType() == CPMEC.CpuMemoryCopyMEC ) ) { //No need to create init routine for memory copy transfers +// initFileString.append( TAB + "init_" + name + "();" + CR ); +// } +// } +// initFileString.append( "}" + CR2 ); +// +// //Clean-up context routines +// initFileString.append( "/**** cleanup contexts ****/" + CR ); +// initFileString.append( "void cleanup_operations_context( void )\t{" + CR ); +// for( Operation op: operationsList ) { +// if( op.getType() == Operation.SDR ) { +// TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK ); +// ctxName = op.getContextName(); +// ArchUnitMEC xTaskArchMEC = tmap.getHwNodeOf( xTask ).getArchUnitMEC(); +// if( xTaskArchMEC instanceof FepMEC ) { +// initFileString.append( TAB + FepMEC.Ctx_cleanup + "( &" + ctxName + " );" + CR ); +// } +// if( xTaskArchMEC instanceof MapperMEC ) { +// initFileString.append( TAB + MapperMEC.Ctx_cleanup + "( &" + ctxName + " );" + CR ); +// } +// if( xTaskArchMEC instanceof InterleaverMEC ) { +// initFileString.append( TAB + InterleaverMEC.Ctx_cleanup + "( &" + ctxName + " );" + CR ); +// } +// if( xTaskArchMEC instanceof AdaifMEC ) { +// initFileString.append( TAB + AdaifMEC.Ctx_cleanup + "( &" + ctxName + " );" + CR ); +// } +// } +// } +// initFileString.append( "}" + CR2 ); +// initFileString.append( "void cleanup_CPs_context( void )\t{" + CR ); +// //ArchUnitMEC dmaArchMEC = new CpuMEC(); +// +// for( DataTransfer dt: dataTransfersList ) { +// TMLCPLib tmlcplib = dt.getTMLCPLib(); +// int cpMECType = tmlcplib.getCPMECType(); +// int transferType; +// ctxName = dt.getContextName(); +// Vector<String> mappedUnits = tmlcplib.getMappedUnits(); +// switch( cpMECType ) { +// case CPMEC.CpuMemoryCopyMEC: +// initFileString.append( getCtxCleanupRoutine( ctxName, mappedUnits ) ); +// break; +// case CPMEC.SingleDmaMEC: +// transferType = tmlcplib.getTransferTypes().get(0); +// /*for( String s: tmlcplib.getMappedUnits() ) { +// if( s.contains( CPMEC.dmaController ) ) { +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// break; +// } +// }*/ +// if( transferType == CPMEC.IP2IP ) { +// initFileString.append( getCtxCleanupRoutine( ctxName + "_0", mappedUnits ) ); +// initFileString.append( getCtxCleanupRoutine( ctxName + "_1", mappedUnits ) ); +// } +// else { +// initFileString.append( getCtxCleanupRoutine( ctxName, mappedUnits ) ); +// } +// break; +// case CPMEC.DoubleDmaMEC: +// int suffix = 0; +// for( String s: tmlcplib.getMappedUnits() ) { //there are two DMA_controllers +// if( s.contains( CPMEC.dmaController ) ) { +// transferType = tmlcplib.getTransferTypes().get(suffix); +// //String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// //dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// if( transferType == CPMEC.IP2IP ) { +// initFileString.append( getCtxCleanupRoutine( ctxName + "_" + String.valueOf(suffix) + "_0", mappedUnits ) ); +// initFileString.append( getCtxCleanupRoutine( ctxName + "_" + String.valueOf(suffix) + "_1", mappedUnits ) ); +// //initFileString.append( TAB + dmaArchMEC.getCtxCleanupCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + "_0);" + CR ); +// //initFileString.append( TAB + dmaArchMEC.getCtxCleanupCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + "_1);" + CR ); +// } +// else { +// initFileString.append( getCtxCleanupRoutine( ctxName + "_" + String.valueOf(suffix), mappedUnits ) ); +// //initFileString.append( TAB + dmaArchMEC.getCtxCleanupCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + ");" + CR ); +// } +// suffix++; +// } +// } +// break; +// } //end of switch +// } +// initFileString.append( "}" + CR ); +// } +// +// private void generateInitRoutinesForCPs() { +// +// //ArchUnitMEC dmaArchMEC = new CpuMEC(); +// ArrayList<ArchUnitMEC> dmaArchMECList = new ArrayList<ArchUnitMEC>(); +// int transferType, cpMECType; +// Vector<String> mappedUnits = new Vector<String>(); +// +// for( DataTransfer dt: dataTransfersList ) { +// TMLCPLib tmlcplib = dt.getTMLCPLib(); +// cpMECType = tmlcplib.getCPMECType(); +// mappedUnits = tmlcplib.getMappedUnits(); +// String ctxName = dt.getContextName(); +// String name = tmlcplib.getName().split("::")[0]; +// switch( cpMECType ) { +// case CPMEC.CpuMemoryCopyMEC: +// initFileString.append( "void init_" + name + "()\t{" + CR ); +// initFileString.append( getCtxInitRoutine( ctxName, mappedUnits ) ); //get the ctx_init routine, according to destination_storage in SD +// break; +// case CPMEC.SingleDmaMEC: +// transferType = tmlcplib.getTransferTypes().get(0); +// for( String s: tmlcplib.getMappedUnits() ) { +// if( s.contains( CPMEC.dmaController ) ) { +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// //dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// break; +// } +// } +// initFileString.append( "void init_" + name + "()\t{" + CR ); +// if( transferType == CPMEC.IP2IP ) { +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + "_0, (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR ); +// initFileString.append( getCtxInitRoutine( ctxName + "_0", mappedUnits ) ); +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + "_1, (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR + "}" + CR2 ); +// initFileString.append( getCtxInitRoutine( ctxName + "_1", mappedUnits ) ); +// } +// else { +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + ", (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR + "}" + CR2 ); +// initFileString.append( getCtxInitRoutine( ctxName, mappedUnits ) ); +// } +// break; +// case CPMEC.DoubleDmaMEC: +// initFileString.append( "void init_" + name + "()\t{" + CR ); +// int suffix = 0; +// for( String s: tmlcplib.getMappedUnits() ) { //there are two DMA_controllers +// if( s.contains( CPMEC.dmaController ) ) { +// transferType = tmlcplib.getTransferTypes().get(suffix); +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// //dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC ; +// if( transferType == CPMEC.IP2IP ) { +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + "_0, (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR ); +// initFileString.append( getCtxInitRoutine( ctxName + "_" + String.valueOf(suffix) + "_0", mappedUnits ) ); +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + "_1, (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR ); +// initFileString.append( getCtxInitRoutine( ctxName + "_" + String.valueOf(suffix) + "_1", mappedUnits ) ); +// } +// else { +// //initFileString.append( TAB + dmaArchMEC.getCtxInitCode() + "(&" + ctxName + "_" + String.valueOf(suffix) + ", (uintptr_t) " + dmaArchMEC.getLocalMemoryPointer() + " );" + CR ); +// initFileString.append( getCtxInitRoutine( ctxName + "_" + String.valueOf(suffix), mappedUnits ) ); +// } +// suffix++; +// } +// } +// break; +// } //end of switch statement +// initFileString.append( "}" + CR2 ); +// } //end of for statement +// } +// +// private String getCtxInitRoutine( String ctxName, Vector<String> mappedUnits ) { +// +// String filteredMemoryName = ""; +// for( String s: mappedUnits ) { +// if( s.contains( "Dst_Storage_Instance" ) ) { +// filteredMemoryName = s.split(":")[1].replaceAll("\\s+",""); +// if( filteredMemoryName.contains( "MAPPER" ) || filteredMemoryName.contains( "mapper" ) ) { +// return TAB + "mapper_ctx_init(&" + ctxName + ", (uintptr_t) mapper_mss );" + CR; +// } +// if( filteredMemoryName.contains( "FEP" ) || filteredMemoryName.contains( "fep" ) ) { +// return TAB + "fep_ctx_init(&" + ctxName + ", (uintptr_t) fep_mss );" + CR; +// } +// if( filteredMemoryName.contains( "INTL" ) || filteredMemoryName.contains( "intl" ) ) { +// return TAB + "intl_ctx_init(&" + ctxName + ", (uintptr_t) intl_mss );" + CR; +// } +// if( filteredMemoryName.contains( "ADAIF" ) || filteredMemoryName.contains( "adaif" ) ) { +// return TAB + "adaif_ctx_init(&" + ctxName + ", (uintptr_t) adaif_mss );" + CR; +// } +// } +// } +// return "/* USER TODO */"; +// } +// +// private String getCtxCleanupRoutine( String ctxName, Vector<String> mappedUnits ) { +// +// String filteredMemoryName = ""; +// for( String s: mappedUnits ) { +// if( s.contains( "Dst_Storage_Instance" ) ) { +// filteredMemoryName = s.split(":")[1].replaceAll("\\s+",""); +// if( filteredMemoryName.contains( "MAPPER" ) || filteredMemoryName.contains( "mapper" ) ) { +// return TAB + "mapper_ctx_cleanup(&" + ctxName + ");" + CR; +// } +// if( filteredMemoryName.contains( "FEP" ) || filteredMemoryName.contains( "fep" ) ) { +// return TAB + "fep_ctx_cleanup(&" + ctxName + ");" + CR; +// } +// if( filteredMemoryName.contains( "INTL" ) || filteredMemoryName.contains( "intl" ) ) { +// return TAB + "intl_ctx_cleanup(&" + ctxName + ");" + CR; +// } +// if( filteredMemoryName.contains( "ADAIF" ) || filteredMemoryName.contains( "adaif" ) ) { +// return TAB + "adaif_ctx_cleanup(&" + ctxName + ");" + CR; +// } +// } +// } +// return "/* USER TODO */"; +// } +// +// private void generateCodeToInitializeBuffers() { +// +// initFileString.append( "void init_buffers()\t{" + CR ); +// +// for( Buffer buff: buffersList ) { +// initFileString.append( buff.getInitCode() + CR ); +// } +// +// initFileString.append( "}" + CR2 ); +// } +// +// private void generateCodeToInitializeSignals() { +// +// initFileString.append( "void init_signals()\t{" + CR ); +// for( Signal sig: signalsList ) { +// initFileString.append( TAB + "sig[" + sig.getName() + "].f = false;" + CR ); +// Buffer buff = getBufferFromSignal( sig ); +// if( buff != null ) { +// initFileString.append( TAB + "sig[" + sig.getName() + "].pBuff = (" + buff.getType() + "*)" + SP + "&" + buff.getName() + SC + CR2 ); +// } +// else { +// initFileString.append( TAB + "sig[" + sig.getName() + "].pBuff = /* USER TO DO */" + SC + CR2 ); +// } +// } +// initFileString.append( "}" + CR2 ); +// } +// +// private Buffer getBufferFromSignal( Signal sig ) { +// +// String sigName = sig.getName(); +// if( sigName.contains( "_CP" ) ) { //filter out trailing _CP for CP's signals +// sigName = sigName.split( "_CP" )[0]; +// } +// for( Buffer buff: buffersList ) { +// if( buff.getName().equals( "buff_" + sigName ) ) { +// return buff; +// } +// } +// return null; +// } +// +// //for code generation scheduling, transform a join channel into a set of basic channels +// public ArrayList<TMLChannel> transformIntoBasicChannels( TMLChannel originalCh ) { +// +// String chName, appName, dstPortName; +// int numSrcPorts; +// TMLChannel channel; +// ArrayList<TMLChannel> channelsList = new ArrayList<TMLChannel>(); +// +// if( originalCh.isAJoinChannel() ) { +// String[] s = originalCh.getName().split("__"); +// numSrcPorts = s.length-2; +// appName = s[0]; +// dstPortName = s[ s.length-1 ]; +// for( int i = 0; i < numSrcPorts; i++ ) { +// chName = appName + "__" + s[i+1] + "__" + appName + "__" + dstPortName; +// channel = new TMLChannel( chName, null ); +// channel.setPorts( originalCh.getOriginPorts().get(i), originalCh.getDestinationPorts().get(0) ); +// channel.setTasks( originalCh.getOriginTasks().get(i), originalCh.getDestinationTasks().get(0) ); +// channel.setType( originalCh.getType() ); +// channel.setSize( originalCh.getSize() ); +// channel.setMax( originalCh.getMax() ); +// channelsList.add( channel ); +// } +// } +// return channelsList; +// } +// +// private static String prepareString(String s) { +// return s.replaceAll("\\s", ""); +// } +// +// public static String modifyString(String s) { +// return prepareString(s); +// } +// +// public String toString() { +// return headerString.toString() + programString.toString(); +// } +// +// private ArchUnitMEC getArchMEC( TMLCPLib tmlcplib, String sdInstanceName ) { +// +// ArchUnitMEC dmaArchMEC = new CpuMEC(); +// for( String s: tmlcplib.getMappedUnits() ) { +// if( s.contains( sdInstanceName ) ) { +// String dmaUnit = s.split(":")[1].replaceAll("\\s+",""); +// dmaArchMEC = tmla.getHwCPUByName( dmaUnit ).MEC; +// break; +// } +// } +// return dmaArchMEC; +// } +// +// public void saveFile( String path, String filename ) throws FileException { +// +// TMLCCodeGenerationMakefile make = new TMLCCodeGenerationMakefile( applicationName ); +// path = path.substring( 0, path.length()-1 ); +// +// TraceManager.addUser( "Saving C files in " + path ); +// FileUtils.saveFile( path + "main.c", mainFileString.toString() ); +// FileUtils.saveFile( path + filename + ".h", headerString.toString() ); +// FileUtils.saveFile( path + filename + ".c", programString.toString() ); +// FileUtils.saveFile( path + filename + "_init.c", initFileString.toString() ); +// FileUtils.saveFile( path + "Makefile", make.getCode() ); +// } +// +// private void openDebugFile() { +// File fileObject = new File( debugFileName ); +// fileObject.delete(); +// outputStream = null; +// try { +// outputStream = new PrintWriter( new FileOutputStream( debugFileName, true ) ); +// } +// catch( FileNotFoundException e ) { +// System.out.println( "Error opening file " + debugFileName ); +// } +// } +// +// private void appendToDebugFile( String s ) { +// if( ( s != null ) && ( s.isEmpty() ) ) { +// outputStream.println( s ); +// } +// else { +// outputStream.println( CR ); +// } +// } +// +// private void closeDebugFile() { +// outputStream.close(); +// } + +} //End of class diff --git a/src/tmltranslator/ctranslator/TMLCCodeGenerationError.java b/src/tmltranslator/modelcompiler/TMLPECParserError.java similarity index 85% rename from src/tmltranslator/ctranslator/TMLCCodeGenerationError.java rename to src/tmltranslator/modelcompiler/TMLPECParserError.java index dd86532df93fbeb399429b98cfdc1177ac533bc1..9e4757288e41276c01df11f52a4a03a0ce6a15ed 100755 --- a/src/tmltranslator/ctranslator/TMLCCodeGenerationError.java +++ b/src/tmltranslator/modelcompiler/TMLPECParserError.java @@ -1,6 +1,7 @@ -/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille +/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea ENRICI * * ludovic.apvrille AT enst.fr + * andrea.enrici AT nokia.com * * This software is a computer program whose purpose is to allow the * edition of TURTLE analysis, design and deployment diagrams, to @@ -36,20 +37,20 @@ * knowledge of the CeCILL license and that you accept its terms. * * /** - * Class TMLCCodeGenerationError - * Used for storing a TML error generated by a TMLCP syntax checking process - * Creation: 12/09/2007 - * @version 1.0 12/09/2007 - * @author Ludovic APVRILLE + * Class TMLPECParserError + * Used for storing a TML error generated when parsing the Platform Extension Construct file(s) + * Creation: 01/09/2016 + * @version 1.0 01/09/2016 + * @author Ludovic APVRILLE, Andrea ENRICI * @see */ -package tmltranslator.ctranslator;; +package tmltranslator.modelcompiler;; import tmltranslator.*; -public class TMLCCodeGenerationError { +public class TMLPECParserError { // type public final static int ERROR_STRUCTURE = 0; @@ -62,7 +63,7 @@ public class TMLCCodeGenerationError { public TMLTask task; public TMLActivityElement element; - public TMLCCodeGenerationError( int _type ) { + public TMLPECParserError( int _type ) { type = _type; } diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java index 0296c18efddb0a95758e7cd920a8dce0ae96f7c1..25019fad5674d12cc7f5f220702dc514adfefda8 100755 --- a/src/ui/GTMLModeling.java +++ b/src/ui/GTMLModeling.java @@ -62,7 +62,7 @@ import tmltranslator.tmlcp.*; import tmltranslator.toproverif.*; import proverifspec.*; import myutil.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import avatartranslator.*; @@ -264,6 +264,10 @@ public class GTMLModeling { return tmlm; } + public TMLDesignPanel getTMLDesignPanel() { + return tmldp; + } + public CorrespondanceTGElement getCorrespondanceTable() { return listE; } diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java index c05dc2b44791ef514d6d1e4ccf613a27aa782f72..8287f73cd97fc2cbaaeee21c7258dd63612b5f96 100755 --- a/src/ui/GTURTLEModeling.java +++ b/src/ui/GTURTLEModeling.java @@ -133,7 +133,7 @@ import proverifspec.*; import req.ebrdd.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import tmltranslator.toavatar.*; //Communication Pattern javaCC parser @@ -424,18 +424,18 @@ public class GTURTLEModeling { int type; TGComponent tgc; String applicationName; - TMLCCodeGeneration Ccode; + TMLModelCompiler Ccode; if( tmap == null ) { JOptionPane.showMessageDialog(mgui.frame, "C code is only generated from an architecture diagram with mapping information", "Code generation failed", JOptionPane.INFORMATION_MESSAGE); return true; } - TMLCCodeGenerationSyntaxCheck syntax = new TMLCCodeGenerationSyntaxCheck( tmap, tmap.getTMLModeling(), tmap.getTMLArchitecture() ); + TMLModelCompilerParser syntax = new TMLModelCompilerParser( tmap, tmap.getTMLModeling(), tmap.getTMLArchitecture() ); syntax.check(); if( syntax.hasErrors() ) { - for( TMLCCodeGenerationError error: syntax.getErrors() ) { + for( TMLModelCompilerError error: syntax.getErrors() ) { TraceManager.addDev( "ERROR: " + error.toString() ); - if( error.type == TMLCCodeGenerationError.ERROR_STRUCTURE ) { + if( error.type == TMLModelCompilerError.ERROR_STRUCTURE ) { type = CheckingError.STRUCTURE_ERROR; } else { @@ -456,7 +456,7 @@ public class GTURTLEModeling { return true; } applicationName = tmap.getMappedTasks().get(0).getName().split("__")[0]; - Ccode = new TMLCCodeGeneration( _title, applicationName, mgui.frame, mgui.getAllTMLCP(), tmap ); + Ccode = new TMLModelCompiler( _title, applicationName, mgui.frame, mgui.getAllTMLCP(), tmap ); Ccode.toTextFormat(); try { if( ConfigurationTTool.CcodeDirectory.equals("") ) { diff --git a/src/ui/MainGUI.java b/src/ui/MainGUI.java index f59fd3f191890ade2ff95a4a6c5cefd2c2f34e59..b6e02188564d6120451e89cab0e82d2ccc94947d 100755 --- a/src/ui/MainGUI.java +++ b/src/ui/MainGUI.java @@ -87,6 +87,7 @@ import ui.tmlcompd.*; import ui.tmldd.*; import ui.tmlcp.*; import ui.tmlsd.*; +import tmltranslator.modelcompiler.*; import ui.procsd.*; import ui.prosmd.*; @@ -423,7 +424,6 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe jfctgraph = new JFileChooser(); } - TFileFilter filter = new TFileFilter(); jfc.setFileFilter(filter); diff --git a/src/ui/TGComponent.java b/src/ui/TGComponent.java index 4d6fa550d8d74a0e0295ceefd25141600c227d29..9f2715a9058103feaf69333ac53398e82b62042f 100755 --- a/src/ui/TGComponent.java +++ b/src/ui/TGComponent.java @@ -1132,6 +1132,8 @@ public abstract class TGComponent implements CDElement, GenericTree { public void drawWithAttributes(Graphics g) { if (this instanceof WithAttributes) { + /*TraceManager.addDev( "tdp is of " + tdp.getClass() ); + TraceManager.addDev( "this is of " + this.getClass() );*/ if (tdp.getAttributeState() == 2) { drawAttributes(g, ((WithAttributes)this).getAttributes()); } else { diff --git a/src/ui/tmldd/TMLArchiArtifact.java b/src/ui/tmldd/TMLArchiArtifact.java index e3f5da973008fb1d2a8e6e616443e95c3c72b1f7..7c9ab883a9072b439efa6aed775a2619104c2eab 100755 --- a/src/ui/tmldd/TMLArchiArtifact.java +++ b/src/ui/tmldd/TMLArchiArtifact.java @@ -55,7 +55,7 @@ import org.w3c.dom.*; import myutil.*; import ui.*; import ui.window.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class TMLArchiArtifact extends TGCWithoutInternalComponent implements SwallowedTGComponent, WithAttributes { protected int lineLength = 5; diff --git a/src/ui/tmldd/TMLArchiCPNode.java b/src/ui/tmldd/TMLArchiCPNode.java index 69be927d678cbe9016fbfbd0e61cedd6373f5471..651db4c14b8860a395f3d1b397c75b220fa80180 100755 --- a/src/ui/tmldd/TMLArchiCPNode.java +++ b/src/ui/tmldd/TMLArchiCPNode.java @@ -57,9 +57,9 @@ import ui.*; import ui.window.*; import tmltranslator.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; -public class TMLArchiCPNode extends TMLArchiCommunicationNode implements SwallowTGComponent { +public class TMLArchiCPNode extends TMLArchiCommunicationNode implements SwallowTGComponent, WithAttributes { private int textY1 = 15; private int textY2 = 30; private int derivationx = 2; @@ -211,7 +211,12 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow transferType1 = dialog.getTransferTypes().get(0); transferType2 = dialog.getTransferTypes().get(1); assignedAttributes = dialog.getAssignedAttributes(); - TraceManager.addDev( "RETRIEVING ASSIGNED ATTRIBUTES: " + assignedAttributes.toString() ); + TraceManager.addDev( "name " + name ); + TraceManager.addDev( "mappedUnits " + mappedUnits ); + TraceManager.addDev( "cpMEC " + cpMEC ); + TraceManager.addDev( "transferType1 " + transferType1 ); + TraceManager.addDev( "transferType2 " + transferType2 ); + TraceManager.addDev( "assignedAttributes " + assignedAttributes.toString() ); if( !dialog.isRegularClose() ) { return false; @@ -438,4 +443,17 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow transferTypes.add( transferType2 ); return transferTypes; } + + public String getAttributes() { + String attr = ""; + attr += assignedAttributes.toString(); // only the message attributes of the mapped CP are retrieved! + return attr; + } + + public String getCodeGenerationAttributes() { + String attr = ""; + attr += cpMEC; + return attr; + } + } diff --git a/src/ui/tmldd/TMLArchiCPUNode.java b/src/ui/tmldd/TMLArchiCPUNode.java index 3ce37425f986c21845a675d128d9e78be1ec218c..38e0a703168c84a8cad116a3aa2ab8f070fc9bc7 100755 --- a/src/ui/tmldd/TMLArchiCPUNode.java +++ b/src/ui/tmldd/TMLArchiCPUNode.java @@ -58,7 +58,7 @@ import ui.window.*; import ui.interactivesimulation.*; import tmltranslator.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class TMLArchiCPUNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes { private int textY1 = 15; diff --git a/src/ui/tmldd/TMLArchiDiagramToolBar.java b/src/ui/tmldd/TMLArchiDiagramToolBar.java index a17bbc461a49bd23a068942816e38aa5dc6fd5e5..f98507647cfd3b8640ce11f6eb14aee1ba98436b 100755 --- a/src/ui/tmldd/TMLArchiDiagramToolBar.java +++ b/src/ui/tmldd/TMLArchiDiagramToolBar.java @@ -48,8 +48,8 @@ knowledge of the CeCILL license and that you accept its terms. package ui.tmldd; import javax.swing.*; -//import java.awt.*; -//import java.awt.event.*; +import java.awt.*; +import java.awt.event.*; import ui.*; @@ -57,7 +57,6 @@ public class TMLArchiDiagramToolBar extends TToolBar { public TMLArchiDiagramToolBar(MainGUI _mgui) { super(_mgui); - } protected void setActive(boolean b) { @@ -138,11 +137,11 @@ public class TMLArchiDiagramToolBar extends TToolBar { button.addMouseListener(mgui.mouseHandler); } button = this.add(mgui.actions[TGUIAction.TMLARCHI_COMMUNICATION_ARTIFACT]); - button.addMouseListener(mgui.mouseHandler); + button.addMouseListener(mgui.mouseHandler); button = this.add(mgui.actions[TGUIAction.TMLARCHI_PORT_ARTIFACT]); - button.addMouseListener(mgui.mouseHandler); + button.addMouseListener(mgui.mouseHandler); button = this.add(mgui.actions[TGUIAction.TMLARCHI_KEY]); - button.addMouseListener(mgui.mouseHandler); + button.addMouseListener(mgui.mouseHandler); this.addSeparator(); button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_ATTR]); diff --git a/src/ui/tmldd/TMLArchiNode.java b/src/ui/tmldd/TMLArchiNode.java index f88e2a32d2522a4f8d3cbf538818397c76bba207..dab84991a282bd43cb14732cacaeb5b1f153a5fc 100755 --- a/src/ui/tmldd/TMLArchiNode.java +++ b/src/ui/tmldd/TMLArchiNode.java @@ -57,7 +57,7 @@ import ui.*; import ui.window.*; import tmltranslator.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public abstract class TMLArchiNode extends TGCWithInternalComponent implements SwallowTGComponent { protected int clockRatio = HwNode.DEFAULT_CLOCK_RATIO; diff --git a/src/ui/tmldd/TMLArchiPortArtifact.java b/src/ui/tmldd/TMLArchiPortArtifact.java index 799596b8ccd14735bf1b35cdad98d2d13984ccfd..3853ba6788ecf33daf0fe9853faf65bcc0f70c13 100644 --- a/src/ui/tmldd/TMLArchiPortArtifact.java +++ b/src/ui/tmldd/TMLArchiPortArtifact.java @@ -55,7 +55,7 @@ import org.w3c.dom.*; import myutil.*; import ui.*; import ui.window.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements SwallowedTGComponent, WithAttributes { protected int lineLength = 5; diff --git a/src/ui/window/JDialogCPUNode.java b/src/ui/window/JDialogCPUNode.java index eb15310c66154c22258890e8571521547046b93e..2e5f17a53ee4340d2617751af7e4704a1ab3eb7b 100755 --- a/src/ui/window/JDialogCPUNode.java +++ b/src/ui/window/JDialogCPUNode.java @@ -53,7 +53,7 @@ import javax.swing.*; import ui.*; import ui.tmlcd.*; import java.util.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import ui.*; import ui.tmldd.*; import ui.interactivesimulation.*; diff --git a/src/ui/window/JDialogMemoryNode.java b/src/ui/window/JDialogMemoryNode.java index 4e0b783f48e3b8fa490cfea8a2323f0007cbb0c0..0331e152f04799fd061b4b60c22c9a85710d61e8 100755 --- a/src/ui/window/JDialogMemoryNode.java +++ b/src/ui/window/JDialogMemoryNode.java @@ -54,7 +54,7 @@ import java.util.*; import ui.*; import ui.tmldd.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; public class JDialogMemoryNode extends javax.swing.JDialog implements ActionListener { diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java index 9d517c5f8f008985b0feacf5885a9145c71b6ed0..f603ef1942633ba82e153febfb8ba3f4ab0d1229 100755 --- a/src/ui/window/JDialogPortArtifact.java +++ b/src/ui/window/JDialogPortArtifact.java @@ -53,7 +53,7 @@ import java.util.*; import ui.*; import ui.tmldd.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import myutil.*; diff --git a/src/ui/window/JDialogReferenceCP.java b/src/ui/window/JDialogReferenceCP.java index bb564f2776320bb8fb9aea8912a254883e6a4f6a..55355866fce6500c3ffcf35356cdc5577c28bc37 100644 --- a/src/ui/window/JDialogReferenceCP.java +++ b/src/ui/window/JDialogReferenceCP.java @@ -60,7 +60,7 @@ import ui.tmlsd.*; import ui.tmlcp.*; import ui.tmlcd.*; import ui.avatarbd.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import tmltranslator.tmlcp.*; import tmltranslator.*; import myutil.*; diff --git a/src/ui/window/JDialogTMLTaskArtifact.java b/src/ui/window/JDialogTMLTaskArtifact.java index 5b45813940ebd9c63f7a47d40d536f180b821364..0c496f29dc42eac96bf96b21554ff85592ab5605 100755 --- a/src/ui/window/JDialogTMLTaskArtifact.java +++ b/src/ui/window/JDialogTMLTaskArtifact.java @@ -54,7 +54,7 @@ import java.util.*; import ui.*; import ui.tmldd.*; -import tmltranslator.ctranslator.*; +import tmltranslator.modelcompiler.*; import myutil.*; diff --git a/tmlcode/README.txt b/tmlcode/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..71f85a927ac9cae37b31b2e37ea4c101f1fd34a1 --- /dev/null +++ b/tmlcode/README.txt @@ -0,0 +1 @@ +This folder is used to store the TML code that is automatically generated from UML/SysMl models in TTool. diff --git a/tmlcode/README_tml b/tmlcode/README_tml deleted file mode 100644 index 5ca05cf572b858aa03ed7bea4acf2256c236933a..0000000000000000000000000000000000000000 --- a/tmlcode/README_tml +++ /dev/null @@ -1,5 +0,0 @@ -TTool, an open-source UML toolkit for modeling embedded systems and procotols. -TTool is developed at ENST, http://labsoc.comelec.enst.fr/turtle/ -------------------------------------------------------------------------------- - -The tmlcode directory is intended to store the TML / TMAP files generated from TTool. To generate these files, please refer to http://labsoc.comelec.enst.fr/turtle/HELP \ No newline at end of file