ptolemy.domains.ct.lib
Class CTPeriodicSampler
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.domains.ct.lib.CTPeriodicSampler
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, CTEventGenerator, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class CTPeriodicSampler
- extends Transformer
- implements CTEventGenerator
This actor generates discrete events by periodically sampling a CT signal.
The events have the values of the input signal at the sampling times. The
sampling rate is given by parameter "samplePeriod", which has default value
0.1. The actor has a multi-input port and a multi-output port. Signals in
each input channel are sampled and produced to corresponding output
channel.
- Since:
- Ptolemy II 0.3
- Version:
- $Id: CTPeriodicSampler.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Jie Liu, Haiyang Zheng
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Method Summary |
void |
attributeChanged(Attribute attribute)
Update the local cache of the sampling period if it has been changed. |
java.lang.Object |
clone(Workspace workspace)
Clone this actor into the specified workspace. |
void |
fire()
Generate a discrete event if the current time is one of the sampling
times. |
boolean |
hasCurrentEvent()
Return true if there is a current event. |
void |
initialize()
Set the next sampling time as the start time (i.e. the current time). |
boolean |
postfire()
Set the next sampling time and return true. |
void |
preinitialize()
Make sure the actor runs inside a CT domain. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
samplePeriod
public Parameter samplePeriod
- The parameter for the sampling period. It contains a double token
whose default value is 0.1.
_hasCurrentEvent
private boolean _hasCurrentEvent
_nextSamplingTime
private Time _nextSamplingTime
_samplePeriod
private double _samplePeriod
CTPeriodicSampler
public CTPeriodicSampler(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
- Construct an actor in the specified container with the specified
name. The name must be unique within the container or an exception
is thrown. The container argument must not be null, or a
NullPointerException will be thrown.
The actor can be either dynamic, or not. It must be set at the
construction time and can't be changed thereafter.
A dynamic actor will produce a token at its initialization phase.
- Parameters:
container
- The container of this actor.name
- The actor's name
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If name coincides with
an entity already in the container.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Update the local cache of the sampling period if it has been changed.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the sampling period is
less than or equal to 0.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone this actor into the specified workspace. The new actor is
not added to the directory of that workspace (you must do this
yourself if you want it there).
The result is a new actor with the same ports as the original, but
no connections and no container. A container must be set before
much can be done with this actor.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the cloned object.
- Returns:
- A new ComponentEntity.
- Throws:
java.lang.CloneNotSupportedException
- If cloned ports cannot have
as their container the cloned entity (this should not occur), or
if one of the attributes cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- Generate a discrete event if the current time is one of the sampling
times. The value of the event is the value of the input signal at the
current time.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If the transfer of tokens failed.
hasCurrentEvent
public boolean hasCurrentEvent()
- Return true if there is a current event. In other words, the current
time is one of the sampling times.
- Specified by:
hasCurrentEvent
in interface CTEventGenerator
- Returns:
- If there is a discrete event to emit.
initialize
public void initialize()
throws IllegalActionException
- Set the next sampling time as the start time (i.e. the current time).
We do not register the start time as a breakpoint, since the
director will fire at the start time any way.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If thrown by the supper class.
postfire
public boolean postfire()
throws IllegalActionException
- Set the next sampling time and return true.
It computes the next sampling time, and registers it as a breakpoint.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True.
- Throws:
IllegalActionException
- If the next sampling time can not be
set as a breakpoint.
preinitialize
public void preinitialize()
throws IllegalActionException
- Make sure the actor runs inside a CT domain.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- If the director is not
a CTDirector or the parent class throws it.