%if EXISTS("_RTMSPECMACS_") == 0
%assign _RTMSPECMACS_ = 1
%function FcnGetTimingBridge(rtmName)
%if RTMTimingBridgeIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("timingBridge", "get", ...
"", "", rtmName)
%return accStr
%else
%return SLibGetGlobalTimingBridge()
%endif
%endfunction
%function RTMSpecAccsGetT(accRec, rtmName) void
%if IsModelReferenceTarget()
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "(ssGetT(%<simS>))"
%elseif ::tMdlRefTimingBridgeAccessed
%assign base = "%<FcnGetTimingBridge(rtmName)>->taskTime"
%return "(*(%<base>[0]))"
%else
%return ""
%endif
%endif
%if SLibIsERTCodeFormat()
%if RTMTaskTimeIsReqFcnForTID(0)
%assign accStr = RTMDispatchToAccessFcn("TaskTime0", "get", "", "", rtmName)
%assign accStr = "(%<accStr>)"
%elseif RTMTimePtrIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("TPtr", "get", "", "", rtmName)
%assign accStr = "(%<accStr>[0])"
%else
%assign accStr = ""
%endif
%else
%assign accStr = RTMDispatchToAccessFcn("TPtr", "get", "", "", rtmName)
%assign accStr = "(%<accStr>[0])"
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetT(accRec, rtmName, val) void
%if IsModelReferenceTarget()
%assign accStr = ""
%elseif GenerateGRTWrapper
%assign accStr = "/* Do Nothing */"
%else
%assign accStr = RTMDispatchToAccessFcn("TPtr", "get", "", "", rtmName)
%assign accStr = "(%<accStr>[0] = (%<val>))"
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetTimeOfLastOutput(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "(ssGetTimeOfLastOutput(%<simS>))"
%endif
%if RTMChildSfunctionIsReqFcn()
%assign simS = RTMDispatchToAccessFcn("_TimeOfLastOutput", "get", "", "", rtmName)
%return "(%<simS>)"
%else
%return ""
%endif
%endfunction
%function RTMSpecAccsSetTimeOfLastOutput(accRec, rtmName, val) void
%if SLibIsERTCodeFormat()
%assign accStr = ""
%else
%assign accStr = RTMDispatchToAccessFcn("_TimeOfLastOutput", "get", "", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetTStart(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "(ssGetTStart(%<simS>))"
%endif
%if RTMChildSfunctionIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StartTime", "get", "", "", rtmName)
%assign accStr = "(%<accStr>)"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetTStart(accRec, rtmName, val) void
%if RTMChildSfunctionIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StartTime", "get", "", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetTFinal(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "(ssGetTFinal(%<simS>))"
%elseif IsModelReferenceRTWTarget()
%return ""
%endif
%if RTMTFinalIsReqFcn()
%assign simS = RTMDispatchToAccessFcn("FinalTime", "get", "", "", rtmName)
%return "(%<simS>)"
%else
%return ""
%endif
%endfunction
%function RTMSpecAccsSetTFinal(accRec, rtmName, val) void
%if RTMTFinalIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("FinalTime", "get", "", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetStopRequested(accRec, rtmName) void
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr>)"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetStopRequested(accRec, rtmName, val) void
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetStopRequestedPtr(accRec, rtmName) void
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(&(%<accStr>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetStopRequestedValStoredAsPtr(accRec, rtmName) void
%assert IsModelReferenceTarget()
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(*(%<accStr>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetStopRequestedValStoredAsPtr(accRec, rtmName, val) void
%assert IsModelReferenceTarget()
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(*(%<accStr>) = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetStopRequestedPtrStoredAsPtr(accRec, rtmName) void
%assert IsModelReferenceTarget()
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr>)"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetStopRequestedPtrStoredAsPtr(accRec, rtmName, val) void
%assert IsModelReferenceTarget()
%if RTMMdlStopReqIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("StopRequestedFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%return ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetErrorStatus(accRec, rtmName) void
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr>)"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetErrorStatus(accRec, rtmName, val) void
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetErrorStatusPointer(accRec, rtmName) void
%assert IsModelReferenceTarget()
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%assign accStr = "(*(%<accStr>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetErrorStatusPointer(accRec, rtmName, val) void
%assert IsModelReferenceTarget()
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%assign accStr = "(*(%<accStr>) = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetErrorStatusPointerPointer(accRec, rtmName) void
%if HasModelReferenceBlocks() || IsModelReferenceTarget()
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%if !IsModelReferenceTarget()
%assign accStr = "(&(%<accStr>))"
%assign accStr = "((const char_T **)%<accStr>)"
%endif
%else
%assign accStr = ""
%endif
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetErrorStatusPointerPointer(accRec, rtmName, val) void
%assert IsModelReferenceTarget()
%if !SuppressErrorStatus
%assign accStr = RTMDispatchToAccessFcn("ErrorStatusFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsRaiseEventWithEnqueueUsingRateIndex(accRec, rtmName) void
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign topSti = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign scheduleStr = "simTgtRaiseEventWithEnqueueUsingRateIndex(ssGetRootSS(%<simS>), %<topSti>)"
%return scheduleStr
%endfunction
%function RTMSpecAccsDisableTaskUsingRateIndex(accRec, rtmName) void
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign topSti = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign disableStr = "simTgtDisableTaskUsingRateIndex(ssGetRootSS(%<simS>), %<topSti>)"
%return disableStr
%endfunction
%function RTMSpecAccsEnableTaskUsingRateIndex(accRec, rtmName) void
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign topSti = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign enableStr = "simTgtEnableTaskUsingRateIndex(ssGetRootSS(%<simS>), %<topSti>)"
%return enableStr
%endfunction
%function RTMSpecAccsGetSimTimeStepPointer(accRec, rtmName) void
%assert IsModelReferenceTarget()
%if LibIsContinuous(0)
%assign accStr = RTMDispatchToAccessFcn("SimTimeStepPtr", "get", ...
"", "", rtmName)
%assign accStr = "(*(%<accStr>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetSimTimeStepPointerPointer(accRec, rtmName) void
%assert IsModelReferenceTarget()
%if LibIsContinuous(0)
%assign accStr = RTMDispatchToAccessFcn("SimTimeStepPtr", "get", ...
"", "", rtmName)
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetSimTimeStepPointerPointer(accRec, rtmName, val) void
%assert IsModelReferenceTarget()
%if LibIsContinuous(0)
%assign accStr = RTMDispatchToAccessFcn("SimTimeStepPtr", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsGetTPtr(accRec, rtmName) void
%if IsModelReferenceTarget()
%return ""
%endif
%assign accStr = ""
%if (!SLibIsERTCodeFormat()) || LibIsContinuous(0) || ...
SLibModelHierarchyContainsNoninlinedSfcn() || GenerateGRTWrapper
%assign accStr = RTMDispatchToAccessFcn("TimePtr", "get", "", "", rtmName)
%assign accStr = "(%<accStr>)"
%else
%if(MatFileLogging || ExtMode)
%assign accStr = RTMDispatchToAccessFcn("TaskTime0", "get", "", "", rtmName)
%assign accStr = "&"+accStr
%assign accStr = "(%<accStr>)"
%endif
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetTPtr(accRec, rtmName, val) void
%if IsModelReferenceTarget()
%assign accStr = ""
%elseif (!SLibIsERTCodeFormat()) || LibIsContinuous(0) || ...
SLibModelHierarchyContainsNoninlinedSfcn() || GenerateGRTWrapper
%assign accStr = RTMDispatchToAccessFcn("TimePtr","get", "", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsMajorTimeStep(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign accStr = "ssIsMajorTimeStep(%<simS>)"
%else
%if (SLibIsERTCodeFormat()) && !LibIsContinuous(0)
%assign accStr = ""
%else
%assign accStr = RTMDispatchToAccessFcn("SimTimeStep","get","","", rtmName)
%assign accStr = "((%<accStr>) == MAJOR_TIME_STEP)"
%endif
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsMinorTimeStep(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign accStr = "ssIsMinorTimeStep(%<simS>)"
%else
%if (SLibIsERTCodeFormat()) && !LibIsContinuous(0)
%assign accStr = ""
%else
%assign accStr = RTMDispatchToAccessFcn("SimTimeStep","get","","", rtmName)
%assign accStr = "((%<accStr>) == MINOR_TIME_STEP)"
%endif
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsFirstInitCond(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "ssIsFirstInitCond(%<simS>)"
%endif
%assign accStr = ""
%if SLibIsERTCodeFormat() && !(UsingMalloc && GenerateGRTWrapper)
%if SLibGetIsFirstInitCondAccessed()
%if IsModelReferenceTarget()
%assert !IsModelReferenceForASimstructBasedTarget()
%if ::tMdlRefTimingBridgeAccessed
%return "( *(%<FcnGetTimingBridge(rtmName)>->firstInitCond) )"
%else
%return ""
%endif
%endif
%assign accStr = RTMDispatchToAccessFcn("FirstInitCondFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr>)"
%endif
%else
%assign accStr = RTMDispatchToAccessFcn("TStart","get","","", rtmName)
%assign accStr = "rtmGetT(%<rtmName>) == (%<accStr>)"
%assign accStr = "(%<accStr>)"
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetFirstInitCond(accRec, rtmName, val) void
%assign accStr = ""
%if RTMFirstInitCondFlagIsReqFcn()
%assign accStr = RTMDispatchToAccessFcn("FirstInitCondFlag", "get", ...
"", "", rtmName)
%assign accStr = "(%<accStr> = (%<val>))"
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetSampleHitInTask(accRec, rtmName, val) void
%assign accStr = ""
%if !SLibIsERTCodeFormat() && ...
::CompiledModel.FixedStepOpts.SolverMode == "MultiTasking"
%assign ptshp = RTMDispatchToAccessFcn("PerTaskSampleHitsPtr", ...
"get", "", "", rtmName)
%assign nst = RTMDispatchToAccessFcn("NumSampleTimes", ...
"get", "", "", rtmName)
%assign tj = accRec.Args[0]
%assign ti = accRec.Args[1]
%assign accStr = "((%<ptshp>)[(%<tj>)+((%<ti>) * (%<nst>))]=(%<val>))"
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsContinuousTask(accRec, rtmName) void
%assign accStr = ""
%assign tid = accRec.Args[0]
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%if LibIsContinuous(0)
%if ::CompiledModel.FixedStepOpts.SolverMode == "MultiTasking" && ...
::CompiledModel.FixedStepOpts.TID01EQ
%assign accStr = "((%<tid>) <= 1)"
%else
%assign accStr = "((%<tid>) == 0)"
%endif
%else
%assign accStr = "0"
%endif
%endif
%return accStr
%endfunction
%function FcnSpecAccsNonERTGetTaskTime(accRec, rtmName, forSfcn) void
%assign arg1 = accRec.Args[0]
%assign tp = RTMDispatchToAccessFcn("TPtr", "get", "", "", rtmName)
%if forSfcn
%assign sstid = "(ssGetSampleTimeTaskIDPtr(S))[%<arg1>]"
%else
%assign sstid = RTMDispatchToAccessFcn("SampleTimeTaskID", "get", ...
"%<arg1>", "", rtmName)
%endif
%return "(%<tp>[%<sstid>])"
%endfunction
%function RTMSpecAccsGetTaskTime(accRec, rtmName) void
%if IsModelReferenceForASimstructBasedTarget()
%if RTMMdlRefTriggerTIDMayBeRequired()
%assign indx = FcnGetMdlRefTriggerTIDMap(rtmName)
%else
%assign tid = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<tid>]"
%endif
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign accStr = "ssGetTaskTime( ssGetRootSS(%<simS>), %<indx>)"
%return accStr
%endif
%if !SLibIsERTCodeFormat() || GenerateGRTWrapper
%assign accStr = FcnSpecAccsNonERTGetTaskTime(accRec, rtmName, TLC_FALSE)
%else
%assign accStr = ""
%endif
%return accStr
%endfunction
%function RTMSpecAccsSetTaskTime(accRec, rtmName, val) void
%if IsModelReferenceForASimstructBasedTarget()
%assign tid = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<tid>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign accStr = "_ssSetTaskTime(ssGetRootSS(%<simS>), %<indx>, %<val>)"
%return accStr
%endif
%if SLibIsERTCodeFormat() && !GenerateGRTWrapper
%assign accStr = ""
%else
%assign arg1 = accRec.Args[0]
%assign tp = RTMDispatchToAccessFcn("TPtr", "get", "", "", rtmName)
%assign accStr = "(%<tp>[%<arg1>] = (%<val>))"
%endif
%return accStr
%endfunction
%function FcnSpecAccsNonERTIsSampleHit(args, rtmName, forSfcn) void
%assign accStr = ""
%assign sti = args[0]
%assign tid = args[1]
%if forSfcn
%assign sstid = "(ssGetSampleTimeTaskIDPtr(S))[%<sti>]"
%else
%assign sstid = RTMDispatchToAccessFcn("SampleTimeTaskID", "get", ...
"%<sti>", "", rtmName)
%endif
%if ::CompiledModel.SolverType != "FixedStep" || ...
::CompiledModel.FixedStepOpts.SolverMode != "MultiTasking"
%assign shp = RTMDispatchToAccessFcn("SampleHitPtr", "get", ...
"", "", rtmName)
%assign accStr = "%<shp>[%<sstid>]"
%if LibIsContinuous(0)
%assign accStr = "(rtmIsMajorTimeStep(%<rtmName>) " + ...
"&& %<accStr>)"
%endif
%else
%assign accStr = "(%<sstid> == (%<tid>))"
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsSampleHit(accRec, rtmName) void
%assign accStr = ""
%if SLibIsERTCodeFormat()
%if IsModelReferenceTarget()
%if IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "ssIsSampleHit( ssGetRootSS(%<simS>), %<indx>, tid)"
%elseif ::tMdlRefTimingBridgeAccessed && ::tMdlRefGlobalTIDMapAccessed
%assign base = "%<FcnGetTimingBridge(rtmName)>->taskCounter"
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign sti = accRec.Args[0]
%assign indx = "%<tidMap>[%<sti>]"
%return "(%<base>[%<indx>] == 0)"
%endif
%elseif GenerateGRTWrapper
%assign accStr = FcnSpecAccsNonERTIsSampleHit(accRec.Args, rtmName, ...
TLC_FALSE)
%assign accStr = "(%<accStr>)"
%endif
%else
%assign accStr = FcnSpecAccsNonERTIsSampleHit(accRec.Args, rtmName, TLC_FALSE)
%assign accStr = "(%<accStr>)"
%endif
%return accStr
%endfunction
%function FcnSpecAccsNonERTIsSpecialSampleHit(accRec, rtmName, forSfcn) void
%assign accStr = ""
%assign sti = accRec.Args[0]
%assign tid = accRec.Args[2]
%if ::CompiledModel.SolverType == "FixedStep" && ...
::CompiledModel.FixedStepOpts.SolverMode == "MultiTasking"
%if forSfcn
%assign sstid = "(ssGetSampleTimeTaskIDPtr(S))[%<sti>]"
%else
%assign sstid = RTMDispatchToAccessFcn("SampleTimeTaskID", "get", ...
"%<sti>", "", rtmName)
%endif
%assign ptshp = RTMDispatchToAccessFcn("PerTaskSampleHitsPtr", ...
"get", "", "", rtmName)
%assign nst = RTMDispatchToAccessFcn("NumSampleTimes", ...
"get", "", "", rtmName)
%assign accStr = "%<ptshp>[%<sstid>+((%<tid>) * (%<nst>))]"
%if LibIsContinuous(0)
%assign accStr = "(rtmIsMajorTimeStep(%<rtmName>) && %<accStr>)"
%endif
%else
%assign argArr = ["%", "%"]
%assign accStr = FcnSpecAccsNonERTIsSampleHit(argArr, rtmName, forSfcn)
%endif
%return accStr
%endfunction
%function RTMSpecAccsIsSpecialSampleHit(accRec, rtmName) void
%assign accStr = ""
%if SLibIsERTCodeFormat()
%if ::CompiledModel.NumRuntimeExportedRates > 1 && ...
IsModelReferenceTarget()
%if !SLibSingleTasking()
%assign sti = accRec.Args[0]
%assign promo_sti = accRec.Args[1]
%if IsModelReferenceForASimstructBasedTarget()
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%assign g_sti = "%<tidMap>[%<sti>]"
%assign g_promo_sti = "%<tidMap>[%<promo_sti>]"
%return "ssIsSpecialSampleHit( ssGetRootSS(%<simS>), %<g_sti>, %<g_promo_sti>, tid)"
%elseif ::tMdlRefTimingBridgeAccessed && ::tMdlRefGlobalTIDMapAccessed
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign base = "(%<FcnGetTimingBridge(rtmName)>->rateTransition)"
%assign nTs = "%<FcnGetTimingBridge(rtmName)>->nTasks"
%assign indx = "%<tidMap>[%<sti>] + " ...
"%<nTs>*%<tidMap>[%<promo_sti>]"
%return "( *(%<base>[%<indx>]) )"
%else
%return ""
%endif
%endif
%endif
%else
%assign accStr = FcnSpecAccsNonERTIsSpecialSampleHit(accRec, rtmName, TLC_FALSE)
%endif
%return accStr
%endfunction
%function RTMSpecAccsTaskRunsThisBaseStep(accRec, rtmName) void
%assign accStr = ""
%if (RTMTaskCountersIsReqFcn() && !SLibSingleTasking())
%assign idx = accRec.Args[0]
%assign accStr = "((rtm)->Timing.TaskCounters.TID[(%<idx>)] == 0)"
%endif
%return accStr
%endfunction
%function RTMSpecAccsTaskCounter(accRec, rtmName) void
%assign accStr = ""
%if RTMTaskCountersIsReqFcn() && !SLibSingleTasking()
%assign idx = accRec.Args[0]
%assign accStr = "((rtm)->Timing.TaskCounters.TID[(%<idx>)])"
%endif
%return accStr
%endfunction
%function RTMSpecAccsCounterLimit(accRec, rtmName) void
%assign accStr = ""
%if RTMTaskCountersIsReqFcn() && !SLibSingleTasking()
%assign idx = accRec.Args[0]
%assign accStr = "((rtm)->Timing.TaskCounters.cLimit[(%<idx>)])"
%endif
%return accStr
%endfunction
%function RTMSpecAccsUpdateSubrateTaskTime(accRec, rtmName) void
%return ""
%endfunction
%function RTMSpecAccsUpdateRealAbsoluteTime(accRec, rtmName) void
%return ""
%endfunction
%function RTMSpecAccsUpdateIntegerAbsoluteTime(accRec, rtmName) void
%return ""
%endfunction
%function GetIndexForTimingBridgeClockTick(rtmName, sti) void
%if RTMMdlRefTriggerTIDMayBeRequired()
%assign stindex = FcnGetMdlRefTriggerTIDMap(rtmName)
%else
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign stindex = "%<tidMap>[%<sti>]"
%endif
%return stindex
%endfunction
%function RTMSpecAccsGetClockTick(accRec, rtmName) void
%assert IsModelReferenceTarget()
%assign args = IDNUM(accRec.Name)
%assert ISEQUAL(args[0],"ClockTick")
%assign sti = args[1]
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign indx = GetIndexForTimingBridgeClockTick(rtmName, sti)
%return "ssGetClockTick( ssGetRootSS(%<simS>), %<indx>)"
%elseif ::tMdlRefTimingBridgeAccessed && ::tMdlRefGlobalTIDMapAccessed
%assign base = "%<FcnGetTimingBridge(rtmName)>->clockTick"
%assign indx = GetIndexForTimingBridgeClockTick(rtmName, sti)
%return "( *((%<base>[%<indx>])) )"
%else
%return ""
%endif
%endfunction
%function RTMSpecAccsGetClockTickH(accRec, rtmName) void
%assert IsModelReferenceTarget()
%assign args = IDNUM(accRec.Name)
%assert ISEQUAL(args[0],"ClockTickH")
%assign sti = args[1]
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%assign indx = GetIndexForTimingBridgeClockTick(rtmName, sti)
%return "ssGetClockTickH( ssGetRootSS(%<simS>), %<indx>)"
%elseif ::tMdlRefTimingBridgeAccessed && ::tMdlRefGlobalTIDMapAccessed
%assign base = "%<FcnGetTimingBridge(rtmName)>->clockTickH"
%assign indx = GetIndexForTimingBridgeClockTick(rtmName, sti)
%return "( *(%<base>[%<indx>]) )"
%else
%return ""
%endif
%endfunction
%function RTMSpecAccsGetLogOutput(accRec, rtmName) void
%assert IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","", rtmName)
%return "ssGetLogOutput(%<simS>)"
%endfunction
%function FcnGetArgStrForRec(theRec) void
%assign retStr = ""
%assign args = theRec.Args
%foreach argIdx = theRec.NumArgs
%assign retStr = retStr + ", "
%assign thisarg = args[argIdx]
%assign retStr = retStr + thisarg
%endforeach
%return retStr
%endfunction
%function FcnGetMdlRefGlobalTIDMap(rtmName) void
%assert IsModelReferenceTarget()
%assign ::tMdlRefGlobalTIDMapAccessed = TLC_TRUE
%assign ::tMdlRefNeedTIDArgs = TLC_TRUE
%if RTMMdlRefGlobalTIDIsInstanceBased()
%if ISEMPTY(rtmName)
%assign retStr = RTMGet("MdlRefGlobalTID")
%else
%assign retStr = RTMDispatchToAccessFcn("MdlRefGlobalTID","get","","", rtmName)
%endif
%else
%assign retStr = "%<::tMdlRefGlobalTID>"
%endif
%return retStr
%endfunction
%function FcnGetMdlRefTriggerTIDMap(rtmName) void
%assert IsModelReferenceTarget()
%assert RTMMdlRefTriggerTIDMayBeRequired()
%assign ::tMdlRefGlobalTIDMapAccessed = TLC_TRUE
%assign ::tMdlRefNeedTIDArgs = TLC_TRUE
%if ISEMPTY(rtmName)
%return RTMGet("MdlRefTriggerTID")
%else
%return RTMDispatchToAccessFcn("MdlRefTriggerTID","get","","", rtmName)
%endif
%endfunction
%function RTMSetNonContDerivSignal(index, size, currVal)
%assign sig = RTMGetIdxed("NonContDerivSignal", index)
%assign memstruct = RTMGet("NonContDerivMemory")
%assign memstructidx = "%<memstruct>.mr_nonContSig%<index>"
%assign accStr = "%<sig>.pPrevVal = (char_T *) %<memstructidx>;/n"
%assign accStr = accStr + "%<sig>.sizeInBytes = (%<size>);/n"
%assign accStr = accStr + "%<sig>.pCurrVal = (char_T *)(%<currVal>);"
%return accStr
%endfunction
%function RTMSpecAccsSetSampleHit(accRec, rtmName, val)
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "_ssSetSampleHit(ssGetRootSS(%<simS>), %<indx>, %<val>)"
%endfunction
%function RTMSpecAccsSetVarNextHitTime(accRec, rtmName, val)
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "ssSetTimeOfNextVarHit(%<simS>, %<indx>, %<val>)"
%endfunction
%function RTMSpecAccsGetVarNextHitTime(accRec, rtmName)
%assert IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>+%]"
%assign rootVarIndx = "(int)(ssGetOffsetTime(ssGetRootSS(%<simS>), %<indx>))"
%return "(_ssGetVarNextHitTime(%<simS>, %<rootVarIndx>))"
%endfunction
%function RTMSpecAccsGetTNextWasAdjusted(accRec, rtmName)
%assert IsModelReferenceForASimstructBasedTarget()
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "(ssGetTNextWasAdjusted(%<simS>, %<indx>))"
%endfunction
%function RTMSpecAccsSetNumTicksToNextHit(accRec, rtmName, val)
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "ssSetNumTicksToNextHitForControllableSampleTime(ssGetRootSS(%<simS>), %<indx>, %<val>)"
%else
%assign ctrlRateTiming = RTMDispatchToAccessFcn("CtrlRateMdlRefTimingPtr", "get", "", "", rtmName)
%return "(%<ctrlRateTiming>->numTicksToNextHitForCtrlRate[%<indx>-%<ctrlRateTiming>->firstCtrlRateTID] = (uint32_T)(%<val>))"
%endif
%endfunction
%function RTMSpecAccsGetNumTicksToNextHit(accRec, rtmName)
%assign sti = accRec.Args[0]
%assign tidMap = FcnGetMdlRefGlobalTIDMap(rtmName)
%assign indx = "%<tidMap>[%<sti>]"
%if IsModelReferenceForASimstructBasedTarget()
%assign simS = RTMDispatchToAccessFcn("MdlRefSfcnS","get","","",rtmName)
%return "(ssGetNumTicksToNextHitForControllableSampleTime(ssGetRootSS(%<simS>), %<indx>))"
%else
%assign ctrlRateTiming = RTMDispatchToAccessFcn("CtrlRateMdlRefTimingPtr", "get", "", "", rtmName)
%return "(%<ctrlRateTiming>->numTicksToNextHitForCtrlRate[%<indx>-%<ctrlRateTiming>->firstCtrlRateTID])"
%endif
%endfunction
%endif