]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMUSimulator/src/fmi_util.c
Switch to full JavaSE-11+ compatibility
[simantics/fmil.git] / org.simantics.fmil.core / native / FMUSimulator / src / fmi_util.c
index 5341d952018f8a3583d75c44b8bde706f2560b99..4aed1e15a9ea68c6059f2b7a49ee2d703990b798 100644 (file)
@@ -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;
 }