/* Load FMI 2.0 Model Exchange functions */ static jm_status_enu_t fmi2_capi_load_me_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the model exchange interface"); jm_status = fmi2_capi_load_common_fcn(fmu, capabilities); /* Getting and setting the internal FMU state */ /* typedef fmi2Status fmi2GetFMUstateTYPE (fmi2Component, fmi2FMUstate*); typedef fmi2Status fmi2SetFMUstateTYPE (fmi2Component, fmi2FMUstate); typedef fmi2Status fmi2FreeFMUstateTYPE (fmi2Component, fmi2FMUstate*); typedef fmi2Status fmi2SerializedFMUstateSizeTYPE(fmi2Component, fmi2FMUstate, size_t*); typedef fmi2Status fmi2SerializeFMUstateTYPE (fmi2Component, fmi2FMUstate, fmi2Byte[], size_t); typedef fmi2Status fmi2DeSerializeFMUstateTYPE (fmi2Component, const fmi2Byte[], size_t, fmi2FMUstate*); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmi2GetFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SetFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2FreeFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SerializedFMUstateSize,fmi2_me_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SerializeFMUstate,fmi2_me_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2DeSerializeFMUstate,fmi2_me_canSerializeFMUstate); /* Getting directional derivatives */ /* typedef fmi2Status fmi2GetDirectionalDerivativeTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2ValueReference[], size_t, const fmi2Real[], fmi2Real[]); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmi2GetDirectionalDerivative,fmi2_me_providesDirectionalDerivatives); /* Enter and exit the different modes */ /* typedef fmi2Status fmi2EnterEventModeTYPE (fmi2Component); typedef fmi2Status fmi2NewDiscreteStatesTYPE (fmi2Component, fmi2EventInfo*); typedef fmi2Status fmi2EnterContinuousTimeModeTYPE(fmi2Component); typedef fmi2Status fmi2CompletedIntegratorStepTYPE(fmi2Component, fmi2Boolean, fmi2Boolean*, fmi2Boolean*);*/ LOAD_DLL_FUNCTION(fmi2EnterEventMode); LOAD_DLL_FUNCTION(fmi2NewDiscreteStates); LOAD_DLL_FUNCTION(fmi2EnterContinuousTimeMode); LOAD_DLL_FUNCTION(fmi2CompletedIntegratorStep); /* Providing independent variables and re-initialization of caching */ /*typedef fmi2Status fmi2SetTimeTYPE (fmi2Component, fmi2Real); typedef fmi2Status fmi2SetContinuousStatesTYPE(fmi2Component, const fmi2Real[], size_t);*/ LOAD_DLL_FUNCTION(fmi2SetTime); LOAD_DLL_FUNCTION(fmi2SetContinuousStates); /* Evaluation of the model equations */ /* typedef fmi2Status fmi2GetDerivativesTYPE (fmi2Component, fmi2Real[], size_t); typedef fmi2Status fmi2GetEventIndicatorsTYPE (fmi2Component, fmi2Real[], size_t); typedef fmi2Status fmi2GetContinuousStatesTYPE (fmi2Component, fmi2Real[], size_t); typedef fmi2Status fmi2GetNominalsOfContinuousStatesTYPE(fmi2Component, fmi2Real[], size_t);*/ LOAD_DLL_FUNCTION(fmi2GetDerivatives); LOAD_DLL_FUNCTION(fmi2GetEventIndicators); LOAD_DLL_FUNCTION(fmi2GetContinuousStates); LOAD_DLL_FUNCTION(fmi2GetNominalsOfContinuousStates); return jm_status; }
/* Load FMI 2.0 Co-Simulation functions */ static jm_status_enu_t fmi2_capi_load_cs_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the co-simulation interface"); jm_status = fmi2_capi_load_common_fcn(fmu, capabilities); /* Getting and setting the internal FMU state */ /* typedef fmi2Status fmi2GetFMUstateTYPE (fmi2Component, fmi2FMUstate*); typedef fmi2Status fmi2SetFMUstateTYPE (fmi2Component, fmi2FMUstate); typedef fmi2Status fmi2FreeFMUstateTYPE (fmi2Component, fmi2FMUstate*); typedef fmi2Status fmi2SerializedFMUstateSizeTYPE(fmi2Component, fmi2FMUstate, size_t*); typedef fmi2Status fmi2SerializeFMUstateTYPE (fmi2Component, fmi2FMUstate, fmi2Byte[], size_t); typedef fmi2Status fmi2DeSerializeFMUstateTYPE (fmi2Component, const fmi2Byte[], size_t, fmi2FMUstate*); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmi2GetFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SetFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2FreeFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SerializedFMUstateSize,fmi2_cs_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2SerializeFMUstate,fmi2_cs_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmi2DeSerializeFMUstate,fmi2_cs_canSerializeFMUstate); /* Getting directional derivatives */ /* typedef fmi2Status fmi2GetDirectionalDerivativeTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2ValueReference[], size_t, const fmi2Real[], fmi2Real[]);*/ LOAD_DLL_FUNCTION_WITH_FLAG(fmi2GetDirectionalDerivative,fmi2_cs_providesDirectionalDerivatives); /* Simulating the slave */ /* typedef fmi2Status fmi2SetRealInputDerivativesTYPE (fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], const fmi2Real []); typedef fmi2Status fmi2GetRealOutputDerivativesTYPE(fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], fmi2Real []); */ LOAD_DLL_FUNCTION(fmi2SetRealInputDerivatives); LOAD_DLL_FUNCTION(fmi2GetRealOutputDerivatives); /* typedef fmi2Status fmi2DoStepTYPE (fmi2Component, fmi2Real, fmi2Real, fmi2Boolean); typedef fmi2Status fmi2CancelStepTYPE (fmi2Component); */ LOAD_DLL_FUNCTION(fmi2CancelStep); LOAD_DLL_FUNCTION(fmi2DoStep); /* Inquire slave status */ /* typedef fmi2Status fmi2GetStatusTYPE (fmi2Component, const fmi2StatusKind, fmi2Status* ); typedef fmi2Status fmi2GetRealStatusTYPE (fmi2Component, const fmi2StatusKind, fmi2Real* ); typedef fmi2Status fmi2GetIntegerStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Integer*); typedef fmi2Status fmi2GetBooleanStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Boolean*); typedef fmi2Status fmi2GetStringStatusTYPE (fmi2Component, const fmi2StatusKind, fmi2String* ); */ LOAD_DLL_FUNCTION(fmi2GetStatus); LOAD_DLL_FUNCTION(fmi2GetRealStatus); LOAD_DLL_FUNCTION(fmi2GetIntegerStatus); LOAD_DLL_FUNCTION(fmi2GetBooleanStatus); LOAD_DLL_FUNCTION(fmi2GetStringStatus); return jm_status; }
static jm_status_enu_t fmi2_capi_load_common_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; /*************************************************** Types for Common Functions ****************************************************/ /* Inquire version numbers of header files and setting logging status */ /* typedef const char* fmi2GetTypesPlatformTYPE(void); typedef const char* fmi2GetVersionTYPE(void); typedef fmi2Status fmi2SetDebugLoggingTYPE(fmi2Component, fmi2Boolean, size_t, const fmi2String[]); */ LOAD_DLL_FUNCTION(fmi2GetTypesPlatform); LOAD_DLL_FUNCTION(fmi2GetVersion); LOAD_DLL_FUNCTION(fmi2SetDebugLogging); /* Enter and exit initialization mode, terminate and reset */ /* typedef fmi2Status fmi2TerminateTYPE (fmi2Component); typedef fmi2Status fmi2ResetTYPE (fmi2Component); */ LOAD_DLL_FUNCTION(fmi2Terminate); LOAD_DLL_FUNCTION(fmi2Reset); /* Creation and destruction of instances and setting debug status */ /*typedef fmi2Component fmi2InstantiateTYPE (fmi2String, fmi2Type, fmi2String, fmi2String, const fmi2CallbackFunctions*, fmi2Boolean, fmi2Boolean); typedef void fmi2FreeInstanceTYPE(fmi2Component);*/ LOAD_DLL_FUNCTION(fmi2Instantiate); LOAD_DLL_FUNCTION(fmi2FreeInstance); /* typedef fmi2Status fmi2SetupExperimentTYPE (fmi2Component, fmi2Boolean, fmi2Real, fmi2Real, fmi2Boolean, fmi2Real); typedef fmi2Status fmi2EnterInitializationModeTYPE(fmi2Component); typedef fmi2Status fmi2ExitInitializationModeTYPE (fmi2Component); */ LOAD_DLL_FUNCTION(fmi2SetupExperiment); LOAD_DLL_FUNCTION(fmi2EnterInitializationMode); LOAD_DLL_FUNCTION(fmi2ExitInitializationMode); /* Getting and setting variable values */ /* typedef fmi2Status fmi2GetRealTYPE (fmi2Component, const fmi2ValueReference[], size_t, fmi2Real []); typedef fmi2Status fmi2GetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Integer[]); typedef fmi2Status fmi2GetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Boolean[]); typedef fmi2Status fmi2GetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, fmi2String []); */ LOAD_DLL_FUNCTION(fmi2GetReal); LOAD_DLL_FUNCTION(fmi2GetInteger); LOAD_DLL_FUNCTION(fmi2GetBoolean); LOAD_DLL_FUNCTION(fmi2GetString); /* typedef fmi2Status fmi2SetRealTYPE (fmi2Component, const fmi2ValueReference[], size_t, const fmi2Real []); typedef fmi2Status fmi2SetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Integer[]); typedef fmi2Status fmi2SetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Boolean[]); typedef fmi2Status fmi2SetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, const fmi2String []); */ LOAD_DLL_FUNCTION(fmi2SetReal); LOAD_DLL_FUNCTION(fmi2SetInteger); LOAD_DLL_FUNCTION(fmi2SetBoolean); LOAD_DLL_FUNCTION(fmi2SetString); return jm_status; }
/* Load FMI 1.0 Co-Simulation functions */ static jm_status_enu_t fmi1_capi_load_cs_fcn(fmi1_capi_t* fmu) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the co-simulation interface"); /* Workaround for Dymola 2012 and SimulationX 3.x */ if (fmi1_capi_get_fcn(fmu, "fmiGetTypesPlatform",(jm_dll_function_ptr*)&fmu->fmiGetTypesPlatform) == jm_status_error) { jm_log_warning(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Could not load the FMI function 'fmiGetTypesPlatform'. %s. Trying to load fmiGetModelTypesPlatform instead.", jm_portability_get_last_dll_error()); jm_status = jm_status_warning; if (fmi1_capi_get_fcn(fmu, "fmiGetModelTypesPlatform", (jm_dll_function_ptr*)&fmu->fmiGetTypesPlatform) == jm_status_error) { jm_log_error(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Could not load the FMI function 'fmiGetModelTypesPlatform'. %s", jm_portability_get_last_dll_error()); jm_status = jm_status_error; } } LOAD_DLL_FUNCTION(fmiInstantiateSlave); LOAD_DLL_FUNCTION(fmiInitializeSlave); LOAD_DLL_FUNCTION(fmiTerminateSlave); LOAD_DLL_FUNCTION(fmiResetSlave); LOAD_DLL_FUNCTION(fmiFreeSlaveInstance); LOAD_DLL_FUNCTION(fmiSetRealInputDerivatives); LOAD_DLL_FUNCTION(fmiGetRealOutputDerivatives); LOAD_DLL_FUNCTION(fmiCancelStep); LOAD_DLL_FUNCTION(fmiDoStep); LOAD_DLL_FUNCTION(fmiGetStatus); LOAD_DLL_FUNCTION(fmiGetRealStatus); LOAD_DLL_FUNCTION(fmiGetIntegerStatus); LOAD_DLL_FUNCTION(fmiGetBooleanStatus); LOAD_DLL_FUNCTION(fmiGetStringStatus); LOAD_DLL_FUNCTION(fmiGetVersion); LOAD_DLL_FUNCTION(fmiSetDebugLogging); LOAD_DLL_FUNCTION(fmiSetReal); LOAD_DLL_FUNCTION(fmiSetInteger); LOAD_DLL_FUNCTION(fmiSetBoolean); LOAD_DLL_FUNCTION(fmiSetString); LOAD_DLL_FUNCTION(fmiGetReal); LOAD_DLL_FUNCTION(fmiGetInteger); LOAD_DLL_FUNCTION(fmiGetBoolean); LOAD_DLL_FUNCTION(fmiGetString); return jm_status; }
/* Load FMI 1.0 Model Exchange functions */ static jm_status_enu_t fmi1_capi_load_me_fcn(fmi1_capi_t* fmu) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the model exchange interface"); LOAD_DLL_FUNCTION(fmiGetModelTypesPlatform); LOAD_DLL_FUNCTION(fmiInstantiateModel); LOAD_DLL_FUNCTION(fmiFreeModelInstance); LOAD_DLL_FUNCTION(fmiSetTime); LOAD_DLL_FUNCTION(fmiSetContinuousStates); LOAD_DLL_FUNCTION(fmiCompletedIntegratorStep); LOAD_DLL_FUNCTION(fmiInitialize); LOAD_DLL_FUNCTION(fmiGetDerivatives); LOAD_DLL_FUNCTION(fmiGetEventIndicators); LOAD_DLL_FUNCTION(fmiEventUpdate); LOAD_DLL_FUNCTION(fmiGetContinuousStates); LOAD_DLL_FUNCTION(fmiGetNominalContinuousStates); LOAD_DLL_FUNCTION(fmiGetStateValueReferences); LOAD_DLL_FUNCTION(fmiTerminate); LOAD_DLL_FUNCTION(fmiGetVersion); LOAD_DLL_FUNCTION(fmiSetDebugLogging); LOAD_DLL_FUNCTION(fmiSetReal); LOAD_DLL_FUNCTION(fmiSetInteger); LOAD_DLL_FUNCTION(fmiSetBoolean); LOAD_DLL_FUNCTION(fmiSetString); LOAD_DLL_FUNCTION(fmiGetReal); LOAD_DLL_FUNCTION(fmiGetInteger); LOAD_DLL_FUNCTION(fmiGetBoolean); LOAD_DLL_FUNCTION(fmiGetString); return jm_status; }
static jm_status_enu_t fmi2_capi_load_common_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; /*************************************************** Types for Common Functions ****************************************************/ /* Inquire version numbers of header files and setting logging status */ /* typedef const char* fmiGetTypesPlatformTYPE(); typedef const char* fmiGetVersionTYPE(); typedef fmiStatus fmiSetDebugLoggingTYPE(fmiComponent, fmiBoolean, size_t, const fmiString []); */ LOAD_DLL_FUNCTION(fmiGetTypesPlatform); LOAD_DLL_FUNCTION(fmiGetVersion); LOAD_DLL_FUNCTION(fmiSetDebugLogging); /* Getting and setting variable values */ /* typedef fmiStatus fmiGetRealTYPE (fmiComponent, const fmiValueReference[], size_t, fmiReal []); typedef fmiStatus fmiGetIntegerTYPE(fmiComponent, const fmiValueReference[], size_t, fmiInteger[]); typedef fmiStatus fmiGetBooleanTYPE(fmiComponent, const fmiValueReference[], size_t, fmiBoolean[]); typedef fmiStatus fmiGetStringTYPE (fmiComponent, const fmiValueReference[], size_t, fmiString []); */ LOAD_DLL_FUNCTION(fmiGetReal); LOAD_DLL_FUNCTION(fmiGetInteger); LOAD_DLL_FUNCTION(fmiGetBoolean); LOAD_DLL_FUNCTION(fmiGetString); /* typedef fmiStatus fmiSetRealTYPE (fmiComponent, const fmiValueReference[], size_t, const fmiReal []); typedef fmiStatus fmiSetIntegerTYPE(fmiComponent, const fmiValueReference[], size_t, const fmiInteger[]); typedef fmiStatus fmiSetBooleanTYPE(fmiComponent, const fmiValueReference[], size_t, const fmiBoolean[]); typedef fmiStatus fmiSetStringTYPE (fmiComponent, const fmiValueReference[], size_t, const fmiString []); */ LOAD_DLL_FUNCTION(fmiSetReal); LOAD_DLL_FUNCTION(fmiSetInteger); LOAD_DLL_FUNCTION(fmiSetBoolean); LOAD_DLL_FUNCTION(fmiSetString); return jm_status; }
/* Load FMI 1.0 Model Exchange functions */ static jm_status_enu_t fmi2_capi_load_me_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the model exchange interface"); jm_status = fmi2_capi_load_common_fcn(fmu, capabilities); /* Getting and setting the internal FMU state */ /* typedef fmiStatus fmiGetFMUstateTYPE (fmiComponent, fmiFMUstate*); typedef fmiStatus fmiSetFMUstateTYPE (fmiComponent, fmiFMUstate); typedef fmiStatus fmiFreeFMUstateTYPE (fmiComponent, fmiFMUstate*); typedef fmiStatus fmiSerializedFMUstateSizeTYPE(fmiComponent, fmiFMUstate, size_t*); typedef fmiStatus fmiSerializeFMUstateTYPE (fmiComponent, fmiFMUstate, fmiByte[], size_t); typedef fmiStatus fmiDeSerializeFMUstateTYPE (fmiComponent, const fmiByte[], size_t, fmiFMUstate*); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmiGetFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSetFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiFreeFMUstate,fmi2_me_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSerializedFMUstateSize,fmi2_me_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSerializeFMUstate,fmi2_me_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiDeSerializeFMUstate,fmi2_me_canSerializeFMUstate); /* Getting partial derivatives */ /* typedef fmiStatus fmiGetPartialDerivativesTYPE (fmiComponent, setMatrixElement, void*, void*, void*, void*); typedef fmiStatus fmiGetDirectionalDerivativeTYPE(fmiComponent, const fmiValueReference[], size_t, const fmiValueReference[], size_t, const fmiReal[], fmiReal[]); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmiGetDirectionalDerivative,fmi2_me_providesDirectionalDerivatives); /* Creation and destruction of model instances and setting debug status */ /*typedef fmiComponent fmiInstantiateModelTYPE (fmiString, fmiString, fmiString, const fmiCallbackFunctions*, fmiBoolean, fmiBoolean); typedef void fmiFreeModelInstanceTYPE(fmiComponent);*/ LOAD_DLL_FUNCTION(fmiInstantiateModel); LOAD_DLL_FUNCTION(fmiFreeModelInstance); /* Providing independent variables and re-initialization of caching */ /*typedef fmiStatus fmiSetTimeTYPE (fmiComponent, fmiReal); typedef fmiStatus fmiSetContinuousStatesTYPE (fmiComponent, const fmiReal[], size_t); typedef fmiStatus fmiCompletedIntegratorStepTYPE(fmiComponent, fmiBoolean*); */ LOAD_DLL_FUNCTION(fmiSetTime); LOAD_DLL_FUNCTION(fmiSetContinuousStates); LOAD_DLL_FUNCTION(fmiCompletedIntegratorStep); /* Evaluation of the model equations */ /* typedef fmiStatus fmiInitializeModelTYPE (fmiComponent, fmiBoolean, fmiReal, fmiEventInfo*); typedef fmiStatus fmiEventUpdateTYPE (fmiComponent, fmiBoolean, fmiEventInfo*); typedef fmiStatus fmiCompletedEventIterationTYPE(fmiComponent); typedef fmiStatus fmiTerminateTYPE (fmiComponent); */ LOAD_DLL_FUNCTION(fmiInitializeModel); LOAD_DLL_FUNCTION(fmiEventUpdate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiCompletedEventIteration, fmi2_me_completedEventIterationIsProvided); LOAD_DLL_FUNCTION(fmiTerminate); /* typedef fmiStatus fmiGetDerivativesTYPE (fmiComponent, fmiReal[], size_t); typedef fmiStatus fmiGetEventIndicatorsTYPE (fmiComponent, fmiReal[], size_t); typedef fmiStatus fmiGetContinuousStatesTYPE (fmiComponent, fmiReal[], size_t); typedef fmiStatus fmiGetNominalContinuousStatesTYPE(fmiComponent, fmiReal[], size_t); typedef fmiStatus fmiGetStateValueReferencesTYPE (fmiComponent, fmiValueReference[], size_t); */ LOAD_DLL_FUNCTION(fmiGetDerivatives); LOAD_DLL_FUNCTION(fmiGetEventIndicators); LOAD_DLL_FUNCTION(fmiGetContinuousStates); LOAD_DLL_FUNCTION(fmiGetNominalContinuousStates); LOAD_DLL_FUNCTION(fmiGetStateValueReferences); return jm_status; }
/* Load FMI 2.0 Co-Simulation functions */ static jm_status_enu_t fmi2_capi_load_cs_fcn(fmi2_capi_t* fmu, unsigned int capabilities[]) { jm_status_enu_t jm_status = jm_status_success; jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Loading functions for the co-simulation interface"); jm_status = fmi2_capi_load_common_fcn(fmu, capabilities); /* Getting and setting the internal FMU state */ /* typedef fmiStatus fmiGetFMUstateTYPE (fmiComponent, fmiFMUstate*); typedef fmiStatus fmiSetFMUstateTYPE (fmiComponent, fmiFMUstate); typedef fmiStatus fmiFreeFMUstateTYPE (fmiComponent, fmiFMUstate*); typedef fmiStatus fmiSerializedFMUstateSizeTYPE(fmiComponent, fmiFMUstate, size_t*); typedef fmiStatus fmiSerializeFMUstateTYPE (fmiComponent, fmiFMUstate, fmiByte[], size_t); typedef fmiStatus fmiDeSerializeFMUstateTYPE (fmiComponent, const fmiByte[], size_t, fmiFMUstate*); */ LOAD_DLL_FUNCTION_WITH_FLAG(fmiGetFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSetFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiFreeFMUstate,fmi2_cs_canGetAndSetFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSerializedFMUstateSize,fmi2_cs_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiSerializeFMUstate,fmi2_cs_canSerializeFMUstate); LOAD_DLL_FUNCTION_WITH_FLAG(fmiDeSerializeFMUstate,fmi2_cs_canSerializeFMUstate); /* Getting partial derivatives */ /* typedef fmiStatus fmiGetPartialDerivativesTYPE (fmiComponent, setMatrixElement, void*, void*, void*, void*); typedef fmiStatus fmiGetDirectionalDerivativeTYPE(fmiComponent, const fmiValueReference[], size_t, const fmiValueReference[], size_t, const fmiReal[], fmiReal[]); */ /*??? LOAD_DLL_FUNCTION_WITH_FLAG(fmiGetDirectionalDerivative,fmi2_cs_providesDirectionalDerivatives); */ /* Creation and destruction of slave instances */ /* typedef fmiComponent fmiInstantiateSlaveTYPE (fmiString, fmiString, fmiString, const fmiCallbackFunctions*, fmiBoolean, fmiBoolean); typedef void fmiFreeSlaveInstanceTYPE(fmiComponent); */ LOAD_DLL_FUNCTION(fmiInstantiateSlave); LOAD_DLL_FUNCTION(fmiFreeSlaveInstance); /* Simulating the slave */ /* typedef fmiStatus fmiInitializeSlaveTYPE(fmiComponent, fmiReal, fmiReal, fmiBoolean, fmiReal); typedef fmiStatus fmiTerminateSlaveTYPE (fmiComponent); typedef fmiStatus fmiResetSlaveTYPE (fmiComponent); */ LOAD_DLL_FUNCTION(fmiInitializeSlave); LOAD_DLL_FUNCTION(fmiTerminateSlave); LOAD_DLL_FUNCTION(fmiResetSlave); /* typedef fmiStatus fmiSetRealInputDerivativesTYPE (fmiComponent, const fmiValueReference [], size_t, const fmiInteger [], const fmiReal []); typedef fmiStatus fmiGetRealOutputDerivativesTYPE(fmiComponent, const fmiValueReference [], size_t, const fmiInteger [], fmiReal []); */ LOAD_DLL_FUNCTION(fmiSetRealInputDerivatives); LOAD_DLL_FUNCTION(fmiGetRealOutputDerivatives); /* typedef fmiStatus fmiDoStepTYPE (fmiComponent, fmiReal, fmiReal, fmiBoolean); typedef fmiStatus fmiCancelStepTYPE (fmiComponent); */ LOAD_DLL_FUNCTION(fmiCancelStep); LOAD_DLL_FUNCTION(fmiDoStep); /* Inquire slave status */ /* typedef fmiStatus fmiGetStatusTYPE (fmiComponent, const fmiStatusKind, fmiStatus* ); typedef fmiStatus fmiGetRealStatusTYPE (fmiComponent, const fmiStatusKind, fmiReal* ); typedef fmiStatus fmiGetIntegerStatusTYPE(fmiComponent, const fmiStatusKind, fmiInteger*); typedef fmiStatus fmiGetBooleanStatusTYPE(fmiComponent, const fmiStatusKind, fmiBoolean*); typedef fmiStatus fmiGetStringStatusTYPE (fmiComponent, const fmiStatusKind, fmiString* ); */ LOAD_DLL_FUNCTION(fmiGetStatus); LOAD_DLL_FUNCTION(fmiGetRealStatus); LOAD_DLL_FUNCTION(fmiGetIntegerStatus); LOAD_DLL_FUNCTION(fmiGetBooleanStatus); LOAD_DLL_FUNCTION(fmiGetStringStatus); return jm_status; }