Package jmri.implementation
Class MatrixSignalMast
- java.lang.Object
-
- jmri.implementation.AbstractNamedBean
-
- jmri.implementation.AbstractSignalMast
-
- jmri.implementation.MatrixSignalMast
-
- All Implemented Interfaces:
java.beans.VetoableChangeListener
,java.lang.Comparable<NamedBean>
,java.util.EventListener
,PropertyChangeProvider
,NamedBean
,Signal
,SignalMast
public class MatrixSignalMast extends AbstractSignalMast
SignalMast implemented via a Binary Matrix (Truth Table) of Apects x Turnout objects.A MatrixSignalMast is built up from an array of turnouts to control each aspect. System name specifies the creation information (except for the actual output beans):
IF$xsm:basic:one-searchlight:($0001)-3t
The name is a colon-separated series of terms:- IF$xsm - defines signal masts of this type (x for matriX)
- basic - name of the signaling system
- one-searchlight - name of the particular aspect map/mast model
- ($0001) - small ordinal number for telling various matrix signal masts apart
- name ending in -nt for (binary) Turnout outputs where n = the number of binary outputs, between 1 and mastBitNum i.e. -3t
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.NamedBean
NamedBean.BadNameException, NamedBean.BadSystemNameException, NamedBean.BadUserNameException, NamedBean.DisplayOptions, NamedBean.DuplicateSystemNameException
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<java.lang.String,NamedBeanHandle<Turnout>>
outputsToBeans
-
Fields inherited from class jmri.implementation.AbstractSignalMast
allowUnLit, aspect, disabledAspects, disablePermissiveSignalMastLogic, map, mastType, speed, systemDefn
-
Fields inherited from class jmri.implementation.AbstractNamedBean
listenerRefs, mSystemName, register
-
Fields inherited from interface jmri.NamedBean
DISPLAY_NAME_FORMAT, INCONSISTENT, PROPERTY_STATE, QUOTED_NAME_FORMAT, UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description MatrixSignalMast(java.lang.String systemName)
MatrixSignalMast(java.lang.String systemName, java.lang.String userName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getBitNum()
char[]
getBitsForAspect(java.lang.String aspect)
Look up the pattern for an aspect.java.lang.String
getBitstring(java.lang.String aspect)
Provide one series of on/off digits from aspectToOutput hashmap to xml.static int
getLastRef()
int
getMatrixMastCommandDelay()
Get the delay between issuing Matrix Output commands to the outputs on this specific mast.NamedBeanHandle<Turnout>
getOutputHandle(int colNum)
Fetch output from outputsToBeans hashmap.java.lang.String
getOutputName(int colnum)
Fetch output from outputsToBeans hashmap and provide to xml.java.util.List<java.lang.String>
getOutputs()
Provide the names of the on/off turnout outputs from outputsToBeans hashmap to xml.char[]
getUnLitBits()
Provide Unlit bits to panel for editing.java.lang.String
getUnLitChars()
Hand unLitBits to xml.boolean
isTurnoutUsed(Turnout t)
boolean
resetPreviousStates()
void
resetPreviousStates(boolean boo)
If the signal mast driver requires the previous state to be cleared down before the next state is set.void
setAspect(java.lang.String aspect)
Set aspect to a valid name in the current signal system definition.void
setAspectDisabled(java.lang.String aspect)
void
setBitNum(char[] bits)
Store number of outputs from integer.void
setBitNum(int number)
Store number of outputs from integer.void
setBitsForAspect(java.lang.String aspect, char[] bitArray)
Store bits in aspectToOutput hashmap, synchronized.void
setBitstring(java.lang.String aspect, char[] bitArray)
Receive aspect name from xml and store matching setting in outputsToBeans hashmap.void
setBitstring(java.lang.String aspect, java.lang.String bitString)
Receive aspect name from xml and store matching setting in outputsToBeans hashmap.protected static void
setLastRef(int newVal)
void
setLit(boolean newLit)
Set the lit property.void
setMatrixMastCommandDelay(int delay)
Set the delay between issuing Matrix Output commands to the outputs on this specific mast.void
setOutput(java.lang.String colname, java.lang.String turnoutname)
Receive properties from xml, convert name to NamedBeanHandle, store in hashmap outputsToBeans.void
setUnLitBits(char[] bits)
void
setUnLitBits(java.lang.String bitString)
Receive unLitBits from xml and store.void
updateOutputs(char[] bits)
Send hardware instruction.void
vetoableChange(java.beans.PropertyChangeEvent evt)
-
Methods inherited from class jmri.implementation.AbstractSignalMast
allowUnLit, configureAspectTable, configureSignalSystemDefinition, getAllKnownAspects, getAppearanceMap, getAspect, getBeanType, getDisabledAspects, getHeld, getLit, getMastType, getSignalSystem, getSpeed, getState, getUsageReport, getValidAspects, isAspectDisabled, isAtStop, isCleared, isPermissiveSmlDisabled, isShowingRestricting, setAllowUnLit, setAspectEnabled, setHeld, setMastType, setPermissiveSmlDisabled, setState
-
Methods inherited from class jmri.implementation.AbstractNamedBean
addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, describeState, dispose, equals, firePropertyChange, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeListenersByReference, getPropertyKeys, getSystemName, getUserName, hashCode, removeProperty, removePropertyChangeListener, removePropertyChangeListener, setComment, setProperty, setUserName, toString, toStringSuffix, updateListenerRef
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jmri.NamedBean
addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, compareTo, describeState, dispose, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListenersByReference, getPropertyKeys, getSystemName, getUserName, removeProperty, setComment, setProperty, setUserName, toString, updateListenerRef
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
-
-
-
Field Detail
-
outputsToBeans
protected java.util.HashMap<java.lang.String,NamedBeanHandle<Turnout>> outputsToBeans
-
-
Constructor Detail
-
MatrixSignalMast
public MatrixSignalMast(java.lang.String systemName, java.lang.String userName)
-
MatrixSignalMast
public MatrixSignalMast(java.lang.String systemName)
-
-
Method Detail
-
setBitsForAspect
public void setBitsForAspect(java.lang.String aspect, char[] bitArray)
Store bits in aspectToOutput hashmap, synchronized.Length of bitArray should match the number of outputs defined, so one digit per output.
- Parameters:
aspect
- String valid aspect to definebitArray
- char[] of on/off outputs for the aspect, like "00010"
-
getBitsForAspect
public char[] getBitsForAspect(java.lang.String aspect)
Look up the pattern for an aspect.- Parameters:
aspect
- String describing a (valid) signal mast aspect, like "Clear" only called for an already existing mast- Returns:
- char[] of on/off outputs per aspect, like "00010" length of array should match the number of outputs defined when a mast is changed in the interface, extra 0's are added or superfluous elements deleted by the Add Mast panel
-
setAspect
public void setAspect(@Nonnull java.lang.String aspect)
Description copied from interface:SignalMast
Set aspect to a valid name in the current signal system definition.- Specified by:
setAspect
in interfaceSignalMast
- Overrides:
setAspect
in classAbstractSignalMast
- Parameters:
aspect
- the new aspect shown
-
setLit
public void setLit(boolean newLit)
Description copied from class:AbstractSignalMast
Set the lit property.This acts on all the SignalHeads included in this SignalMast
- Specified by:
setLit
in interfaceSignal
- Specified by:
setLit
in interfaceSignalMast
- Overrides:
setLit
in classAbstractSignalMast
- Parameters:
newLit
- the new value of lit
-
setUnLitBits
public void setUnLitBits(@Nonnull char[] bits)
-
setUnLitBits
public void setUnLitBits(@Nonnull java.lang.String bitString)
Receive unLitBits from xml and store.- Parameters:
bitString
- String for 1-n 1/0 chararacters setting an unlit aspect
-
getUnLitBits
@Nonnull public char[] getUnLitBits()
Provide Unlit bits to panel for editing.- Returns:
- char[] containing a series of 1's and 0's set for Unlit mast
-
getUnLitChars
@Nonnull public java.lang.String getUnLitChars()
Hand unLitBits to xml.- Returns:
- String for 1-n 1/0 chararacters setting an unlit aspect
-
getOutputHandle
@CheckForNull public NamedBeanHandle<Turnout> getOutputHandle(int colNum)
Fetch output from outputsToBeans hashmap. Used?- Parameters:
colNum
- int index (1 up to mastBitNum) for the column of the desired output- Returns:
- NamedBeanHandle to the configured turnout output
-
getOutputName
@Nonnull public java.lang.String getOutputName(int colnum)
Fetch output from outputsToBeans hashmap and provide to xml.- Parameters:
colnum
- int index (1 up to mastBitNum) for the column of the desired output- Returns:
- String with the desplay name of the configured turnout output
- See Also:
MatrixSignalMastXml.store(java.lang.Object)
-
setBitstring
public void setBitstring(@Nonnull java.lang.String aspect, @Nonnull java.lang.String bitString)
Receive aspect name from xml and store matching setting in outputsToBeans hashmap.- Parameters:
aspect
- String describing (valid) signal mast aspect, like "Clear"bitString
- String of 1/0 digits representing on/off outputs per aspect, like "00010"- See Also:
MatrixSignalMastXml.load(org.jdom2.Element, org.jdom2.Element)
-
setBitstring
public void setBitstring(java.lang.String aspect, char[] bitArray)
Receive aspect name from xml and store matching setting in outputsToBeans hashmap.- Parameters:
aspect
- String describing (valid) signal mast aspect, like "Clear"bitArray
- char[] of 1/0 digits representing on/off outputs per aspect, like {0,0,0,1,0}
-
getBitstring
@Nonnull public java.lang.String getBitstring(@Nonnull java.lang.String aspect)
Provide one series of on/off digits from aspectToOutput hashmap to xml.- Parameters:
aspect
- String describing valid signal mast aspect, like "Clear"- Returns:
- bitString String of 1 (= on) and 0 (= off) chars
-
getOutputs
@Nonnull public java.util.List<java.lang.String> getOutputs()
Provide the names of the on/off turnout outputs from outputsToBeans hashmap to xml.- Returns:
- outputlist List<String> of display names for the outputs in order 1 to (max) mastBitNum
-
setOutput
public void setOutput(@Nonnull java.lang.String colname, @Nonnull java.lang.String turnoutname)
Receive properties from xml, convert name to NamedBeanHandle, store in hashmap outputsToBeans.- Parameters:
colname
- String describing the name of the corresponding output, like "output1"turnoutname
- String for the display name of the output, like "LT1"
-
updateOutputs
public void updateOutputs(char[] bits)
Send hardware instruction.- Parameters:
bits
- char[] of on/off outputs per aspect, like "00010" Length of array should match the number of outputs defined
-
resetPreviousStates
public void resetPreviousStates(boolean boo)
If the signal mast driver requires the previous state to be cleared down before the next state is set.- Parameters:
boo
- true to configure for intermediate reset step
-
resetPreviousStates
public boolean resetPreviousStates()
-
isTurnoutUsed
public boolean isTurnoutUsed(Turnout t)
-
getLastRef
public static int getLastRef()
- Returns:
- highest ordinal of all MatrixSignalMasts in use
-
setLastRef
protected static void setLastRef(int newVal)
- Parameters:
newVal
- for ordinal of all MatrixSignalMasts in use
-
vetoableChange
public void vetoableChange(java.beans.PropertyChangeEvent evt) throws java.beans.PropertyVetoException
Description copied from class:AbstractNamedBean
- Specified by:
vetoableChange
in interfaceNamedBean
- Specified by:
vetoableChange
in interfacejava.beans.VetoableChangeListener
- Overrides:
vetoableChange
in classAbstractSignalMast
- Throws:
java.beans.PropertyVetoException
-
setBitNum
public void setBitNum(int number)
Store number of outputs from integer.- Parameters:
number
- int for the number of outputs defined for this mast- See Also:
mastBitNum
-
setBitNum
public void setBitNum(char[] bits)
Store number of outputs from integer.- Parameters:
bits
- char[] for outputs defined for this mast- See Also:
mastBitNum
-
getBitNum
public int getBitNum()
-
setAspectDisabled
public void setAspectDisabled(java.lang.String aspect)
- Overrides:
setAspectDisabled
in classAbstractSignalMast
-
setMatrixMastCommandDelay
public void setMatrixMastCommandDelay(int delay)
Set the delay between issuing Matrix Output commands to the outputs on this specific mast. Mast Delay will be extended by a connection specific Output Delay set in the connection config.- Parameters:
delay
- the new delay in milliseconds- See Also:
MatrixSignalMastXml.load(org.jdom2.Element, org.jdom2.Element)
-
getMatrixMastCommandDelay
public int getMatrixMastCommandDelay()
Get the delay between issuing Matrix Output commands to the outputs on this specific mast. Delay be extended by a connection specific Output Delay set in the connection config.- Returns:
- the delay in milliseconds
- See Also:
MatrixSignalMastXml.load(org.jdom2.Element, org.jdom2.Element)
-
-