This example shows what happens when processing three events using an inner transition in an exclusive (OR) state.
This example shows the behavior of an inner transition. The chart uses implicit ordering of outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State A
is active.
Condition [C_one]
is false. Event E_one
occurs and awakens the chart, which processes the event from the root down
through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
. A potentially valid
transition from state A
to state B
is detected. However, the transition is not valid, because
[C_one]
is false.
State A
during actions
(durA()
) execute and complete.
State A
checks its children for
a valid transition and detects a valid inner transition.
State A
remains active. The
inner transition action A_two
is executed and
completed. Because it is an inner transition, state
A
's exit and entry actions are not executed.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow® chart associated with event E_one
.
Using the previous example, this example shows what happens when a second
event E_one
occurs. The chart uses implicit ordering of
outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State A
is still active.
Condition [C_one]
is true. Event E_one
occurs and awakens the chart, which processes the event from the root down
through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
.
The transition from state A
to state
B
is now valid because [C_one]
is true.
State A
exit actions
(exitA()
) execute and complete.
State A
is marked
inactive.
The transition action A_one
is
executed and completed.
State B
is marked
active.
State B
entry actions
(entB()
) execute and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_one
.
Using the previous example, this example shows what happens when a third
event, E_two
, occurs. The chart uses implicit ordering of
outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State B
is now active.
Condition [C_two]
is false. Event E_two
occurs and awakens the chart, which processes the event from the root down
through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_two
.
A potentially valid transition from state B
to
state A
is detected. The transition is not valid
because [C_two]
is false. However, active state
B
has a valid self-loop transition.
State B
exit actions
(exitB()
) execute and complete.
State B
is marked
inactive.
The self-loop transition action,
A_four
, executes and completes.
State B
is marked
active.
State B
entry actions
(entB()
) execute and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_two
. This example
shows the difference in behavior between inner and self-loop transitions.
This example shows the behavior of handling repeated events using an inner transition to a connective junction.
This example shows the behavior of an inner transition to a connective junction for the first event. The chart uses implicit ordering of outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State A1
is active.
Condition [C_two]
is true. Event E_one
occurs and awakens the chart, which processes the event from the root down
through the hierarchy:
The chart root checks to see if there is a valid
transition at the root level as a result of E_one
.
There is no valid transition.
State A
during actions
(durA()
) execute and complete.
State A
checks itself for valid
transitions and detects that there is a valid inner transition to a
connective junction.
The conditions are evaluated to determine whether one of the
transitions is valid. Because implicit ordering applies, the segments
labeled with a condition are evaluated before the unlabeled segment. The
evaluation starts from a 12 o'clock position on the junction and
progresses in a clockwise manner. Because [C_two]
is
true, the inner transition to the junction and then to state
A
.A2
is valid.
State A
.A1
exit actions (exitA1()
) execute and complete.
State A
.A1
is marked inactive.
State A
.A2
is marked active.
State A
.A2
entry actions (entA2()
) execute and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_one
when state
A1
is active and condition [C_two]
is
true.
Continuing the previous example, this example shows the behavior of an inner
transition to a junction when a second event E_one
occurs.
The chart uses implicit ordering of outgoing transitions (see Implicit Ordering).
Initially, the chart is asleep. State A2
is active.
Condition [C_two]
is true. Event E_one
occurs and awakens the chart, which processes the event from the root down
through the hierarchy:
The chart root checks to see if there is a valid
transition at the root level as a result of E_one
.
There is no valid transition.
State A
during actions
(durA()
) execute and complete.
State A
checks itself for valid
transitions and detects a valid inner transition to a connective
junction.
The conditions are evaluated to determine whether one of the
transitions is valid. Because implicit ordering applies, the segments
labeled with a condition are evaluated before the unlabeled segment. The
evaluation starts from a 12 o'clock position on the junction and
progresses in a clockwise manner. Because [C_two]
is
true, the inner transition to the junction and then to state
A.A2
is valid.
State A
.A2
exit actions (exitA2()
) execute and complete.
State A
.A2
is marked inactive.
State A
.A2
is marked active.
State A
.A2
entry actions (entA2()
) execute and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_one
when state
A2
is active and condition [C_two]
is
true. For a state with a valid inner transition, an active substate can be
exited and reentered immediately.
This example shows the behavior of an inner transition to a history junction.
Initially, the chart is asleep. State A.A1
is active. History
information exists because superstate A
is active. Event
E_one
occurs and awakens the chart, which processes the event
from the root down through the hierarchy:
The chart root checks to see if there is a valid
transition as a result of E_one
. There is no valid
transition.
State A
during actions execute and
complete.
State A
checks itself for valid
transitions and detects that there is a valid inner transition to a history
junction. Based on the history information, the last active state,
A.A1
, is the destination state.
State A.A1
exit actions execute and
complete.
State A.A1
is marked
inactive.
State A.A1
is marked active.
State A.A1
entry actions execute
and complete.
The chart goes back to sleep.
This sequence completes the execution of this Stateflow chart associated with event E_one
when there is an
inner transition to a history junction and state A.A1
is active.
For a state with a valid inner transition, an active substate can be exited and
reentered immediately.