]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil/native/FMUSimulator/fmi_util.c.txt
(refs #6290) Import initial FMI Studio codebase
[simantics/fmil.git] / org.simantics.fmil / native / FMUSimulator / fmi_util.c.txt
index 54b7a4830ed6951702977f68152e7697c5f5911a..caab8ac39cbbc0198635b5277829932406e362ed 100644 (file)
@@ -76,7 +76,26 @@ extern "C" {
 \r
 typedef struct {\r
        char *name;\r
+       char *description;\r
        long vr;\r
+       // 0 = real\r
+       // 1 = integer\r
+       // 2 = boolean\r
+       // 3 = string\r
+       // 4 = enumeration\r
+       int type;\r
+       // 0 = constant\r
+       // 1 = parameter\r
+       // 2 = discrete\r
+       // 3 = continuous\r
+       // 4 = unknown\r
+       int variability;\r
+       // 0 = input\r
+       // 1 = output\r
+       // 2 = internal\r
+       // 3 = none\r
+       // 4 = unknown\r
+       int causality;\r
 } FMIL_Variable;\r
 \r
 __declspec(dllexport) void* FMI1_CS_LOAD(const char *zipFilePath, const char *unzipFolder);\r
@@ -186,8 +205,63 @@ FMIL_Variable *FMI1_CS_GET_VARIABLES(void *fmu, int *count) {
 \r
                } else {\r
 \r
-                       fmi1_base_type_enu_t bt;\r
                        result[i].name = fmi1_import_get_variable_name(var);\r
+                       result[i].description = fmi1_import_get_variable_description(var);\r
+\r
+                       switch  (fmi1_import_get_variability(var)) {\r
+                       case fmi1_variability_enu_constant:\r
+                               result[i].variability = 0;\r
+                               break;\r
+                       case fmi1_variability_enu_parameter:\r
+                               result[i].variability = 1;\r
+                               break;\r
+                       case fmi1_variability_enu_discrete:\r
+                               result[i].variability = 2;\r
+                               break;\r
+                       case fmi1_variability_enu_continuous:\r
+                               result[i].variability = 3;\r
+                               break;\r
+                       case fmi1_variability_enu_unknown:\r
+                               result[i].variability = 4;\r
+                               break;\r
+                       }\r
+\r
+                       switch  (fmi1_import_get_causality(var)) {\r
+                       case fmi1_causality_enu_input:\r
+                               result[i].causality = 0;\r
+                               break;\r
+                       case fmi1_causality_enu_output:\r
+                               result[i].causality = 1;\r
+                               break;\r
+                       case fmi1_causality_enu_internal:\r
+                               result[i].causality = 2;\r
+                               break;\r
+                       case fmi1_causality_enu_none:\r
+                               result[i].causality = 3;\r
+                               break;\r
+                       case fmi1_causality_enu_unknown:\r
+                               result[i].causality = 4;\r
+                               break;\r
+                       }\r
+\r
+                       switch  (fmi1_import_get_variable_base_type(var)) {\r
+                       case fmi1_base_type_real:\r
+                               result[i].type = 0;\r
+                               break;\r
+                       case fmi1_base_type_int:\r
+                               result[i].type = 1;\r
+                               break;\r
+                       case fmi1_base_type_bool:\r
+                               result[i].type = 2;\r
+                               break;\r
+                       case fmi1_base_type_str:\r
+                               result[i].type = 3;\r
+                               break;\r
+                       case fmi1_base_type_enum:\r
+                               result[i].type = 4;\r
+                               break;\r
+                       }\r
+                       \r
                        result[i].vr = fmi1_import_get_variable_vr(var);\r
 \r
                }\r