diff --git a/modeling/DIPLODOCUS/SmartCardProtocol.xml b/modeling/DIPLODOCUS/SmartCardProtocol.xml index bb9d530f194e46d8fc7430278bd7af096f310aea..9ac4be0480c0cc141a448d1c0a5c3eeb98f45fb3 100755 --- a/modeling/DIPLODOCUS/SmartCardProtocol.xml +++ b/modeling/DIPLODOCUS/SmartCardProtocol.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="true" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="false" ANIMATE_WITH_INFO_DIPLO_SIM="true" OPEN_DIAG_DIPLO_SIM="false"> +<TURTLEGMODELING version="1.0beta" ANIMATE_INTERACTIVE_SIMULATION="false" ACTIVATE_PENALTIES="false" UPDATE_INFORMATION_DIPLO_SIM="false" ANIMATE_WITH_INFO_DIPLO_SIM="true" OPEN_DIAG_DIPLO_SIM="false"> <Modeling type="TML Component Design" nameTab="AppC" tabs="TML Component Task Diagram$Application$TCPIP$Timer$InterfaceDevice$SmartCard" > <TMLComponentTaskDiagramPanel name="TML Component Task Diagram" minX="0" maxX="2724" minY="0" maxY="916" channels="true" events="true" requests="true" zoom="1.0000000000000018" > diff --git a/simulators/c++2/src_simulator/TMLTransaction.cpp b/simulators/c++2/src_simulator/TMLTransaction.cpp index c78a08f79fe10344eadccf81855376e412de3974..66f2d39c8a408ad82ef9cac1d420691acced1296 100755 --- a/simulators/c++2/src_simulator/TMLTransaction.cpp +++ b/simulators/c++2/src_simulator/TMLTransaction.cpp @@ -74,7 +74,7 @@ std::string TMLTransaction::toString() const{ std::ostringstream outp; //std::cout << "kernel:transaction: toString" << std::endl; //std::cout << "kernel:transaction: toString" << _command->toString() << std::endl; - outp << _command->toString() << std::endl << "Transaction runnable:" << _runnableTime << " len:" << _length << " start:" << _startTime << " vLength:" << _virtualLength; + outp << _command->toString() << std::endl << "Transaction runnable:" << _runnableTime << " len:" << _length << " start:" << _startTime << " vLength:" << _virtualLength << " params:" << lastParams ; if (_channel!=0) outp << " Ch: " << _channel->toShortString(); return outp.str(); } @@ -84,7 +84,7 @@ std::string TMLTransaction::toShortString() const{ if (_command==0) outp << "System State ID: " << _virtualLength; else{ - outp << _command->toShortString() << " t:" << _startTime << " l:" << _length << " (vl:"<< _virtualLength << ")"; + outp << _command->toShortString() << " t:" << _startTime << " l:" << _length << " (vl:"<< _virtualLength << ")" << " params:" << lastParams ; if (_channel!=0) outp << " Ch: " << _channel->toShortString(); } return outp.str(); diff --git a/simulators/c++2/src_simulator/TMLTransaction.h b/simulators/c++2/src_simulator/TMLTransaction.h index a4a3df15b468b092ad6952ffaea8f8b271e4aa77..d5bcadbab9636fcb4081ec759318042d7bee66b3 100644 --- a/simulators/c++2/src_simulator/TMLTransaction.h +++ b/simulators/c++2/src_simulator/TMLTransaction.h @@ -260,6 +260,9 @@ class TMLTransaction { inline bool getEndState () {return _endState;} void toXML(std::ostringstream& glob, int deviceID, std::string deviceName, ID uniqueID) const; + // Params of the transaction + std::string lastParams; + protected: ///Time when the transaction became runnable diff --git a/simulators/c++2/src_simulator/app/TMLCommand.h b/simulators/c++2/src_simulator/app/TMLCommand.h index 7b8c83d9d32882e548b255b177fa8b2bc389fd08..ded37d2ae8f8e41a20d0326ecd9729c6802020d2 100755 --- a/simulators/c++2/src_simulator/app/TMLCommand.h +++ b/simulators/c++2/src_simulator/app/TMLCommand.h @@ -78,6 +78,8 @@ public: ///Updates the inner state of the command as well as the state of all dependent objects (channel, bus,...) virtual void execute()=0; ///Assigns a value to the pointer referencing the array of next commands + + /** \param iNextCommand Pointer to an array of pointers to the next commands */ @@ -92,6 +94,7 @@ public: \return Pointer to the current transaction */ inline TMLTransaction* getCurrTransaction() const {return _currTransaction;} + ///Returns a pointer to the task which could be unblocked by the command /** \param iIndex Index of the task diff --git a/simulators/c++2/src_simulator/app/TMLSendCommand.cpp b/simulators/c++2/src_simulator/app/TMLSendCommand.cpp index ad0cd76ce230f64b1882a96b842a3be430d997fa..e46f4271816b310227944f98230c4c3ceccfc3a4 100644 --- a/simulators/c++2/src_simulator/app/TMLSendCommand.cpp +++ b/simulators/c++2/src_simulator/app/TMLSendCommand.cpp @@ -72,14 +72,14 @@ TMLCommand* TMLSendCommand::prepareNextTransaction(){ std::string TMLSendCommand::toString() const{ std::ostringstream outp; - outp << "Send in " << TMLCommand::toString() << " " << _channel->toString() << " params=" << lastParams; + outp << "Send in " << TMLCommand::toString() << " " << _channel->toString(); return outp.str(); } std::string TMLSendCommand::toShortString() const{ // std::cout << "TMLSendCommand::short string params:" << lastParams.str() << "\n"; std::ostringstream outp; - outp << _task->toString() << ": Send " << _channel->toString() << " params:" << lastParams; + outp << _task->toString() << ": Send " << _channel->toString(); return outp.str(); } diff --git a/simulators/c++2/src_simulator/app/TMLWaitCommand.cpp b/simulators/c++2/src_simulator/app/TMLWaitCommand.cpp index eb1990c1138c976f22e551445e2f3ad8f0f572ae..f09894e557fb1bc00dadaa48c6619bf4df9342bc 100644 --- a/simulators/c++2/src_simulator/app/TMLWaitCommand.cpp +++ b/simulators/c++2/src_simulator/app/TMLWaitCommand.cpp @@ -77,6 +77,6 @@ std::string TMLWaitCommand::toString() const{ std::string TMLWaitCommand::toShortString() const{ std::ostringstream outp; - outp << _task->toString() << ": Wait " << _channel->toShortString() << " params:" << lastParams; + outp << _task->toString() << ": Wait " << _channel->toShortString(); return outp.str(); } diff --git a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java index 91c188cd345ad0ec28e76e734d62b6741cfe4696..79c27f52e2afe32ff7db3e084ce4bd425014a3e1 100644 --- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java +++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java @@ -812,8 +812,11 @@ public class MappedSystemCTask { } } functions += " << \")\"" + SCCR; - //functions += "if(" + cmdName + ".myTransaction != NULL) " + cmdName + ".myTransaction->lastParams = ss.str()" + SCCR + + //functions += "if(" + cmdName + ".myTransaction != NULL) " + cmdName + ".myTransaction->lastParams = ss.str()" + SCCR + // "\n"; + functions += "if(" + cmdName + ".getCurrTransaction() != NULL) " + cmdName + ".getCurrTransaction()->lastParams = ss.str" + + "()" + + SCCR + "\n"; functions += "return 0" + SCCR + "\n\n}"; } nextCommand += ",(TMLCommand*)" + makeCommands(currElem.getNextElement(i), true, retElement, null); @@ -944,7 +947,8 @@ public class MappedSystemCTask { } } functions += " << \")\"" + SCCR; - //functions += "if(" + cmdName + ".myTransaction != NULL) " + cmdName + ".myTransaction->lastParams = ss.str()" + SCCR + "\n"; + functions += "if(" + cmdName + ".getCurrTransaction() != NULL) " + cmdName + ".getCurrTransaction()->lastParams = ss.str()" + + SCCR + "\n"; functions += "return 0" + SCCR; } else { @@ -964,6 +968,8 @@ public class MappedSystemCTask { } functions += " << \")\"" + SCCR; //functions += "if(" + cmdName + ".myTransaction != NULL) " + cmdName + ".myTransaction->lastParams = ss.str()" + SCCR + "\n"; + functions += "if(" + cmdName + ".getCurrTransaction() != NULL) " + cmdName + ".getCurrTransaction()->lastParams = ss.str()" + + SCCR + "\n"; functions += "return new SizedParameter<ParamType," + nbOfParams + ">(" + concatParams + ")" + SCCR; } functions += "}\n\n";