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) classSerialAdapter.ReaderInternal 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.OutputStreamostream(package private) java.lang.ThreadreaderThread(package private) java.io.DataInputStreamserialStream(package private) java.lang.String[]validOptions1protected java.lang.String[]validSpeedsprotected int[]validSpeedValues(package private) intversion-
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 voidconfigure()Set up all of the other objects to operate.voidconfigureOption1(java.lang.String value)Set the second port option.intdefaultBaudIndex()Get the index of the default port speed for this adapter from the validSpeeds and validRates arrays.RpsSystemConnectionMemogetSystemConnectionMemo()Get theSystemConnectionMemoassociated with this object.(package private) ReadingmakeReading(java.lang.String s)Convert input line to Reading object.protected voidnextLine(java.lang.String s)Handle a new line from the device.java.lang.StringopenPort(java.lang.String portName, java.lang.String appName)Open a specified port.(package private) voidsendBytes(byte[] bytes)Send output bytes, e.g. characters controlling operation, with small delays between the characters.(package private) voidsetReceivers(java.lang.String s)Handle the message which lists the receiver numbers.booleanstatus()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 theSystemConnectionMemoassociated 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:
getSystemConnectionMemoin interfacePortAdapter- Overrides:
getSystemConnectionMemoin 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:SerialPortAdapterOpen 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:AbstractPortControllerQuery the status of this connection. This is a question of configuration, not transient hardware status.- Specified by:
statusin interfacePortAdapter- Specified by:
statusin interfaceSerialPortAdapter- Overrides:
statusin 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:
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
public int[] 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()
-
defaultBaudIndex
public int defaultBaudIndex()
Description copied from interface:SerialPortAdapterGet the index of the default port speed for this adapter from the validSpeeds and validRates arrays.- Specified by:
defaultBaudIndexin interfaceSerialPortAdapter- Overrides:
defaultBaudIndexin 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:
configureOption1in interfacePortAdapter- Specified by:
configureOption1in interfaceSerialPortAdapter- Overrides:
configureOption1in 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
-
-