jmri.jmrix.loconet
Class LnTurnoutManager
java.lang.Object
jmri.implementation.AbstractManager
jmri.managers.AbstractTurnoutManager
jmri.jmrix.loconet.LnTurnoutManager
- All Implemented Interfaces:
- PropertyChangeListener, EventListener, LocoNetListener, Manager, TurnoutManager
public class LnTurnoutManager
- extends AbstractTurnoutManager
- implements LocoNetListener
LnTurnoutManager implements the TurnoutManager.
System names are "LTnnn", where nnn is the turnout number without padding.
Some of the message formats used in this class are Copyright Digitrax, Inc.
and used with permission as part of the JMRI project. That permission
does not extend to uses in other software products. If you wish to
use this code, algorithm or these message formats outside of JMRI, please
contact Digitrax Inc for separate permission.
Since LocoNet messages requesting turnout operations can arrive
faster than the command station can send them on the rails,
the command station has a short queue of messages. When that gets full,
it sends a LACK, indicating that the request was not forwarded on the rails.
In that case, this class goes into a tight loop, resending the last
turnout message seen until it's received without a LACK reply. Note
two things about this:
- We provide this service for any turnout request, whether or
not it came from JMRI. (This might be a problem if more than one
computer is executing this algorithm)
- By sending the message as fast as we can, we tie up the LocoNet during the
the recovery. This is a mixed bag; delaying can cause messages to get out
of sequence on the rails. But not delaying takes up a lot of LocoNet
bandwidth.
In the end, this implementation is OK, but not great. An improvement would
be to control JMRI turnout operations centrally, so that retransmissions can
controlled.
Description: Implement turnout manager for loconet
- Author:
- Bob Jacobsen Copyright (C) 2001, 2007
|
Method Summary |
Turnout |
createNewTurnout(String systemName,
String userName)
Internal method to invoke the factory, after all the
logic for returning an existing method has been invoked. |
void |
dispose()
Free resources when no longer used. |
void |
message(LocoNetMessage l)
Member function that will be invoked by a LocoNetInterface implementation
to forward a LocoNet message from the layout. |
char |
systemLetter()
|
| Methods inherited from class jmri.managers.AbstractTurnoutManager |
askControlType, askNumControlBits, getBySystemName, getByUserName, getClosedText, getThrownText, getTurnout, getValidOperationTypes, newTurnout, provideTurnout, typeLetter |
| Methods inherited from class jmri.implementation.AbstractManager |
addPropertyChangeListener, deregister, firePropertyChange, getInstanceBySystemName, getInstanceByUserName, getSystemNameArray, getSystemNameList, makeSystemName, propertyChange, register, registerSelf, removePropertyChangeListener |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LnTurnoutManager
public LnTurnoutManager(LocoNetInterface fastcontroller,
LocoNetInterface throttledcontroller)
systemLetter
public char systemLetter()
- Specified by:
systemLetter in interface Manager
- Returns:
- The system-specific prefix letter for a specific implementation
dispose
public void dispose()
- Description copied from interface:
Manager
- Free resources when no longer used. Specifically, remove all references
to and from this object, so it can be garbage-collected.
- Specified by:
dispose in interface Manager- Overrides:
dispose in class AbstractManager
createNewTurnout
public Turnout createNewTurnout(String systemName,
String userName)
- Description copied from class:
AbstractTurnoutManager
- Internal method to invoke the factory, after all the
logic for returning an existing method has been invoked.
- Specified by:
createNewTurnout in class AbstractTurnoutManager
- Returns:
- never null
message
public void message(LocoNetMessage l)
- Description copied from interface:
LocoNetListener
- Member function that will be invoked by a LocoNetInterface implementation
to forward a LocoNet message from the layout.
- Specified by:
message in interface LocoNetListener
- Parameters:
l - The received LocoNet message. Note that this same object
may be presented to multiple users. It should not be
modified here.
Copyright © 1997 - 2009 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.
Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: