Package jmri.jmrix.loconet.hexfile
Class LnHexFilePort
java.lang.Object
jmri.jmrix.AbstractPortController
jmri.jmrix.AbstractSerialPortController
jmri.jmrix.loconet.LnPortController
jmri.jmrix.loconet.hexfile.LnHexFilePort
- All Implemented Interfaces:
Runnable,PortAdapter,SerialPortAdapter
LnHexFilePort implements a LnPortController via an ASCII-hex input file. See
below for the file format. There are user-level controls for send next message
how long to wait between messages
An object of this class should run in a thread of its own so that it can fill
the output pipe as needed.
The input file is expected to have one message per line. Each line can
contain as many bytes as needed, each represented by two Hex characters and
separated by a space. Variable whitespace is not (yet) supported.
-
Nested Class Summary
Nested classes/interfaces inherited from class jmri.jmrix.AbstractSerialPortController
AbstractSerialPortController.Blocking, AbstractSerialPortController.FlowControlNested classes/interfaces inherited from class jmri.jmrix.AbstractPortController
AbstractPortController.Option -
Field Summary
FieldsFields inherited from class jmri.jmrix.loconet.LnPortController
commandStationNames, commandStationType, commandStationTypes, mInterrogateAtStart, mLoconetProtocolAutoDetect, mTranspondingAvailable, mTurnoutExtraSpace, mTurnoutNoRetryFields inherited from class jmri.jmrix.AbstractSerialPortController
currentSerialPort, mBaudRate, mPortFields inherited from class jmri.jmrix.AbstractPortController
allowConnectionRecovery, manufacturerName, opened, option1Name, option2Name, option3Name, option4Name, options, reconnectinterval, reconnectMaxAttempts, reconnectMaxInterval -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Tell this class to exit.voidConfigure all of the other jmrix widgets needed to work with this adapter.voidconfigureOption3(String value) Set the third port option.voidconnect()Open the connection.static LocoNetMessageChoose from a subset of hardware replies to send in HexFile simulator mode in response to specific messages.Get the InputStream from the port.Get the outputStream to the port.Provide a vector of valid port names, each a String.voidFill the contents from a file.booleanokToSend()Can the port accept additional characters?Open a specified port.Get a String that says what Option 3 represents.voidrun()booleanrunning()voidsetDelay(int newDelay) Provide a new message delay value, but don't allow it to go below 2 msec.booleansimReply()voidsimReply(boolean state) Turn on/off replying to LocoNet messages to simulate devices.booleanstatus()Check that this object is ready to operate.voidsuspendReading(boolean suspended) int[]Get an array of valid baud rate numbers; used to store/load adapter speed option.String[]Get an array of valid baud rate strings; used to display valid options in Connections Preferences.String[]Get an array of valid values for "option 3"; used to display valid options.Methods inherited from class jmri.jmrix.loconet.LnPortController
getSystemConnectionMemo, setCommandStationType, setCommandStationType, setInterrogateOnStart, setLoconetProtocolAutoDetect, setTranspondingAvailable, setTurnoutHandlingMethods inherited from class jmri.jmrix.AbstractSerialPortController
activatePort, activatePort, activatePort, closeConnection, closeSerialPort, configureBaudRate, configureBaudRateFromIndex, configureBaudRateFromNumber, configureLeads, configureLeadsAndFlowControl, configureLeadsAndFlowControl, currentBaudNumber, defaultBaudIndex, getActualPortNames, getCurrentBaudIndex, getCurrentBaudNumber, getCurrentBaudRate, getCurrentPortName, getFlowControl, getPortSettingsString, handlePortBusy, handlePortNotFound, handlePortNotFound, isPortOpen, replacePortWithFakePort, reportPortStatus, resetupConnection, setBaudRate, setComPortTimeouts, setDataListener, setFlowControl, setPortMethods inherited from class jmri.jmrix.AbstractPortController
configureOption1, configureOption2, configureOption4, dispose, getDisabled, getManufacturer, getOption1Name, getOption2Name, getOption3Name, getOption4Name, getOptionChoices, getOptionDisplayName, getOptions, getOptionState, getReconnectMaxAttempts, getReconnectMaxInterval, getSystemPrefix, getUserName, isDirty, isOptionAdvanced, isOptionTypePassword, isOptionTypeText, isRestartRequired, purgeStream, reconnect, reconnectFromLoop, recover, safeSleep, setClosed, setDisabled, setManufacturer, setOpened, setOptionState, setReconnectMaxAttempts, setReconnectMaxInterval, setSystemConnectionMemo, setSystemPrefix, setUserNameMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jmri.jmrix.PortAdapter
dispose, getDisabled, getOption1Name, getOption2Name, getOption3Name, getOption4Name, getOptionChoices, getOptionDisplayName, getOptions, getOptionState, getReconnectMaxAttempts, getReconnectMaxInterval, getSystemPrefix, getUserName, isDirty, isOptionAdvanced, isOptionTypePassword, isOptionTypeText, isRestartRequired, recover, setDisabled, setOptionState, setReconnectMaxAttempts, setReconnectMaxInterval, setSystemConnectionMemo, setSystemPrefix, setUserNameMethods inherited from interface jmri.jmrix.SerialPortAdapter
configureOption1, configureOption2, configureOption4, getManufacturer, setManufacturer
-
Field Details
-
threadSuspended
-
-
Constructor Details
-
LnHexFilePort
public LnHexFilePort() -
LnHexFilePort
-
-
Method Details
-
load
Fill the contents from a file.- Parameters:
file- the file to be read
-
close
Tell this class to exit. Note that the caller must also interrupt the thread after this call. -
connect
Description copied from class:AbstractSerialPortControllerOpen the connection.- Specified by:
connectin interfacePortAdapter- Overrides:
connectin classAbstractSerialPortController
-
suspendReading
-
run
-
setDelay
Provide a new message delay value, but don't allow it to go below 2 msec.- Parameters:
newDelay- delay, in milliseconds
-
getInputStream
Get the InputStream from the port.- Specified by:
getInputStreamin interfacePortAdapter- Overrides:
getInputStreamin classAbstractSerialPortController- Returns:
- the InputStream from the port
-
getOutputStream
Get the outputStream to the port.- Specified by:
getOutputStreamin interfacePortAdapter- Overrides:
getOutputStreamin classAbstractSerialPortController- Returns:
- the outputStream to the port
-
status
Check that this object is ready to operate. This is a question of configuration, not transient hardware status.- Specified by:
statusin interfacePortAdapter- Specified by:
statusin interfaceSerialPortAdapter- Specified by:
statusin classLnPortController- Returns:
- true if OK, at least as far as known
-
running
-
okToSend
Description copied from class:LnPortControllerCan the port accept additional characters? This might go false for short intervals, but it might also stick off if something goes wrong.Provide a default implementation for the MS100, etc.
- Overrides:
okToSendin classLnPortController- Returns:
- _always_ true, as we rely on the queueing in the port itself
-
getPortNames
Description copied from interface:SerialPortAdapterProvide a vector of valid port names, each a String. This may be implemented differently in subclasses that e.g. do loopkac or use a custom port-access library.- Specified by:
getPortNamesin interfaceSerialPortAdapter- Returns:
- Valid port names in the form used to select them later.
-
openPort
Open a specified port.- Specified by:
openPortin interfaceSerialPortAdapter- Parameters:
portName- name tu use for this portappName- provided to the underlying OS during startup so that it can show on status displays, etc.- Returns:
- null indicates OK return, else error message.
-
configure
Description copied from interface:SerialPortAdapterConfigure all of the other jmrix widgets needed to work with this adapter.- Specified by:
configurein interfacePortAdapter- Specified by:
configurein interfaceSerialPortAdapter
-
validBaudRates
Get an array of valid baud rate strings; used to display valid options in Connections Preferences.- Specified by:
validBaudRatesin interfaceSerialPortAdapter- Overrides:
validBaudRatesin classAbstractSerialPortController- Returns:
- array of I18N display strings of port speed settings valid for this serial adapter,
must match order and values from
SerialPortAdapter.validBaudNumbers()
-
validBaudNumbers
Get an array of valid baud rate numbers; used to store/load adapter speed option.- Specified by:
validBaudNumbersin interfaceSerialPortAdapter- Overrides:
validBaudNumbersin classAbstractSerialPortController- Returns:
- integer array of speeds, must match order and values from
SerialPortAdapter.validBaudRates()
-
validOption3
Get an array of valid values for "option 3"; used to display valid options. May not be null, but may have zero entries.- Returns:
- the options
-
option3Name
Get a String that says what Option 3 represents. May be an empty string, but will not be null- Returns:
- string containing the text for "Option 3"
-
configureOption3
Set the third port option. Only to be used after construction, but before the openPort call.- Specified by:
configureOption3in interfacePortAdapter- Specified by:
configureOption3in interfaceSerialPortAdapter- Overrides:
configureOption3in classAbstractPortController- Parameters:
value- to set the option to
-
simReply
Turn on/off replying to LocoNet messages to simulate devices.- Parameters:
state- new state for simReplies
-
simReply
-
generateReply
Choose from a subset of hardware replies to send in HexFile simulator mode in response to specific messages. Supported message types:- LN SV v1
Lnsv1MessageContents - LN SV v2
Lnsv2MessageContents - LNCV
LncvMessageContentsReadReply
- Parameters:
m- the message to respond to- Returns:
- an appropriate reply by type and values
- LN SV v1
-