Interface XNetInterface

All Known Implementing Classes:
LI100XNetPacketizer, LIUSBEthernetXNetPacketizer, LIUSBServerXNetPacketizer, LIUSBXNetPacketizer, XNetPacketizer, XNetTrafficController, XNetTrafficRouter, XnTcpXNetPacketizer, Z21XNetPacketizer, ZTC611XNetPacketizer, ZTC640XNetPacketizer

public interface XNetInterface
XNetInterface defines the general connection to an XNet layout.

Use this interface to send messages to an XNet layout. Classes implementing the XNetListener interface can register here to receive incoming XNet messages as events.

The jmri.jrmix.lenz.XNetTrafficControler provides the first implementation of this interface.

How do you locate an implemenation of this interface? That's an interesting question. This is inherently XNet specific, so it would be inappropriate to put it in the jmri.InterfaceManager. And Java interfaces can't have static members, so we can't provide an implementation() member. For now, we use a static implementation member in the XNetTrafficController implementation to locate _any_ implementation; this clearly needs to be improved.

XNetListener implementations registering for traffic updates cannot assume that messages will be returned in any particular thread. See the XNetListener doc for more background.

See Also:
XNetListener, XNetTrafficController
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static int ALL
    Mask value to request notification of all incoming messages
    static int COMMINFO
    Mask value to request notification of communications related messages generated by the computer interface
    static int CONSIST
    Mask value to request notification of messages associated with consists
    static int CS_INFO
    Mask value to request notification of Command Station informational messages This includes all broadcast messages, except for the feedback broadcast and all programming messages
    static int FEEDBACK
    Mask value to request notification of XpressNet FeedBack (i.e. sensor) related messages
    static int INTERFACE
    Mask value to request notification of messages associated with the interface
    static int PROGRAMMING
    Mask value to request notification of messages associated with programming
    static int THROTTLE
    Mask value to request notification of messages associated with throttle status
  • Method Summary

    Modifier and Type Method Description
    void addXNetListener​(int mask, XNetListener l)
    Request notification of things happening on the XNet.
    void removeXNetListener​(int mask, XNetListener listener)
    Stop notification of things happening on the XNet.
    void sendXNetMessage​(XNetMessage msg, XNetListener replyTo)
    Request a message be sent to the attached XNet.
    boolean status()
    Check whether an implementation is operational.
  • Field Details

  • Method Details

    • sendXNetMessage

      void sendXNetMessage​(XNetMessage msg, XNetListener replyTo)
      Request a message be sent to the attached XNet. Return is immediate, with the message being queued for eventual sending. If you're interested in a reply, you need to register an XNetListener object to watch the message stream. When sending, you specify (in 2nd parameter) who you are so you're not redundantly notified of this message.
      Parameters:
      msg - the XNet message to send.
      replyTo - sending listener to NOT notify.
    • addXNetListener

      void addXNetListener​(int mask, XNetListener l)
      Request notification of things happening on the XNet.

      The same listener can register multiple times with different masks. (Multiple registrations with a single mask value are equivalent to a single registration) Mask values are defined as class constants. Note that these are bit masks, and should be OR'd, not added, if multiple values are desired.

      The event notification contains the received message as source, not this object, so that we can notify of an incoming message to multiple places and then move on.

      Parameters:
      mask - The OR of the key values of messages to be reported (to reduce traffic, provide for listeners interested in different things)
      l - Object to be notified of new messages as they arrive.
    • removeXNetListener

      void removeXNetListener​(int mask, XNetListener listener)
      Stop notification of things happening on the XNet.

      Note that mask and XNetListener must match a previous request exactly.

      Parameters:
      mask - listening mask.
      listener - listener to remove notifications for.
    • status

      boolean status()
      Check whether an implementation is operational.
      Returns:
      true if OK, else false.