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 1a5b9435d1fc99ac2bb0c25e03b88541bb41314c..a70db8932aa4d123fec7368ac5dfd457b24827d2 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 3633305b044460955bebfc9be668b3122832bcae..18e40fb318780b089a113a525613c413dfcc325a 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";