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 DccLocoAddressconsistAddressprotected java.util.HashMap<DccLocoAddress,java.lang.Boolean>consistDirprotected java.lang.StringconsistIDprotected java.util.ArrayList<DccLocoAddress>consistListprotected java.util.HashMap<DccLocoAddress,java.lang.Integer>consistPositionprotected java.util.HashMap<DccLocoAddress,java.lang.String>consistRosterprotected intconsistType-
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 voidadd(DccLocoAddress address, boolean directionNormal)Add a Locomotive to an Advanced ConsistvoidaddConsistListener(ConsistListener listener)Add a Listener for consist events.protected voidaddToAdvancedConsist(DccLocoAddress address, boolean directionNormal)Add a Locomotive to an Advanced Consist.booleancontains(DccLocoAddress address)Does the consist contain the specified locomotive address?voiddispose()A method for cleaning up the consistDccLocoAddressgetConsistAddress()Get the Consist Addressjava.lang.StringgetConsistID()Get the text ID associated with the consist.java.util.ArrayList<DccLocoAddress>getConsistList()Get a list of the locomotives in the consist.intgetConsistType()Get the Consist Type.booleangetLocoDirection(DccLocoAddress address)Get the relative direction setting for a specific locomotive in the consist.intgetPosition(DccLocoAddress address)Get the position of a locomotive within the consist.java.lang.StringgetRosterId(DccLocoAddress address)Get the rosterId of a locomotive within the consistbooleanisAddressAllowed(DccLocoAddress address)Is this address allowed?protected voidloadDecoderFile(DecoderFile df, RosterEntry re, VariableTableModel variableModel)protected voidloadDecoderFromLoco(RosterEntry r, VariableTableModel varTable)protected voidnotifyConsistListeners(DccLocoAddress locoAddress, int errorCode)Notify all listener objects of a status change.voidprogrammingOpReply(int value, int status)Receive a callback at the end of a programming operation.voidremove(DccLocoAddress address)Remove a Locomotive from this Consist.voidremoveConsistListener(ConsistListener listener)Remove a Listener for consist eventsprotected voidremoveFromAdvancedConsist(DccLocoAddress address)Remove a Locomotive from an Advanced Consistprotected voidresetRosterEntryCVValue(DccLocoAddress address)Set the value in the roster entry's value for for CV19 to 0voidrestore()Restore the consist to the command station.voidrestore(DccLocoAddress address, boolean directionNormal)Restore a Locomotive to an Advanced Consist, but don't write to the command station.voidreverse()Reverse the order of locomotives in the consist and flip the direction bits of each locomotive.voidsetConsistID(java.lang.String id)Set the text ID associated with the consist.voidsetConsistType(int consist_type)Set the Consist Type.voidsetPosition(DccLocoAddress address, int position)Set the position of a locomotive within the consist.protected voidsetRosterEntryCVValue(DccLocoAddress address)Update the value in the roster entry for CV19 for the specified addressvoidsetRosterId(DccLocoAddress address, java.lang.String rosterId)Set the roster entry of a locomotive within the consist.intsizeLimit()Is there a size limit for this consist?protected voidupdateRosterCV(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:ConsistA method for cleaning up the consist
-
setConsistType
public void setConsistType(int consist_type)
Description copied from interface:ConsistSet the Consist Type.- Specified by:
setConsistTypein interfaceConsist- Parameters:
consist_type- the consist type
-
getConsistType
public int getConsistType()
Description copied from interface:ConsistGet the Consist Type.- Specified by:
getConsistTypein interfaceConsist- Returns:
- the consist type
-
getConsistAddress
public DccLocoAddress getConsistAddress()
Description copied from interface:ConsistGet the Consist Address- Specified by:
getConsistAddressin 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:
isAddressAllowedin 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:ConsistGet a list of the locomotives in the consist.- Specified by:
getConsistListin interfaceConsist- Returns:
- the list of addresses
-
contains
public boolean contains(DccLocoAddress address)
Description copied from interface:ConsistDoes the consist contain the specified locomotive address?
-
getLocoDirection
public boolean getLocoDirection(DccLocoAddress address)
Description copied from interface:ConsistGet the relative direction setting for a specific locomotive in the consist.- Specified by:
getLocoDirectionin 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:
setPositionin 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:
getPositionin 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:
setRosterIdin 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:
getRosterIdin 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:
addConsistListenerin interfaceConsist- Parameters:
listener- is a consistListener object
-
removeConsistListener
public void removeConsistListener(ConsistListener listener)
Remove a Listener for consist events- Specified by:
removeConsistListenerin 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:
setConsistIDin 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:
getConsistIDin 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:ProgListenerReceive a callback at the end of a programming operation.- Specified by:
programmingOpReplyin 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.
-
-