Changeset 3e9baabb in OpenModelica


Ignore:
Timestamp:
2011-03-04T18:56:41+01:00 (13 years ago)
Author:
Jens Frenkel <jens.frenkel@…>
Branches:
Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master, omlib-staging
Children:
c0d0d6d3
Parents:
c4b7b4c
Message:
  • improve fmiSetExternalFunction

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@8103 f25d12d1-65f4-0310-ae8a-bbce733d8d8e

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    re387022 r3e9baabb  
    3636#BUILDMODEL(Simple ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Test +d=bltdump)
    3737#BUILDMODEL(WheelLoader_der_state ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Test +d=bltdump "")
    38 BUILDMODELFMU(Test ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Test/FMU +d=bltdump "")
     38#BUILDMODELFMU(Test ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Test/FMU +d=bltdump "")
    3939#BUILDMODEL(Test1 ${CMAKE_CURRENT_SOURCE_DIR}/build/bin/Test/FMU +d=bltdump "")
     40BUILDMODELFMUMOS(WheelLoader D:/Programming/Models/Radlader/radlader-cnh/WheelLoader.mos +d=bltdump "")
  • Compiler/susan_codegen/SimCode/SimCodeFMU.tpl

    rdad6a1d r3e9baabb  
    337337  #include "fmiModelFunctions.h"
    338338  #include "fmu_model_interface.h"
     339  #include "<%fileNamePrefix%>_functions.h"
    339340
    340341  void setStartValues(ModelInstance *comp);
     
    349350  fmiString getString(ModelInstance* comp, const fmiValueReference vr); 
    350351  fmiStatus setString(ModelInstance* comp, const fmiValueReference vr, const fmiString value); 
    351 
     352  fmiStatus setExternalFunction(ModelInstance* c, const fmiValueReference vr, const void* value);
     353 
    352354  <%ModelDefineData(modelInfo)%>
    353355 
     
    366368  <%getStringFunction(modelInfo)%>
    367369  <%setStringFunction(modelInfo)%>
    368  
     370  <%setExternalFunction(modelInfo)%> 
    369371 
    370372  >>
     
    388390  #define NUMBER_OF_STRINGS <%numberOfStrings%>
    389391  #define NUMBER_OF_BOOLEANS <%numberOfBooleans%>
     392  #define NUMBER_OF_EXTERNALFUNCTIONS 0
    390393 
    391394  // define variable data for model
     
    705708end setStringFunction;
    706709
     710template setExternalFunction(ModelInfo modelInfo)
     711 "Generates setString function for c file."
     712::=
     713match modelInfo
     714case MODELINFO(vars=SIMVARS(__)) then
     715  <<
     716  fmiStatus setExternalFunction(ModelInstance* c, const fmiValueReference vr, const void* value){
     717    switch (vr) {
     718        default:
     719          return fmiError;
     720    }
     721    return fmiOK;
     722  }
     723 
     724  >>
     725end setExternalFunction;
     726
    707727template SwitchVars(SimVar simVar, String arrayName)
    708728 "Generates code for defining variables in c file for FMU target. "
  • c_runtime/fmu_model_interface.c

    rdad6a1d r3e9baabb  
    589589fmiStatus fmiSetExternalFunction(fmiComponent c, fmiValueReference vr[], size_t nvr, const void* value[])
    590590{
     591  int i;
    591592  ModelInstance* comp = (ModelInstance *)c;
    592593  if (invalidState(comp, "fmiTerminate", modelInitialized))
    593594    return fmiError;
     595  if (nvr>0 && nullPointer(comp, "fmiSetReal", "vr[]", vr))
     596    return fmiError;
     597  if (nvr>0 && nullPointer(comp, "fmiSetReal", "value[]", value))
     598    return fmiError;
    594599  if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log",
    595600    "fmiSetExternalFunction");
     601  // no check wether setting the value is allowed in the current state
     602  for (i=0; i<nvr; i++) {
     603    if (vrOutOfRange(comp, "fmiSetExternalFunction", vr[i], NUMBER_OF_EXTERNALFUNCTIONS))
     604      return fmiError;
     605    if (setExternalFunction(comp, vr[i],value[i]) != fmiOK) // to be implemented by the includer of this file
     606      return fmiError;
     607  }
    596608  return fmiOK;
    597609};
Note: See TracChangeset for help on using the changeset viewer.