]> gerrit.simantics Code Review - simantics/fmil.git/blob - FMI2/fmu_dummy/fmu2_model_me.c
Switch to full JavaSE-11+ compatibility
[simantics/fmil.git] / FMI2 / fmu_dummy / fmu2_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.\r
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 2.0 ME and CS types */\r
24 #include <FMI2/fmi2TypesPlatform.h>\r
25 #include <FMI2/fmi2Functions.h>\r
26 \r
27 #include <fmu_dummy/fmu2_model.h>\r
28 #include "config_test.h"\r
29 \r
30 #include "fmu2_model.c"\r
31 \r
32 /* #define MODEL_IDENTIFIER FMU_DUMMY_ME_MODEL_IDENTIFIER*/\r
33 \r
34 /* FMI 2.0 Common Functions */\r
35 FMI2_Export const char* fmi2GetVersion()\r
36 {\r
37         return fmi_get_version();\r
38 }\r
39 \r
40 FMI2_Export fmi2Status fmi2SetDebugLogging(fmi2Component c, fmi2Boolean loggingOn, size_t n , const fmi2String cat[])\r
41 {\r
42         return fmi_set_debug_logging(c, loggingOn);\r
43 }\r
44 \r
45 FMI2_Export fmi2Component fmi2Instantiate(fmi2String instanceName,\r
46   fmi2Type fmuType, fmi2String GUID, fmi2String location,\r
47   const fmi2CallbackFunctions* functions, fmi2Boolean visible,\r
48   fmi2Boolean loggingOn)\r
49 {\r
50     return fmi_instantiate(instanceName, fmuType, GUID, location, functions,\r
51                            visible, loggingOn);\r
52 }\r
53 \r
54 FMI2_Export void fmi2FreeInstance(fmi2Component c)\r
55 {\r
56         fmi_free_instance(c);\r
57 }\r
58 \r
59 FMI2_Export fmi2Status fmi2SetupExperiment(fmi2Component c, \r
60     fmi2Boolean toleranceDefined, fmi2Real tolerance,\r
61     fmi2Real startTime, fmi2Boolean stopTimeDefined,\r
62     fmi2Real stopTime)\r
63 {\r
64     return fmi_setup_experiment(c, toleranceDefined, tolerance, startTime,\r
65                                 stopTimeDefined, stopTime);\r
66 }\r
67 \r
68 FMI2_Export fmi2Status fmi2EnterInitializationMode(fmi2Component c)\r
69 {\r
70     return fmi_enter_initialization_mode(c);\r
71 }\r
72 \r
73 FMI2_Export fmi2Status fmi2ExitInitializationMode(fmi2Component c)\r
74 {\r
75     return fmi_exit_initialization_mode(c);\r
76 }\r
77 \r
78 FMI2_Export fmi2Status fmi2GetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[])\r
79 {\r
80         return fmi_get_real(c, vr, nvr, value);\r
81 }\r
82 \r
83 FMI2_Export fmi2Status fmi2GetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Integer value[])\r
84 {\r
85         return fmi_get_integer(c, vr, nvr, value);\r
86 }\r
87 \r
88 FMI2_Export fmi2Status fmi2GetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Boolean value[])\r
89 {\r
90         return fmi_get_boolean(c, vr, nvr, value);\r
91 }\r
92 \r
93 FMI2_Export fmi2Status fmi2GetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2String  value[])\r
94 {\r
95         return fmi_get_string(c, vr, nvr, value);\r
96 }\r
97 \r
98 FMI2_Export fmi2Status fmi2SetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[])\r
99 {\r
100         return fmi_set_real(c, vr, nvr, value);\r
101 }\r
102 \r
103 FMI2_Export fmi2Status fmi2SetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Integer value[])\r
104 {\r
105         return fmi_set_integer(c, vr, nvr, value);\r
106 }\r
107 \r
108 FMI2_Export fmi2Status fmi2SetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Boolean value[])\r
109 {\r
110         return fmi_set_boolean(c, vr, nvr, value);\r
111 }\r
112 \r
113 FMI2_Export fmi2Status fmi2SetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2String  value[])\r
114 {\r
115         return fmi_set_string(c, vr, nvr, value);\r
116 }\r
117 \r
118 /* FMI 2.0 ME Functions */\r
119 FMI2_Export const char* fmi2GetTypesPlatform()\r
120 {\r
121         return fmi_get_model_types_platform();\r
122 }\r
123 \r
124 FMI2_Export fmi2Status fmi2EnterEventMode(fmi2Component c)\r
125 {\r
126     return fmi_enter_event_mode(c);\r
127 }\r
128 \r
129 FMI2_Export fmi2Status fmi2NewDiscreteStates(fmi2Component c, fmi2EventInfo* eventInfo)\r
130 {\r
131     return fmi_new_discrete_states(c, eventInfo);\r
132 }\r
133 \r
134 FMI2_Export fmi2Status fmi2EnterContinuousTimeMode(fmi2Component c)\r
135 {\r
136     return fmi_enter_continuous_time_mode(c);\r
137 }\r
138 \r
139 FMI2_Export fmi2Status fmi2SetTime(fmi2Component c, fmi2Real fmitime)\r
140 {\r
141         return fmi_set_time(c, fmitime);\r
142 }\r
143 \r
144 FMI2_Export fmi2Status fmi2SetContinuousStates(fmi2Component c, const fmi2Real x[], size_t nx)\r
145 {\r
146         return fmi_set_continuous_states(c, x, nx);\r
147 }\r
148 \r
149 FMI2_Export fmi2Status fmi2CompletedIntegratorStep(fmi2Component c,\r
150     fmi2Boolean noSetFMUStatePriorToCurrentPoint,\r
151     fmi2Boolean* enterEventMode, fmi2Boolean* terminateSimulation)\r
152 {\r
153     return fmi_completed_integrator_step(c, noSetFMUStatePriorToCurrentPoint,\r
154                                          enterEventMode, terminateSimulation);\r
155 }\r
156 \r
157 FMI2_Export fmi2Status fmi2GetDerivatives(fmi2Component c, fmi2Real derivatives[] , size_t nx)\r
158 {\r
159         return fmi_get_derivatives(c, derivatives, nx);\r
160 }\r
161 \r
162 FMI2_Export fmi2Status fmi2GetEventIndicators(fmi2Component c, fmi2Real eventIndicators[], size_t ni)\r
163 {\r
164         return fmi_get_event_indicators(c, eventIndicators, ni);\r
165 }\r
166 \r
167 FMI2_Export fmi2Status fmi2GetContinuousStates(fmi2Component c, fmi2Real states[], size_t nx)\r
168 {\r
169         return fmi_get_continuous_states(c, states, nx);\r
170 }\r
171 \r
172 FMI2_Export fmi2Status fmi2GetNominalsOfContinuousStates(fmi2Component c, fmi2Real x_nominal[], size_t nx)\r
173 {\r
174         return fmi_get_nominals_of_continuousstates(c, x_nominal, nx);\r
175 }\r
176 \r
177 FMI2_Export fmi2Status fmi2Terminate(fmi2Component c)\r
178 {\r
179         return fmi_terminate(c);\r
180 }\r
181 \r
182 FMI2_Export fmi2Status fmi2Reset(fmi2Component c)\r
183 {\r
184         return fmi_reset(c);\r
185 }\r