Package jmri.jmrix.dccpp
Class DCCppThrottle
- java.lang.Object
-
- jmri.beans.PropertyChangeSupport
-
- jmri.jmrix.AbstractThrottle
-
- jmri.jmrix.dccpp.DCCppThrottle
-
- All Implemented Interfaces:
java.util.EventListener,PropertyChangeFirer,PropertyChangeProvider,DccThrottle,AbstractMRListener,DCCppListener,Throttle
public class DCCppThrottle extends AbstractThrottle implements DCCppListener
An implementation of DccThrottle with code specific to a DCC++ connection.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classDCCppThrottle.RequestMessage
-
Field Summary
Fields Modifier and Type Field Description protected intaddressprotected java.util.concurrent.LinkedBlockingQueue<DCCppThrottle.RequestMessage>requestListintrequestStateprotected DCCppTrafficControllertcprotected static intTHROTTLEFUNCSENTprotected static intTHROTTLEIDLEprotected static intTHROTTLESPEEDSENT-
Fields inherited from class jmri.jmrix.AbstractThrottle
active, adapterMemo, FUNCTION_GROUPS, isForward, speedSetting, speedStepMode, start
-
Fields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupport
-
Fields inherited from interface jmri.Throttle
CONNECTED, DISPATCH_ENABLED, F0, F0Momentary, F1, F10, F10Momentary, F11, F11Momentary, F12, F12Momentary, F13, F13Momentary, F14, F14Momentary, F15, F15Momentary, F16, F16Momentary, F17, F17Momentary, F18, F18Momentary, F19, F19Momentary, F1Momentary, F2, F20, F20Momentary, F21, F21Momentary, F22, F22Momentary, F23, F23Momentary, F24, F24Momentary, F25, F25Momentary, F26, F26Momentary, F27, F27Momentary, F28, F28Momentary, F2Momentary, F3, F3Momentary, F4, F4Momentary, F5, F5Momentary, F6, F6Momentary, F7, F7Momentary, F8, F8Momentary, F9, F9Momentary, ISFORWARD, RELEASE_ENABLED, SPEEDINCREMENT, SPEEDSETTING, SPEEDSTEPMODE, SPEEDSTEPS
-
-
Constructor Summary
Constructors Constructor Description DCCppThrottle(DCCppSystemConnectionMemo memo, DCCppTrafficController controller)Constructor.DCCppThrottle(DCCppSystemConnectionMemo memo, LocoAddress address, DCCppTrafficController controller)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetDccAddress()protected intgetDccAddressHigh()protected intgetDccAddressLow()LocoAddressgetLocoAddress()Locomotive address.(package private) intgetRegisterNum()Get the Register Number for this Throttle's assigned addressprotected voidhandleLocoState(DCCppReply r)voidmessage(DCCppMessage l)Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message sent to the layout.voidmessage(DCCppReply l)Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message from the layout.voidnotifyTimeout(DCCppMessage msg)Member function invoked by an DCCppInterface implementation to notify a sender that an outgoing message timed out and was dropped from the queue.protected voidqueueMessage(DCCppMessage m, int s)protected voidsendEmergencyStop()protected voidsendFunctionGroup1()Send the DCC++ message to set the state of locomotive direction and functions F0, F1, F2, F3, F4protected voidsendFunctionGroup2()Send the DCC++ message to set the state of functions F5, F6, F7, F8protected voidsendFunctionGroup3()Send the DCC++ message to set the state of functions F9, F10, F11, F12protected voidsendFunctionGroup4()Send the DCC++ message to set the state of functions F13, F14, F15, F16, F17, F18, F19, F20protected voidsendFunctionGroup5()Send the DCC++ message to set the state of functions F21, F22, F23, F24, F25, F26, F27, F28protected voidsendQueuedMessage()intsetDccAddress(int newaddress)voidsetDCCppTrafficController(DCCppTrafficController controller)voidsetFunction(int functionNum, boolean newState)Set Loco Function and send to Layout.voidsetIsForward(boolean forward)Implementing functions should override this function, but should either make a call to super.setIsForward() to notify the listeners, or should notify the listeners themselves.voidsetSpeedSetting(float speed)setSpeedSetting - Implementing functions should override this function, but should either make a call to super.setSpeedSetting() to notify the listeners at the end of their work, or should notify the listeners themselves.voidsetSpeedStepMode(SpeedStepMode Mode)Set the speed step value.protected voidthrottleDispose()Dispose when finished with this object.-
Methods inherited from class jmri.jmrix.AbstractThrottle
addPropertyChangeListener, dispatch, dispose, finishRecord, getFunction, getFunctionMomentary, getFunctionMomentaryNoWarn, getFunctionNoWarn, getFunctions, getFunctionsMomentary, getIsForward, getMemo, getRosterEntry, getSpeedIncrement, getSpeedSetting, getSpeedStepMode, intSpeed, intSpeed, notifyThrottleDisconnect, notifyThrottleDispatchEnabled, notifyThrottleReleaseEnabled, record, release, removePropertyChangeListener, sendFunctionGroup, sendFunctionGroup10, sendFunctionGroup6, sendFunctionGroup7, sendFunctionGroup8, sendFunctionGroup9, sendMomentaryFunctionGroup1, sendMomentaryFunctionGroup10, sendMomentaryFunctionGroup2, sendMomentaryFunctionGroup3, sendMomentaryFunctionGroup4, sendMomentaryFunctionGroup5, sendMomentaryFunctionGroup6, sendMomentaryFunctionGroup7, sendMomentaryFunctionGroup8, sendMomentaryFunctionGroup9, setFunctionMomentary, setRosterEntry, setSpeedSetting, setSpeedSettingAgain, startClock, updateFunction, updateFunctionMomentary
-
Methods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener
-
Methods inherited from interface jmri.Throttle
getF0, getF0Momentary, getF1, getF10, getF10Momentary, getF11, getF11Momentary, getF12, getF12Momentary, getF13, getF13Momentary, getF14, getF14Momentary, getF15, getF15Momentary, getF16, getF16Momentary, getF17, getF17Momentary, getF18, getF18Momentary, getF19, getF19Momentary, getF1Momentary, getF2, getF20, getF20Momentary, getF21, getF21Momentary, getF22, getF22Momentary, getF23, getF23Momentary, getF24, getF24Momentary, getF25, getF25Momentary, getF26, getF26Momentary, getF27, getF27Momentary, getF28, getF28Momentary, getF2Momentary, getF3, getF3Momentary, getF4, getF4Momentary, getF5, getF5Momentary, getF6, getF6Momentary, getF7, getF7Momentary, getF8, getF8Momentary, getF9, getF9Momentary, setF0, setF0Momentary, setF1, setF10, setF10Momentary, setF11, setF11Momentary, setF12, setF12Momentary, setF13, setF13Momentary, setF14, setF14Momentary, setF15, setF15Momentary, setF16, setF16Momentary, setF17, setF17Momentary, setF18, setF18Momentary, setF19, setF19Momentary, setF1Momentary, setF2, setF20, setF20Momentary, setF21, setF21Momentary, setF22, setF22Momentary, setF23, setF23Momentary, setF24, setF24Momentary, setF25, setF25Momentary, setF26, setF26Momentary, setF27, setF27Momentary, setF28, setF28Momentary, setF2Momentary, setF3, setF3Momentary, setF4, setF4Momentary, setF5, setF5Momentary, setF6, setF6Momentary, setF7, setF7Momentary, setF8, setF8Momentary, setF9, setF9Momentary
-
-
-
-
Field Detail
-
tc
protected DCCppTrafficController tc
-
THROTTLEIDLE
protected static final int THROTTLEIDLE
- See Also:
- Constant Field Values
-
THROTTLESPEEDSENT
protected static final int THROTTLESPEEDSENT
- See Also:
- Constant Field Values
-
THROTTLEFUNCSENT
protected static final int THROTTLEFUNCSENT
- See Also:
- Constant Field Values
-
requestState
public int requestState
-
address
protected int address
-
requestList
protected java.util.concurrent.LinkedBlockingQueue<DCCppThrottle.RequestMessage> requestList
-
-
Constructor Detail
-
DCCppThrottle
public DCCppThrottle(DCCppSystemConnectionMemo memo, DCCppTrafficController controller)
Constructor.- Parameters:
memo- system connection.controller- system connection traffic controller.
-
DCCppThrottle
public DCCppThrottle(DCCppSystemConnectionMemo memo, LocoAddress address, DCCppTrafficController controller)
Constructor.- Parameters:
memo- system connection.address- loco address to set on throttlecontroller- system connection traffic controller.
-
-
Method Detail
-
setDCCppTrafficController
public void setDCCppTrafficController(DCCppTrafficController controller)
-
getRegisterNum
int getRegisterNum()
Get the Register Number for this Throttle's assigned address- Returns:
- register number currently
-
setFunction
public void setFunction(int functionNum, boolean newState)
Set Loco Function and send to Layout.- Specified by:
setFunctionin interfaceThrottle- Overrides:
setFunctionin classAbstractThrottle- Parameters:
functionNum- Function Number, 0-28newState- New Function State. True on, false off.
-
sendFunctionGroup1
protected void sendFunctionGroup1()
Send the DCC++ message to set the state of locomotive direction and functions F0, F1, F2, F3, F4- Overrides:
sendFunctionGroup1in classAbstractThrottle
-
sendFunctionGroup2
protected void sendFunctionGroup2()
Send the DCC++ message to set the state of functions F5, F6, F7, F8- Overrides:
sendFunctionGroup2in classAbstractThrottle
-
sendFunctionGroup3
protected void sendFunctionGroup3()
Send the DCC++ message to set the state of functions F9, F10, F11, F12- Overrides:
sendFunctionGroup3in classAbstractThrottle
-
sendFunctionGroup4
protected void sendFunctionGroup4()
Send the DCC++ message to set the state of functions F13, F14, F15, F16, F17, F18, F19, F20- Overrides:
sendFunctionGroup4in classAbstractThrottle
-
sendFunctionGroup5
protected void sendFunctionGroup5()
Send the DCC++ message to set the state of functions F21, F22, F23, F24, F25, F26, F27, F28- Overrides:
sendFunctionGroup5in classAbstractThrottle
-
setSpeedSetting
public void setSpeedSetting(float speed)
Description copied from class:AbstractThrottlesetSpeedSetting - Implementing functions should override this function, but should either make a call to super.setSpeedSetting() to notify the listeners at the end of their work, or should notify the listeners themselves.- Specified by:
setSpeedSettingin interfaceThrottle- Overrides:
setSpeedSettingin classAbstractThrottle- Parameters:
speed- the speed as a 0.0 -> 1.0. fraction of maximum possible speed or -1 for emergency stop.
-
sendEmergencyStop
protected void sendEmergencyStop()
-
setIsForward
public void setIsForward(boolean forward)
Description copied from class:AbstractThrottleImplementing functions should override this function, but should either make a call to super.setIsForward() to notify the listeners, or should notify the listeners themselves.- Specified by:
setIsForwardin interfaceThrottle- Overrides:
setIsForwardin classAbstractThrottle- Parameters:
forward- true if forward; false otherwise
-
setSpeedStepMode
public void setSpeedStepMode(SpeedStepMode Mode)
Description copied from class:AbstractThrottleSet the speed step value. Default should be 128 speed step mode in most cases.Specific implementations should override this function.
- Specified by:
setSpeedStepModein interfaceDccThrottle- Overrides:
setSpeedStepModein classAbstractThrottle- Parameters:
Mode- the current speed step mode
-
throttleDispose
protected void throttleDispose()
Dispose when finished with this object. After this, further usage of this Throttle object will result in a JmriException. This is quite problematic, because a using object doesn't know when it's the last user.- Specified by:
throttleDisposein classAbstractThrottle
-
setDccAddress
public int setDccAddress(int newaddress)
-
getDccAddress
public int getDccAddress()
-
getDccAddressHigh
protected int getDccAddressHigh()
-
getDccAddressLow
protected int getDccAddressLow()
-
message
public void message(DCCppReply l)
Description copied from interface:DCCppListenerMember function that will be invoked by a DCCppInterface implementation to forward a DCC++ message from the layout.- Specified by:
messagein interfaceDCCppListener- Parameters:
l- The received DCC++ message. Note that this same object may be presented to multiple users. It should not be modified here.
-
handleLocoState
protected void handleLocoState(DCCppReply r)
-
message
public void message(DCCppMessage l)
Description copied from interface:DCCppListenerMember 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:
messagein interfaceDCCppListener- 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:DCCppListenerMember function invoked by an DCCppInterface implementation to notify a sender that an outgoing message timed out and was dropped from the queue.- Specified by:
notifyTimeoutin interfaceDCCppListener- Parameters:
msg- the message that timed out.
-
getLocoAddress
public LocoAddress getLocoAddress()
Description copied from interface:ThrottleLocomotive address. The exact format is defined by the specific implementation, as subclasses of LocoAddress will contain different information.This is an unbound property.
- Specified by:
getLocoAddressin interfaceThrottle- Returns:
- The locomotive address
-
sendQueuedMessage
protected void sendQueuedMessage()
-
queueMessage
protected void queueMessage(DCCppMessage m, int s)
-
-