Package ptolemy.domains.wireless.kernel
Interface WirelessChannel
-
- All Superinterfaces:
Actor
,ChannelListener
,Executable
,Initializable
,Nameable
,PropertyTransformer
- All Known Implementing Classes:
AtomicWirelessChannel
,BluetoothChannel
,DelayChannel
,ErasureChannel
,LimitedRangeChannel
,PowerLossChannel
public interface WirelessChannel extends Actor, Nameable, PropertyTransformer, ChannelListener
Interface for wireless channels in the wireless domain. Wireless channels are special components in a wireless model. They are used to determine the connectivity and deliver tokens from the transmitter to receiver(s). This interface defines a set of methods for the wireless channel components.The transmitter can call the channel's transmit() method to deliver data to its corresponding receivers. It can specify the transmission properties by a record token including the transmission range, transmission power. The transmit properties may be modified by the channel model or by some property transformers(@see PropertyTransformer) during the transmission to take into account channel losses, antenna gain, noise, etc.
Channel listeners may also be added to this channel.
- Since:
- Ptolemy II 4.0
- Version:
- $Id$
- Author:
- Yang Zhao, Edward A. Lee, Heather Taylor, Elaine Cheong
- Pt.AcceptedRating:
- Yellow (cxh)
- Pt.ProposedRating:
- Green (cxh)
-
-
Field Summary
-
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addChannelListener(ChannelListener listener)
Add a channel listener to listen for transmissions on this channel.ChannelPort
getChannelPort()
Return a channel port that can be used to set type constraints between senders and receivers.java.util.List
listeningInputPorts()
Return a list of input ports that can potentially receive data from this channel.java.util.List
listeningOutputPorts()
Return a list of output ports that can potentially receive data from this channel.void
registerPropertyTransformer(PropertyTransformer transformer, WirelessIOPort port)
Register a property transformer for transmissions from the specified port.void
removeChannelListener(ChannelListener listener)
Remove a channel listener for transmissions on this channel.java.util.List
sendingInputPorts()
Return a list of input ports that can potentially send data to this channel.java.util.List
sendingOutputPorts()
Return a list of output ports that can potentially send data to this channel.void
transmit(Token token, WirelessIOPort port, RecordToken properties)
Transmit the specified token from the specified port with the specified properties.void
unregisterPropertyTransformer(PropertyTransformer transformer, WirelessIOPort port)
Unregister a property transformer for transmissions from the specified port (or from null for a generic property transformer).-
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
-
Methods inherited from interface ptolemy.domains.wireless.kernel.ChannelListener
channelNotify
-
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
Methods inherited from interface ptolemy.domains.wireless.kernel.PropertyTransformer
transformProperties
-
-
-
-
Method Detail
-
addChannelListener
void addChannelListener(ChannelListener listener)
Add a channel listener to listen for transmissions on this channel. A ChannelListener can read the transmission property and token that was transmitted on this channel. If the channel listener has already been added, then no changes are made. If multiple channel listeners are registered that can operate on a given transmission, then the order in which they are applied is arbitrary.- Parameters:
listener
- The channel listener to add.- See Also:
removeChannelListener(ChannelListener)
-
getChannelPort
ChannelPort getChannelPort()
Return a channel port that can be used to set type constraints between senders and receivers. An channel contains a single port, which is an instance of ChannelPort. The port is merely used to set up n type constrains instead of n*n, where n is the number of ports using the channel.- Returns:
- The channel port.
-
listeningInputPorts
java.util.List listeningInputPorts() throws IllegalActionException
Return a list of input ports that can potentially receive data from this channel. This must include input ports contained by entities contained by the container of this channel that have their outsideChannel parameter set to the name of this channel. Transparent hierarchy is not supported.- Returns:
- The list of input ports of class WirelessIOPort using this channel.
- Throws:
IllegalActionException
- If a port is encountered whose outsideChannel parameter cannot be evaluated.
-
listeningOutputPorts
java.util.List listeningOutputPorts() throws IllegalActionException
Return a list of output ports that can potentially receive data from this channel. This must include output ports contained by the container of this channel that have their insideChannel parameter set to the name of this channel. This method gets read access on the workspace.- Returns:
- The list of output ports of class WirelessIOPort using this channel.
- Throws:
IllegalActionException
- If a port is encountered whose insideChannel parameter cannot be evaluated.
-
registerPropertyTransformer
void registerPropertyTransformer(PropertyTransformer transformer, WirelessIOPort port)
Register a property transformer for transmissions from the specified port. A PropertyTransformer modifies the transmission property and returns the modified property. If null is given for the port, then the property transformer will be used for all transmissions through this channel. If multiple property transformers are registered that can operate on a given transmission, then the order in which they are applied is arbitrary. Thus, property transformers should implement commutative operations on the properties (such as multiplying a field by a value). If the property transformer is already registered with a particular port, then an implementer of this method must not register it again with that port. Similarly, if a property transformer is registered with no port, then an implementer of this method must not register it again with no port.- Parameters:
transformer
- The property transformer to be registered.port
- The port whose transmissions should be subject to the property transformer, or null to make them subject to all transmissions through this channel.
-
removeChannelListener
void removeChannelListener(ChannelListener listener)
Remove a channel listener for transmissions on this channel. If the listener has not been added, then do nothing.- Parameters:
listener
- The channel listener to remove.- See Also:
addChannelListener(ChannelListener)
-
sendingInputPorts
java.util.List sendingInputPorts() throws IllegalActionException
Return a list of input ports that can potentially send data to this channel. This must include input ports contained by the container of this channel that have their insideChannel parameter set to the name of this channel. This method gets read access on the workspace.- Returns:
- The list of input ports of class WirelessIOPort using this channel.
- Throws:
IllegalActionException
- If a port is encountered whose insideChannel parameter cannot be evaluated.
-
sendingOutputPorts
java.util.List sendingOutputPorts() throws IllegalActionException
Return a list of output ports that can potentially send data to this channel. This must include output ports contained by entities contained by the container of this channel that have their outsideChannel parameter set to the name of this channel. This method gets read access on the workspace.- Returns:
- The list of output ports of class WirelessIOPort using this channel.
- Throws:
IllegalActionException
- If a port is encountered whose outsideChannel parameter cannot be evaluated.
-
transmit
void transmit(Token token, WirelessIOPort port, RecordToken properties) throws IllegalActionException
Transmit the specified token from the specified port with the specified properties. All ports that are in range must receive the token if they have room in their receiver.- Parameters:
token
- The token to transmit, or null to clear all receivers that are in range.port
- The port from which this is being transmitted.properties
- The transmission properties.- Throws:
IllegalActionException
- If something goes wrong during the transmission.
-
unregisterPropertyTransformer
void unregisterPropertyTransformer(PropertyTransformer transformer, WirelessIOPort port)
Unregister a property transformer for transmissions from the specified port (or from null for a generic property transformer). If the transformer has not been registered, then do nothing.- Parameters:
transformer
- The property transformer to be unregistered.port
- The port whose transmissions should be subject to the property transformer, or null for a generic transformer.- See Also:
registerPropertyTransformer(PropertyTransformer, WirelessIOPort)
-
-