diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp index 58880e49ca2125d006e03cdbf299f66a1ac4a9cb..3ebf2f69e148052cc9ffb96b75dce3929ec2b209 100644 --- a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp +++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp @@ -43,7 +43,7 @@ Ludovic Apvrille, Renaud Pacalet #include <TMLTransaction.h> #include <SimComponents.h> //#include <CommandListener.h> -TMLDelayCommand::TMLDelayCommand(ID iID, TMLTask* iTask,TMLLength iStatLength, ActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay):TMLCommand(iID, iTask, 1, 1, iLiveVarList, iCheckpoint),_actionFunc(iActionFunc){ +TMLDelayCommand::TMLDelayCommand(ID iID, TMLTask* iTask,TMLLength iStatLength, DelayActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay):TMLCommand(iID, iTask, 1, 1, iLiveVarList, iCheckpoint),_actionFunc(iActionFunc){ if (!isActiveDelay){ _isActiveDelay = false; }else { diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.h b/simulators/c++2/src_simulator/app/TMLDelayCommand.h index 7e1d4b838df1c9063eddd04005e3c676d67dd331..a564fec926a428f1966fc3ea7a8cbb925bf70680 100644 --- a/simulators/c++2/src_simulator/app/TMLDelayCommand.h +++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.h @@ -59,7 +59,7 @@ public: bool _isActiveDelay; virtual bool getActiveDelay() {return _isActiveDelay;} virtual bool isDelayTransaction(){return true;} - TMLDelayCommand(ID iID, TMLTask* iTask, TMLLength iStatLength, ActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay); + TMLDelayCommand(ID iID, TMLTask* iTask, TMLLength iStatLength, DelayActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay); ///TMLDelayCommand virtual ~TMLDelayCommand(){} void execute(); @@ -71,7 +71,7 @@ public: inline std::string getCommandStr() const {return "DL";} protected: ///Member function pointer to the action function - ActionFuncPointer _actionFunc; + DelayActionFuncPointer _actionFunc; TMLCommand* prepareNextTransaction(); }; diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h index aa04d2bfcae745c133adba5a9330a8760c251fc2..2cf89988ce176ca67ec4a4841ac8e1e8e46c2c61 100644 --- a/simulators/c++2/src_simulator/definitions.h +++ b/simulators/c++2/src_simulator/definitions.h @@ -685,7 +685,9 @@ 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 int (TMLTask::*ActionFuncPointer) (); +typedef void (TMLTask::*ActionFuncPointer) (); +///Type of member function pointer used to indicate a function encapsulating a delay action (for TMLDelayCommand) +typedef TMLTime (TMLTask::*DelayActionFuncPointer) (); ///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 acf5412227d925ee48210e1543bef63c5811a358..1069857f6a7ae791f7be1131314336351d045ed2 100644 --- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java +++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java @@ -587,10 +587,10 @@ public class MappedSystemCTask { idString = String.valueOf(currElem.getID()); } hcode += "TMLDelayCommand " + cmdName + SCCR; - initCommand += "," + cmdName + "(" + idString + ",this,1,(ActionFuncPointer)&" + reference + "::" + cmdName + + initCommand += "," + cmdName + "(" + idString + ",this,1,(DelayActionFuncPointer)&" + reference + "::" + cmdName + "_func," + " " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR; - //initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(ActionFuncPointer)&" + reference + "::" + cmdName + + //initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(DelayActionFuncPointer)&" + reference + "::" + cmdName + // "_func," + // " " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR; nextCommand = cmdName + ".setNextCommand(array(1,(TMLCommand*)" + makeCommands(currElem.getNextElement(0), false, retElement, null) + "));\n";