Class Mx1Programmer
- java.lang.Object
-
- jmri.beans.PropertyChangeSupport
-
- jmri.jmrix.AbstractProgrammer
-
- jmri.jmrix.zimo.Mx1Programmer
-
- All Implemented Interfaces:
java.util.EventListener
,PropertyChangeFirer
,PropertyChangeProvider
,Disposable
,Mx1Listener
,Programmer
- Direct Known Subclasses:
Mx1OpsModeProgrammer
public class Mx1Programmer extends AbstractProgrammer implements Mx1Listener
Programmer support for Zimo Mx-1. Currently paged mode is implemented.The read operation state sequence is:
- Reset Mx-1
- Send paged mode read/write request
- Wait for results reply, interpret
- Send Resume Operations request
- Wait for Normal Operations Resumed broadcast
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.Programmer
Programmer.WriteConfirmMode
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int
_cv
(package private) boolean
_progRead
(package private) int
_val
(package private) boolean
firstTime
(package private) static int
INQUIRESENT
(package private) static int
NOTPROGRAMMING
(package private) int
progState
protected Mx1TrafficController
tc
-
Fields inherited from class jmri.jmrix.AbstractProgrammer
LONG_TIMEOUT, SHORT_TIMEOUT
-
Fields inherited from class jmri.beans.PropertyChangeSupport
propertyChangeSupport
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
Mx1Programmer(Mx1TrafficController _tc)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
ascToBcd(int hex)
void
confirmCV(java.lang.String CV, int val, ProgListener p)
Confirm the value of a CV using the specified programming mode.java.util.List<ProgrammingMode>
getSupportedModes()
Get the list ofProgrammingMode
supported by this Programmer.void
message(Mx1Message m)
Member function that will be invoked by a Mx1Interface implementation to forward a MX-1 message from the layout.protected void
notifyProgListenerEnd(int value, int status)
void
readCV(java.lang.String CVname, ProgListener p)
Perform a CV read in the system-specific manner, and using the specified programming mode.protected void
timeout()
Internal routine to handle a timeout, should be synchronized!protected void
useProgrammer(ProgListener p)
void
writeCV(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, getCanRead, getCanWrite, getCanWrite, 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, notifyProgListenerEnd, readCV, removePropertyChangeListener
-
-
-
-
Field Detail
-
tc
protected Mx1TrafficController tc
-
progState
int progState
-
firstTime
boolean firstTime
-
NOTPROGRAMMING
static final int NOTPROGRAMMING
- See Also:
- Constant Field Values
-
INQUIRESENT
static final int INQUIRESENT
- See Also:
- Constant Field Values
-
_progRead
boolean _progRead
-
_val
int _val
-
_cv
int _cv
-
-
Constructor Detail
-
Mx1Programmer
protected Mx1Programmer(Mx1TrafficController _tc)
-
-
Method Detail
-
getSupportedModes
@Nonnull public java.util.List<ProgrammingMode> getSupportedModes()
Get the list ofProgrammingMode
supported by this Programmer. If the order is significant, earlier modes are better. Types implemented here.- Specified by:
getSupportedModes
in interfaceProgrammer
- Specified by:
getSupportedModes
in classAbstractProgrammer
- Returns:
- the list of supported modes or an empty list
-
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:
writeCV
in interfaceProgrammer
- Specified by:
writeCV
in 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 CV, 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:
confirmCV
in interfaceProgrammer
- Specified by:
confirmCV
in classAbstractProgrammer
- Parameters:
CV
- 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:
readCV
in interfaceProgrammer
- Specified by:
readCV
in 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
-
message
public void message(Mx1Message m)
Member function that will be invoked by a Mx1Interface implementation to forward a MX-1 message from the layout.- Specified by:
message
in interfaceMx1Listener
- Parameters:
m
- The received MX-1 message. Note that this same object may be presented to multiple users. It should not be modified here.
-
timeout
protected void timeout()
Internal routine to handle a timeout, should be synchronized! Internal routine to handle a timeout- Specified by:
timeout
in classAbstractProgrammer
-
notifyProgListenerEnd
protected void notifyProgListenerEnd(int value, int status)
-
ascToBcd
public int ascToBcd(int hex)
-
-