%if EXISTS("_RTMISREQFCNS_") == 0
%assign _RTMISREQFCNS_ = 1
%function RTMAlwaysReqIsReqFcn() void
%return TLC_TRUE
%endfunction
%function RTMNeverReqIsReqFcn() void
%return TLC_FALSE
%endfunction
%function RTMModelPtrsForNonERTIsReqFcn() void
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction
%function RTMModelPtrsToInstanceDataIsReqFcn() void
%if RTMModelPtrsToSharedDataIsReqFcn()
%return TLC_TRUE
%elseif ::GenerateClassInterface
%return TLC_FALSE
%else
%return ::AnyCross
%endif
%endfunction
%function RTMModelPtrsToSharedDataIsReqFcn() void
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction
%function AccessDataUseRTM(sysIdx, fcnType,cross)
%if sysIdx != (NumSystems-1) && LibSystemIsReusedFcn(System[sysIdx])
%return TLC_FALSE
%elseif ::CompiledModel.HasSimStructVars
%return TLC_TRUE
%elseif GenerateClassInterface
%return TLC_FALSE
%elseif isGRTMallocOnERT()
%return cross || sysIdx != (NumSystems-1)
%else
%return (cross && MultiInstanceERTCode )
%endif
%endfunction
%function RTMContTimeErtIsReqFcn() void
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%return TLC_TRUE
%else
%if LibIsContinuous(0) && !IsModelReferenceForASimstructBasedTarget()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endif
%endfunction
%function RTMContStateErtNoMdlRefIsReqFcn() void
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%return TLC_TRUE
%else
%if NumContStates > 0 && !IsModelReferenceTarget()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endif
%endfunction
%function RTMChildSfunctionIsReqFcn() void
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%return TLC_TRUE
%else
%if RTMNonInlinedSFcnsIsReqFcn()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endif
%endfunction
%function RTMTimingBridgeIsInstanceBased() void
%return IsModelReferenceTarget() && ::CompiledModel.OkToMultiInstanceModelref
%endfunction
%function RTMTimingBridgeIsReqFcn() void
%return RTMTimingBridgeIsInstanceBased() && ::tMdlRefTimingBridgeAccessed || ...
(!IsModelReferenceTarget() && MultiInstanceERTCode && ::tMdlRefTimingBridgeAccessed)
%endfunction
%function RTMNonInlinedSFcnsIsReqFcn() void
%if ::CompiledModel.NumChildSFunctions > 0 || ...
(::CompiledModel.ModelBlocksHaveNonInlinedSfcns && !IsModelReferenceTarget())
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction
%function RTMSolverYIsReqFcn() void
%if !SLibIsERTCodeFormat()
%return TLC_FALSE
%else
%if (NumContStates > 0) && (::CompiledModel.solverOrder > 1) && !IsModelReferenceTarget()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endif
%endfunction
%function RTMContainerErtIsReqFcn() void
%if !SLibIsERTCodeFormat()
%return TLC_FALSE
%else
%if NumContStates > 0 && !IsModelReferenceTarget()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endif
%endfunction
%function RTMContTimeErtOnlyIsReqFcn() void
%assert SLibIsERTCodeFormat()
%if LibIsContinuous(0) && !IsModelReferenceForASimstructBasedTarget()
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction
%function RTMErrorStatusIsReqFcn() void
%return (::CompiledModel.SuppressErrorStatus==1) ? TLC_FALSE : TLC_TRUE
%endfunction
%function RTMErrorStatusNeedVolatile() void
%if !EXISTS("ErrorStatusPtrAccess")
%assign ::ErrorStatusPtrAccess = 0
%endif
%assign retVal = ::ErrorStatusPtrAccess == 0 && ...
ConfigSet.IsERTTarget && ...
!IsModelReferenceTarget() && ...
GenerateSampleERTMain && ...
((TargetOS == "BareBoardExample") || (TargetOS == "NativeThreadsExample")) && ...
::CompiledModel.NumContStates == 0 && !MatFileLogging && !ExtMode && !EXISTS("ForceSimulatedRTOneStep")
%if retVal
%assign mdlRefBlks = ISFIELD(::CompiledModel,"ModelReferenceBlocks") ? ...
::CompiledModel.ModelReferenceBlocks : []
%if !ISEMPTY(mdlRefBlks)
%foreach rowIdx = SIZE(mdlRefBlks,0)
%assign mdlRefInfo = mdlRefBlks[rowIdx]
%assign mSysIdx = mdlRefInfo[0]
%assign bIdx = mdlRefInfo[1]
%assign blk = ::CompiledModel.System[mSysIdx].Block[bIdx]
%assert 0 == blk.DeletedInIR
%assign blockInterface = GetModelrefInterface(blk)
%if blockInterface.NeedsErrorStatus
%assign retVal = TLC_FALSE
%break
%endif
%endforeach
%endif
%endif
%return retVal
%endfunction
%function RTMMdlMthIsReqFcn() void
%if UsingMalloc && GenerateGRTWrapper
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction
%function RTMMdlStopReqIsReqFcn() void
%if IsModelReferenceForASimstructBasedTarget()
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if CodeFormat == "Embedded-C" && !GenerateGRTWrapper
%if ((EXISTS("slrealtime") && slrealtime == 1) || ExtMode || ...
MatFileLogging || RTMStopReqAccessed())
%assign retVal = TLC_TRUE
%endif
%else
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMNumSampleTimesReqFcn() void
%return RTMContStateErtNoMdlRefIsReqFcn() || ...
RTMChildSfunctionIsReqFcn() || ...
(GenerateGRTWrapper && ExtMode)
%endfunction
%function RTMStepSizeIsReqFcn() void
%assign retVal = TLC_FALSE
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper || ...
(MatFileLogging && UsingMalloc && !GenerateSampleERTMain)
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMStepSizeForTIDIsReqFcn(tid) void
%if IsModelReferenceForASimstructBasedTarget() && (LibIsContinuous(tid) || ...
(::CompiledModel.SolverType == "VariableStep" && LibIsZOHContinuous(tid)))
%return TLC_FALSE
%endif
%if !SLibIsERTCodeFormat()
%return TLC_FALSE
%else
%return SampleTime[tid].NeedFloatTime == "yes" ...
&& !PurelyIntegerCode
%endif
%endfunction
%function RTMIsVarStepSolver() void
%return ::CompiledModel.SolverType == "VariableStep"
%endfunction
%function RTMNeedsNonContDerivSigs() void
%return RTMIsVarStepSolver() && ...
IsModelReferenceForASimstructBasedTarget() && ...
SolverResetInfo.NumNonContDerivSignals > 0
%endfunction
%function ClockTickForTIDIsReqFcn(tid) void
%assign retVal = TLC_FALSE
%if IsModelReferenceForASimstructBasedTarget() && (LibIsContinuous(tid) || ...
(::CompiledModel.SolverType == "VariableStep" && LibIsZOHContinuous(tid)))
%assign retVal = TLC_FALSE
%elseif ((SLibIsERTCodeFormat()) && (SLibNeedAbsoluteTimeForTID(tid))) || ...
((tid < NumSynchronousSampleTimes) && ...
::CompiledModel.ModelBlocksReqClockTicks[tid])
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function LongClockTickForTIDIsReqFcn(tid) void
%assign retVal = TLC_FALSE
%if ((SLibIsERTCodeFormat()) && (SLibNeedAbsoluteTimeForTID(tid))...
&& SLibClockTickIsUnit32Pair(tid)) || ...
((tid < NumSynchronousSampleTimes) && ...
::CompiledModel.ModelBlocksReqLongClockTicks[tid])
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMAbsTimeNeedTransProtection(tid)
%return SLibIsERTCodeFormat() && ...
::CompiledModel.SampleTime[tid].Asynchronous == "yes" && ...
SLibNeedAbsoluteTimeForTID(tid) && ...
::CompiledModel.SampleTime[tid].TimeSource == "BaseRate" && ...
!::CompiledModel.SampleTime[tid].ClockTickDataTypeAtomic
%endfunction
%function RTMAbsTimeNeedH2LTrans(tid)
%assign retVal = TLC_FALSE
%if RTMAbsTimeNeedTransProtection(tid) && ...
SLibComparePriority(tid, 0) == 2
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMAbsTimeNeedNoPriorityTrans(tid)
%assign retVal = TLC_FALSE
%if RTMAbsTimeNeedTransProtection(tid) && ...
SLibComparePriority(tid, 0) == -1
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMClockTick0H2LIsReqFcn(tid)
%assign retVal = RTMAbsTimeNeedH2LTrans(tid) && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId != tSS_DOUBLE
%return retVal
%endfunction
%function RTMContTH2LIsReqFcn(tid)
%assign retVal = RTMAbsTimeNeedH2LTrans(tid) && ...
!SLibConcurrentTasks() && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId == tSS_DOUBLE
%return retVal
%endfunction
%function RTMClockTick0DbBufIsReqFcn(tid)
%assign retVal = RTMAbsTimeNeedNoPriorityTrans(tid) && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId != tSS_DOUBLE
%return retVal
%endfunction
%function RTMContTDbBufIsReqFcn(tid)
%assign retVal = RTMAbsTimeNeedNoPriorityTrans(tid) && ...
!SLibConcurrentTasks() && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId == tSS_DOUBLE
%return retVal
%endfunction
%function RTMAbsTimeNeedL2HTrans(tid)
%assign retVal = TLC_FALSE
%if RTMAbsTimeNeedTransProtection(tid) && ...
!SLibConcurrentTasks() && ...
SLibComparePriority(tid, 0) == 1
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMClockTick0L2HIsReqFcn()
%assign retVal = TLC_FALSE
%foreach tid = NumSampleTimes
%if RTMAbsTimeNeedL2HTrans(tid) && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId != tSS_DOUBLE
%assign retVal = TLC_TRUE
%break
%endif
%endforeach
%return retVal
%endfunction
%function RTMContTL2HIsReqFcn()
%assign retVal = TLC_FALSE
%foreach tid = NumSampleTimes
%if RTMAbsTimeNeedL2HTrans(tid) && ...
::CompiledModel.SampleTime[tid].ClockTickDataTypeId == tSS_DOUBLE
%assign retVal = TLC_TRUE
%break
%endif
%endforeach
%return retVal
%endfunction
%function RTMTaskTimeIsReqFcnForTID(tid) void
%assert !IsModelReferenceTarget()
%assign retVal = TLC_FALSE
%if SLibIsERTCodeFormat()
%if SampleTime[tid].NeedFloatTime == "yes"
%assign retVal = !RTMTimePtrIsReqFcn()
%endif
%endif
%return retVal
%endfunction
%function RTMTFinalIsReqFcn() void
%return (RTMTUseStopTimeAsTFinal() || (NumChildSFunctions > 0))
%endfunction
%function RTMTUseStopTimeAsTFinal() void
%assign retVal = TLC_FALSE
%if !IsModelReferenceTarget()
%if SLibIsERTCodeFormat()
%assign retVal = GenerateGRTWrapper || ...
MatFileLogging || (ExtMode && !PurelyIntegerCode)
%else
%assign retVal = TLC_TRUE
%endif
%endif
%return retVal
%endfunction
%function RTMFirstInitCondFlagIsReqFcn() void
%if IsModelReferenceTarget() || (UsingMalloc && GenerateGRTWrapper)
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if (SLibIsERTCodeFormat())
%if SLibGetIsFirstInitCondAccessed()
%assign retVal = TLC_TRUE
%endif
%endif
%return retVal
%endfunction
%function RTMTaskCountersIsReqFcn() void
%if IsModelReferenceTarget() || SLibIsExportFcnDiagram()
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if SLibIsERTCodeFormat() && ...
(LibIsDeploymentDiagram() || ...
(!LibIsDeploymentDiagram() && (LibNumDiscreteSampleTimes() > 1 || ::CompiledModel.NumControllableSampleTimes > 0 || ::CompiledModel.NumSynchronousSampleTimes < ::CompiledModel.NumRuntimeExportedRates)))
%assign retVal = !::CompiledModel.SuppressMultiTaskScheduler || ...
!(InlineSetEventsForThisBaseRateFcn || SuppressSetEventsForThisBaseRateFcn) || ...
(!GenerateSampleERTMain && !SLibAutosarActive()) || ...
GenerateGRTWrapper || SLibConcurrentTasks() || ...
::CompiledModel.NumControllableSampleTimes > 0
%endif
%return retVal
%endfunction
%function RTMCtrlRateMdlRefTimingIsReqFcn() void
%assign retVal = TLC_FALSE
%if !IsModelReferenceTarget() && ...
SLibIsERTCodeFormat() && ...
!LibIsDeploymentDiagram()
%assign retVal = (::CompiledModel.ContainsModelBlockWithCtrlRate == "yes")
%endif
%return retVal
%endfunction
%function RTMCtrlRateMdlRefTimingPtrIsReqFcn() void
%assign retVal = TLC_FALSE
%if IsModelReferenceRTWTarget()
%assign retVal = SLibModelHasControllableRate()
%endif
%return retVal
%endfunction
%function RTMCtrlRateNumTicksToNextHitIsReqFcn() void
%return SLibModelHasControllableRate() && RTMTaskCountersIsReqFcn()
%endfunction
%function RTMERTPerTaskSampleHitsIsReqFcn() void
%if IsModelReferenceTarget() && !SuppressMultiTaskScheduler
%return TLC_FALSE
%endif
%return ERTPerTaskSampleHitsIsReqFcn()
%endfunction
%function ERTPerTaskSampleHitsIsReqFcn() void
%assign retVal = TLC_FALSE
%if (SLibIsERTCodeFormat()) && ...
!RootSystemIsSingleRate && !SLibSingleTasking()
%assign retVal = SuppressMultiTaskScheduler ? ...
RequireRateInteraction : RequireMultiRateSampleHits
%endif
%return retVal
%endfunction
%function RTMTimePtrIsReqFcn()
%return !IsModelReferenceTarget() && ...
( RTMContTimeErtIsReqFcn() || ...
RTMChildSfunctionIsReqFcn() || ...
GenerateGRTWrapper )
%endfunction
%function RTMLogInfoIsReqFcn() void
%if IsModelReferenceForASimstructBasedTarget()
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if (SLibIsERTCodeFormat())
%if MatFileLogging
%assign retVal = TLC_TRUE
%endif
%else
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMExtModeInfoIsReqFcn() void
%if IsModelReferenceForASimstructBasedTarget()
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if (SLibIsERTCodeFormat() && !GenerateGRTWrapper)
%if ExtMode == 1
%assign retVal = TLC_TRUE
%endif
%else
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMMappingInfoIsReqFcn() void
%if IsModelReferenceForASimstructBasedTarget()
%return TLC_FALSE
%endif
%assign retVal = TLC_FALSE
%if (SLibIsERTCodeFormat()) && !GenerateGRTWrapper
%if ExtMode == 1
%assign retVal = TLC_TRUE
%endif
%else
%assign retVal = TLC_TRUE
%endif
%return retVal
%endfunction
%function RTMDataMapInfoIsReqFcn() void
%return RTWCAPI
%endfunction
%endif
%function RTMMdlRefGlobalTIDIsReqFcn() void
%assign retVal = RTMMdlRefGlobalTIDIsInstanceBased() && ...
::tMdlRefGlobalTIDMapAccessed
%return retVal
%endfunction
%function RTMMdlRefGlobalTIDIsInstanceBased() void
%assign retVal = IsModelReferenceTarget() && ...
(::CompiledModel.OkToMultiInstanceModelref || ...
::CompiledModel.MdlRefGlobalTIDMapIsInstanceBased == "yes")
%return retVal
%endfunction
%function RTMMdlRefTriggerTIDIsReqFcn() void
%assign retVal = RTMMdlRefTriggerTIDMayBeRequired() && ...
::tMdlRefGlobalTIDMapAccessed
%return retVal
%endfunction
%function RTMMdlRefTriggerTIDMayBeRequired() void
%assign retVal = IsModelReferenceTarget() && ...
::CompiledModel.MdlRefTriggerTIDMayBeRequired == "yes"
%return retVal
%endfunction
%function RTMParamIsMallocedIsReqFcn() void
%return TLC_FALSE
%endfunction
%function RTMModelPtrsToDefaultParamIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%if !LibParametersStructIsEmpty() && !FcnParamsAreGlobalStruct() && ...
!GenerateClassInterface && !SLibUseBackwardCompatibleReusableInterface()
%return TLC_TRUE
%endif
%if !LibParametersStructIsEmpty() && ...
((::CompiledModel.ConfigSet.SystemTargetFile=="systemverilog_dpi_grt.tlc") || ...
(::CompiledModel.ConfigSet.SystemTargetFile=="systemverilog_dpi_ert.tlc"))
%return TLC_TRUE
%endif
%if FcnParamsAreGlobalStruct()
%return RTMModelPtrsToSharedDataIsReqFcn()
%else
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endif
%endfunction
%function RTMModelPtrsToConstBlockIOIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%if isGRTMalloc
%return TLC_TRUE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToBlockIOIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%assign rootSystem = System[NumSystems-1]
%assign reqInsts = LibGetSystemField(rootSystem, "ReqRootPrmHdrDataInsts")
%if !reqInsts.BlockIOInst && LibGetFieldSet(rootSystem, "HasBlockIOArg") == 1 ...
&& !LibBlockIOStructIsEmpty() && MultiInstanceERTCode ...
&& !GenerateClassInterface && !SLibUseBackwardCompatibleReusableInterface()
%return TLC_TRUE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToPrevZcSigStateIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%assign rootSystem = System[NumSystems-1]
%assign reqInsts = LibGetSystemField(rootSystem, "ReqRootPrmHdrDataInsts")
%if !reqInsts.PrevZCStatesInst && LibGetFieldSet(rootSystem, "HasZCEventArg") == 1 ...
&& !LibPrevZCStatesStructIsEmpty() && MultiInstanceERTCode && ...
!GenerateClassInterface && !SLibUseBackwardCompatibleReusableInterface()
%return TLC_TRUE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToZCSignalValuesIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%assign baseSysIdx = GetBaseSystemIdx()
%if LibGetFieldSet(System[baseSysIdx], "HasZCSignalValueArg") && ...
!LibZCSignalValueStructIsEmpty() && MultiInstanceERTCode && ...
!GenerateClassInterface && !SLibUseBackwardCompatibleReusableInterface()
%return TLC_TRUE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToInputsIsReqFcn() void
%if TYPE(ExternalInputsStructDefn) != "Number" ...
&& !LibExternalInputsStructIsEmpty() ...
&& MultiInstanceERTCode && !GenerateClassInterface && ...
(::CompiledModel.RootIOFormat == "Part of model data structure")
%return TLC_TRUE
%elseif (::CompiledModel.NumModelInputs == 0 || ...
(TYPE(ExternalInputsStructDefn) != "Number" && LibExternalInputsStructIsEmpty())) && ...
SLibIsERTCodeFormat() && !GenerateGRTWrapper
%return TLC_FALSE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToOutputsIsReqFcn() void
%if TYPE(ExternalOutputsStructDefn) != "Number" ...
&& !LibExternalOutputsStructIsEmpty() ...
&& MultiInstanceERTCode && !GenerateClassInterface && ...
(::CompiledModel.RootIOFormat == "Part of model data structure")
%return TLC_TRUE
%elseif (::CompiledModel.NumModelOutputs == 0 || ...
(TYPE(ExternalOutputsStructDefn) != "Number" && LibExternalOutputsStructIsEmpty())) && ...
SLibIsERTCodeFormat() && !GenerateGRTWrapper
%return TLC_FALSE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToRootDWorkIsReqFcn() void
%if SLibGetUseRTMcgType()
%return TLC_FALSE
%endif
%if !SLibModelDWorkStructIsEmpty() && ...
MultiInstanceERTCode && !GenerateClassInterface && ...
!SLibUseBackwardCompatibleReusableInterface()
%return TLC_TRUE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMModelPtrsToReservedForXPCIsReqFcn() void
%if !EXISTS("xPC") || (xPC!=1 && !GenerateGRTWrapper)
%return TLC_FALSE
%endif
%return RTMModelPtrsToInstanceDataIsReqFcn()
%endfunction
%function RTMMdlRefCPPInstIsReqFcn() void
%if GenerateClassInterface
%return TLC_TRUE
%else
%return TLC_FALSE
%endif
%endfunction