Class ProgDebugger
- java.lang.Object
- 
- jmri.beans.PropertyChangeSupport
- 
- jmri.progdebugger.ProgDebugger
 
 
- 
- All Implemented Interfaces:
- AddressedProgrammer,- PropertyChangeFirer,- PropertyChangeProvider,- Disposable,- Programmer
 
 public class ProgDebugger extends PropertyChangeSupport implements AddressedProgrammer Debugging implementation of Programmer interface.Note that running a simulated LocoNet connection, HexFileFrame.configure()will substitute theProgDebuggerinstead of theLnOpsModeProgrammer, overridingreadCV(String, ProgListener)andwriteCV(String, int, ProgListener).Remembers writes, and returns the last written value when a read to the same CV is made. Only supports the DCC single-number address space, should be updated to handle any string address. As a temporary fix we simply discard the first part of any CV name containing "." and use the rest. TODO Fully support numberformat "113.12" in ProgDebugger (used in LOCONETLNCVMODE and LOCONETBDOPSWMODE) 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description classProgDebugger.ProgDebuggerConfiguratorThis class is used by tests.- 
Nested classes/interfaces inherited from interface jmri.ProgrammerProgrammer.Configurator, Programmer.WriteConfirmMode
 
- 
 - 
Field SummaryFields Modifier and Type Field Description (package private) intaddress(package private) booleanconfirmOK(package private) static intDELAY(package private) static booleanIMMEDIATERETURN(package private) booleanlongAddrprotected ProgrammingModemode(package private) java.util.Hashtable<java.lang.Integer,java.lang.Integer>mValuesintnOperations(package private) intreadLimit(package private) intwriteLimitBy default, the highest test CV is 256 so that we can test composite operations- 
Fields inherited from class jmri.beans.PropertyChangeSupportpropertyChangeSupport
 
- 
 - 
Constructor SummaryConstructors Constructor Description ProgDebugger()ProgDebugger(boolean pLongAddress, int pAddress)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearHasBeenWritten(int cv)Clear written status.voidconfirmCV(java.lang.String CVname, int val, ProgListener p)Confirm the value of a CV using the specified programming mode.java.lang.StringdecodeErrorCode(int i)java.lang.StringgetAddress()intgetAddressNumber()booleangetCanRead()Checks the general read capability, regardless of modebooleangetCanRead(java.lang.String addr)Checks the general read capability, regardless of mode, for a specific addressbooleangetCanWrite()Checks the general write capability, regardless of modebooleangetCanWrite(java.lang.String addr)Checks the general write capability, regardless of mode, for a specific addressProgrammer.ConfiguratorgetConfigurator()Get the configurator of this programmer.intgetCvVal(int cv)Get the CV value directly, without going through the usual indirect protocol.booleangetLongAddress()ProgrammingModegetMode()Get the current programming modejava.util.List<ProgrammingMode>getSupportedModes()Get the list ofProgrammingModesupported by this Programmer.Programmer.WriteConfirmModegetWriteConfirmMode(java.lang.String addr)Learn about whether the programmer does any kind of verification of write operationsbooleanhasBeenWritten(int cv)See if a CV has been written.intlastReadCv()intlastWrite()intlastWriteCv()voidnextRead(int r)voidreadCV(java.lang.String CVname, ProgListener p)Perform a CV read in the system-specific manner, and using the specified programming mode.voidresetCv(int cv, int val)Reset the CV to a value so one can detect if it's been written.(package private) voidsendReturn(java.lang.Runnable run)Arrange for the return to be invoked on the Swing thread.voidsetMode(ProgrammingMode m)Set the programmer to a particular mode.voidsetTestReadLimit(int lim)voidsetTestWriteLimit(int lim)voidwriteCV(java.lang.String CVname, int val, ProgListener p)Perform a CV write in the system-specific manner, and using the specified programming mode.- 
Methods inherited from class jmri.beans.PropertyChangeSupportaddPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface jmri.ProgrammeraddPropertyChangeListener, dispose, notifyProgListenerEnd, readCV, removePropertyChangeListener
 
- 
 
- 
- 
- 
Field Detail- 
nOperationspublic int nOperations 
 - 
mValuesjava.util.Hashtable<java.lang.Integer,java.lang.Integer> mValues 
 - 
confirmOKboolean confirmOK 
 - 
modeprotected ProgrammingMode mode 
 - 
writeLimitint writeLimit By default, the highest test CV is 256 so that we can test composite operations
 - 
readLimitint readLimit 
 - 
longAddrboolean longAddr 
 - 
addressint address 
 - 
IMMEDIATERETURNstatic final boolean IMMEDIATERETURN - See Also:
- Constant Field Values
 
 - 
DELAYstatic final int DELAY - See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
ProgDebuggerpublic ProgDebugger() 
 - 
ProgDebuggerpublic ProgDebugger(boolean pLongAddress, int pAddress) 
 
- 
 - 
Method Detail- 
lastWritepublic int lastWrite() 
 - 
lastWriteCvpublic int lastWriteCv() 
 - 
resetCvpublic void resetCv(int cv, int val) Reset the CV to a value so one can detect if it's been written.Does not change the "lastWrite" and "lastWriteCv" results. - Parameters:
- cv- the CV to reset
- val- the value
 
 - 
getCvValpublic int getCvVal(int cv) Get the CV value directly, without going through the usual indirect protocol. Used, for example, while testing.Does not change the "lastRead" and "lastReadCv" results. - Parameters:
- cv- the CV to get
- Returns:
- the value or -1
 
 - 
hasBeenWrittenpublic boolean hasBeenWritten(int cv) See if a CV has been written.- Parameters:
- cv- the CV to check
- Returns:
- true if written, false otherwise
 
 - 
clearHasBeenWrittenpublic void clearHasBeenWritten(int cv) Clear written status.- Parameters:
- cv- the CV to clear
 
 - 
decodeErrorCode@Nonnull public java.lang.String decodeErrorCode(int i) - Specified by:
- decodeErrorCodein interface- Programmer
 
 - 
writeCVpublic void writeCV(java.lang.String CVname, int val, ProgListener p) throws ProgrammerException Perform a CV write in the system-specific manner, and using the specified programming mode.Handles a general address space through a String address. Each programmer defines the acceptable formats. Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread. Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier) - Specified by:
- writeCVin interface- Programmer
- Parameters:
- CVname- the CV to write
- val- the value to write
- p- the listener that will be notified of the write
- Throws:
- ProgrammerException- if unable to communicate
 
 - 
nextReadpublic void nextRead(int r) 
 - 
lastReadCvpublic int lastReadCv() 
 - 
confirmCVpublic void confirmCV(java.lang.String CVname, int val, ProgListener p) throws ProgrammerException Confirm the value of a CV using the specified programming mode. On some systems, this is faster than a read.Handles a general address space through a String address. Each programmer defines the acceptable formats. Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread. Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier) - Specified by:
- confirmCVin interface- Programmer
- Parameters:
- CVname- the CV to confirm
- val- the value to confirm
- p- the listener that will be notified of the confirmation
- Throws:
- ProgrammerException- if unable to communicate
 
 - 
readCVpublic void readCV(java.lang.String CVname, ProgListener p) throws ProgrammerException Perform a CV read in the system-specific manner, and using the specified programming mode.Handles a general address space through a String address. Each programmer defines the acceptable formats. Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread. Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier) - Specified by:
- readCVin interface- Programmer
- Parameters:
- CVname- the CV to read
- p- the listener that will be notified of the read
- Throws:
- ProgrammerException- if unable to communicate
 
 - 
setModepublic final void setMode(ProgrammingMode m) Set the programmer to a particular mode.Mode is a bound parameter; mode changes fire listeners. Only modes returned by Programmer.getSupportedModes()are supported. If an invalid mode is requested, the active mode is unchanged.- Specified by:
- setModein interface- Programmer
- Parameters:
- m- a valid node returned by- Programmer.getSupportedModes()or null; null is ignored if- Programmer.getSupportedModes()is not empty
 
 - 
getModepublic final ProgrammingMode getMode() Get the current programming mode- Specified by:
- getModein interface- Programmer
- Returns:
- the current mode or null if none is defined and no default mode is defined
 
 - 
getSupportedModes@Nonnull public java.util.List<ProgrammingMode> getSupportedModes() Get the list ofProgrammingModesupported by this Programmer. If the order is significant, earlier modes are better.- Specified by:
- getSupportedModesin interface- Programmer
- Returns:
- the list of supported modes or an empty list
 
 - 
setTestReadLimitpublic void setTestReadLimit(int lim) 
 - 
setTestWriteLimitpublic void setTestWriteLimit(int lim) 
 - 
getCanReadpublic boolean getCanRead() Description copied from interface:ProgrammerChecks the general read capability, regardless of mode- Specified by:
- getCanReadin interface- Programmer
- Returns:
- true if the programmer is capable of reading; false otherwise
 
 - 
getCanReadpublic boolean getCanRead(java.lang.String addr) Description copied from interface:ProgrammerChecks the general read capability, regardless of mode, for a specific address- Specified by:
- getCanReadin interface- Programmer
- Parameters:
- addr- the address to read
- Returns:
- true if the address can be read; false otherwise
 
 - 
getCanWritepublic boolean getCanWrite() Description copied from interface:ProgrammerChecks the general write capability, regardless of mode- Specified by:
- getCanWritein interface- Programmer
- Returns:
- true if the programmer is capable of writing; false otherwise
 
 - 
getCanWritepublic boolean getCanWrite(java.lang.String addr) Description copied from interface:ProgrammerChecks the general write capability, regardless of mode, for a specific address- Specified by:
- getCanWritein interface- Programmer
- Parameters:
- addr- the address to write to
- Returns:
- true if the address can be written to; false otherwise
 
 - 
getWriteConfirmMode@Nonnull public Programmer.WriteConfirmMode getWriteConfirmMode(java.lang.String addr) Learn about whether the programmer does any kind of verification of write operationsBy default, say that no verification is done. - Specified by:
- getWriteConfirmModein interface- Programmer
- Parameters:
- addr- A CV address to check (in case this varies with CV range) or null for any
- Returns:
- Always WriteConfirmMode.NotVerified
 
 - 
getLongAddresspublic boolean getLongAddress() - Specified by:
- getLongAddressin interface- AddressedProgrammer
 
 - 
getAddressNumberpublic int getAddressNumber() - Specified by:
- getAddressNumberin interface- AddressedProgrammer
 
 - 
getAddresspublic java.lang.String getAddress() - Specified by:
- getAddressin interface- AddressedProgrammer
 
 - 
sendReturnvoid sendReturn(java.lang.Runnable run) Arrange for the return to be invoked on the Swing thread.- Parameters:
- run- the Runnable
 
 - 
getConfiguratorpublic Programmer.Configurator getConfigurator() Description copied from interface:ProgrammerGet the configurator of this programmer.- Specified by:
- getConfiguratorin interface- Programmer
- Returns:
- the configurator if it exists, otherwise null
 
 
- 
 
-