diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp index f7369c8c41a629b8807ed87334a9396005db5fe2..ce22bd8feabc21b108d19fb7e0df65afaad44a78 100644 --- a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp +++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp @@ -68,7 +68,7 @@ TMLCommand* TMLDelayCommand::prepareNextTransaction(){ } if (_progress==0){ - (_task->*_actionFunc)(); + _length = (_task->*_actionFunc)(); // _execTimes++; this will recognize delay transaction one more time so remove it if (_length==0){ //std::cout << "ExeciCommand len==0 " << std::endl; @@ -98,6 +98,7 @@ std::string TMLDelayCommand::toString() const{ outp << ": IdleDL in " << TMLCommand::toString(); return outp.str(); } + std::string TMLDelayCommand::toShortString() const{ std::ostringstream outp; if(_isActiveDelay) diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h index d0337f64a1da896b0c9075ddaa54a673db66d94b..9492ae163babeef805fd18b95961fa1b466ef253 100644 --- a/simulators/c++2/src_simulator/definitions.h +++ b/simulators/c++2/src_simulator/definitions.h @@ -684,7 +684,7 @@ typedef std::deque<Parameter* > ParamQueue; ///Type of member function pointer used to indicate a function encapsulating a condition (for TMLChoiceCommand) typedef unsigned int (TMLTask::*CondFuncPointer) (); ///Type of member function pointer used to indicate a function encapsulating an action (for TMLActionCommand) -typedef void (TMLTask::*ActionFuncPointer) (); +typedef int (TMLTask::*ActionFuncPointer) (); ///Type of member function pointer used to indicate a function encapsulating a condition (for TMLChoiceCommand) typedef TMLTime (TMLTask::*LengthFuncPointer) (); ///Type of pointer to indicate a function encapsulating a TEPE condition diff --git a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java index 83f12fd03d0af317f8402b9d7f60adf0e0520ae3..fdd982c60d9d928d02a3fc1230398154aa3919ff 100644 --- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java +++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java @@ -557,19 +557,21 @@ public class MappedSystemCTask { comment = action; action += "\nif (tmpDelayxy==0) tmpDelayxy=1;\n"; if (delay.getMinDelay().equals(delay.getMaxDelay())) { - if (!delay.getActiveDelay()){ - action += "_endLastTransaction+=tmpDelayxy"; // Take all delay totally idle for x units of time + if (delay.getActiveDelay()){ + //action += "_endLastTransaction+=tmpDelayxy;"; // Take all delay totally idle for x units of time + action += "return tmpDelayxy;"; } else { - action += "_endLastTransaction+=0"; //consumes cycles + action += "_endLastTransaction+=0;\nreturn 1;"; //consumes cycles } delayLen = delay.getMaxDelay() + "*" + masterClockFreq + delay.getMasterClockFactor(); } else { action += "TMLTime tmpDelayxx = " + delay.getMinDelay() + "*" + masterClockFreq + delay.getMasterClockFactor() + ";\nif (tmpDelayxx==0) tmpDelayxx=1;\n"; - if (!delay.getActiveDelay()){ - action += "_endLastTransaction+= myrand(tmpDelayxx,tmpDelayxy)"; // Take all delay totally idle for x units of time + if (delay.getActiveDelay()){ + //action += "_endLastTransaction+= myrand(tmpDelayxx,tmpDelayxy)"; // Take all delay totally idle for x units of time + action += "return myrand(tmpDelayxx,tmpDelayxy)"; } else { - action += "_endLastTransaction+=0"; //consumes cycles + action += "_endLastTransaction+=0;\nreturn 1;"; //consumes cycles } java.util.Random r = new java.util.Random(); delayLen = String.valueOf(r.nextInt(Integer.valueOf(delay.getMaxDelay())-Integer.valueOf(delay.getMinDelay())) + Integer.valueOf(delay.getMinDelay())) + "*" + masterClockFreq + delay.getMasterClockFactor(); @@ -587,7 +589,8 @@ public class MappedSystemCTask { hcode += "TMLDelayCommand " + cmdName + SCCR; initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(ActionFuncPointer)&" + reference + "::" + cmdName + "_func, " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR; nextCommand = cmdName + ".setNextCommand(array(1,(TMLCommand*)" + makeCommands(currElem.getNextElement(0), false, retElement, null) + "));\n"; - functions += "void " + reference + "::" + cmdName + "_func(){\n#ifdef ADD_COMMENTS\naddComment(new Comment(_endLastTransaction,0," + commentNum + "));\n#endif\n" + modifyString(addSemicolonIfNecessary(action)) + CR; + functions += "TMLTime " + reference + "::" + cmdName + "_func(){\n#ifdef ADD_COMMENTS\naddComment(new Comment" + + "(_endLastTransaction,0," + commentNum + "));\n#endif\n" + modifyString(addSemicolonIfNecessary(action)) + CR; //functions+="return 0"+ SCCR; // functions += "std::ostringstream ss" + SCCR + "\n"; // functions += "if(" + cmdName + ".getCurrTransaction() != NULL) " + cmdName + ".getCurrTransaction()->lastParams = ss.str()" + @@ -595,7 +598,7 @@ public class MappedSystemCTask { functions += "}" + CR2; commentText += "_comment[" + commentNum + "]=std::string(\"Delay " + comment + "\");\n"; commentNum++; - functionSig += "void " + cmdName + "_func()" + SCCR; + functionSig += "TMLTime " + cmdName + "_func()" + SCCR; } } else if (currElem instanceof TMLExecI) { diff --git a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java index 5d4d11d8de0a93c65b51686f20275f82c4a9c77a..89957ff7a06a48f784ffc1a80bdb291b3cffb0e6 100644 --- a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java +++ b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java @@ -74,10 +74,10 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicCanBeDisabledComponent /* private ConcurrentHashMap<String, String> latencyVals; - protected int latencyX=30; - protected int latencyY=25; - protected int textWidth=10; - protected int textHeight=20; + protected int latencyX = 30; + protected int latencyY = 25; + protected int textWidth = 10; + protected int textHeight = 20; protected int stateOfError = 0; // Not yet checked