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)
    • 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)