X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.fmil.core%2Fnative%2FFMUSimulator%2Fsrc%2Ffmu_control.cpp;h=13272f1ac3657965abde7a1cb7c3d58e4c2eb433;hb=64c67827aafeb7a93e1ec1649393fa2c991b181f;hp=285be84e42627582224722227a789c39fd9436a5;hpb=a19f5279b32973dfc28ae084a8b7d20ae6aaac97;p=simantics%2Ffmil.git diff --git a/org.simantics.fmil.core/native/FMUSimulator/src/fmu_control.cpp b/org.simantics.fmil.core/native/FMUSimulator/src/fmu_control.cpp index 285be84..13272f1 100644 --- a/org.simantics.fmil.core/native/FMUSimulator/src/fmu_control.cpp +++ b/org.simantics.fmil.core/native/FMUSimulator/src/fmu_control.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -33,6 +34,12 @@ extern "C" { using namespace std; +static std::atomic instanceNameID; + +int create_id() { + return instanceNameID++; +} + struct FMI1 { void *fmu; @@ -472,14 +479,16 @@ JNIEXPORT jdoubleArray JNICALL Java_org_simantics_fmil_core_FMIL_getSubscribedRe JNIEXPORT jint JNICALL Java_org_simantics_fmil_core_FMIL_instantiateSimulation_1 (JNIEnv *env, jobject obj, jint id) { + int uniqueId = create_id(); + std::string instanceName = std::to_string(uniqueId); int returnValue; const char *error = ""; FMI1 &fmi = fmus[id]; if (fmi.version == 1) { - returnValue = FMI1_CS_INSTANTIATE(fmi.fmu, "", &error); + returnValue = FMI1_CS_INSTANTIATE(fmi.fmu, instanceName.c_str(), &error); } else if (fmi.version == 2) { - returnValue = FMI2_CS_INSTANTIATE(fmi.fmu, "", &error); + returnValue = FMI2_CS_INSTANTIATE(fmi.fmu, instanceName.c_str(), &error); } if(returnValue != 0) { string message = "No FMU loaded: ";