]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMUSimulator/include/fmi_me.h
f1152455c25af3b94a62e8b7234c55ee69dd6970
[simantics/fmil.git] / org.simantics.fmil.core / native / FMUSimulator / include / fmi_me.h
1 /* ------------------------------------------------------------------------- \r
2  * fmi_me.h\r
3  * Function types for all function of the "FMI for Model Exchange 1.0"\r
4  * and a struct with the corresponding function pointers. \r
5  * Copyright 2011 QTronic GmbH. All rights reserved. \r
6  * -------------------------------------------------------------------------\r
7  */\r
8 \r
9 #ifndef FMI_ME_H\r
10 #define FMI_ME_H\r
11 \r
12 #include <windows.h>\r
13 #include "fmiModelFunctions.h"\r
14 #include "xml_parser.h"\r
15 \r
16 typedef const char* (*fGetModelTypesPlatform)();\r
17 typedef const char* (*fGetVersion)();\r
18 typedef fmiComponent (*fInstantiateModel)(fmiString instanceName, fmiString GUID,\r
19                                         fmiCallbackFunctions functions, fmiBoolean loggingOn);\r
20 typedef void      (*fFreeModelInstance)  (fmiComponent c);\r
21 typedef fmiStatus (*fSetDebugLogging)    (fmiComponent c, fmiBoolean loggingOn);\r
22 typedef fmiStatus (*fSetTime)            (fmiComponent c, fmiReal time);\r
23 typedef fmiStatus (*fSetContinuousStates)(fmiComponent c, const fmiReal x[], size_t nx);\r
24 typedef fmiStatus (*fCompletedIntegratorStep)(fmiComponent c, fmiBoolean* callEventUpdate);\r
25 typedef fmiStatus (*fSetReal)   (fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal    value[]);\r
26 typedef fmiStatus (*fSetInteger)(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[]);\r
27 typedef fmiStatus (*fSetBoolean)(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[]);\r
28 typedef fmiStatus (*fSetString) (fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString  value[]);\r
29 typedef fmiStatus (*fInitialize)(fmiComponent c, fmiBoolean toleranceControlled, \r
30                                fmiReal relativeTolerance, fmiEventInfo* eventInfo);\r
31 typedef fmiStatus (*fGetDerivatives)    (fmiComponent c, fmiReal derivatives[]    , size_t nx);\r
32 typedef fmiStatus (*fGetEventIndicators)(fmiComponent c, fmiReal eventIndicators[], size_t ni);\r
33 typedef fmiStatus (*fGetReal)   (fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal    value[]);\r
34 typedef fmiStatus (*fGetInteger)(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[]);\r
35 typedef fmiStatus (*fGetBoolean)(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[]);\r
36 typedef fmiStatus (*fGetString) (fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString  value[]);\r
37 typedef fmiStatus (*fEventUpdate)               (fmiComponent c, fmiBoolean intermediateResults, fmiEventInfo* eventInfo);\r
38 typedef fmiStatus (*fGetContinuousStates)       (fmiComponent c, fmiReal states[], size_t nx);\r
39 typedef fmiStatus (*fGetNominalContinuousStates)(fmiComponent c, fmiReal x_nominal[], size_t nx);\r
40 typedef fmiStatus (*fGetStateValueReferences)   (fmiComponent c, fmiValueReference vrx[], size_t nx);\r
41 typedef fmiStatus (*fTerminate)                 (fmiComponent c);    \r
42 \r
43 typedef struct {\r
44     ModelDescription* modelDescription;\r
45     HANDLE dllHandle;\r
46     fGetModelTypesPlatform getModelTypesPlatform;\r
47     fGetVersion getVersion;\r
48     fInstantiateModel instantiateModel;\r
49     fFreeModelInstance freeModelInstance;\r
50     fSetDebugLogging setDebugLogging;\r
51     fSetTime setTime;\r
52     fSetContinuousStates setContinuousStates;\r
53     fCompletedIntegratorStep completedIntegratorStep;\r
54     fSetReal setReal;\r
55     fSetInteger setInteger;\r
56     fSetBoolean setBoolean;\r
57     fSetString setString;\r
58     fInitialize initialize;\r
59     fGetDerivatives getDerivatives;\r
60     fGetEventIndicators getEventIndicators;\r
61     fGetReal getReal;\r
62     fGetInteger getInteger;\r
63     fGetBoolean getBoolean;\r
64     fGetString getString;\r
65     fEventUpdate eventUpdate;\r
66     fGetContinuousStates getContinuousStates;\r
67     fGetNominalContinuousStates getNominalContinuousStates;\r
68     fGetStateValueReferences getStateValueReferences;\r
69     fTerminate terminate; \r
70 /*   \r
71     fInstantiateSlave instantiateSlave;\r
72     fInitializeSlave initializeSlave;\r
73     fTerminateSlave terminateSlave;\r
74     fResetSlave resetSlave;\r
75     fFreeSlaveInstance freeSlaveInstance;\r
76     fGetRealOutputDerivatives getRealOutputDerivatives;\r
77     fSetRealInputDerivatives setRealInputDerivatives;\r
78     fDoStep doStep;\r
79     fCancelStep cancelStep;\r
80     fGetStatus getStatus;\r
81     fGetRealStatus getRealStatus;\r
82     fGetIntegerStatus getIntegerStatus;\r
83     fGetBooleanStatus getBooleanStatus;\r
84     fGetStringStatus getStringStatus;\r
85 */\r
86 } FMU;\r
87 \r
88 #endif // FMI_ME_H\r
89 \r