Class DCCppThrottleManager

java.lang.Object
jmri.jmrix.AbstractThrottleManager
jmri.jmrix.dccpp.DCCppThrottleManager
All Implemented Interfaces:
EventListener, AbstractMRListener, DCCppListener, ThrottleManager

DCC++ implementation of a ThrottleManager based on the AbstractThrottleManager.
  • Field Details

  • Constructor Details

  • Method Details

    • requestThrottleSetup

      public void requestThrottleSetup(LocoAddress address, boolean control)
      Request a new throttle object be created for the address, and let the throttle listeners know about it. Abstract member to actually do the work of configuring a new throttle, usually via interaction with the DCC system.
      Specified by:
      requestThrottleSetup in class AbstractThrottleManager
      Parameters:
      address - address
      control - false - read only.
    • hasDispatchFunction

      public boolean hasDispatchFunction()
      DCC++ based systems DO NOT use the Dispatch Function (do they?) Check to see if the Dispatch Button should be enabled or not Default to true, override if necessary
      Specified by:
      hasDispatchFunction in interface ThrottleManager
      Overrides:
      hasDispatchFunction in class AbstractThrottleManager
      Returns:
      true if dispatch is possible; false otherwise
    • singleUse

      protected boolean singleUse()
      DCC++ based systems can have multiple throttles for the same device

      Does this DCC system allow a Throttle (e.g. an address) to be used by only one user at a time?

      Overrides:
      singleUse in class AbstractThrottleManager
      Returns:
      true or false
    • canBeLongAddress

      public boolean canBeLongAddress(int address)
      Address 128 and above is a long address
      Specified by:
      canBeLongAddress in interface ThrottleManager
      Parameters:
      address - address number to test
      Returns:
      true if address can be long; false otherwise
    • canBeShortAddress

      public boolean canBeShortAddress(int address)
      Address between 1 and 127 is a short address
      Specified by:
      canBeShortAddress in interface ThrottleManager
      Parameters:
      address - address number to test
      Returns:
      true if address can be short; false otherwise
    • addressTypeUnique

      public boolean addressTypeUnique()
      There are no ambiguous addresses on this system.
      Specified by:
      addressTypeUnique in interface ThrottleManager
      Returns:
      true if ambiguous addresses are not allowed; false otherwise
    • isLongAddress

      protected static boolean isLongAddress(int num)
      Local method for deciding short/long address. (is it?)
      Parameters:
      num - the address number to check.
      Returns:
      true if number greater than or equals 128.
    • supportedSpeedModes

      What speed modes are supported by this system? value should be xor of possible modes specifed by the DccThrottle interface DCC++ supports 14,27,28 and 128 speed step modes
      Specified by:
      supportedSpeedModes in interface ThrottleManager
      Overrides:
      supportedSpeedModes in class AbstractThrottleManager
      Returns:
      an XOR of the possible modes specified in the throttle interface
    • message

      public void message(DCCppReply r)
      Description copied from interface: DCCppListener
      Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message from the layout.
      Specified by:
      message in interface DCCppListener
      Parameters:
      r - The received DCC++ message. Note that this same object may be presented to multiple users. It should not be modified here.
    • message

      public void message(DCCppMessage l)
      Description copied from interface: DCCppListener
      Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message sent to the layout. Normally, this function will do nothing.
      Specified by:
      message in interface DCCppListener
      Parameters:
      l - The received DCC++ message. Note that this same object may be presented to multiple users. It should not be modified here.
    • notifyTimeout

      public void notifyTimeout(DCCppMessage msg)
      Description copied from interface: DCCppListener
      Member function invoked by an DCCppInterface implementation to notify a sender that an outgoing message timed out and was dropped from the queue.
      Specified by:
      notifyTimeout in interface DCCppListener
      Parameters:
      msg - the message that timed out.
    • disposeThrottle

      Description copied from class: AbstractThrottleManager
      Not for general use, see releaseThrottle and dispatchThrottle.

      Dispose of object when finished it. This will free up hardware resource

      Used for handling certain internal error conditions, where the object still exists but hardware is not associated with it.

      After this, further usage of this Throttle object will result in a JmriException.

      Specified by:
      disposeThrottle in interface ThrottleManager
      Overrides:
      disposeThrottle in class AbstractThrottleManager
      Parameters:
      t - Throttle being released
      l - Throttle Listener releasing the throttle
      Returns:
      true if the throttle has been disposed of.
    • dispose

      public void dispose()
      Allow to cleanly release the traffic controller in ThrottleManager Tests
      • remove listeners, if any
      • stop timers, is any
      Specified by:
      dispose in interface ThrottleManager
      Overrides:
      dispose in class AbstractThrottleManager