|
@@ -48,6 +48,7 @@ import org.yakindu.sct.model.stext.lib.StatechartAnnotations
|
|
import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler
|
|
import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler
|
|
import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler.TimeTask
|
|
import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler.TimeTask
|
|
import org.yakindu.sct.simulation.core.util.ExecutionContextExtensions
|
|
import org.yakindu.sct.simulation.core.util.ExecutionContextExtensions
|
|
|
|
+import org.yakindu.sct.simulation.core.sexec.container.EventDrivenSimulationEngine.EventDrivenCycleAdapter
|
|
|
|
|
|
/**
|
|
/**
|
|
*
|
|
*
|
|
@@ -152,6 +153,10 @@ class DefaultExecutionFlowInterpreter implements IExecutionFlowInterpreter, IEve
|
|
}
|
|
}
|
|
|
|
|
|
override runCycle() {
|
|
override runCycle() {
|
|
|
|
+ val cycleAdapter = EcoreUtil.getExistingAdapter(executionContext, EventDrivenCycleAdapter) as EventDrivenCycleAdapter
|
|
|
|
+ try {
|
|
|
|
+ if(cycleAdapter !== null )
|
|
|
|
+ executionContext.eAdapters.remove(cycleAdapter)
|
|
var Event event = null
|
|
var Event event = null
|
|
do {
|
|
do {
|
|
traceInterpreter.evaluate(beginRunCycleTrace, executionContext)
|
|
traceInterpreter.evaluate(beginRunCycleTrace, executionContext)
|
|
@@ -167,9 +172,14 @@ class DefaultExecutionFlowInterpreter implements IExecutionFlowInterpreter, IEve
|
|
if(! internalEventQueue.empty) event = internalEventQueue.poll
|
|
if(! internalEventQueue.empty) event = internalEventQueue.poll
|
|
traceInterpreter.evaluate(endRunCycleTrace, executionContext)
|
|
traceInterpreter.evaluate(endRunCycleTrace, executionContext)
|
|
} while (event !== null)
|
|
} while (event !== null)
|
|
|
|
+ }finally{
|
|
|
|
+ if(cycleAdapter !== null)
|
|
|
|
+ executionContext.eAdapters.add(cycleAdapter)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
def rtcStep() {
|
|
def rtcStep() {
|
|
|
|
+
|
|
activeStateIndex = 0
|
|
activeStateIndex = 0
|
|
if(executionContext.executedElements.size > 0) executionContext.executedElements.clear
|
|
if(executionContext.executedElements.size > 0) executionContext.executedElements.clear
|
|
executionContext.clearOutEvents
|
|
executionContext.clearOutEvents
|