Package jmri.jmrix.lenz.xntcp
Class XnTcpAdapter
java.lang.Object
jmri.jmrix.AbstractPortController
jmri.jmrix.AbstractNetworkPortController
jmri.jmrix.lenz.XNetNetworkPortController
jmri.jmrix.lenz.xntcp.XnTcpAdapter
- All Implemented Interfaces:
XNetPortController,NetworkPortAdapter,PortAdapter
Provide access to XpressNet via a XnTcp interface attached on the Ethernet
port.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassOutput class, used to count output packets and make sure that they are immediatelly sent.Nested classes/interfaces inherited from class jmri.jmrix.AbstractPortController
AbstractPortController.Option -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final int(package private) static final String(package private) static final int(package private) static final int(package private) static final int(package private) static final int(package private) static final intFields inherited from class jmri.jmrix.AbstractNetworkPortController
connTimeout, m_HostName, m_port, socketConnFields inherited from class jmri.jmrix.AbstractPortController
allowConnectionRecovery, manufacturerName, opened, option1Name, option2Name, option3Name, option4Name, options, reconnectinterval, reconnectMaxAttempts, reconnectMaxInterval -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidSet up all of the other objects to operate with a XnTcp interface.voidconnect()Open the connection.Get the InputStream from the port.(package private) String[]Get the outputStream to the port.booleanokToSend()Can the port accept additional characters?booleanstatus()Check that this object is ready to operate.protected voidIf an error occurs, either in the input or output thread, set the connection status to disconnected.protected voidxnTcpSetPendingPackets(int s) TCP/IP stack and the XnTcp interface provide enough buffering to avoid overrun.Methods inherited from class jmri.jmrix.lenz.XNetNetworkPortController
dispose, getSystemConnectionMemo, hasTimeSlot, resetupConnection, setOutputBufferEmpty, setTimeSlotMethods inherited from class jmri.jmrix.AbstractNetworkPortController
autoConfigure, closeConnection, connect, getAdvertisementName, getConnectionTimeout, getCurrentPortName, getHostAddress, getHostName, getMdnsConfigure, getPort, getServiceType, reconnectFromLoop, setAdvertisementName, setConnectionTimeout, setHostAddress, setHostName, setMdnsConfigure, setPort, setPort, setServiceTypeMethods 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, 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
configureOption1, configureOption2, configureOption3, configureOption4, getDisabled, getManufacturer, getOption1Name, getOption2Name, getOption3Name, getOption4Name, getOptionChoices, getOptionDisplayName, getOptions, getOptionState, getReconnectMaxAttempts, getReconnectMaxInterval, getSystemPrefix, getUserName, isDirty, isOptionAdvanced, isOptionTypePassword, isOptionTypeText, isRestartRequired, recover, setDisabled, setManufacturer, setOptionState, setReconnectMaxAttempts, setReconnectMaxInterval, setSystemConnectionMemo, setSystemPrefix, setUserName
-
Field Details
-
DEFAULT_UDP_PORT
- See Also:
-
DEFAULT_TCP_PORT
- See Also:
-
DEFAULT_IP_ADDRESS
- See Also:
-
UDP_LENGTH
- See Also:
-
BROADCAST_TIMEOUT
- See Also:
-
READ_TIMEOUT
- See Also:
-
MAX_PENDING_PACKETS
- See Also:
-
-
Constructor Details
-
XnTcpAdapter
public XnTcpAdapter()
-
-
Method Details
-
getInterfaces
String[] getInterfaces() -
getInterfaceNames
-
connect
Description copied from interface:PortAdapterOpen the connection.- Specified by:
connectin interfacePortAdapter- Overrides:
connectin classAbstractNetworkPortController- Throws:
IOException- if unable to connect
-
xnTcpSetPendingPackets
TCP/IP stack and the XnTcp interface provide enough buffering to avoid overrun. However, queueing commands faster than they can be processed should in general be avoided.To this purpose, a counter is incremented each time a packet is queued and decremented when a reply from the interface is received. When the counter reaches the pre-defined maximum (e.g. 15) queuing of commands is blocked. Owing to broadcasts from the command station, the number of commands received can actually be higher than that of commands sent, but this fact simply implies that we may have a higher number of pending commands for a while, without any negative consequence (the maximum is however arbitrary).
- Parameters:
s- number to send
-
xnTcpError
If an error occurs, either in the input or output thread, set the connection status to disconnected. This status will be reset once a TCP/IP connection is re-established via the reconnection routines defined in the parent classes. -
okToSend
Can the port accept additional characters? There is no CTS signal available. We only limit the number of commands queued in TCP/IP stack- Specified by:
okToSendin interfaceXNetPortController- Overrides:
okToSendin classXNetNetworkPortController- Returns:
- true if OK to send, else false.
-
configure
Set up all of the other objects to operate with a XnTcp interface. -
getInputStream
Description copied from class:AbstractNetworkPortControllerGet the InputStream from the port.- Specified by:
getInputStreamin interfacePortAdapter- Overrides:
getInputStreamin classAbstractNetworkPortController- Returns:
- the InputStream from the port
-
getOutputStream
Description copied from class:AbstractNetworkPortControllerGet the outputStream to the port.- Specified by:
getOutputStreamin interfacePortAdapter- Overrides:
getOutputStreamin classAbstractNetworkPortController- Returns:
- the outputStream to the port
-
status
Description copied from class:XNetNetworkPortControllerCheck that this object is ready to operate. This is a question of configuration, not transient hardware status.- Specified by:
statusin interfaceNetworkPortAdapter- Specified by:
statusin interfacePortAdapter- Specified by:
statusin interfaceXNetPortController- Specified by:
statusin classXNetNetworkPortController- Returns:
- true if OK, at least as far as known
-