]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI2/fmi2_capi_impl.h
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / CAPI / src / FMI2 / fmi2_capi_impl.h
diff --git a/org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI2/fmi2_capi_impl.h b/org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI2/fmi2_capi_impl.h
new file mode 100644 (file)
index 0000000..e57a362
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+    Copyright (C) 2012 Modelon AB
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the BSD style license.
+
+     This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    FMILIB_License.txt file for more details.
+
+    You should have received a copy of the FMILIB_License.txt file
+    along with this program. If not, contact Modelon AB <http://www.modelon.com>.
+*/
+
+
+#ifndef FMI2_CAPI_IMPL_H_
+#define FMI2_CAPI_IMPL_H_
+
+#ifdef __cplusplus 
+extern "C" {
+#endif
+
+#include <FMI2/fmi2_types.h>
+#include <FMI2/fmi2_functions.h>
+#include <FMI2/fmi2_enums.h>
+#include <FMI2/fmi2_capi.h>
+#include <JM/jm_portability.h>
+#include <JM/jm_callbacks.h>
+
+#define FMI_CAPI_MODULE_NAME "FMICAPI"
+
+/** 
+ * \brief C-API struct used as a placeholder for the FMI functions and shared library handler. 
+ */
+struct fmi2_capi_t {
+       const char* dllPath;
+       const char* modelIdentifier;
+       fmi2_callback_functions_t callBackFunctions;
+
+       jm_callbacks* callbacks;
+
+       DLL_HANDLE dllHandle;
+
+       fmi2_fmu_kind_enu_t standard;
+
+       fmi2_component_t                                        c;
+
+       int debugMode;
+
+       /* FMI common */
+       fmi2_get_version_ft                                     fmi2GetVersion;
+       fmi2_set_debug_logging_ft                       fmi2SetDebugLogging;
+    fmi2_instantiate_ft                        fmi2Instantiate;
+    fmi2_free_instance_ft                      fmi2FreeInstance;    
+
+    fmi2_setup_experiment_ft                           fmi2SetupExperiment;
+    fmi2_enter_initialization_mode_ft                  fmi2EnterInitializationMode;
+    fmi2_exit_initialization_mode_ft                   fmi2ExitInitializationMode;
+
+    fmi2_terminate_ft                                  fmi2Terminate;
+    fmi2_reset_ft                                      fmi2Reset;
+
+    fmi2_set_real_ft                                   fmi2SetReal;
+    fmi2_set_integer_ft                                        fmi2SetInteger;
+    fmi2_set_boolean_ft                                        fmi2SetBoolean;
+    fmi2_set_string_ft                                 fmi2SetString;
+       fmi2_get_real_ft                                        fmi2GetReal;
+    fmi2_get_integer_ft                                        fmi2GetInteger;
+    fmi2_get_boolean_ft                                        fmi2GetBoolean;
+    fmi2_get_string_ft                                 fmi2GetString;
+\r
+       fmi2_get_fmu_state_ft                           fmi2GetFMUstate;\r
+       fmi2_set_fmu_state_ft                           fmi2SetFMUstate;\r
+       fmi2_free_fmu_state_ft                          fmi2FreeFMUstate;\r
+       \r
+       fmi2_serialized_fmu_state_size_ft       fmi2SerializedFMUstateSize;\r
+       fmi2_serialize_fmu_state_ft                     fmi2SerializeFMUstate;\r
+    fmi2_de_serialize_fmu_state_ft             fmi2DeSerializeFMUstate;\r
+\r
+/* Getting partial derivatives */\r
+       fmi2_get_directional_derivative_ft                      fmi2GetDirectionalDerivative;\r
+
+       /* FMI ME */
+    fmi2_enter_event_mode_ft           fmi2EnterEventMode;
+    fmi2_new_discrete_states_ft                fmi2NewDiscreteStates;
+    fmi2_enter_continuous_time_mode_ft fmi2EnterContinuousTimeMode;
+    fmi2_completed_integrator_step_ft  fmi2CompletedIntegratorStep;
+
+    fmi2_get_types_platform_ft                 fmi2GetTypesPlatform;    
+
+    fmi2_set_time_ft                                   fmi2SetTime;
+    fmi2_set_continuous_states_ft              fmi2SetContinuousStates;
+    fmi2_get_derivatives_ft                            fmi2GetDerivatives;
+    fmi2_get_event_indicators_ft               fmi2GetEventIndicators;
+    fmi2_get_continuous_states_ft              fmi2GetContinuousStates;
+    fmi2_get_nominals_of_continuous_states_ft fmi2GetNominalsOfContinuousStates;
+
+       /* FMI CS */
+    fmi2_set_real_input_derivatives_ft fmi2SetRealInputDerivatives;
+    fmi2_get_real_output_derivatives_ft        fmi2GetRealOutputDerivatives;
+    fmi2_do_step_ft                                            fmi2DoStep;
+    fmi2_cancel_step_ft                                        fmi2CancelStep;
+    fmi2_get_status_ft                                 fmi2GetStatus;
+    fmi2_get_real_status_ft                            fmi2GetRealStatus;
+    fmi2_get_integer_status_ft                 fmi2GetIntegerStatus;
+    fmi2_get_boolean_status_ft                 fmi2GetBooleanStatus;
+    fmi2_get_string_status_ft                  fmi2GetStringStatus;
+
+};
+
+#ifdef __cplusplus 
+}
+#endif
+
+#endif /* End of header file FMI2_CAPI_IMPL_H_ */