]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI1/fmi1_capi_impl.h
edddb6e6ee11d9f2ecf3a7eeaff9e03e1fdadc8b
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / CAPI / src / FMI1 / fmi1_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 FMI1_CAPI_IMPL_H_
18 #define FMI1_CAPI_IMPL_H_
19
20 #ifdef __cplusplus 
21 extern "C" {
22 #endif
23
24 #include <FMI1/fmi1_types.h>
25 #include <FMI1/fmi1_functions.h>
26 #include <FMI1/fmi1_enums.h>
27 #include <FMI1/fmi1_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 funktions and shared library handler. 
35  */
36 struct fmi1_capi_t {
37         const char* dllPath;
38         const char* modelIdentifier;
39         fmi1_callback_functions_t callBackFunctions;
40
41         jm_callbacks* callbacks;
42
43         DLL_HANDLE dllHandle;
44
45         fmi1_fmu_kind_enu_t standard;
46
47         fmi1_component_t                                        c;
48
49         int debugMode;
50
51         /* FMI common */
52         fmi1_get_version_ft                                     fmiGetVersion;
53         fmi1_set_debug_logging_ft                       fmiSetDebugLogging;
54     fmi1_set_real_ft                                    fmiSetReal;
55     fmi1_set_integer_ft                                 fmiSetInteger;
56     fmi1_set_boolean_ft                                 fmiSetBoolean;
57     fmi1_set_string_ft                                  fmiSetString;
58         fmi1_get_real_ft                                        fmiGetReal;
59     fmi1_get_integer_ft                                 fmiGetInteger;
60     fmi1_get_boolean_ft                                 fmiGetBoolean;
61     fmi1_get_string_ft                                  fmiGetString;
62
63         /* FMI ME */
64     fmi1_get_model_typesPlatform_ft             fmiGetModelTypesPlatform;    
65     fmi1_instantiate_model_ft                   fmiInstantiateModel;
66     fmi1_free_model_instance_ft                 fmiFreeModelInstance;    
67     fmi1_set_time_ft                                    fmiSetTime;
68     fmi1_set_continuous_states_ft               fmiSetContinuousStates;
69     fmi1_completed_integrator_step_ft   fmiCompletedIntegratorStep;
70     fmi1_initialize_ft                                  fmiInitialize;
71     fmi1_get_derivatives_ft                             fmiGetDerivatives;
72     fmi1_get_event_indicators_ft                fmiGetEventIndicators;
73     fmi1_event_update_ft                                fmiEventUpdate;
74     fmi1_get_continuous_states_ft               fmiGetContinuousStates;
75     fmi1_get_nominal_continuousStates_ft fmiGetNominalContinuousStates;
76     fmi1_get_state_valueReferences_ft   fmiGetStateValueReferences;
77     fmi1_terminate_ft                                   fmiTerminate;
78
79         /* FMI CS */
80         fmi1_get_types_platform_ft                      fmiGetTypesPlatform;   
81     fmi1_instantiate_slave_ft                   fmiInstantiateSlave;
82     fmi1_initialize_slave_ft                    fmiInitializeSlave;
83     fmi1_terminate_slave_ft                             fmiTerminateSlave;
84     fmi1_reset_slave_ft                                 fmiResetSlave;
85     fmi1_free_slave_instance_ft                 fmiFreeSlaveInstance;
86     fmi1_set_real_inputDerivatives_ft   fmiSetRealInputDerivatives;
87     fmi1_get_real_outputDerivatives_ft  fmiGetRealOutputDerivatives;
88     fmi1_do_step_ft                                             fmiDoStep;
89     fmi1_cancel_step_ft                                 fmiCancelStep;
90     fmi1_get_status_ft                                  fmiGetStatus;
91     fmi1_get_real_status_ft                             fmiGetRealStatus;
92     fmi1_get_integer_status_ft                  fmiGetIntegerStatus;
93     fmi1_get_boolean_status_ft                  fmiGetBooleanStatus;
94     fmi1_get_string_status_ft                   fmiGetStringStatus;
95
96 };
97
98 #ifdef __cplusplus 
99 }
100 #endif
101
102 #endif /* End of header file FMI1_CAPI_IMPL_H_ */