X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.fmil%2Fnative%2FFMUSimulator%2Ffmi_util.c.txt;h=caab8ac39cbbc0198635b5277829932406e362ed;hb=dd1ca5e5d7fae427cae08e16c14e519df4727500;hp=54b7a4830ed6951702977f68152e7697c5f5911a;hpb=d37b372df3c35c5f89c139146422041a79a726e5;p=simantics%2Ffmil.git diff --git a/org.simantics.fmil/native/FMUSimulator/fmi_util.c.txt b/org.simantics.fmil/native/FMUSimulator/fmi_util.c.txt index 54b7a48..caab8ac 100644 --- a/org.simantics.fmil/native/FMUSimulator/fmi_util.c.txt +++ b/org.simantics.fmil/native/FMUSimulator/fmi_util.c.txt @@ -76,7 +76,26 @@ extern "C" { typedef struct { char *name; + char *description; long vr; + // 0 = real + // 1 = integer + // 2 = boolean + // 3 = string + // 4 = enumeration + int type; + // 0 = constant + // 1 = parameter + // 2 = discrete + // 3 = continuous + // 4 = unknown + int variability; + // 0 = input + // 1 = output + // 2 = internal + // 3 = none + // 4 = unknown + int causality; } FMIL_Variable; __declspec(dllexport) void* FMI1_CS_LOAD(const char *zipFilePath, const char *unzipFolder); @@ -186,8 +205,63 @@ FMIL_Variable *FMI1_CS_GET_VARIABLES(void *fmu, int *count) { } else { - fmi1_base_type_enu_t bt; result[i].name = fmi1_import_get_variable_name(var); + result[i].description = fmi1_import_get_variable_description(var); + + switch (fmi1_import_get_variability(var)) { + case fmi1_variability_enu_constant: + result[i].variability = 0; + break; + case fmi1_variability_enu_parameter: + result[i].variability = 1; + break; + case fmi1_variability_enu_discrete: + result[i].variability = 2; + break; + case fmi1_variability_enu_continuous: + result[i].variability = 3; + break; + case fmi1_variability_enu_unknown: + result[i].variability = 4; + break; + } + + switch (fmi1_import_get_causality(var)) { + case fmi1_causality_enu_input: + result[i].causality = 0; + break; + case fmi1_causality_enu_output: + result[i].causality = 1; + break; + case fmi1_causality_enu_internal: + result[i].causality = 2; + break; + case fmi1_causality_enu_none: + result[i].causality = 3; + break; + case fmi1_causality_enu_unknown: + result[i].causality = 4; + break; + } + + switch (fmi1_import_get_variable_base_type(var)) { + case fmi1_base_type_real: + result[i].type = 0; + break; + case fmi1_base_type_int: + result[i].type = 1; + break; + case fmi1_base_type_bool: + result[i].type = 2; + break; + case fmi1_base_type_str: + result[i].type = 3; + break; + case fmi1_base_type_enum: + result[i].type = 4; + break; + } + result[i].vr = fmi1_import_get_variable_vr(var); }