Skip to content

Commit

Permalink
some fixes to modelDescription.xml import
Browse files Browse the repository at this point in the history
  • Loading branch information
adrpo authored and OpenModelica-Hudson committed Nov 18, 2016
1 parent fdec2bc commit a343431
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
5 changes: 3 additions & 2 deletions Compiler/Script/CevalScriptBackend.mo
Expand Up @@ -1567,10 +1567,11 @@ algorithm
true = System.regularFileExists(filename);
workdir = if System.directoryExists(workdir) then workdir else System.pwd();
modeldescriptionfilename="modelDescription.fmu";
System.systemCall("zip " + modeldescriptionfilename + " " + filename);
System.systemCall("zip -j " + modeldescriptionfilename + " " + filename);
true = System.regularFileExists(modeldescriptionfilename);
/* Initialize FMI objects */
(b, fmiContext, fmiInstance, fmiInfo, fmiTypeDefinitionsList, fmiExperimentAnnotation, fmiModelVariablesInstance, fmiModelVariablesList) = FMIExt.initializeFMIImport(modeldescriptionfilename, workdir, fmiLogLevel, inputConnectors, outputConnectors);
(b, fmiContext, fmiInstance, fmiInfo, fmiTypeDefinitionsList, fmiExperimentAnnotation, fmiModelVariablesInstance, fmiModelVariablesList) =
FMIExt.initializeFMIImport(modeldescriptionfilename, workdir, fmiLogLevel, inputConnectors, outputConnectors, true);
true = b; /* if something goes wrong while initializing */
fmiTypeDefinitionsList = listReverse(fmiTypeDefinitionsList);
fmiModelVariablesList = listReverse(fmiModelVariablesList);
Expand Down
6 changes: 4 additions & 2 deletions Compiler/Util/FMIExt.mo
Expand Up @@ -42,6 +42,7 @@ public function initializeFMIImport
input Integer inFMILogLevel;
input Boolean inInputConnectors;
input Boolean inOutputConnectors;
input Boolean inIsModelDescriptionImport = false;
output Boolean result;
output Option<Integer> outFMIContext "Stores a pointer. If it is declared as Integer, it is truncated to 32-bit.";
output Option<Integer> outFMIInstance "Stores a pointer. If it is declared as Integer, it is truncated to 32-bit.";
Expand All @@ -50,8 +51,9 @@ public function initializeFMIImport
output FMI.ExperimentAnnotation outExperimentAnnotation;
output Option<Integer> outModelVariablesInstance "Stores a pointer. If it is declared as Integer, it is truncated to 32-bit.";
output list<FMI.ModelVariables> outModelVariablesList;
external "C" result=FMIImpl__initializeFMIImport(inFileName, inWorkingDirectory, inFMILogLevel, inInputConnectors, inOutputConnectors, outFMIContext,
outFMIInstance, outFMIInfo, outTypeDefinitionsList, outExperimentAnnotation, outModelVariablesInstance, outModelVariablesList) annotation(Library = {"omcruntime","fmilib"});
external "C" result=FMIImpl__initializeFMIImport(inFileName, inWorkingDirectory, inFMILogLevel, inInputConnectors, inOutputConnectors, inIsModelDescriptionImport,
outFMIContext, outFMIInstance, outFMIInfo, outTypeDefinitionsList, outExperimentAnnotation, outModelVariablesInstance, outModelVariablesList)
annotation(Library = {"omcruntime","fmilib"});
end initializeFMIImport;

public function releaseFMIImport
Expand Down
4 changes: 2 additions & 2 deletions Compiler/runtime/FMIImpl.c
Expand Up @@ -761,7 +761,7 @@ void FMIImpl__initializeFMI2Import(fmi2_import_t* fmi, void** fmiInfo, fmi_versi
* Reads the experiment annotation.
* Reads the model variables.
*/
int FMIImpl__initializeFMIImport(const char* file_name, const char* working_directory, int fmi_log_level, int input_connectors, int output_connectors,
int FMIImpl__initializeFMIImport(const char* file_name, const char* working_directory, int fmi_log_level, int input_connectors, int output_connectors, int isModelDescriptionImport,
void** fmiContext, void** fmiInstance, void** fmiInfo, void** typeDefinitionsList, void** experimentAnnotation, void** modelVariablesInstance, void** modelVariablesList)
{
// JM callbacks
Expand Down Expand Up @@ -848,7 +848,7 @@ int FMIImpl__initializeFMIImport(const char* file_name, const char* working_dire
}
/* remove the following block once we have support for FMI 2.0 CS. */
fmiType = fmi2_import_get_fmu_kind(fmi);
if (fmiType == fmi2_fmu_kind_cs || fmiType == fmi2_fmu_kind_me_and_cs) {
if (!isModelDescriptionImport && (fmiType == fmi2_fmu_kind_cs || fmiType == fmi2_fmu_kind_me_and_cs)) {
const char* tokens[1] = {fmi2_fmu_kind_to_string(fmiType)};
fmi2_import_free(fmi);
fmi_import_free_context(context);
Expand Down

0 comments on commit a343431

Please sign in to comment.