Package jmri.implementation
Class DccConsist
- java.lang.Object
-
- jmri.implementation.DccConsist
-
- All Implemented Interfaces:
java.util.EventListener
,Consist
,ProgListener
- Direct Known Subclasses:
EasyDccConsist
,LocoNetConsist
,MqttConsist
,NceConsist
,NmraConsist
,XNetConsist
public class DccConsist extends java.lang.Object implements Consist, ProgListener
This is the Default DCC consist. It utilizes the fact that IF a Command Station supports OpsMode Programming, you can write the consist information to CV19, so ANY Command Station that supports Ops Mode Programming can write this address to a Command Station that supports it.
-
-
Field Summary
Fields Modifier and Type Field Description protected DccLocoAddress
consistAddress
protected java.util.HashMap<DccLocoAddress,java.lang.Boolean>
consistDir
protected java.lang.String
consistID
protected java.util.ArrayList<DccLocoAddress>
consistList
protected java.util.HashMap<DccLocoAddress,java.lang.Integer>
consistPosition
protected java.util.HashMap<DccLocoAddress,java.lang.String>
consistRoster
protected int
consistType
-
Fields inherited from interface jmri.Consist
ADVANCED_CONSIST, CS_CONSIST, POSITION_LEAD, POSITION_TRAIL
-
Fields inherited from interface jmri.ProgListener
CommError, ConfirmFailed, FailedTimeout, NoAck, NoLocoDetected, NotImplemented, OK, ProgrammerBusy, ProgrammingShort, SequenceError, UnknownError, UserAborted
-
-
Constructor Summary
Constructors Constructor Description DccConsist(int address)
DccConsist(DccLocoAddress address)
DccConsist(DccLocoAddress address, AddressedProgrammerManager apm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(DccLocoAddress address, boolean directionNormal)
Add a Locomotive to an Advanced Consistvoid
addConsistListener(ConsistListener listener)
Add a Listener for consist events.protected void
addToAdvancedConsist(DccLocoAddress address, boolean directionNormal)
Add a Locomotive to an Advanced Consist.boolean
contains(DccLocoAddress address)
Does the consist contain the specified locomotive address?void
dispose()
A method for cleaning up the consistDccLocoAddress
getConsistAddress()
Get the Consist Addressjava.lang.String
getConsistID()
Get the text ID associated with the consist.java.util.ArrayList<DccLocoAddress>
getConsistList()
Get a list of the locomotives in the consist.int
getConsistType()
Get the Consist Type.boolean
getLocoDirection(DccLocoAddress address)
Get the relative direction setting for a specific locomotive in the consist.int
getPosition(DccLocoAddress address)
Get the position of a locomotive within the consist.java.lang.String
getRosterId(DccLocoAddress address)
Get the rosterId of a locomotive within the consistboolean
isAddressAllowed(DccLocoAddress address)
Is this address allowed?protected void
loadDecoderFile(DecoderFile df, RosterEntry re, VariableTableModel variableModel)
protected void
loadDecoderFromLoco(RosterEntry r, VariableTableModel varTable)
protected void
notifyConsistListeners(DccLocoAddress locoAddress, int errorCode)
Notify all listener objects of a status change.void
programmingOpReply(int value, int status)
Receive a callback at the end of a programming operation.void
remove(DccLocoAddress address)
Remove a Locomotive from this Consist.void
removeConsistListener(ConsistListener listener)
Remove a Listener for consist eventsprotected void
removeFromAdvancedConsist(DccLocoAddress address)
Remove a Locomotive from an Advanced Consistprotected void
resetRosterEntryCVValue(DccLocoAddress address)
Set the value in the roster entry's value for for CV19 to 0void
restore()
Restore the consist to the command station.void
restore(DccLocoAddress address, boolean directionNormal)
Restore a Locomotive to an Advanced Consist, but don't write to the command station.void
reverse()
Reverse the order of locomotives in the consist and flip the direction bits of each locomotive.void
setConsistID(java.lang.String id)
Set the text ID associated with the consist.void
setConsistType(int consist_type)
Set the Consist Type.void
setPosition(DccLocoAddress address, int position)
Set the position of a locomotive within the consist.protected void
setRosterEntryCVValue(DccLocoAddress address)
Update the value in the roster entry for CV19 for the specified addressvoid
setRosterId(DccLocoAddress address, java.lang.String rosterId)
Set the roster entry of a locomotive within the consist.int
sizeLimit()
Is there a size limit for this consist?protected void
updateRosterCV(DccLocoAddress address, java.lang.Boolean direction, int value)
If allowed by the preferences, Update the CV19 value in the specified address's roster entry, if the roster entry is known.
-
-
-
Field Detail
-
consistList
protected java.util.ArrayList<DccLocoAddress> consistList
-
consistDir
protected java.util.HashMap<DccLocoAddress,java.lang.Boolean> consistDir
-
consistPosition
protected java.util.HashMap<DccLocoAddress,java.lang.Integer> consistPosition
-
consistRoster
protected java.util.HashMap<DccLocoAddress,java.lang.String> consistRoster
-
consistType
protected int consistType
-
consistAddress
protected DccLocoAddress consistAddress
-
consistID
protected java.lang.String consistID
-
-
Constructor Detail
-
DccConsist
public DccConsist(int address)
-
DccConsist
public DccConsist(DccLocoAddress address)
-
DccConsist
public DccConsist(DccLocoAddress address, AddressedProgrammerManager apm)
-
-
Method Detail
-
dispose
public void dispose()
Description copied from interface:Consist
A method for cleaning up the consist
-
setConsistType
public void setConsistType(int consist_type)
Description copied from interface:Consist
Set the Consist Type.- Specified by:
setConsistType
in interfaceConsist
- Parameters:
consist_type
- the consist type
-
getConsistType
public int getConsistType()
Description copied from interface:Consist
Get the Consist Type.- Specified by:
getConsistType
in interfaceConsist
- Returns:
- the consist type
-
getConsistAddress
public DccLocoAddress getConsistAddress()
Description copied from interface:Consist
Get the Consist Address- Specified by:
getConsistAddress
in interfaceConsist
- Returns:
- the consist address
-
isAddressAllowed
public boolean isAddressAllowed(DccLocoAddress address)
Is this address allowed? Since address 00 is an analog locomotive, we can't program CV19 to include it in a consist, but all other addresses are ok.- Specified by:
isAddressAllowed
in interfaceConsist
- Parameters:
address
- the address- Returns:
- true if allowed; false otherwise
-
sizeLimit
public int sizeLimit()
Is there a size limit for this consist? For Decoder Assisted Consists, returns -1 (no limit) return 0 for any other consist type.
-
getConsistList
public java.util.ArrayList<DccLocoAddress> getConsistList()
Description copied from interface:Consist
Get a list of the locomotives in the consist.- Specified by:
getConsistList
in interfaceConsist
- Returns:
- the list of addresses
-
contains
public boolean contains(DccLocoAddress address)
Description copied from interface:Consist
Does the consist contain the specified locomotive address?
-
getLocoDirection
public boolean getLocoDirection(DccLocoAddress address)
Description copied from interface:Consist
Get the relative direction setting for a specific locomotive in the consist.- Specified by:
getLocoDirection
in interfaceConsist
- Parameters:
address
- the address to check- Returns:
- true if locomotive is in consist in its normal direction of travel; false otherwise
-
add
public void add(DccLocoAddress address, boolean directionNormal)
Add a Locomotive to an Advanced Consist
-
restore
public void restore(DccLocoAddress address, boolean directionNormal)
Restore a Locomotive to an Advanced Consist, but don't write to the command station. This is used for restoring the consist from a file or adding a consist read from the command station.
-
remove
public void remove(DccLocoAddress address)
Remove a Locomotive from this Consist.
-
addToAdvancedConsist
protected void addToAdvancedConsist(DccLocoAddress address, boolean directionNormal)
Add a Locomotive to an Advanced Consist.- Parameters:
address
- is the Locomotive address to add to the locomotivedirectionNormal
- is True if the locomotive is traveling the same direction as the consist, or false otherwise.
-
removeFromAdvancedConsist
protected void removeFromAdvancedConsist(DccLocoAddress address)
Remove a Locomotive from an Advanced Consist- Parameters:
address
- is the Locomotive address to remove from the consist
-
setPosition
public void setPosition(DccLocoAddress address, int position)
Set the position of a locomotive within the consist.- Specified by:
setPosition
in interfaceConsist
- Parameters:
address
- is the Locomotive addressposition
- is a constant representing the position within the consist.
-
getPosition
public int getPosition(DccLocoAddress address)
Get the position of a locomotive within the consist.- Specified by:
getPosition
in interfaceConsist
- Parameters:
address
- is the Locomotive address of interest- Returns:
- integer equal to jmri.Consist.POSITION_LEAD for the designated lead locomotive. equal to jmri.Consist.POSITION_TRAIL for the designated trailing locomotive. between 1 and 254 for other locomotives in the consist
-
setRosterId
public void setRosterId(DccLocoAddress address, java.lang.String rosterId)
Set the roster entry of a locomotive within the consist.- Specified by:
setRosterId
in interfaceConsist
- Parameters:
address
- is the Locomotive addressrosterId
- is the roster Identifier of the associated roster entry.
-
getRosterId
public java.lang.String getRosterId(DccLocoAddress address)
Get the rosterId of a locomotive within the consist- Specified by:
getRosterId
in interfaceConsist
- Parameters:
address
- is the Locomotive address of interest- Returns:
- string roster Identifier associated with the given address in the consist. Returns null if no roster entry is associated with this entry.
-
setRosterEntryCVValue
protected void setRosterEntryCVValue(DccLocoAddress address)
Update the value in the roster entry for CV19 for the specified address- Parameters:
address
- is the Locomotive address we are updating.
-
resetRosterEntryCVValue
protected void resetRosterEntryCVValue(DccLocoAddress address)
Set the value in the roster entry's value for for CV19 to 0- Parameters:
address
- is the Locomotive address we are updating.
-
updateRosterCV
protected void updateRosterCV(DccLocoAddress address, java.lang.Boolean direction, int value)
If allowed by the preferences, Update the CV19 value in the specified address's roster entry, if the roster entry is known.- Parameters:
address
- is the Locomotive address we are updating.direction
- the direction to set.value
- the numeric value of the consist address.
-
loadDecoderFromLoco
protected void loadDecoderFromLoco(RosterEntry r, VariableTableModel varTable)
-
loadDecoderFile
protected void loadDecoderFile(DecoderFile df, RosterEntry re, VariableTableModel variableModel)
-
addConsistListener
public void addConsistListener(ConsistListener listener)
Add a Listener for consist events.- Specified by:
addConsistListener
in interfaceConsist
- Parameters:
listener
- is a consistListener object
-
removeConsistListener
public void removeConsistListener(ConsistListener listener)
Remove a Listener for consist events- Specified by:
removeConsistListener
in interfaceConsist
- Parameters:
listener
- is a consistListener object
-
setConsistID
public void setConsistID(java.lang.String id)
Set the text ID associated with the consist.- Specified by:
setConsistID
in interfaceConsist
- Parameters:
id
- is a string identifier for the consist.
-
getConsistID
public java.lang.String getConsistID()
Get the text ID associated with the consist.- Specified by:
getConsistID
in interfaceConsist
- Returns:
- String identifier for the consist. Default value is the string Identifier for the consist address.
-
reverse
public void reverse()
Reverse the order of locomotives in the consist and flip the direction bits of each locomotive.
-
restore
public void restore()
Restore the consist to the command station.
-
notifyConsistListeners
protected void notifyConsistListeners(DccLocoAddress locoAddress, int errorCode)
Notify all listener objects of a status change.- Parameters:
locoAddress
- is the address of any specific locomotive the status refers to.errorCode
- is the status code to send to the consistListener objects
-
programmingOpReply
public void programmingOpReply(int value, int status)
Description copied from interface:ProgListener
Receive a callback at the end of a programming operation.- Specified by:
programmingOpReply
in interfaceProgListener
- Parameters:
value
- Value from a read operation, or value written on a writestatus
- Denotes the completion code. Note that this is a bitwise combination of the various status coded defined in this interface.
-
-