/* 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; }
/* 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; }