From 7c2480c1d3aedb628644d75465c005082e030783 Mon Sep 17 00:00:00 2001 From: David Heejong Park Date: Fri, 24 Jan 2025 16:55:01 +0100 Subject: [PATCH] Reading canGetAndSetFMUstate and canSerializeFMUstate from model description file --- include/cosim/model_description.hpp | 10 ++++++++++ src/cosim/fmi/v2/fmu.cpp | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/include/cosim/model_description.hpp b/include/cosim/model_description.hpp index c9dfb1bb..90a69b74 100644 --- a/include/cosim/model_description.hpp +++ b/include/cosim/model_description.hpp @@ -59,6 +59,13 @@ enum variable_variability continuous }; +/// Subset of Co-Simulation v2 capabilities in the XML schema +struct cosim_capabilities +{ + bool can_get_and_set_fmu_state{}; + bool can_serialize_fmu_state{}; +}; + /// Returns a textual representation of `v`. constexpr const char* to_text(variable_type v) @@ -195,6 +202,9 @@ struct model_description /// Variable descriptions. std::vector variables; + + /// FMI 2.0 Co-simulation capabilities + cosim_capabilities capabilities; }; /// Getter for returning a variable description. diff --git a/src/cosim/fmi/v2/fmu.cpp b/src/cosim/fmi/v2/fmu.cpp index e720377c..9aa6b3ae 100644 --- a/src/cosim/fmi/v2/fmu.cpp +++ b/src/cosim/fmi/v2/fmu.cpp @@ -63,6 +63,12 @@ fmu::fmu( modelDescription_.description = fmi2_import_get_description(handle_); modelDescription_.author = fmi2_import_get_author(handle_); modelDescription_.version = fmi2_import_get_model_version(handle_); + modelDescription_.capabilities.can_get_and_set_fmu_state = !!fmi2_import_get_capability( + handle_, + fmi2_cs_canGetAndSetFMUstate); + modelDescription_.capabilities.can_serialize_fmu_state = !!fmi2_import_get_capability( + handle_, + fmi2_cs_canSerializeFMUstate); const auto varList = fmi2_import_get_variable_list(handle_, 0); const auto _ = gsl::finally([&]() { fmi2_import_free_variable_list(varList);