X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.fmil.core%2Fnative%2FFMUSimulator%2Fsrc%2Ffmu_control.cpp;fp=org.simantics.fmil.core%2Fnative%2FFMUSimulator%2Fsrc%2Ffmu_control.cpp;h=bb8e0762d041dee5d821784ab570b246a716b5d6;hb=d6e8999a4b5c9e57d7b22b2f7a703c2d3549eb8c;hp=285be84e42627582224722227a789c39fd9436a5;hpb=737cb2e898e6889d5bac9f8e0451232cbf0f19db;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..bb8e076 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, &error); } else if (fmi.version == 2) { - returnValue = FMI2_CS_INSTANTIATE(fmi.fmu, "", &error); + returnValue = FMI2_CS_INSTANTIATE(fmi.fmu, instanceName, &error); } if(returnValue != 0) { string message = "No FMU loaded: ";