--- /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
+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 FM1_MODEL_H_\r
+#define FM1_MODEL_H_\r
+\r
+#include <fmu_dummy/fmu1_model_defines.h>\r
+\r
+typedef struct {\r
+ /*************** FMI ME 1.0 ****************/\r
+ fmiReal states [N_STATES];\r
+ fmiReal states_nom [N_STATES];\r
+ fmiValueReference states_vr [N_STATES];\r
+ fmiReal states_der [N_STATES];\r
+ fmiReal event_indicators[N_EVENT_INDICATORS];\r
+ fmiReal reals [N_REAL];\r
+ fmiInteger integers [N_INTEGER];\r
+ fmiBoolean booleans [N_BOOLEAN];\r
+ fmiString strings [N_STRING];\r
+\r
+ /* fmiInstantiateModel */\r
+ fmiBoolean loggingOn;\r
+ char instanceName [BUFFER];\r
+ char GUID [BUFFER];\r
+ fmiCallbackFunctions functions;\r
+\r
+ /* fmiSetTime */\r
+ fmiReal fmitime;\r
+\r
+ /* fmiCompletedIntegratorStep */\r
+ fmiBoolean callEventUpdate;\r
+\r
+ /* fmiInitialize */\r
+ fmiBoolean toleranceControlled;\r
+ fmiReal relativeTolerance;\r
+ fmiEventInfo eventInfo;\r
+\r
+ /*************** FMI CS 1.0. Depends on the ME fields above and functions ****************/\r
+ fmiReal states_prev [N_STATES];\r
+\r
+ /* fmiInstantiateSlave */\r
+ char fmuLocation [BUFFER];\r
+ char mimeType [BUFFER];\r
+ fmiReal timeout;\r
+ fmiBoolean visible;\r
+ fmiBoolean interactive;\r
+\r
+ /* fmiInitializeSlave */\r
+ fmiReal tStart;\r
+ fmiBoolean StopTimeDefined;\r
+ fmiReal tStop;\r
+\r
+ /* fmiSetRealInputDerivatives */\r
+ fmiReal input_real [N_INPUT_REAL][N_INPUT_REAL_MAX_ORDER + 1];\r
+\r
+ /* fmiGetRealOutputDerivatives */\r
+ fmiReal 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 1.0 Common Functions */\r
+const char* fmi_get_version();\r
+\r
+fmiStatus fmi_set_debug_logging(\r
+ fmiComponent c,\r
+ fmiBoolean loggingOn);\r
+\r
+fmiStatus fmi_get_real( \r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr, fmiReal value[]);\r
+\r
+fmiStatus fmi_get_integer( \r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ fmiInteger value[]);\r
+fmiStatus fmi_get_boolean(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ fmiBoolean value[]);\r
+\r
+fmiStatus fmi_get_string(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ fmiString value[]);\r
+\r
+fmiStatus fmi_set_real(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiReal value[]);\r
+fmiStatus fmi_set_integer(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiInteger value[]);\r
+\r
+fmiStatus fmi_set_boolean(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiBoolean value[]);\r
+\r
+fmiStatus fmi_set_string(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiString value[]);\r
+\r
+/* FMI 1.0 ME Functions */\r
+const char* fmi_get_model_types_platform();\r
+\r
+fmiComponent fmi_instantiate_model(\r
+ fmiString instanceName,\r
+ fmiString GUID,\r
+ fmiCallbackFunctions functions,\r
+ fmiBoolean loggingOn);\r
+\r
+void fmi_free_model_instance(\r
+ fmiComponent c);\r
+\r
+fmiStatus fmi_set_time(\r
+ fmiComponent c,\r
+ fmiReal fmitime);\r
+\r
+fmiStatus fmi_set_continuous_states(\r
+ fmiComponent c,\r
+ const fmiReal x[],\r
+ size_t nx);\r
+\r
+fmiStatus fmi_completed_integrator_step(\r
+ fmiComponent c,\r
+ fmiBoolean* callEventUpdate);\r
+\r
+fmiStatus fmi_initialize(\r
+ fmiComponent c,\r
+ fmiBoolean toleranceControlled,\r
+ fmiReal relativeTolerance,\r
+ fmiEventInfo* eventInfo);\r
+\r
+fmiStatus fmi_get_derivatives(\r
+ fmiComponent c,\r
+ fmiReal derivatives[],\r
+ size_t nx);\r
+\r
+fmiStatus fmi_get_event_indicators(\r
+ fmiComponent c,\r
+ fmiReal eventIndicators[],\r
+ size_t ni);\r
+\r
+fmiStatus fmi_event_update(\r
+ fmiComponent c,\r
+ fmiBoolean intermediateResults,\r
+ fmiEventInfo* eventInfo);\r
+fmiStatus fmi_get_continuous_states(\r
+ fmiComponent c,\r
+ fmiReal states[],\r
+ size_t nx);\r
+\r
+fmiStatus fmi_get_nominal_continuousstates( \r
+ fmiComponent c,\r
+ fmiReal x_nominal[],\r
+ size_t nx);\r
+\r
+fmiStatus fmi_get_state_value_references(\r
+ fmiComponent c,\r
+ fmiValueReference vrx[],\r
+ size_t nx);\r
+\r
+fmiStatus fmi_terminate(fmiComponent c);\r
+\r
+/* FMI 1.0 CS Functions */\r
+#ifdef fmiFunctions_h\r
+\r
+const char* fmi_get_types_platform();\r
+\r
+fmiComponent fmi_instantiate_slave(\r
+ fmiString instanceName,\r
+ fmiString fmuGUID,\r
+ fmiString fmuLocation,\r
+ fmiString mimeType,\r
+ fmiReal timeout,\r
+ fmiBoolean visible,\r
+ fmiBoolean interactive,\r
+ fmiCallbackFunctions functions,\r
+ fmiBoolean loggingOn);\r
+\r
+fmiStatus fmi_initialize_slave(\r
+ fmiComponent c,\r
+ fmiReal tStart,\r
+ fmiBoolean StopTimeDefined,\r
+ fmiReal tStop);\r
+\r
+fmiStatus fmi_terminate_slave(\r
+ fmiComponent c);\r
+\r
+fmiStatus fmi_reset_slave(\r
+ fmiComponent c);\r
+\r
+void fmi_free_slave_instance(\r
+ fmiComponent c);\r
+\r
+fmiStatus fmi_set_real_input_derivatives(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiInteger order[],\r
+ const fmiReal value[]);\r
+\r
+fmiStatus fmi_get_real_output_derivatives(\r
+ fmiComponent c,\r
+ const fmiValueReference vr[],\r
+ size_t nvr,\r
+ const fmiInteger order[],\r
+ fmiReal value[]);\r
+\r
+fmiStatus fmi_cancel_step(\r
+ fmiComponent c);\r
+fmiStatus fmi_do_step(\r
+ fmiComponent c,\r
+ fmiReal currentCommunicationPoint,\r
+ fmiReal communicationStepSize,\r
+ fmiBoolean newStep);\r
+\r
+fmiStatus fmi_get_status(\r
+ fmiComponent c,\r
+ const fmiStatusKind s,\r
+ fmiStatus* value);\r
+\r
+fmiStatus fmi_get_real_status(\r
+ fmiComponent c,\r
+ const fmiStatusKind s,\r
+ fmiReal* value);\r
+\r
+fmiStatus fmi_get_integer_status(\r
+ fmiComponent c,\r
+ const fmiStatusKind s,\r
+ fmiInteger* value);\r
+\r
+fmiStatus fmi_get_boolean_status(\r
+ fmiComponent c,\r
+ const fmiStatusKind s,\r
+ fmiBoolean* value);\r
+\r
+fmiStatus fmi_get_string_status(\r
+ fmiComponent c,\r
+ const fmiStatusKind s,\r
+ fmiString* value);\r
+\r
+#endif /* End of fmiFunctions_h */\r
+#endif /* End of header FM1_MODEL_H_ */
\ No newline at end of file