2 Copyright (C) 2012 Modelon AB
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the BSD style license.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 FMILIB_License.txt file for more details.
12 You should have received a copy of the FMILIB_License.txt file
13 along with this program. If not, contact Modelon AB <http://www.modelon.com>.
17 #ifndef FMI2_CAPI_IMPL_H_
18 #define FMI2_CAPI_IMPL_H_
24 #include <FMI2/fmi2_types.h>
25 #include <FMI2/fmi2_functions.h>
26 #include <FMI2/fmi2_enums.h>
27 #include <FMI2/fmi2_capi.h>
28 #include <JM/jm_portability.h>
29 #include <JM/jm_callbacks.h>
31 #define FMI_CAPI_MODULE_NAME "FMICAPI"
34 * \brief C-API struct used as a placeholder for the FMI functions and shared library handler.
38 const char* modelIdentifier;
39 fmi2_callback_functions_t callBackFunctions;
41 jm_callbacks* callbacks;
45 fmi2_fmu_kind_enu_t standard;
52 fmi2_get_version_ft fmi2GetVersion;
53 fmi2_set_debug_logging_ft fmi2SetDebugLogging;
54 fmi2_instantiate_ft fmi2Instantiate;
55 fmi2_free_instance_ft fmi2FreeInstance;
57 fmi2_setup_experiment_ft fmi2SetupExperiment;
58 fmi2_enter_initialization_mode_ft fmi2EnterInitializationMode;
59 fmi2_exit_initialization_mode_ft fmi2ExitInitializationMode;
61 fmi2_terminate_ft fmi2Terminate;
62 fmi2_reset_ft fmi2Reset;
64 fmi2_set_real_ft fmi2SetReal;
65 fmi2_set_integer_ft fmi2SetInteger;
66 fmi2_set_boolean_ft fmi2SetBoolean;
67 fmi2_set_string_ft fmi2SetString;
68 fmi2_get_real_ft fmi2GetReal;
69 fmi2_get_integer_ft fmi2GetInteger;
70 fmi2_get_boolean_ft fmi2GetBoolean;
71 fmi2_get_string_ft fmi2GetString;
73 fmi2_get_fmu_state_ft fmi2GetFMUstate;
\r
74 fmi2_set_fmu_state_ft fmi2SetFMUstate;
\r
75 fmi2_free_fmu_state_ft fmi2FreeFMUstate;
\r
77 fmi2_serialized_fmu_state_size_ft fmi2SerializedFMUstateSize;
\r
78 fmi2_serialize_fmu_state_ft fmi2SerializeFMUstate;
\r
79 fmi2_de_serialize_fmu_state_ft fmi2DeSerializeFMUstate;
\r
81 /* Getting partial derivatives */
\r
82 fmi2_get_directional_derivative_ft fmi2GetDirectionalDerivative;
\r
85 fmi2_enter_event_mode_ft fmi2EnterEventMode;
86 fmi2_new_discrete_states_ft fmi2NewDiscreteStates;
87 fmi2_enter_continuous_time_mode_ft fmi2EnterContinuousTimeMode;
88 fmi2_completed_integrator_step_ft fmi2CompletedIntegratorStep;
90 fmi2_get_types_platform_ft fmi2GetTypesPlatform;
92 fmi2_set_time_ft fmi2SetTime;
93 fmi2_set_continuous_states_ft fmi2SetContinuousStates;
94 fmi2_get_derivatives_ft fmi2GetDerivatives;
95 fmi2_get_event_indicators_ft fmi2GetEventIndicators;
96 fmi2_get_continuous_states_ft fmi2GetContinuousStates;
97 fmi2_get_nominals_of_continuous_states_ft fmi2GetNominalsOfContinuousStates;
100 fmi2_set_real_input_derivatives_ft fmi2SetRealInputDerivatives;
101 fmi2_get_real_output_derivatives_ft fmi2GetRealOutputDerivatives;
102 fmi2_do_step_ft fmi2DoStep;
103 fmi2_cancel_step_ft fmi2CancelStep;
104 fmi2_get_status_ft fmi2GetStatus;
105 fmi2_get_real_status_ft fmi2GetRealStatus;
106 fmi2_get_integer_status_ft fmi2GetIntegerStatus;
107 fmi2_get_boolean_status_ft fmi2GetBooleanStatus;
108 fmi2_get_string_status_ft fmi2GetStringStatus;
116 #endif /* End of header file FMI2_CAPI_IMPL_H_ */