Package jmri.jmrix.dccpp.simulator
Class DCCppSimulatorAdapter
- java.lang.Object
-
- jmri.jmrix.AbstractPortController
-
- jmri.jmrix.AbstractSerialPortController
-
- jmri.jmrix.dccpp.DCCppSimulatorPortController
-
- jmri.jmrix.dccpp.simulator.DCCppSimulatorAdapter
-
- All Implemented Interfaces:
java.lang.Runnable
,DCCppPortController
,PortAdapter
,SerialPortAdapter
public class DCCppSimulatorAdapter extends DCCppSimulatorPortController implements java.lang.Runnable
Provide access to a simulated DCC++ system. Currently, the DCCppSimulator reacts to commands sent from the user interface with messages an appropriate reply message. NOTE: Most DCC++ commands are still unsupported in this implementation. Normally controlled by the dccpp.DCCppSimulator.DCCppSimulatorFrame class. NOTE: Some material in this file was modified from other portions of the support infrastructure.
-
-
Nested Class Summary
-
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) static DCCppSimulatorAdapter
mInstance
(package private) static int
SENSOR_MSG_RATE
-
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 DCCppSimulatorAdapter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
configure()
Set up all of the other objects to operate with a DCCppSimulator connected to this portjava.io.DataInputStream
getInputStream()
Get the InputStream from the port.java.io.DataOutputStream
getOutputStream()
Get the outputStream to the port.boolean
okToSend()
Can the port accept additional characters?java.lang.String
openPort(java.lang.String portName, java.lang.String appName)
Open a specified port.protected byte
readByteProtected(java.io.DataInputStream istream)
Read a single byte, protecting against various timeouts, etc.void
run()
void
setOutputBufferEmpty(boolean s)
Set if the output buffer is empty or full.boolean
status()
Check that this object is ready to operate.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.dccpp.DCCppSimulatorPortController
getSystemConnectionMemo
-
Methods inherited from class jmri.jmrix.AbstractSerialPortController
activatePort, activatePort, activatePort, closeConnection, closeSerialPort, configureBaudRate, configureBaudRateFromIndex, configureBaudRateFromNumber, configureLeads, configureLeadsAndFlowControl, configureLeadsAndFlowControl, connect, currentBaudNumber, defaultBaudIndex, getActualPortNames, getCurrentBaudIndex, getCurrentBaudNumber, getCurrentBaudRate, getCurrentPortName, getFlowControl, getPortSettingsString, handlePortBusy, handlePortNotFound, handlePortNotFound, isPortOpen, replacePortWithFakePort, reportPortStatus, resetupConnection, setBaudRate, setComPortTimeouts, setDataListener, setFlowControl, setPort
-
Methods inherited from class jmri.jmrix.AbstractPortController
configureOption1, 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
connect, 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
configureOption1, configureOption2, configureOption3, configureOption4, getManufacturer, getPortNames, setManufacturer
-
-
-
-
Field Detail
-
SENSOR_MSG_RATE
static final int SENSOR_MSG_RATE
- See Also:
- Constant Field Values
-
mInstance
static volatile DCCppSimulatorAdapter mInstance
-
-
Constructor Detail
-
DCCppSimulatorAdapter
public DCCppSimulatorAdapter()
-
-
Method Detail
-
openPort
public java.lang.String openPort(java.lang.String portName, java.lang.String appName)
Description copied from interface:SerialPortAdapter
Open a specified port.- Specified by:
openPort
in 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.
-
setOutputBufferEmpty
public void setOutputBufferEmpty(boolean s)
Set if the output buffer is empty or full. This should only be set to false by external processes.- Specified by:
setOutputBufferEmpty
in interfaceDCCppPortController
- Specified by:
setOutputBufferEmpty
in classDCCppSimulatorPortController
- Parameters:
s
- true if output buffer is empty; false otherwise
-
okToSend
public boolean okToSend()
Can the port accept additional characters? The state of CTS determines this, as there seems to be no way to check the number of queued bytes and buffer length. This might go false for short intervals, but it might also stick off if something goes wrong.- Specified by:
okToSend
in interfaceDCCppPortController
- Specified by:
okToSend
in classDCCppSimulatorPortController
- Returns:
- true if port can accept additional characters; false otherwise
-
configure
public void configure()
Set up all of the other objects to operate with a DCCppSimulator connected to this port- Specified by:
configure
in interfacePortAdapter
- Specified by:
configure
in interfaceSerialPortAdapter
-
getInputStream
public java.io.DataInputStream getInputStream()
Get the InputStream from the port.- Specified by:
getInputStream
in interfacePortAdapter
- Specified by:
getInputStream
in classDCCppSimulatorPortController
- Returns:
- the InputStream from the port
-
getOutputStream
public java.io.DataOutputStream getOutputStream()
Get the outputStream to the port.- Specified by:
getOutputStream
in interfacePortAdapter
- Specified by:
getOutputStream
in classDCCppSimulatorPortController
- Returns:
- the outputStream to the port
-
status
public boolean status()
Check that this object is ready to operate. This is a question of configuration, not transient hardware status.- Specified by:
status
in interfaceDCCppPortController
- Specified by:
status
in interfacePortAdapter
- Specified by:
status
in interfaceSerialPortAdapter
- Specified by:
status
in classDCCppSimulatorPortController
- 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. Currently just a message saying it's fixed.- Specified by:
validBaudRates
in interfaceSerialPortAdapter
- Overrides:
validBaudRates
in classAbstractSerialPortController
- Returns:
- null
-
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()
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
readByteProtected
protected byte readByteProtected(java.io.DataInputStream istream) throws java.io.IOException
Read a single byte, protecting against various timeouts, etc.When a port is set to have a receive timeout (via the enableReceiveTimeout() method), some will return zero bytes or an EOFException at the end of the timeout. In that case, the read should be repeated to get the next real character.
- Parameters:
istream
- source of data- Returns:
- next available byte, when available
- Throws:
java.io.IOException
- from underlying operation
-
-