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