Class MrcProgrammer
- java.lang.Object
-
- jmri.beans.PropertyChangeSupport
-
- jmri.jmrix.AbstractProgrammer
-
- jmri.jmrix.mrc.MrcProgrammer
-
- All Implemented Interfaces:
PropertyChangeFirer,PropertyChangeProvider,Disposable,MrcTrafficListener,Programmer
- Direct Known Subclasses:
MrcOpsModeProgrammer
public class MrcProgrammer extends AbstractProgrammer implements MrcTrafficListener
Convert the jmri.Programmer interface into commands for the MRC power house.This has two states: NOTPROGRAMMING, and COMMANDSENT. The transitions to and from programming mode are now handled in the TrafficController code.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.Programmer
Programmer.Configurator, Programmer.WriteConfirmMode
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int_cv(package private) boolean_progRead(package private) int_val(package private) static ProgrammingModeAUTOMATICMODEprotected MrcSystemConnectionMemomemo(package private) static intNOTPROGRAMMING(package private) intPACKET_READTIMEOUT(package private) intPACKET_TIMEOUT(package private) static intPOMCOMMANDSENT(package private) intprogState(package private) static intREADCOMMANDSENT(package private) static intWRITECOMMANDSENT-
Fields inherited from class jmri.jmrix.AbstractProgrammer
LONG_TIMEOUT, SHORT_TIMEOUT
-
Fields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupport
-
-
Constructor Summary
Constructors Constructor Description MrcProgrammer(MrcSystemConnectionMemo memo)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidcleanup()voidconfirmCV(java.lang.String CVname, int val, ProgListener p)Confirm the value of a CV using the specified programming mode.booleangetCanRead()Checks the general read capability, regardless of modebooleangetCanWrite()Checks the general write capability, regardless of modebooleangetCanWrite(java.lang.String cv)Checks the general write capability, regardless of mode, for a specific addressjava.util.List<ProgrammingMode>getSupportedModes()Get the list ofProgrammingModesupported by this Programmer.voidnotifyFailedXmit(java.util.Date timestamp, MrcMessage m)protected voidnotifyProgListenerEnd(int value, int status)voidnotifyRcv(java.util.Date timestamp, MrcMessage m)voidnotifyXmit(java.util.Date timestamp, MrcMessage m)protected MrcMessageprogTaskStart(ProgrammingMode mode, int val, int cvnum)voidreadCV(java.lang.String CVname, ProgListener p)Perform a CV read in the system-specific manner, and using the specified programming mode.protected voidtimeout()Internal routine to handle a timeout, should be synchronized!protected voiduseProgrammer(ProgListener p)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.jmrix.AbstractProgrammer
decodeErrorCode, getBestMode, getCanRead, getMode, getWriteConfirmMode, registerFromCV, restartTimer, setMode, startLongTimer, startShortTimer, stopTimer
-
Methods inherited from class jmri.beans.PropertyChangeSupport
addPropertyChangeListener, addPropertyChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jmri.Programmer
addPropertyChangeListener, dispose, getConfigurator, notifyProgListenerEnd, readCV, removePropertyChangeListener
-
-
-
-
Field Detail
-
memo
protected MrcSystemConnectionMemo memo
-
PACKET_TIMEOUT
int PACKET_TIMEOUT
-
PACKET_READTIMEOUT
int PACKET_READTIMEOUT
-
AUTOMATICMODE
static final ProgrammingMode AUTOMATICMODE
-
progState
int progState
-
NOTPROGRAMMING
static final int NOTPROGRAMMING
- See Also:
- Constant Field Values
-
READCOMMANDSENT
static final int READCOMMANDSENT
- See Also:
- Constant Field Values
-
WRITECOMMANDSENT
static final int WRITECOMMANDSENT
- See Also:
- Constant Field Values
-
POMCOMMANDSENT
static final int POMCOMMANDSENT
- See Also:
- Constant Field Values
-
_progRead
boolean _progRead
-
_val
int _val
-
_cv
int _cv
-
-
Constructor Detail
-
MrcProgrammer
public MrcProgrammer(MrcSystemConnectionMemo memo)
-
-
Method Detail
-
getSupportedModes
@Nonnull public java.util.List<ProgrammingMode> getSupportedModes()
Get the list ofProgrammingModesupported by this Programmer. If the order is significant, earlier modes are better. Types implemented here.- Specified by:
getSupportedModesin interfaceProgrammer- Specified by:
getSupportedModesin classAbstractProgrammer- Returns:
- the list of supported modes or an empty list
-
getCanRead
public boolean getCanRead()
Checks the general read capability, regardless of mode Basic implementation. Override this to turn reading on and off globally.- Specified by:
getCanReadin interfaceProgrammer- Overrides:
getCanReadin classAbstractProgrammer- Returns:
- true if the programmer is capable of reading; false otherwise
-
getCanWrite
public boolean getCanWrite()
Checks the general write capability, regardless of mode Basic implementation. Override this to turn writing on and off globally.- Specified by:
getCanWritein interfaceProgrammer- Overrides:
getCanWritein classAbstractProgrammer- Returns:
- true if the programmer is capable of writing; false otherwise
-
getCanWrite
public boolean getCanWrite(java.lang.String cv)
Checks the general write capability, regardless of mode, for a specific address Checks using the current default programming mode. CV1 to 1024 valid- Specified by:
getCanWritein interfaceProgrammer- Overrides:
getCanWritein classAbstractProgrammer- Parameters:
cv- the address to write to- Returns:
- true if the address can be written to; false otherwise
-
writeCV
public 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 interfaceProgrammer- Specified by:
writeCVin classAbstractProgrammer- Parameters:
CVname- the CV to writeval- the value to writep- the listener that will be notified of the write- Throws:
ProgrammerException- if unable to communicate
-
confirmCV
public 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 interfaceProgrammer- Specified by:
confirmCVin classAbstractProgrammer- Parameters:
CVname- the CV to confirmval- the value to confirmp- the listener that will be notified of the confirmation- Throws:
ProgrammerException- if unable to communicate
-
readCV
public 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 interfaceProgrammer- Specified by:
readCVin classAbstractProgrammer- Parameters:
CVname- the CV to readp- the listener that will be notified of the read- Throws:
ProgrammerException- if unable to communicate
-
useProgrammer
protected void useProgrammer(ProgListener p) throws ProgrammerException
- Throws:
ProgrammerException
-
progTaskStart
protected MrcMessage progTaskStart(ProgrammingMode mode, int val, int cvnum) throws ProgrammerException
- Throws:
ProgrammerException
-
notifyXmit
public void notifyXmit(java.util.Date timestamp, MrcMessage m)
- Specified by:
notifyXmitin interfaceMrcTrafficListener
-
notifyFailedXmit
public void notifyFailedXmit(java.util.Date timestamp, MrcMessage m)
- Specified by:
notifyFailedXmitin interfaceMrcTrafficListener
-
notifyRcv
public void notifyRcv(java.util.Date timestamp, MrcMessage m)
- Specified by:
notifyRcvin interfaceMrcTrafficListener
-
timeout
protected void timeout()
Internal routine to handle a timeout, should be synchronized! Internal routine to handle a timeout- Specified by:
timeoutin classAbstractProgrammer
-
cleanup
void cleanup()
-
notifyProgListenerEnd
protected void notifyProgListenerEnd(int value, int status)
-
-