]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI1/fmi1_capi_me.c
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / CAPI / src / FMI1 / fmi1_capi_me.c
diff --git a/org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI1/fmi1_capi_me.c b/org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI1/fmi1_capi_me.c
new file mode 100644 (file)
index 0000000..9c64fad
--- /dev/null
@@ -0,0 +1,127 @@
+/*\r
+    Copyright (C) 2012 Modelon AB\r
+\r
+    This program is free software: you can redistribute it and/or modify\r
+    it under the terms of the BSD style license.\r
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    FMILIB_License.txt file for more details.\r
+\r
+    You should have received a copy of the FMILIB_License.txt file\r
+    along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
+*/\r
+\r
+#ifdef __cplusplus \r
+extern "C" {\r
+#endif\r
+#include <assert.h>\r
+#include <FMI1/fmi1_capi.h>\r
+#include <FMI1/fmi1_capi_impl.h>\r
+\r
+\r
+fmi1_component_t fmi1_capi_instantiate_model(fmi1_capi_t* fmu, fmi1_string_t instanceName, fmi1_string_t GUID, fmi1_boolean_t loggingOn)\r
+{\r
+       fmi1_me_callback_functions_t cb;\r
+       assert(fmu);\r
+       cb.logger = fmu->callBackFunctions.logger;\r
+    cb.allocateMemory = fmu->callBackFunctions.allocateMemory;\r
+    cb.freeMemory = fmu->callBackFunctions.freeMemory;\r
+       jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiInstantiateModel");\r
+       return fmu->c = fmu->fmiInstantiateModel(instanceName, GUID, cb, loggingOn);\r
+}\r
+\r
+void fmi1_capi_free_model_instance(fmi1_capi_t* fmu)\r
+{\r
+       jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiFreeModelInstance");\r
+       fmu->fmiFreeModelInstance(fmu->c);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_initialize(fmi1_capi_t* fmu, fmi1_boolean_t toleranceControlled, fmi1_real_t relativeTolerance, fmi1_event_info_t* eventInfo)\r
+{\r
+       assert(fmu);\r
+       jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiInitialize");\r
+       return fmu->fmiInitialize(fmu->c, toleranceControlled, relativeTolerance, eventInfo);   \r
+}\r
+\r
+const char* fmi1_capi_get_model_types_platform(fmi1_capi_t* fmu)\r
+{\r
+       assert(fmu);\r
+       jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetModelTypesPlatform");\r
+       return fmu->fmiGetModelTypesPlatform();\r
+}\r
+\r
+fmi1_status_t fmi1_capi_set_time(fmi1_capi_t* fmu, fmi1_real_t time)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetModelTypesPlatform");\r
+       return fmu->fmiSetTime(fmu->c, time);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_set_continuous_states(fmi1_capi_t* fmu, const fmi1_real_t x[], size_t nx)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiSetContinuousStates");\r
+       return fmu->fmiSetContinuousStates(fmu->c, x, nx);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_completed_integrator_step(fmi1_capi_t* fmu, fmi1_boolean_t* callEventUpdate)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiCompletedIntegratorStep");\r
+       return fmu->fmiCompletedIntegratorStep(fmu->c, callEventUpdate);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_get_derivatives(fmi1_capi_t* fmu, fmi1_real_t derivatives[], size_t nx)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetDerivatives");\r
+       return fmu->fmiGetDerivatives(fmu->c, derivatives, nx);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_get_event_indicators(fmi1_capi_t* fmu, fmi1_real_t eventIndicators[], size_t ni)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetEventIndicators");\r
+       return fmu->fmiGetEventIndicators(fmu->c, eventIndicators, ni);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_eventUpdate(fmi1_capi_t* fmu, fmi1_boolean_t intermediateResults, fmi1_event_info_t* eventInfo)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiEventUpdate");\r
+       return fmu->fmiEventUpdate(fmu->c, intermediateResults, eventInfo);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_get_continuous_states(fmi1_capi_t* fmu, fmi1_real_t states[], size_t nx)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetContinuousStates");\r
+       return fmu->fmiGetContinuousStates(fmu->c, states, nx);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_get_nominal_continuous_states(fmi1_capi_t* fmu, fmi1_real_t x_nominal[], size_t nx)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetNominalContinuousStates");\r
+       return fmu->fmiGetNominalContinuousStates(fmu->c, x_nominal, nx);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_get_state_value_references(fmi1_capi_t* fmu, fmi1_value_reference_t vrx[], size_t nx)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetStateValueReferences");\r
+       return fmu->fmiGetStateValueReferences(fmu->c, vrx, nx);\r
+}\r
+\r
+fmi1_status_t fmi1_capi_terminate(fmi1_capi_t* fmu)\r
+{\r
+       assert(fmu);\r
+       jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiTerminate");\r
+       return fmu->fmiTerminate(fmu->c);\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r