--- /dev/null
+/*\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