]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI1/fmi1_capi_cs.c
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / CAPI / src / FMI1 / fmi1_capi_cs.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     This program is distributed in the hope that it will be useful,\r
8     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
10     FMILIB_License.txt file for more details.\r
11 \r
12     You should have received a copy of the FMILIB_License.txt file\r
13     along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
14 */\r
15 \r
16 #ifdef __cplusplus \r
17 extern "C" {\r
18 #endif\r
19 \r
20 #include <FMI1/fmi1_capi.h>\r
21 #include <FMI1/fmi1_capi_impl.h>\r
22 \r
23 fmi1_component_t fmi1_capi_instantiate_slave(fmi1_capi_t* fmu, fmi1_string_t instanceName, fmi1_string_t fmuGUID, fmi1_string_t fmuLocation, fmi1_string_t mimeType, fmi1_real_t timeout, fmi1_boolean_t visible, fmi1_boolean_t interactive, fmi1_boolean_t loggingOn)\r
24 {\r
25         return fmu->c = fmu->fmiInstantiateSlave(instanceName, fmuGUID, fmuLocation, mimeType, timeout, visible, interactive, fmu->callBackFunctions, loggingOn);\r
26 }\r
27 \r
28 void fmi1_capi_free_slave_instance(fmi1_capi_t* fmu)\r
29 {\r
30         if(fmu->c) {\r
31                 fmu->fmiFreeSlaveInstance(fmu->c);\r
32                 fmu->c = 0;\r
33         }\r
34 }\r
35 \r
36 fmi1_status_t fmi1_capi_initialize_slave(fmi1_capi_t* fmu, fmi1_real_t tStart, fmi1_boolean_t StopTimeDefined, fmi1_real_t tStop)\r
37 {\r
38         return fmu->fmiInitializeSlave(fmu->c, tStart, StopTimeDefined, tStop);\r
39 }\r
40 \r
41 \r
42 const char* fmi1_capi_get_types_platform(fmi1_capi_t* fmu)\r
43 {\r
44         return fmu->fmiGetTypesPlatform();\r
45 }\r
46 \r
47 fmi1_status_t fmi1_capi_terminate_slave(fmi1_capi_t* fmu)\r
48 {\r
49         return fmu->fmiTerminateSlave(fmu->c);\r
50 }\r
51 \r
52 fmi1_status_t fmi1_capi_reset_slave(fmi1_capi_t* fmu)\r
53 {\r
54         return fmu->fmiResetSlave(fmu->c);\r
55 }\r
56 \r
57 fmi1_status_t fmi1_capi_set_real_input_derivatives(fmi1_capi_t* fmu, const  fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], const  fmi1_real_t value[])  \r
58 {\r
59         return fmu->fmiSetRealInputDerivatives(fmu->c, vr, nvr, order, value);\r
60 }\r
61 \r
62 fmi1_status_t fmi1_capi_get_real_output_derivatives(fmi1_capi_t* fmu, const  fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], fmi1_real_t value[])   \r
63 {\r
64         return fmu->fmiGetRealOutputDerivatives(fmu->c, vr, nvr, order, value);\r
65 }\r
66 \r
67 fmi1_status_t fmi1_capi_cancel_step(fmi1_capi_t* fmu)   \r
68 {\r
69         return fmu->fmiCancelStep(fmu->c);\r
70 }\r
71 \r
72 fmi1_status_t fmi1_capi_do_step(fmi1_capi_t* fmu, fmi1_real_t currentCommunicationPoint, fmi1_real_t communicationStepSize, fmi1_boolean_t newStep)\r
73 {\r
74         return fmu->fmiDoStep(fmu->c, currentCommunicationPoint, communicationStepSize, newStep);\r
75 }\r
76 \r
77 /* fmiGetStatus* */\r
78 #define FMIGETSTATUSX(FNAME1, FNAME2,FSTATUSTYPE) \\r
79 fmi1_status_t FNAME1(fmi1_capi_t* fmu, const fmi1_status_kind_t s, FSTATUSTYPE*  value) \\r
80 { \\r
81         return fmu->FNAME2(fmu->c, s, value); \\r
82 }\r
83 \r
84 FMIGETSTATUSX(fmi1_capi_get_status,             fmiGetStatus,           fmi1_status_t)\r
85 FMIGETSTATUSX(fmi1_capi_get_real_status,                fmiGetRealStatus,       fmi1_real_t)\r
86 FMIGETSTATUSX(fmi1_capi_get_integer_status,     fmiGetIntegerStatus,    fmi1_integer_t)\r
87 FMIGETSTATUSX(fmi1_capi_get_boolean_status,     fmiGetBooleanStatus,    fmi1_boolean_t)\r
88 FMIGETSTATUSX(fmi1_capi_get_string_status,              fmiGetStringStatus,     fmi1_string_t)\r
89 \r
90 #ifdef __cplusplus\r
91 }\r
92 #endif