X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.fmil.core%2Fnative%2FFMUSimulator%2Fsrc%2Ffmi_util.c;h=4aed1e15a9ea68c6059f2b7a49ee2d703990b798;hb=HEAD;hp=5341d952018f8a3583d75c44b8bde706f2560b99;hpb=4282c2e792b39be912e3db8226c342867c2dc065;p=simantics%2Ffmil.git diff --git a/org.simantics.fmil.core/native/FMUSimulator/src/fmi_util.c b/org.simantics.fmil.core/native/FMUSimulator/src/fmi_util.c index 5341d95..4aed1e1 100644 --- a/org.simantics.fmil.core/native/FMUSimulator/src/fmi_util.c +++ b/org.simantics.fmil.core/native/FMUSimulator/src/fmi_util.c @@ -112,6 +112,7 @@ int FMI_CS_LOAD(const char *zipFilePath, const char *unzipFolder, void **fmuPoin int FMI1_CS_UNLOAD(void *fmu_, const char **error) { fmi1_import_t *fmu = (fmi1_import_t *)fmu_; + fmi1_import_terminate(fmu); fmi1_import_destroy_dllfmu(fmu); fmi1_import_free(fmu); return 0; @@ -119,6 +120,7 @@ int FMI1_CS_UNLOAD(void *fmu_, const char **error) { int FMI2_CS_UNLOAD(void *fmu_, const char **error) { fmi2_import_t *fmu = (fmi2_import_t *)fmu_; + fmi2_import_terminate(fmu); fmi2_import_destroy_dllfmu(fmu); fmi2_import_free(fmu); return 0; @@ -571,6 +573,8 @@ int FMI1_CS_STEP(void *fmu, double masterTime, double stepSize, const char **err if (status == fmi1_status_error || status == fmi1_status_fatal) { *error = "Error happened during stepping!"; return 1; + } else if (status == fmi1_status_pending) { + return 2; } return 0; } @@ -583,6 +587,8 @@ int FMI2_CS_STEP(void *fmu, double masterTime, double stepSize, const char **err if (status == fmi2_status_error || status == fmi2_status_fatal) { *error = "Error happened during stepping!"; return 1; + } else if (status == fmi2_status_pending) { + return 2; } return 0; }