
FSMDirector |
ptolemy.domains.fsm.kernel.FSMDirector |
An FSMDirector governs the execution of a modal model. A modal model is
a TypedCompositeActor with a FSMDirector as local director. The mode
control logic is captured by a mode controller, an instance of FSMActor
contained by the composite actor. Each state of the mode controller
represents a mode of operation and can be refined by an opaque CompositeActor
contained by the same composite actor.
<p>
When a modal model is fired, this director first transfers the input tokens
from the outside domain to the mode controller and the refinement of its
current state. The preemptive transitions from the current state of the mode
controller are examined. If there is more than one transition enabled, an
exception is thrown. If there is exactly one preemptive transition enabled
then it is chosen. The choice actions contained by the transition are
executed. Any output token produced by the mode controller is transferred to
both the output ports of the modal model and the input ports of the mode
controller. Then the refinements associated with the enabled transition are
executed. Any output token produced by the refinements is transferred to
both the output ports of the modal model and the input ports of the mode
controller. The refinements of the current state will not be fired.
<p>
If no preemptive transition is enabled, the refinements of the current state
are fired. Any output token produced by the refinements is transferred to
both the output ports of the modal model and the input ports of the mode
controller. After this, the non-preemptive transitions from the current
state of the mode controller are examined. If there is more than one
transition enabled, an exception is thrown. If there is exactly one
non-preemptive transition enabled then it is chosen and the choice actions
contained by the transition are executed. Any output token produced by the
mode controller is transferred to the output ports of the modal model and
the input ports of the mode controller. Then, the refinements of the
enabled transition are executed. Any output token produced by the refinements
is transferred to both the output ports of the modal model and the input
ports of the mode controller.
<p>
At the end of one firing, the modal model transfers its outputs to the outside
model. The mode controller does not change state during successive firings
in one iteration of the top level in order to support upper level domains
that iterate to a fixed point.
<p>
When the modal model is postfired, the chosen transition of the latest
firing is committed. The commit actions contained by the transition are
executed and the current state of the mode controller is set to the
destination state of the transition.
Author(s): Xiaojun Liu, Haiyang Zheng
Version:$Id: FSMDirector.doc.html,v 1.1 2006/02/22 18:40:27 mangal Exp $
Pt.Proposed Rating:Yellow (hyzheng)
Pt.Accepted Rating:Red (hyzheng)