%% 
%% $Revision: 1.1.6.4 $
%% 
%%
%% Copyright 1994-2003 The MathWorks, Inc.
%%
%% Abstract: InitialCondition block target file.

%implements InitialCondition "C"

%% Function: BlockInstanceSetup ==============================================
%% Abstract:
%%   Set expression folding compliance
%%
%function BlockInstanceSetup(block, system) void
  %<LibBlockSetIsExpressionCompliant(block)>
%endfunction


%% Function: Start ============================================================
%% Abstract:
%%      If the block output is visible in the mdlStart function scope then
%%      initialize this output to the InitialCondition specified.
%%
%function Start(block, system) Output
  /* %<Type> Block: %<Name> */
  %if LibBlockOutputSignalIsInBlockIO(0) && block.WriteOutputInStart
    %roll idx = RollRegions, lcv = RollThreshold, block, "Roller", ["P", "Y"]
      %<LibBlockOutputSignal(0,"",lcv,idx)> = \
      %<LibBlockParameter(Value,"",lcv,idx)>;
    %endroll
  %endif
  %<LibBlockDWork(FirstOutputTime,"","",0)> = %<LibRealNonFinite("-inf")>;

%endfunction


%% Function: Outputs ==========================================================
%% Abstract:
%%      First execution: Y = IC (from Start)
%%      nth execution:   Y = U
%%
%function Outputs(block, system) Output
  %assign firstOutputTime = LibBlockDWork(FirstOutputTime, "", "", 0)
  if ( %<firstOutputTime> == %<LibRealNonFinite("-inf")>) {
    %<firstOutputTime> = %<LibGetTaskTimeFromTID(block)>;
    %roll idx = RollRegions, lcv = RollThreshold, block, "Roller", ["P", "Y"]
      %<LibBlockOutputSignal(0,"",lcv,idx)> = \
      %<LibBlockParameter(Value,"",lcv,idx)>;
    %endroll
    %if (LibBlockInputSignalBufferDstPort(0) == 0) %% output/input are the same
      }
    %else %% copy input to output
  } else {
    %roll idx = RollRegions, lcv = RollThreshold, block, "Roller", ["U", "Y"]
      %<LibBlockOutputSignal(0,"",lcv,idx)> \
      = %<LibBlockInputSignal(0,"",lcv,idx)>;
    %endroll  
  }
    %endif

%endfunction

%% [EOF] initcond.tlc
