Package jmri.jmrix.rps.serial
Class SerialAdapter
- java.lang.Object
-
- jmri.jmrix.AbstractPortController
-
- jmri.jmrix.AbstractSerialPortController
-
- jmri.jmrix.rps.serial.SerialAdapter
-
- All Implemented Interfaces:
PortAdapter
,SerialPortAdapter
public class SerialAdapter extends AbstractSerialPortController
Implements SerialPortAdapter for the RPS system.Unlike many other SerialPortAdapters, this also converts the input stream into Readings that can be passed to the Distributor.
This version expects that the "A" command will send back "DATA,," followed by a list of receivers numbers, and data lines will be "0,0,0,0": A value for each address up to the max receiver, even if some are missing (0 in that case)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
SerialAdapter.Reader
Internal class to handle the separate character-receive thread.-
Nested classes/interfaces inherited from class jmri.jmrix.AbstractSerialPortController
AbstractSerialPortController.Blocking, AbstractSerialPortController.FlowControl
-
Nested classes/interfaces inherited from class jmri.jmrix.AbstractPortController
AbstractPortController.Option
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int[]
offsetArray
(package private) java.io.OutputStream
ostream
(package private) java.lang.Thread
readerThread
(package private) java.io.DataInputStream
serialStream
(package private) java.lang.String[]
validOptions1
protected java.lang.String[]
validSpeeds
protected int[]
validSpeedValues
(package private) int
version
-
Fields inherited from class jmri.jmrix.AbstractSerialPortController
currentSerialPort, mBaudRate, mPort
-
Fields inherited from class jmri.jmrix.AbstractPortController
allowConnectionRecovery, manufacturerName, opened, option1Name, option2Name, option3Name, option4Name, options, reconnectinterval, reconnectMaxAttempts, reconnectMaxInterval
-
-
Constructor Summary
Constructors Constructor Description SerialAdapter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
configure()
Set up all of the other objects to operate.void
configureOption1(java.lang.String value)
Set the second port option.int
defaultBaudIndex()
Get the index of the default port speed for this adapter from the validSpeeds and validRates arrays.RpsSystemConnectionMemo
getSystemConnectionMemo()
Get theSystemConnectionMemo
associated with this object.(package private) Reading
makeReading(java.lang.String s)
Convert input line to Reading object.protected void
nextLine(java.lang.String s)
Handle a new line from the device.java.lang.String
openPort(java.lang.String portName, java.lang.String appName)
Open a specified port.(package private) void
sendBytes(byte[] bytes)
Send output bytes, e.g. characters controlling operation, with small delays between the characters.(package private) void
setReceivers(java.lang.String s)
Handle the message which lists the receiver numbers.boolean
status()
Query the status of this connection.int[]
validBaudNumbers()
Get an array of valid baud rate numbers; used to store/load adapter speed option.java.lang.String[]
validBaudRates()
Get an array of valid baud rate strings; used to display valid options in Connections Preferences.-
Methods inherited from class jmri.jmrix.AbstractSerialPortController
activatePort, activatePort, activatePort, closeConnection, closeSerialPort, configureBaudRate, configureBaudRateFromIndex, configureBaudRateFromNumber, configureLeads, configureLeadsAndFlowControl, configureLeadsAndFlowControl, connect, currentBaudNumber, getActualPortNames, getCurrentBaudIndex, getCurrentBaudNumber, getCurrentBaudRate, getCurrentPortName, getFlowControl, getInputStream, getOutputStream, getPortSettingsString, handlePortBusy, handlePortNotFound, handlePortNotFound, isPortOpen, replacePortWithFakePort, reportPortStatus, resetupConnection, setBaudRate, setComPortTimeouts, setDataListener, setFlowControl, setPort
-
Methods inherited from class jmri.jmrix.AbstractPortController
configureOption2, configureOption3, 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, setUserName
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods 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, setUserName
-
Methods inherited from interface jmri.jmrix.SerialPortAdapter
configureOption2, configureOption3, configureOption4, getManufacturer, getPortNames, setManufacturer
-
-
-
-
Field Detail
-
serialStream
java.io.DataInputStream serialStream
-
ostream
java.io.OutputStream ostream
-
validSpeeds
protected java.lang.String[] validSpeeds
-
validSpeedValues
protected int[] validSpeedValues
-
validOptions1
java.lang.String[] validOptions1
-
offsetArray
int[] offsetArray
-
readerThread
java.lang.Thread readerThread
-
version
int version
-
-
Constructor Detail
-
SerialAdapter
public SerialAdapter()
-
-
Method Detail
-
getSystemConnectionMemo
public RpsSystemConnectionMemo getSystemConnectionMemo()
Get theSystemConnectionMemo
associated with this object.This method should only be overridden to ensure that a specific subclass of SystemConnectionMemo is returned. The recommended pattern is:
public MySystemConnectionMemo getSystemConnectionMemo() { return (MySystemConnectionMemo) super.getSystemConnectionMemo(); }
- Specified by:
getSystemConnectionMemo
in interfacePortAdapter
- Overrides:
getSystemConnectionMemo
in classAbstractPortController
- Returns:
- the currently associated SystemConnectionMemo
-
configure
public void configure()
Set up all of the other objects to operate.
-
openPort
public java.lang.String openPort(java.lang.String portName, java.lang.String appName)
Description copied from interface:SerialPortAdapter
Open a specified port.- 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.
-
sendBytes
void sendBytes(byte[] bytes)
Send output bytes, e.g. characters controlling operation, with small delays between the characters. This is used to reduce overrrun problems.- Parameters:
bytes
- Array of characters to be sent one at a time
-
status
public boolean status()
Description copied from class:AbstractPortController
Query the status of this connection. This is a question of configuration, not transient hardware status.- Specified by:
status
in interfacePortAdapter
- Specified by:
status
in interfaceSerialPortAdapter
- Overrides:
status
in classAbstractPortController
- Returns:
- true if OK, at least as far as known
-
validBaudRates
public java.lang.String[] validBaudRates()
Get an array of valid baud rate strings; used to display valid options in Connections Preferences.- Specified by:
validBaudRates
in interfaceSerialPortAdapter
- Overrides:
validBaudRates
in 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
public int[] validBaudNumbers()
Get an array of valid baud rate numbers; used to store/load adapter speed option.- Specified by:
validBaudNumbers
in interfaceSerialPortAdapter
- Overrides:
validBaudNumbers
in classAbstractSerialPortController
- Returns:
- integer array of speeds, must match order and values from
SerialPortAdapter.validBaudRates()
-
defaultBaudIndex
public int defaultBaudIndex()
Description copied from interface:SerialPortAdapter
Get the index of the default port speed for this adapter from the validSpeeds and validRates arrays.- Specified by:
defaultBaudIndex
in interfaceSerialPortAdapter
- Overrides:
defaultBaudIndex
in classAbstractSerialPortController
- Returns:
- -1 to indicate not supported, unless overridden in adapter
-
configureOption1
public void configureOption1(java.lang.String value)
Set the second port option.- Specified by:
configureOption1
in interfacePortAdapter
- Specified by:
configureOption1
in interfaceSerialPortAdapter
- Overrides:
configureOption1
in classAbstractPortController
- Parameters:
value
- to set the option to
-
nextLine
@InvokeOnGuiThread protected void nextLine(java.lang.String s)
Handle a new line from the device.This needs to execute on the Swing GUI thread. It forwards via the Distributor object.
- Parameters:
s
- The new message to distribute
-
setReceivers
void setReceivers(java.lang.String s)
Handle the message which lists the receiver numbers. Just makes an array of those, which is not actually used.- Parameters:
s
- Input line
-
makeReading
Reading makeReading(java.lang.String s) throws java.io.IOException
Convert input line to Reading object.- Parameters:
s
- The line of input- Returns:
- A Reading object with content parsed from the input line
- Throws:
java.io.IOException
- from underlying I/O
-
-