%%
%%
%%
%%Copyright1994-2008TheMathWorks,Inc.
%%
%%Abstract:
%%Codegenerationsupportformsfunctionblock
 
%implements "M-S-Function" "C"
 
%function BlockTypeSetup(block, system) void
  %%
  %% If Accelerator and block does not run on TLC or the block is
  %% a sim-viewing-device, the corresponding TLC file is not needed.
  %%
  %if !(Accelerator && ParamSettings.runAccelOnTLC == "no") && ...
      ParamSettings.isSimViewDevice != "yes"
    %assign funcName = ParamSettings.MFile
    %<GENERATE_TYPE(block, "BlockTypeSetup", funcName, system)>
  %endif
%endfunction
 
%function BlockInstanceSetup(block, system) void
   
  %if !(Accelerator && ParamSettings.runAccelOnTLC == "no") && ...
    ParamSettings.isSimViewDevice != "yes"
    %assign funcName = ParamSettings.MFile
    %<GENERATE_TYPE(block, "BlockInstanceSetup", funcName, system)>
  %endif
 
  %assign ps = ParamSettings
  %assign InitializeConditionsEmpty = 1
  %assign StartEmpty = 1
  %assign SetupRuntimeResourcesEmpty = 1
  %assign OutputsEmpty = 1
  %assign UpdateEmpty = 1
  %assign DerivativesEmpty = 1
  %assign ProjectionEmpty = 1
  %assign ZeroCrossingsEmpty = 1
  %assign EnableEmpty = 1
  %assign DisableEmpty = 1
  %assign TerminateEmpty = 1
  %assign CleanupRuntimeResourcesEmpty = 1
 
  %assign ps = ps + InitializeConditionsEmpty
  %assign ps = ps + SetupRuntimeResourcesEmpty
  %assign ps = ps + StartEmpty
  %assign ps = ps + OutputsEmpty
  %assign ps = ps + UpdateEmpty
  %assign ps = ps + DerivativesEmpty
  %assign ps = ps + ProjectionEmpty
  %assign ps = ps + ZeroCrossingsEmpty
  %assign ps = ps + EnableEmpty
  %assign ps = ps + DisableEmpty
  %assign ps = ps + TerminateEmpty
  %assign ps = ps + CleanupRuntimeResourcesEmpty
   
  %if ISFIELD(ps,"InitializeConditions") && ps.InitializeConditions != ""
    %assign ps.InitializeConditionsEmpty = 0
  %endif
   
  %if ISFIELD(ps,"SetupRuntimeResources") && ps.SetupRuntimeResources != ""
    %assign ps.SetupRuntimeResourcesEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Start") && ps.Start != ""
    %assign ps.StartEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Outputs") && ps.Outputs != ""
    %assign ps.OutputsEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Update") && ps.Update != ""
    %assign ps.UpdateEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Derivatives") && ps.Derivatives != ""
    %assign ps.DerivativesEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Projection") && ps.Projection != ""
    %assign ps.ProjectionEmpty = 0
  %endif
   
  %if ISFIELD(ps,"ZeroCrossings") && ps.ZeroCrossings != ""
    %assign ps.ZeroCrossingsEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Enable") && ps.Enable != ""
    %assign ps.EnableEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Disable") && ps.Disable != ""
    %assign ps.DisableEmpty = 0
  %endif
   
  %if ISFIELD(ps,"Terminate") && ps.Terminate != ""
    %assign ps.TerminateEmpty = 0
  %endif
   
  %if ISFIELD(ps,"CleanupRuntimeResources") && ps.CleanupRuntimeResources != ""
    %assign ps.CleanupRuntimeResourcesEmpty = 0
  %endif
   
  %assign IsSimViewDevice = 1
  %assign RunAccelOnTLC = 1
   
  %assign ps = ps + IsSimViewDevice
  %assign ps = ps + RunAccelOnTLC
   
  %if ps.isSimViewDevice == "no"
    %assign ps.IsSimViewDevice = 0
  %endif
   
  %if ps.runAccelOnTLC == "no"
    %assign ps.RunAccelOnTLC = 0
  %endif
   
%endfunction
 
%%Function:SetDims==========================================================
%%Abstract:
%%PerformM-S-functionSetDimsfunction
%%
%function SetDims(block, system, oIdx, rIdx) Output
 
  %if !Accelerator && !ParamSettings.IsSimViewDevice
    %assign funcName = ParamSettings.MFile
    %<GENERATE_TYPE(block, "SetDims", funcName, system, oIdx, rIdx)>
  %elseif Accelerator && !ParamSettings.RunAccelOnTLC
    %<SLibCallSFcnSetDimsInSimulink(system, block, oIdx, rIdx)>
  %endif
   
%endfunction
 
 
%function SetupRuntimeResources(block, system) Output
  %if !ParamSettings.SetupRuntimeResourcesEmpty
    %if !Accelerator && !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "SetupRuntimeResources", funcName, system)>
    %endif
  %endif
%endfunction
 
%function CleanupRuntimeResources(block, system) Output
 
  %if !ParamSettings.CleanupRuntimeResourcesEmpty
    %if !Accelerator && !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "CleanupRuntimeResources", funcName, system)>
    %endif
  %endif
%endfunction
 
%%Function:Start============================================================
%%Abstract:
%%PerformM-S-functionStartfunction
%%
%function Start(block, system) Output
 
  %if !ParamSettings.StartEmpty
    %if !Accelerator && !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "Start", funcName, system)>
    %endif
  %endif
%endfunction
  
%%Function:InitializeConditions=============================================
%%Abstract:
%%PerformM-S-functionInitializeConditionsfunction
%%
%function InitializeConditions(block, system) Output
 
  %if !ParamSettings.InitializeConditionsEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, ...
    "SS_CALL_MDL_INITIALIZE_CONDITIONS")>
    %elseif !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "InitializeConditions", funcName, system)>
    %endif
  %endif
%endfunction
     
%%Function:Update===========================================================
%%Abstract:
%%PerformM-S-functionUpdatefunction
%%
%function Update(block, system) Output
  %if !ParamSettings.UpdateEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, ...
    "SS_CALL_MDL_UPDATE")>
    %elseif !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "Update", funcName, system)>
    %endif
  %endif
%endfunction
 
%function Derivatives(block, system) Output
  %if !ParamSettings.DerivativesEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, ...
    "SS_CALL_MDL_DERIVATIVES")>
    %elseif !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "Derivatives", funcName, system)>
    %endif
  %endif
%endfunction
 
%function ForcingFunction(block, system) Output
  %if ::CompiledModel.ModelIsLinearlyImplicit == "yes"
    %<Derivatives(block,system)>
  %endif
%endfunction
 
%function Projection(block, system) Output
  %if !ParamSettings.ProjectionEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, ...
    "SS_CALL_MDL_PROJECTION")>
    %elseif !ParamSettings.IsSimViewDevice
      %assign funcName = ParamSettings.MFile
      %<GENERATE_TYPE(block, "Projection", funcName, system)>
    %endif
  %endif
%endfunction
   
%%Function:Outputs===========================================================
%%Abstract:
%%RuntheTLCoutputscriptcreatedduringthertwgenprocessforthe
%%M-S-Functionblock.
%%
%function Outputs(block, system) Output
  %if !ParamSettings.OutputsEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, "SS_CALL_MDL_OUTPUTS")>
    %elseif !ParamSettings.IsSimViewDevice
      %<GENERATE_TYPE(block,"Outputs",ParamSettings.MFile, system)>
    %endif
  %endif
%endfunction
 
%function Enable(block, system) Output
  %if !ParamSettings.EnableEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, "SS_CALL_RTW_GENERATED_ENABLE")>
    %elseif !ParamSettings.IsSimViewDevice
      %<GENERATE_TYPE(block,"Enable",ParamSettings.MFile, system)>
    %endif
  %endif
%endfunction
 
%function Disable(block, system) Output
  %if !ParamSettings.DisableEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, "SS_CALL_RTW_GENERATED_DISABLE")>
    %elseif !ParamSettings.IsSimViewDevice
      %<GENERATE_TYPE(block,"Disable",ParamSettings.MFile, system)>
    %endif
  %endif
%endfunction
 
%function Terminate(block, system) Output
  %if !ParamSettings.TerminateEmpty
    %if Accelerator && !ParamSettings.RunAccelOnTLC
      /* Call into Simulink */
      %<SLibCallBlockInSimulink(system, block, "SS_CALL_MDL_TERMINATE")>
    %elseif !ParamSettings.IsSimViewDevice
      %<GENERATE_TYPE(block, "Terminate", ParamSettings.MFile, system)>
    %endif
  %endif
 
%endfunction
 
%%[eof]msfunction.tlc