Package jmri.jmrix.sprog.simulator
Class SimulatorAdapter
- java.lang.Object
-
- jmri.jmrix.AbstractPortController
-
- jmri.jmrix.AbstractSerialPortController
-
- jmri.jmrix.sprog.SprogPortController
-
- jmri.jmrix.sprog.simulator.SimulatorAdapter
-
- All Implemented Interfaces:
java.lang.Runnable
,PortAdapter
,SerialPortAdapter
public class SimulatorAdapter extends SprogPortController implements java.lang.Runnable
Provide access to a simulated SPROG system.Can be loaded as either a Programmer or Command Station. The SPROG SimulatorAdapter reacts to commands sent from the user interface with an appropriate reply message.
Based on jmri.jmrix.lenz.xnetsimulator.XNetSimulatorAdapter / DCCppSimulatorAdapter 2017
-
-
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) java.lang.String
SPR_NO
(package private) java.lang.String
SPR_OK
(package private) java.lang.String
SPR_PR
-
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 SimulatorAdapter()
-
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 Sprog Simulator.void
connect()
Open the connection.void
dispose()
Clean up before removal.java.lang.String
getCurrentBaudRate()
java.lang.String
getCurrentPortName()
Overridden in simulator adapter classes to return "";java.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.void
run()
void
setOutputBufferEmpty(boolean s)
Set if the output buffer is empty or full.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.sprog.SprogPortController
getSystemConnectionMemo
-
Methods inherited from class jmri.jmrix.AbstractSerialPortController
activatePort, activatePort, activatePort, closeConnection, closeSerialPort, configureBaudRate, configureBaudRateFromIndex, configureBaudRateFromNumber, configureLeads, configureLeadsAndFlowControl, configureLeadsAndFlowControl, currentBaudNumber, defaultBaudIndex, getActualPortNames, getCurrentBaudIndex, getCurrentBaudNumber, 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, 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
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
-
-
-
-
Constructor Detail
-
SimulatorAdapter
public SimulatorAdapter()
-
-
Method Detail
-
openPort
public java.lang.String openPort(java.lang.String portName, java.lang.String appName)
Open a specified port. Simulated input/output pipes.- 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.- 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.- 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 Sprog Simulator.- Specified by:
configure
in interfacePortAdapter
- Specified by:
configure
in interfaceSerialPortAdapter
-
connect
public void connect() throws java.io.IOException
Open the connection.- Specified by:
connect
in interfacePortAdapter
- Overrides:
connect
in classAbstractSerialPortController
- Throws:
java.io.IOException
- if unable to connect
-
getInputStream
public java.io.DataInputStream getInputStream()
Get the InputStream from the port.- Specified by:
getInputStream
in interfacePortAdapter
- Overrides:
getInputStream
in classAbstractSerialPortController
- Returns:
- the InputStream from the port
-
getOutputStream
public java.io.DataOutputStream getOutputStream()
Get the outputStream to the port.- Specified by:
getOutputStream
in interfacePortAdapter
- Overrides:
getOutputStream
in classAbstractSerialPortController
- Returns:
- the outputStream to the port
-
status
public boolean status()
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:
- 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()
-
getCurrentBaudRate
public java.lang.String getCurrentBaudRate()
Description copied from class:AbstractSerialPortController
- Specified by:
getCurrentBaudRate
in interfaceSerialPortAdapter
- Overrides:
getCurrentBaudRate
in classAbstractSerialPortController
-
getCurrentPortName
public java.lang.String getCurrentPortName()
Description copied from class:AbstractSerialPortController
Overridden in simulator adapter classes to return "";- Specified by:
getCurrentPortName
in interfacePortAdapter
- Specified by:
getCurrentPortName
in interfaceSerialPortAdapter
- Overrides:
getCurrentPortName
in classAbstractSerialPortController
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
dispose
public void dispose()
Description copied from class:AbstractPortController
Clean up before removal. Overriding methods must callsuper.dispose()
or document why they are not calling the overridden implementation. In most cases, failure to call the overridden implementation will cause user-visible error.- Specified by:
dispose
in interfacePortAdapter
- Overrides:
dispose
in classAbstractPortController
-
-