]> gerrit.simantics Code Review - simantics/fmil.git/blob - 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
1 /*
2     Copyright (C) 2012 Modelon AB
3
4     This program is free software: you can redistribute it and/or modify
5     it under the terms of the BSD style license.
6
7      This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10     FMILIB_License.txt file for more details.
11
12     You should have received a copy of the FMILIB_License.txt file
13     along with this program. If not, contact Modelon AB <http://www.modelon.com>.
14 */
15
16
17 #ifndef FMI2_CAPI_IMPL_H_
18 #define FMI2_CAPI_IMPL_H_
19
20 #ifdef __cplusplus 
21 extern "C" {
22 #endif
23
24 #include <FMI2/fmi2_types.h>
25 #include <FMI2/fmi2_functions.h>
26 #include <FMI2/fmi2_enums.h>
27 #include <FMI2/fmi2_capi.h>
28 #include <JM/jm_portability.h>
29 #include <JM/jm_callbacks.h>
30
31 #define FMI_CAPI_MODULE_NAME "FMICAPI"
32
33 /** 
34  * \brief C-API struct used as a placeholder for the FMI functions and shared library handler. 
35  */
36 struct fmi2_capi_t {
37         const char* dllPath;
38         const char* modelIdentifier;
39         fmi2_callback_functions_t callBackFunctions;
40
41         jm_callbacks* callbacks;
42
43         DLL_HANDLE dllHandle;
44
45         fmi2_fmu_kind_enu_t standard;
46
47         fmi2_component_t                                        c;
48
49         int debugMode;
50
51         /* FMI common */
52         fmi2_get_version_ft                                     fmi2GetVersion;
53         fmi2_set_debug_logging_ft                       fmi2SetDebugLogging;
54     fmi2_instantiate_ft                 fmi2Instantiate;
55     fmi2_free_instance_ft                       fmi2FreeInstance;    
56
57     fmi2_setup_experiment_ft                            fmi2SetupExperiment;
58     fmi2_enter_initialization_mode_ft                   fmi2EnterInitializationMode;
59     fmi2_exit_initialization_mode_ft                    fmi2ExitInitializationMode;
60
61     fmi2_terminate_ft                                   fmi2Terminate;
62     fmi2_reset_ft                                       fmi2Reset;
63
64     fmi2_set_real_ft                                    fmi2SetReal;
65     fmi2_set_integer_ft                                 fmi2SetInteger;
66     fmi2_set_boolean_ft                                 fmi2SetBoolean;
67     fmi2_set_string_ft                                  fmi2SetString;
68         fmi2_get_real_ft                                        fmi2GetReal;
69     fmi2_get_integer_ft                                 fmi2GetInteger;
70     fmi2_get_boolean_ft                                 fmi2GetBoolean;
71     fmi2_get_string_ft                                  fmi2GetString;
72 \r
73         fmi2_get_fmu_state_ft                           fmi2GetFMUstate;\r
74         fmi2_set_fmu_state_ft                           fmi2SetFMUstate;\r
75         fmi2_free_fmu_state_ft                          fmi2FreeFMUstate;\r
76         \r
77         fmi2_serialized_fmu_state_size_ft       fmi2SerializedFMUstateSize;\r
78         fmi2_serialize_fmu_state_ft                     fmi2SerializeFMUstate;\r
79     fmi2_de_serialize_fmu_state_ft              fmi2DeSerializeFMUstate;\r
80 \r
81 /* Getting partial derivatives */\r
82         fmi2_get_directional_derivative_ft                      fmi2GetDirectionalDerivative;\r
83
84         /* FMI ME */
85     fmi2_enter_event_mode_ft            fmi2EnterEventMode;
86     fmi2_new_discrete_states_ft         fmi2NewDiscreteStates;
87     fmi2_enter_continuous_time_mode_ft  fmi2EnterContinuousTimeMode;
88     fmi2_completed_integrator_step_ft   fmi2CompletedIntegratorStep;
89
90     fmi2_get_types_platform_ft                  fmi2GetTypesPlatform;    
91
92     fmi2_set_time_ft                                    fmi2SetTime;
93     fmi2_set_continuous_states_ft               fmi2SetContinuousStates;
94     fmi2_get_derivatives_ft                             fmi2GetDerivatives;
95     fmi2_get_event_indicators_ft                fmi2GetEventIndicators;
96     fmi2_get_continuous_states_ft               fmi2GetContinuousStates;
97     fmi2_get_nominals_of_continuous_states_ft fmi2GetNominalsOfContinuousStates;
98
99         /* FMI CS */
100     fmi2_set_real_input_derivatives_ft  fmi2SetRealInputDerivatives;
101     fmi2_get_real_output_derivatives_ft fmi2GetRealOutputDerivatives;
102     fmi2_do_step_ft                                             fmi2DoStep;
103     fmi2_cancel_step_ft                                 fmi2CancelStep;
104     fmi2_get_status_ft                                  fmi2GetStatus;
105     fmi2_get_real_status_ft                             fmi2GetRealStatus;
106     fmi2_get_integer_status_ft                  fmi2GetIntegerStatus;
107     fmi2_get_boolean_status_ft                  fmi2GetBooleanStatus;
108     fmi2_get_string_status_ft                   fmi2GetStringStatus;
109
110 };
111
112 #ifdef __cplusplus 
113 }
114 #endif
115
116 #endif /* End of header file FMI2_CAPI_IMPL_H_ */