Class ErasureChannel

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, ChannelListener, PropertyTransformer, WirelessChannel, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable, ValueListener
    Direct Known Subclasses:
    DelayChannel

    public class ErasureChannel
    extends AtomicWirelessChannel
    Model of a wireless channel with a specified loss probability. If the loss probability is greater than zero then on each call to the transmit() method, for each receiver in range, with the specified probability, the transmission to that receiver will not occur. Whether a transmission occurs to a particular receiver is independent of whether it occurs to any other receiver.

    For convenience, a variable named "distance" is available and equal to the distance between the transmitter and the receiver when the lossProbability is evaluated. Thus, the loss probability can be given as an expression that depends on this distance.

    The distance between the transmitter and receiver is determined by the protected method _distanceBetween(), which is also used to set the value of the distance variable that can be used in the expression for loss probability. In this base class, that method uses the _location attribute of the transmit and receive actors, which corresponds to the position of the icon in the Vergil visual editor. Subclasses may override this protected method to provide some other notion of distance.

    Since:
    Ptolemy II 4.0
    Version:
    $Id$
    Author:
    Edward A. Lee
    Pt.AcceptedRating:
    Yellow (cxh)
    Pt.ProposedRating:
    Green (cxh)
    • Field Detail

      • lossProbability

        public Parameter lossProbability
        The probability that a call to transmit() will fail to deliver the token to a receiver that is in range. This is a double that defaults to 0.0, which means that no loss occurs.
      • seed

        public Parameter seed
        The seed that controls the random number generation. A seed of zero is interpreted to mean that no seed is specified, which means that each execution of the model could result in distinct data. For the value 0, the seed is set to System.currentTimeMillis() + hashCode(), which means that with extremely high probability, two distinct actors will have distinct seeds. However, current time may not have enough resolution to ensure that two subsequent executions of the same model have distinct seeds. This parameter contains a LongToken, initially with value 0.
      • distance

        public Variable distance
        A variable that is set to the distance between the transmitter and the receiver before the powerLossFactor expression is evaluated.
      • _random

        protected java.util.Random _random
        A random number generator.
    • Constructor Detail

      • ErasureChannel

        public ErasureChannel​(CompositeEntity container,
                              java.lang.String name)
                       throws IllegalActionException,
                              NameDuplicationException
        Construct a channel with the given name and container. The container argument must not be null, or a NullPointerException will be thrown. If the name argument is null, then the name is set to the empty string.
        Parameters:
        container - The container.
        name - The name of the channel.
        Throws:
        IllegalActionException - If the container is incompatible.
        NameDuplicationException - If the name coincides with a relation already in the container.
    • Method Detail

      • _transmitTo

        protected void _transmitTo​(Token token,
                                   WirelessIOPort sender,
                                   WirelessReceiver receiver,
                                   RecordToken properties)
                            throws IllegalActionException
        Transmit the specified token to the specified receiver. If the lossProbability is zero, (the default) then the specified receiver will receive the token if it has room. If lossProbability is greater than zero, the token will be lost with the specified probability, independently for each channel in range. Note that in this base class, a port is in range if it refers to this channel by name and is at the right place in the hierarchy. This base class makes no use of the properties argument. But derived classes may limit the range or otherwise change transmission properties using this argument.
        Overrides:
        _transmitTo in class AtomicWirelessChannel
        Parameters:
        token - The token to transmit, or null to clear the specified receiver.
        sender - The sending port.
        receiver - The receiver to which to transmit.
        properties - The transmit properties (ignored in this base class).
        Throws:
        IllegalActionException - If the token cannot be converted or if the token argument is null and the destination receiver does not support clear.