Package jmri.jmrix.lenz
Class XNetPacketizer
java.lang.Object
jmri.jmrix.AbstractMRTrafficController
jmri.jmrix.lenz.XNetTrafficController
jmri.jmrix.lenz.XNetPacketizer
- All Implemented Interfaces:
XNetInterface
- Direct Known Subclasses:
LI100XNetPacketizer,LIUSBServerXNetPacketizer,LIUSBXNetPacketizer,XnTcpXNetPacketizer,Z21XNetPacketizer,ZTC611XNetPacketizer,ZTC640XNetPacketizer
Converts Stream-based I/O to/from XNet messages. The "XNetInterface" side
sends/receives XNetMessage objects. The connection to an XNetPortController is
via a pair of Streams, which then carry sequences of characters for
transmission.
Messages come to this via the main GUI thread, and are forwarded back to listeners in that same thread. Reception and transmission are handled in dedicated threads by RcvHandler and XmtHandler objects. Those are internal classes defined here. The thread priorities are:
- RcvHandler - at highest available priority
- XmtHandler - down one, which is assumed to be above the GUI
- (everything else)
-
Nested Class Summary
Nested classes/interfaces inherited from class jmri.jmrix.AbstractMRTrafficController
AbstractMRTrafficController.RcvNotifier, AbstractMRTrafficController.XmtNotifier -
Field Summary
Fields inherited from class jmri.jmrix.lenz.XNetTrafficController
highPriorityListeners, highPriorityQueue, mCommandStation, mListenerMasks, mMemo, selfFields inherited from class jmri.jmrix.AbstractMRTrafficController
allowUnexpectedReply, AUTORETRYSTATE, cmdListeners, connectionError, controller, flushReceiveChars, IDLESTATE, istream, listenerQueue, maxRcvExceptionCount, mCurrentMode, mCurrentState, mLastSender, msgQueue, mWaitBeforePoll, NORMALMODE, NOTIFIEDSTATE, OKSENDMSGSTATE, ostream, POLLSTATE, PROGRAMINGMODE, rcvException, rcvThread, replyInDispatch, threadStopRequest, timeoutFlag, timeouts, WAITMSGREPLYSTATE, WAITREPLYINNORMMODESTATE, WAITREPLYINPROGMODESTATE, waitTimePoll, xmtException, xmtRunnable, xmtThreadFields inherited from interface jmri.jmrix.lenz.XNetInterface
ALL, COMMINFO, CONSIST, CS_INFO, FEEDBACK, INTERFACE, PROGRAMMING, THROTTLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddTrailerToOutput(byte[] msg, int offset, AbstractMRMessage m) Add trailer to the outgoing byte stream.booleanCheck if PortController object can be sent to.voidsendXNetMessage(XNetMessage m, XNetListener reply) Forward a preformatted XNetMessage to the actual interface.Methods inherited from class jmri.jmrix.lenz.XNetTrafficController
addXNetListener, connectPort, endOfMessage, enterNormalMode, enterProgMode, forwardMessage, forwardReply, getCommandStation, getFeedbackMessageCache, getSystemConnectionMemo, handleTimeout, hasTimeSlot, loadChars, newReply, notifyMessage, pollMessage, pollReplyHandler, programmerIdle, removeXNetListener, sendHighPriorityXNetMessage, setSystemConnectionMemoMethods inherited from class jmri.jmrix.AbstractMRTrafficController
addConsoleListener, addHeaderToOutput, addListener, canReceive, connectionWarn, disconnectPort, distributeReply, enterProgModeDelayTime, forwardToPort, getLastSender, getPortName, getSynchronizeRx, handleOneIncomingReply, hasTimeouts, lengthOfByteStream, newRcvNotifier, notifyReply, portWarn, portWarnTCP, readByteProtected, receiveLoop, recovery, removeListener, reportReceiveLoopException, resetTimeout, sendMessage, setAllowUnexpectedReply, setSynchronizeRx, status, terminate, terminateThreads, transmitLoop, transmitWait, unexpectedReplyStateError, waitForStartOfReply, warnOnTimeoutMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jmri.jmrix.lenz.XNetInterface
status
-
Constructor Details
-
XNetPacketizer
-
-
Method Details
-
sendXNetMessage
Forward a preformatted XNetMessage to the actual interface.Checksum is computed and overwritten here, then the message is converted to a byte array and queue for transmission
- Parameters:
m- Message to send; will be updated with CRCreply- sending listener to NOT notify.
-
addTrailerToOutput
Add trailer to the outgoing byte stream. This version adds the checksum to the last byte.- Overrides:
addTrailerToOutputin classAbstractMRTrafficController- Parameters:
msg- The output byte streamoffset- the first byte not yet usedm- output message to extend
-
portReadyToSend
Check if PortController object can be sent to.- Overrides:
portReadyToSendin classAbstractMRTrafficController- Parameters:
p- the PortController- Returns:
- true if ready, false otherwise May throw an Exception.
-