--- /dev/null
+#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