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 class
DCCppThrottle.RequestMessage
-
Field Summary
Fields Modifier and Type Field Description protected int
address
protected java.util.concurrent.LinkedBlockingQueue<DCCppThrottle.RequestMessage>
requestList
int
requestState
protected DCCppTrafficController
tc
protected static int
THROTTLEFUNCSENT
protected static int
THROTTLEIDLE
protected static int
THROTTLESPEEDSENT
-
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
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, 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 int
getDccAddress()
protected int
getDccAddressHigh()
protected int
getDccAddressLow()
LocoAddress
getLocoAddress()
Locomotive address.(package private) int
getRegisterNum()
Get the Register Number for this Throttle's assigned addressprotected void
handleLocoState(DCCppReply r)
void
message(DCCppMessage l)
Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message sent to the layout.void
message(DCCppReply l)
Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message from the layout.void
notifyTimeout(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 void
queueMessage(DCCppMessage m, int s)
protected void
sendEmergencyStop()
protected void
sendFunctionGroup1()
Send the DCC++ message to set the state of locomotive direction and functions F0, F1, F2, F3, F4protected void
sendFunctionGroup2()
Send the DCC++ message to set the state of functions F5, F6, F7, F8protected void
sendFunctionGroup3()
Send the DCC++ message to set the state of functions F9, F10, F11, F12protected void
sendFunctionGroup4()
Send the DCC++ message to set the state of functions F13, F14, F15, F16, F17, F18, F19, F20protected void
sendFunctionGroup5()
Send the DCC++ message to set the state of functions F21, F22, F23, F24, F25, F26, F27, F28protected void
sendQueuedMessage()
int
setDccAddress(int newaddress)
void
setDCCppTrafficController(DCCppTrafficController controller)
void
setFunction(int functionNum, boolean newState)
Set Loco Function and send to Layout.void
setIsForward(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.void
setSpeedSetting(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.void
setSpeedStepMode(SpeedStepMode Mode)
Set the speed step value.protected void
throttleDispose()
Dispose when finished with this object.-
Methods inherited from class jmri.jmrix.AbstractThrottle
addPropertyChangeListener, dispatch, dispose, finishRecord, getFunction, getFunctionMomentary, getFunctionMomentaryNoWarn, getFunctionNoWarn, getFunctions, getFunctionsMomentary, getIsForward, 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:
setFunction
in interfaceThrottle
- Overrides:
setFunction
in 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:
sendFunctionGroup1
in classAbstractThrottle
-
sendFunctionGroup2
protected void sendFunctionGroup2()
Send the DCC++ message to set the state of functions F5, F6, F7, F8- Overrides:
sendFunctionGroup2
in classAbstractThrottle
-
sendFunctionGroup3
protected void sendFunctionGroup3()
Send the DCC++ message to set the state of functions F9, F10, F11, F12- Overrides:
sendFunctionGroup3
in classAbstractThrottle
-
sendFunctionGroup4
protected void sendFunctionGroup4()
Send the DCC++ message to set the state of functions F13, F14, F15, F16, F17, F18, F19, F20- Overrides:
sendFunctionGroup4
in classAbstractThrottle
-
sendFunctionGroup5
protected void sendFunctionGroup5()
Send the DCC++ message to set the state of functions F21, F22, F23, F24, F25, F26, F27, F28- Overrides:
sendFunctionGroup5
in classAbstractThrottle
-
setSpeedSetting
public void setSpeedSetting(float speed)
Description copied from class:AbstractThrottle
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.- Specified by:
setSpeedSetting
in interfaceThrottle
- Overrides:
setSpeedSetting
in 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:AbstractThrottle
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.- Specified by:
setIsForward
in interfaceThrottle
- Overrides:
setIsForward
in classAbstractThrottle
- Parameters:
forward
- true if forward; false otherwise
-
setSpeedStepMode
public void setSpeedStepMode(SpeedStepMode Mode)
Description copied from class:AbstractThrottle
Set the speed step value. Default should be 128 speed step mode in most cases.Specific implementations should override this function.
- Specified by:
setSpeedStepMode
in interfaceDccThrottle
- Overrides:
setSpeedStepMode
in 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:
throttleDispose
in 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:DCCppListener
Member function that will be invoked by a DCCppInterface implementation to forward a DCC++ message from the layout.- Specified by:
message
in 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: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 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: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 interfaceDCCppListener
- Parameters:
msg
- the message that timed out.
-
getLocoAddress
public LocoAddress getLocoAddress()
Description copied from interface:Throttle
Locomotive 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:
getLocoAddress
in interfaceThrottle
- Returns:
- The locomotive address
-
sendQueuedMessage
protected void sendQueuedMessage()
-
queueMessage
protected void queueMessage(DCCppMessage m, int s)
-
-