--- /dev/null
+/*\r
+Copyright (C) 2012 Modelon AB\r
+\r
+This program is free software: you can redistribute it and/or modify\r
+it under the terms of the BSD style license.\r
+\r
+the Free Software Foundation, version 3 of the License.\r
+\r
+This program is distributed in the hope that it will be useful,\r
+but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+FMILIB_License.txt file for more details.\r
+\r
+You should have received a copy of the FMILIB_License.txt file\r
+along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
+*/\r
+\r
+#ifndef FMU2_MODEL_H_\r
+#define FMU2_MODEL_H_\r
+#include <FMI2/fmi2Functions.h>\r
+\r
+#include <fmu_dummy/fmu2_model_defines.h>\r
+#ifndef FMI2_Export\r
+ #define FMI2_Export DllExport\r
+#endif\r
+typedef struct {\r
+ /*************** FMI ME 2.0 ****************/\r
+ fmi2Real states [N_STATES];\r
+ fmi2Real states_nom [N_STATES];\r
+ fmi2Real states_der [N_STATES];\r
+ fmi2Real event_indicators[N_EVENT_INDICATORS];\r
+ fmi2Real reals [N_REAL];\r
+ fmi2Integer integers [N_INTEGER];\r
+ fmi2Boolean booleans [N_BOOLEAN];\r
+ fmi2String strings [N_STRING];\r
+\r
+ /* fmiInstantiateModel */\r
+ fmi2Boolean loggingOn;\r
+ char instanceName [BUFFER];\r
+ char GUID [BUFFER];\r
+ const fmi2CallbackFunctions* functions;\r
+\r
+ /* fmiSetTime */\r
+ fmi2Real fmitime;\r
+\r
+ /* fmiInitializeModel */\r
+ fmi2Boolean toleranceControlled;\r
+ fmi2Real relativeTolerance;\r
+ fmi2EventInfo eventInfo;\r
+\r
+ /*************** FMI CS 2.0. Depends on the ME fields above and functions ****************/\r
+ fmi2Real states_prev [N_STATES];\r
+\r
+ /* fmiInstantiateSlave */\r
+ char fmuLocation [BUFFER];\r
+ fmi2Boolean visible;\r
+\r
+ /* fmiInitializeSlave */\r
+ fmi2Real tStart;\r
+ fmi2Boolean StopTimeDefined;\r
+ fmi2Real tStop;\r
+\r
+ /* fmiSetRealInputDerivatives */\r
+ fmi2Real input_real [N_INPUT_REAL][N_INPUT_REAL_MAX_ORDER + 1];\r
+\r
+ /* fmiGetRealOutputDerivatives */\r
+ fmi2Real output_real [N_OUTPUT_REAL][N_OUTPUT_REAL_MAX_ORDER + 1];\r
+\r
+} component_t;\r
+\r
+typedef component_t* component_ptr_t;\r
+\r
+/* FMI 2.0 Common Functions */\r
+const char* fmi_get_version();\r
+\r
+fmi2Status fmi_set_debug_logging(\r
+ fmi2Component c,\r
+ fmi2Boolean loggingOn);\r
+\r
+fmi2Component fmi_instantiate (\r
+ fmi2String instanceName,\r
+ fmi2Type fmuType,\r
+ fmi2String fmuGUID,\r
+ fmi2String fmuLocation,\r
+ const fmi2CallbackFunctions* functions,\r
+ fmi2Boolean visible,\r
+ fmi2Boolean loggingOn);\r
+\r
+void fmi_free_instance(\r
+ fmi2Component c);\r
+\r
+fmi2Status fmi_setup_experiment(fmi2Component c,\r
+ fmi2Boolean toleranceDefined, fmi2Real tolerance,\r
+ fmi2Real startTime, fmi2Boolean stopTimeDefined,\r
+ fmi2Real stopTime);\r
+fmi2Status fmi_enter_initialization_mode(fmi2Component c);\r
+fmi2Status fmi_exit_initialization_mode(fmi2Component c);\r
+\r
+fmi2Status fmi_terminate(fmi2Component c);\r
+\r
+fmi2Status fmi_reset(\r
+ fmi2Component c);\r
+\r
+\r
+fmi2Status fmi_get_real( \r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr, fmi2Real value[]);\r
+\r
+fmi2Status fmi_get_integer( \r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ fmi2Integer value[]);\r
+fmi2Status fmi_get_boolean(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ fmi2Boolean value[]);\r
+\r
+fmi2Status fmi_get_string(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ fmi2String value[]);\r
+\r
+fmi2Status fmi_set_real(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2Real value[]);\r
+fmi2Status fmi_set_integer(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2Integer value[]);\r
+\r
+fmi2Status fmi_set_boolean(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2Boolean value[]);\r
+\r
+fmi2Status fmi_set_string(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2String value[]);\r
+\r
+/* FMI 2.0 ME Functions */\r
+const char* fmi_get_model_types_platform();\r
+\r
+fmi2Status fmi_enter_event_mode(fmi2Component c);\r
+fmi2Status fmi_new_discrete_states(fmi2Component c, fmi2EventInfo* eventInfo);\r
+fmi2Status fmi_enter_continuous_time_mode(fmi2Component c);\r
+\r
+fmi2Status fmi_set_time(\r
+ fmi2Component c,\r
+ fmi2Real fmitime);\r
+\r
+fmi2Status fmi_set_continuous_states(\r
+ fmi2Component c,\r
+ const fmi2Real x[],\r
+ size_t nx);\r
+\r
+fmi2Status fmi_completed_integrator_step(\r
+ fmi2Component c,\r
+ fmi2Boolean noSetFMUStatePriorToCurrentPoint,\r
+ fmi2Boolean* enterEventMode, fmi2Boolean* terminateSimulation);\r
+\r
+fmi2Status fmi_get_derivatives(\r
+ fmi2Component c,\r
+ fmi2Real derivatives[],\r
+ size_t nx);\r
+\r
+fmi2Status fmi_get_event_indicators(\r
+ fmi2Component c,\r
+ fmi2Real eventIndicators[],\r
+ size_t ni);\r
+\r
+fmi2Status fmi_get_continuous_states(\r
+ fmi2Component c,\r
+ fmi2Real states[],\r
+ size_t nx);\r
+\r
+fmi2Status fmi_get_nominals_of_continuousstates( \r
+ fmi2Component c,\r
+ fmi2Real x_nominal[],\r
+ size_t nx);\r
+\r
+\r
+/* FMI 2.0 CS Functions */\r
+#ifdef fmi2Functions_h\r
+\r
+const char* fmi_get_types_platform();\r
+\r
+void fmi_free_slave_instance(\r
+ fmi2Component c);\r
+\r
+fmi2Status fmi_set_real_input_derivatives(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2Integer order[],\r
+ const fmi2Real value[]);\r
+\r
+fmi2Status fmi_get_real_output_derivatives(\r
+ fmi2Component c,\r
+ const fmi2ValueReference vr[],\r
+ size_t nvr,\r
+ const fmi2Integer order[],\r
+ fmi2Real value[]);\r
+\r
+fmi2Status fmi_cancel_step(\r
+ fmi2Component c);\r
+fmi2Status fmi_do_step(\r
+ fmi2Component c,\r
+ fmi2Real currentCommunicationPoint,\r
+ fmi2Real communicationStepSize,\r
+ fmi2Boolean newStep);\r
+\r
+fmi2Status fmi_get_status(\r
+ fmi2Component c,\r
+ const fmi2StatusKind s,\r
+ fmi2Status* value);\r
+\r
+fmi2Status fmi_get_real_status(\r
+ fmi2Component c,\r
+ const fmi2StatusKind s,\r
+ fmi2Real* value);\r
+\r
+fmi2Status fmi_get_integer_status(\r
+ fmi2Component c,\r
+ const fmi2StatusKind s,\r
+ fmi2Integer* value);\r
+\r
+fmi2Status fmi_get_boolean_status(\r
+ fmi2Component c,\r
+ const fmi2StatusKind s,\r
+ fmi2Boolean* value);\r
+\r
+fmi2Status fmi_get_string_status(\r
+ fmi2Component c,\r
+ const fmi2StatusKind s,\r
+ fmi2String* value);\r
+\r
+#endif /* End of fmi2Functions_h */\r
+#endif /* End of header FMU2_MODEL_H_ */\r