]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/Test/FMI1/fmu_dummy/fmu1_model_me.c
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / Test / FMI1 / fmu_dummy / fmu1_model_me.c
1 /*\r
2 Copyright (C) 2012 Modelon AB\r
3 \r
4 This program is free software: you can redistribute it and/or modify\r
5 it under the terms of the BSD style license.
6 \r
7 the Free Software Foundation, version 3 of the License.\r
8 \r
9 This program is distributed in the hope that it will be useful,\r
10 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
12 FMILIB_License.txt file for more details.\r
13 \r
14 You should have received a copy of the FMILIB_License.txt file\r
15 along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
16 */\r
17 \r
18 #include <string.h>\r
19 \r
20 #if __GNUC__ >= 4\r
21     #pragma GCC visibility push(default)\r
22 #endif\r
23 /* Standard FMI 1.0 ME and CS types */\r
24 #include <FMI1/fmiModelTypes.h>\r
25 #include <FMI1/fmiModelFunctions.h>\r
26 \r
27 #include <fmu_dummy/fmu1_model.h>\r
28 #include "config_test.h"\r
29 \r
30    typedef enum {fmiDoStepStatus,\r
31                  fmiPendingStatus,\r
32                  fmiLastSuccessfulTime} fmiStatusKind;\r
33 \r
34 #include "fmu1_model.c"\r
35 \r
36 #define MODEL_IDENTIFIER FMU_DUMMY_ME_MODEL_IDENTIFIER\r
37 \r
38 /* FMI 1.0 Common Functions */\r
39 DllExport const char* fmiGetVersion()\r
40 {\r
41         return fmi_get_version();\r
42 }\r
43 \r
44 DllExport fmiStatus fmiSetDebugLogging(fmiComponent c, fmiBoolean loggingOn)\r
45 {\r
46         return fmi_set_debug_logging(c, loggingOn);\r
47 }\r
48 \r
49 DllExport fmiStatus fmiGetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[])\r
50 {\r
51         return fmi_get_real(c, vr, nvr, value);\r
52 }\r
53 \r
54 DllExport fmiStatus fmiGetInteger(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[])\r
55 {\r
56         return fmi_get_integer(c, vr, nvr, value);\r
57 }\r
58 \r
59 DllExport fmiStatus fmiGetBoolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[])\r
60 {\r
61         return fmi_get_boolean(c, vr, nvr, value);\r
62 }\r
63 \r
64 DllExport fmiStatus fmiGetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString  value[])\r
65 {\r
66         return fmi_get_string(c, vr, nvr, value);\r
67 }\r
68 \r
69 DllExport fmiStatus fmiSetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[])\r
70 {\r
71         return fmi_set_real(c, vr, nvr, value);\r
72 }\r
73 \r
74 DllExport fmiStatus fmiSetInteger(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[])\r
75 {\r
76         return fmi_set_integer(c, vr, nvr, value);\r
77 }\r
78 \r
79 DllExport fmiStatus fmiSetBoolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[])\r
80 {\r
81         return fmi_set_boolean(c, vr, nvr, value);\r
82 }\r
83 \r
84 DllExport fmiStatus fmiSetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString  value[])\r
85 {\r
86         return fmi_set_string(c, vr, nvr, value);\r
87 }\r
88 \r
89 /* FMI 1.0 ME Functions */\r
90 DllExport const char* fmiGetModelTypesPlatform()\r
91 {\r
92         return fmi_get_model_types_platform();\r
93 }\r
94 \r
95 DllExport fmiComponent fmiInstantiateModel(fmiString instanceName, fmiString GUID, fmiCallbackFunctions functions, fmiBoolean loggingOn)\r
96 {\r
97         return fmi_instantiate_model(instanceName, GUID, functions, loggingOn);\r
98 }\r
99 \r
100 DllExport void fmiFreeModelInstance(fmiComponent c)\r
101 {\r
102         fmi_free_model_instance(c);\r
103 }\r
104 \r
105 DllExport fmiStatus fmiSetTime(fmiComponent c, fmiReal fmitime)\r
106 {\r
107         return fmi_set_time(c, fmitime);\r
108 }\r
109 \r
110 DllExport fmiStatus fmiSetContinuousStates(fmiComponent c, const fmiReal x[], size_t nx)\r
111 {\r
112         return fmi_set_continuous_states(c, x, nx);\r
113 }\r
114 \r
115 DllExport fmiStatus fmiCompletedIntegratorStep(fmiComponent c, fmiBoolean* callEventUpdate)\r
116 {\r
117         return fmi_completed_integrator_step(c, callEventUpdate);\r
118 }\r
119 \r
120 DllExport fmiStatus fmiInitialize(fmiComponent c, fmiBoolean toleranceControlled, fmiReal relativeTolerance, fmiEventInfo* eventInfo)\r
121 {\r
122         return fmi_initialize(c, toleranceControlled, relativeTolerance, eventInfo);\r
123 }\r
124 \r
125 DllExport fmiStatus fmiGetDerivatives(fmiComponent c, fmiReal derivatives[] , size_t nx)\r
126 {\r
127         return fmi_get_derivatives(c, derivatives, nx);\r
128 }\r
129 \r
130 DllExport fmiStatus fmiGetEventIndicators(fmiComponent c, fmiReal eventIndicators[], size_t ni)\r
131 {\r
132         return fmi_get_event_indicators(c, eventIndicators, ni);\r
133 }\r
134 \r
135 DllExport fmiStatus fmiEventUpdate(fmiComponent c, fmiBoolean intermediateResults, fmiEventInfo* eventInfo)\r
136 {\r
137         return fmi_event_update(c, intermediateResults, eventInfo);\r
138 }\r
139 \r
140 DllExport fmiStatus fmiGetContinuousStates(fmiComponent c, fmiReal states[], size_t nx)\r
141 {\r
142         return fmi_get_continuous_states(c, states, nx);\r
143 }\r
144 \r
145 DllExport fmiStatus fmiGetNominalContinuousStates(fmiComponent c, fmiReal x_nominal[], size_t nx)\r
146 {\r
147         return fmi_get_nominal_continuousstates(c, x_nominal, nx);\r
148 }\r
149 \r
150 DllExport fmiStatus fmiGetStateValueReferences(fmiComponent c, fmiValueReference vrx[], size_t nx)\r
151 {\r
152         return fmi_get_state_value_references(c, vrx, nx);\r
153 }\r
154 \r
155 DllExport fmiStatus fmiTerminate(fmiComponent c)\r
156 {\r
157         return fmi_terminate(c);\r
158 }\r