ptolemy.domains.ptinyos.lib
Class SurgeVisualizer

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.domains.wireless.lib.LinkVisualizer
                              extended by ptolemy.domains.ptinyos.lib.SurgeVisualizer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, ChannelListener, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class SurgeVisualizer
extends LinkVisualizer

This actor is used with the Surge TinyOS application to visualize links between nodes in a multihop network. In Surge, there are two types of packets transmitted. The first type is a beacon message sent from the base station. The second type is a Surge message, which originates from a sensing node and contains sensor data. The beginning of the packet format is as follows: bits 1-16: address field bits 17-24: type field The address field is set to 0xFFFF if it is a broadcast message. Otherwise, it contains the destination node id. The type field is set to 0xFA if it is a beacon message (implemented in TinyOS as MultiHopMsg). Beacon messages are sent with address field set to 0xFFFF. The type field is set to 0x11 if it is a Surge message. FIXME: Surge doesn't correctly set the type field for Surge messages. The value that we see is 0x00, so we filter for this instead. This actor extends LinkVisualizer and by inheritance, implements the ChannelListener interface. It inspects the token transmitted, and based on the data, may create a line between two communicating nodes that are within range of one another. It registers itself with the wireless channel specified by the channelName parameter.

Since:
Ptolemy II 4.0
Version:
$Id: SurgeVisualizer.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Heather Taylor, Elaine Cheong
See Also:
Serialized Form
Accepted Rating:
Yellow (celaine)
Proposed Rating:
Yellow (celaine)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.domains.wireless.lib.LinkVisualizer
LinkVisualizer._LinkVisualizerThread
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
 
Fields inherited from class ptolemy.domains.wireless.lib.LinkVisualizer
_isOff, channelName, sleepTime
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
SurgeVisualizer(CompositeEntity container, java.lang.String name)
          Construct an actor with the specified container and name.
 
Method Summary
 void channelNotify(RecordToken properties, Token token, WirelessIOPort sender, WirelessIOPort destination)
          Parse the token, and visualize a line between the sender and destination container only if the type field in the packet stored in token corresponds to a Surge packet AND the nodeID of the destination node (i.e., the node that contains the destination WirelessIOPort) is the same as the address field in the Surge packet.
 
Methods inherited from class ptolemy.domains.wireless.lib.LinkVisualizer
_drawLine, _removeLine, initialize, setContainer
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, 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.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
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, attributeChanged, 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
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Constructor Detail

SurgeVisualizer

public SurgeVisualizer(CompositeEntity container,
                       java.lang.String name)
                throws NameDuplicationException,
                       IllegalActionException
Construct an actor with the specified container and name.

Parameters:
container - The container.
name - The name.
Throws:
IllegalActionException - If the entity cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

channelNotify

public void channelNotify(RecordToken properties,
                          Token token,
                          WirelessIOPort sender,
                          WirelessIOPort destination)
Parse the token, and visualize a line between the sender and destination container only if the type field in the packet stored in token corresponds to a Surge packet AND the nodeID of the destination node (i.e., the node that contains the destination WirelessIOPort) is the same as the address field in the Surge packet. The line is visualized by starting a thread that will create and remove the line after some amount of time.

Specified by:
channelNotify in interface ChannelListener
Overrides:
channelNotify in class LinkVisualizer
Parameters:
properties - The properties of this transmission.
token - The token of this transmission, which can be processed here.
sender - The sending port.
destination - The receiving port.