From 3938c0f0a3641cbdc82b4127d2e14e690823eb04 Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Wed, 3 Jul 2019 16:43:33 +0200 Subject: [PATCH] Adding support for params in diplo simulation --- modeling/DIPLODOCUS/SmartCardProtocol.xml | 2 +- simulators/c++2/src_simulator/TMLTransaction.cpp | 4 ++-- simulators/c++2/src_simulator/TMLTransaction.h | 3 +++ simulators/c++2/src_simulator/app/TMLCommand.h | 3 +++ simulators/c++2/src_simulator/app/TMLSendCommand.cpp | 4 ++-- simulators/c++2/src_simulator/app/TMLWaitCommand.cpp | 2 +- .../tomappingsystemc2/MappedSystemCTask.java | 10 ++++++++-- 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/modeling/DIPLODOCUS/SmartCardProtocol.xml b/modeling/DIPLODOCUS/SmartCardProtocol.xml index bb9d530f19..9ac4be0480 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 c78a08f79f..66f2d39c8a 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 a4a3df15b4..d5bcadbab9 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 7b8c83d9d3..ded37d2ae8 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 ad0cd76ce2..e46f427181 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 eb1990c113..f09894e557 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 91c188cd34..79c27f52e2 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"; -- GitLab