]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/ThirdParty/FMI/default/FMI2/fmi2FunctionTypes.h
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / ThirdParty / FMI / default / FMI2 / fmi2FunctionTypes.h
diff --git a/org.simantics.fmil.core/native/FMILibrary/ThirdParty/FMI/default/FMI2/fmi2FunctionTypes.h b/org.simantics.fmil.core/native/FMILibrary/ThirdParty/FMI/default/FMI2/fmi2FunctionTypes.h
new file mode 100644 (file)
index 0000000..348c76e
--- /dev/null
@@ -0,0 +1,243 @@
+#ifndef fmi2FunctionTypes_h\r
+#define fmi2FunctionTypes_h\r
+\r
+#include "fmi2TypesPlatform.h"\r
+\r
+/* This header file must be utilized when compiling an FMU or an FMI master.\r
+   It declares data and function types for FMI 2.0\r
+\r
+   Revisions:\r
+   - Apr.  9, 2014: all prefixes "fmi" renamed to "fmi2" (decision from April 8)\r
+   - Apr.  3, 2014: Added #include <stddef.h> for size_t definition\r
+   - Mar. 27, 2014: Added #include "fmiTypesPlatform.h" (#179)\r
+   - Mar. 26, 2014: Introduced function argument "void" for the functions (#171)\r
+                      fmiGetTypesPlatformTYPE and fmiGetVersionTYPE\r
+   - Oct. 11, 2013: Functions of ModelExchange and CoSimulation merged:\r
+                      fmiInstantiateModelTYPE , fmiInstantiateSlaveTYPE  -> fmiInstantiateTYPE\r
+                      fmiFreeModelInstanceTYPE, fmiFreeSlaveInstanceTYPE -> fmiFreeInstanceTYPE\r
+                      fmiEnterModelInitializationModeTYPE, fmiEnterSlaveInitializationModeTYPE -> fmiEnterInitializationModeTYPE\r
+                      fmiExitModelInitializationModeTYPE , fmiExitSlaveInitializationModeTYPE  -> fmiExitInitializationModeTYPE\r
+                      fmiTerminateModelTYPE , fmiTerminateSlaveTYPE  -> fmiTerminate\r
+                      fmiResetSlave -> fmiReset (now also for ModelExchange and not only for CoSimulation)\r
+                    Functions renamed\r
+                      fmiUpdateDiscreteStatesTYPE -> fmiNewDiscreteStatesTYPE\r
+                    Renamed elements of the enumeration fmiEventInfo\r
+                      upcomingTimeEvent             -> nextEventTimeDefined // due to generic naming scheme: varDefined + var\r
+                      newUpdateDiscreteStatesNeeded -> newDiscreteStatesNeeded;\r
+   - June 13, 2013: Changed type fmiEventInfo\r
+                    Functions removed:\r
+                       fmiInitializeModelTYPE\r
+                       fmiEventUpdateTYPE\r
+                       fmiCompletedEventIterationTYPE\r
+                       fmiInitializeSlaveTYPE\r
+                    Functions added:\r
+                       fmiEnterModelInitializationModeTYPE\r
+                       fmiExitModelInitializationModeTYPE\r
+                       fmiEnterEventModeTYPE\r
+                       fmiUpdateDiscreteStatesTYPE\r
+                       fmiEnterContinuousTimeModeTYPE\r
+                       fmiEnterSlaveInitializationModeTYPE;\r
+                       fmiExitSlaveInitializationModeTYPE;\r
+   - Feb. 17, 2013: Added third argument to fmiCompletedIntegratorStepTYPE\r
+                    Changed function name "fmiTerminateType" to "fmiTerminateModelType" (due to #113)\r
+                    Changed function name "fmiGetNominalContinuousStateTYPE" to\r
+                                          "fmiGetNominalsOfContinuousStatesTYPE"\r
+                    Removed fmiGetStateValueReferencesTYPE.\r
+   - Nov. 14, 2011: First public Version\r
+\r
+\r
+   Copyright © 2011 MODELISAR consortium,\r
+               2012-2013 Modelica Association Project "FMI"\r
+               All rights reserved.\r
+   This file is licensed by the copyright holders under the BSD 2-Clause License\r
+   (http://www.opensource.org/licenses/bsd-license.html):\r
+\r
+   ----------------------------------------------------------------------------\r
+   Redistribution and use in source and binary forms, with or without\r
+   modification, are permitted provided that the following conditions are met:\r
+\r
+   - Redistributions of source code must retain the above copyright notice,\r
+     this list of conditions and the following disclaimer.\r
+   - Redistributions in binary form must reproduce the above copyright notice,\r
+     this list of conditions and the following disclaimer in the documentation\r
+     and/or other materials provided with the distribution.\r
+   - Neither the name of the copyright holders nor the names of its\r
+     contributors may be used to endorse or promote products derived\r
+     from this software without specific prior written permission.\r
+\r
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\r
+   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR\r
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r
+   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+   ----------------------------------------------------------------------------\r
+\r
+   with the extension:\r
+\r
+   You may distribute or publicly perform any modification only under the\r
+   terms of this license.\r
+   (Note, this means that if you distribute a modified file,\r
+    the modified file must also be provided under this license).\r
+*/\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/* make sure all compiler use the same alignment policies for structures */\r
+#if defined _MSC_VER || defined __GNUC__\r
+#pragma pack(push,8)\r
+#endif\r
+\r
+/* Include stddef.h, in order that size_t etc. is defined */\r
+#include <stddef.h>\r
+\r
+\r
+/* Type definitions */\r
+typedef enum {\r
+    fmi2OK,\r
+    fmi2Warning,\r
+    fmi2Discard,\r
+    fmi2Error,\r
+    fmi2Fatal,\r
+    fmi2Pending\r
+} fmi2Status;\r
+\r
+typedef enum {\r
+    fmi2ModelExchange,\r
+    fmi2CoSimulation\r
+} fmi2Type;\r
+\r
+typedef enum {\r
+    fmi2DoStepStatus,\r
+    fmi2PendingStatus,\r
+    fmi2LastSuccessfulTime,\r
+    fmi2Terminated\r
+} fmi2StatusKind;\r
+\r
+typedef void      (*fmi2CallbackLogger)        (fmi2ComponentEnvironment, fmi2String, fmi2Status, fmi2String, fmi2String, ...);\r
+typedef void*     (*fmi2CallbackAllocateMemory)(size_t, size_t);\r
+typedef void      (*fmi2CallbackFreeMemory)    (void*);\r
+typedef void      (*fmi2StepFinished)          (fmi2ComponentEnvironment, fmi2Status);\r
+\r
+typedef struct {\r
+   const fmi2CallbackLogger         logger;\r
+   const fmi2CallbackAllocateMemory allocateMemory;\r
+   const fmi2CallbackFreeMemory     freeMemory;\r
+   const fmi2StepFinished           stepFinished;\r
+   const fmi2ComponentEnvironment   componentEnvironment;\r
+} fmi2CallbackFunctions;\r
+\r
+typedef struct {\r
+        fmi2Boolean newDiscreteStatesNeeded;\r
+   fmi2Boolean terminateSimulation;\r
+   fmi2Boolean nominalsOfContinuousStatesChanged;\r
+   fmi2Boolean valuesOfContinuousStatesChanged;\r
+   fmi2Boolean nextEventTimeDefined;\r
+   fmi2Real    nextEventTime;\r
+} fmi2EventInfo;\r
+\r
+\r
+/* reset alignment policy to the one set before reading this file */\r
+#if defined _MSC_VER || defined __GNUC__\r
+#pragma pack(pop)\r
+#endif\r
+\r
+\r
+/* Define fmi2 function pointer types to simplify dynamic loading */\r
+\r
+/***************************************************\r
+Types for Common Functions\r
+****************************************************/\r
+\r
+/* Inquire version numbers of header files and setting logging status */\r
+   typedef const char* fmi2GetTypesPlatformTYPE(void);\r
+   typedef const char* fmi2GetVersionTYPE(void);\r
+   typedef fmi2Status  fmi2SetDebugLoggingTYPE(fmi2Component, fmi2Boolean, size_t, const fmi2String[]);\r
+\r
+/* Creation and destruction of FMU instances and setting debug status */\r
+   typedef fmi2Component fmi2InstantiateTYPE (fmi2String, fmi2Type, fmi2String, fmi2String, const fmi2CallbackFunctions*, fmi2Boolean, fmi2Boolean);\r
+   typedef void          fmi2FreeInstanceTYPE(fmi2Component);\r
+\r
+/* Enter and exit initialization mode, terminate and reset */\r
+   typedef fmi2Status fmi2SetupExperimentTYPE        (fmi2Component, fmi2Boolean, fmi2Real, fmi2Real, fmi2Boolean, fmi2Real);\r
+   typedef fmi2Status fmi2EnterInitializationModeTYPE(fmi2Component);\r
+   typedef fmi2Status fmi2ExitInitializationModeTYPE (fmi2Component);\r
+   typedef fmi2Status fmi2TerminateTYPE              (fmi2Component);\r
+   typedef fmi2Status fmi2ResetTYPE                  (fmi2Component);\r
+\r
+/* Getting and setting variable values */\r
+   typedef fmi2Status fmi2GetRealTYPE   (fmi2Component, const fmi2ValueReference[], size_t, fmi2Real   []);\r
+   typedef fmi2Status fmi2GetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Integer[]);\r
+   typedef fmi2Status fmi2GetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Boolean[]);\r
+   typedef fmi2Status fmi2GetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, fmi2String []);\r
+\r
+   typedef fmi2Status fmi2SetRealTYPE   (fmi2Component, const fmi2ValueReference[], size_t, const fmi2Real   []);\r
+   typedef fmi2Status fmi2SetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Integer[]);\r
+   typedef fmi2Status fmi2SetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Boolean[]);\r
+   typedef fmi2Status fmi2SetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, const fmi2String []);\r
+\r
+/* Getting and setting the internal FMU state */\r
+   typedef fmi2Status fmi2GetFMUstateTYPE           (fmi2Component, fmi2FMUstate*);\r
+   typedef fmi2Status fmi2SetFMUstateTYPE           (fmi2Component, fmi2FMUstate);\r
+   typedef fmi2Status fmi2FreeFMUstateTYPE          (fmi2Component, fmi2FMUstate*);\r
+   typedef fmi2Status fmi2SerializedFMUstateSizeTYPE(fmi2Component, fmi2FMUstate, size_t*);\r
+   typedef fmi2Status fmi2SerializeFMUstateTYPE     (fmi2Component, fmi2FMUstate, fmi2Byte[], size_t);\r
+   typedef fmi2Status fmi2DeSerializeFMUstateTYPE   (fmi2Component, const fmi2Byte[], size_t, fmi2FMUstate*);\r
+\r
+/* Getting partial derivatives */\r
+   typedef fmi2Status fmi2GetDirectionalDerivativeTYPE(fmi2Component, const fmi2ValueReference[], size_t,\r
+                                                                   const fmi2ValueReference[], size_t,\r
+                                                                   const fmi2Real[], fmi2Real[]);\r
+\r
+/***************************************************\r
+Types for Functions for FMI2 for Model Exchange\r
+****************************************************/\r
+\r
+/* Enter and exit the different modes */\r
+   typedef fmi2Status fmi2EnterEventModeTYPE         (fmi2Component);\r
+   typedef fmi2Status fmi2NewDiscreteStatesTYPE      (fmi2Component, fmi2EventInfo*);\r
+   typedef fmi2Status fmi2EnterContinuousTimeModeTYPE(fmi2Component);\r
+   typedef fmi2Status fmi2CompletedIntegratorStepTYPE(fmi2Component, fmi2Boolean, fmi2Boolean*, fmi2Boolean*);\r
+\r
+/* Providing independent variables and re-initialization of caching */\r
+   typedef fmi2Status fmi2SetTimeTYPE            (fmi2Component, fmi2Real);\r
+   typedef fmi2Status fmi2SetContinuousStatesTYPE(fmi2Component, const fmi2Real[], size_t);\r
+\r
+/* Evaluation of the model equations */\r
+   typedef fmi2Status fmi2GetDerivativesTYPE               (fmi2Component, fmi2Real[], size_t);\r
+   typedef fmi2Status fmi2GetEventIndicatorsTYPE           (fmi2Component, fmi2Real[], size_t);\r
+   typedef fmi2Status fmi2GetContinuousStatesTYPE          (fmi2Component, fmi2Real[], size_t);\r
+   typedef fmi2Status fmi2GetNominalsOfContinuousStatesTYPE(fmi2Component, fmi2Real[], size_t);\r
+\r
+\r
+/***************************************************\r
+Types for Functions for FMI2 for Co-Simulation\r
+****************************************************/\r
+\r
+/* Simulating the slave */\r
+   typedef fmi2Status fmi2SetRealInputDerivativesTYPE (fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], const fmi2Real []);\r
+   typedef fmi2Status fmi2GetRealOutputDerivativesTYPE(fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], fmi2Real []);\r
+\r
+   typedef fmi2Status fmi2DoStepTYPE     (fmi2Component, fmi2Real, fmi2Real, fmi2Boolean);\r
+   typedef fmi2Status fmi2CancelStepTYPE (fmi2Component);\r
+\r
+/* Inquire slave status */\r
+   typedef fmi2Status fmi2GetStatusTYPE       (fmi2Component, const fmi2StatusKind, fmi2Status* );\r
+   typedef fmi2Status fmi2GetRealStatusTYPE   (fmi2Component, const fmi2StatusKind, fmi2Real*   );\r
+   typedef fmi2Status fmi2GetIntegerStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Integer*);\r
+   typedef fmi2Status fmi2GetBooleanStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Boolean*);\r
+   typedef fmi2Status fmi2GetStringStatusTYPE (fmi2Component, const fmi2StatusKind, fmi2String* );\r
+\r
+\r
+#ifdef __cplusplus\r
+}  /* end of extern "C" { */\r
+#endif\r
+\r
+#endif /* fmi2FunctionTypes_h */\r