Class SerialTrafficController
- All Implemented Interfaces:
SerialInterface
- Direct Known Subclasses:
SpecificTrafficController
,SpecificTrafficController
,SpecificTrafficController
,SpecificTrafficController
public abstract class SerialTrafficController extends AbstractMRTrafficController implements SerialInterface
The connection to a SerialPortController is via a pair of *Streams, which then carry sequences of characters for transmission. Note that this processing is handled in an independent thread.
This maintains a list of nodes, but doesn't currently do anything with it.
This implementation is complete and can be instantiated, but is not functional. It will be created e.g. when a default object is needed for configuring nodes, etc, during the initial configuration. A subclass must be instantiated to actually communicate with an adapter.
-
Nested Class Summary
Nested classes/interfaces inherited from class jmri.jmrix.AbstractMRTrafficController
AbstractMRTrafficController.RcvNotifier, AbstractMRTrafficController.XmtNotifier
-
Field Summary
Fields Modifier and Type Field Description (package private) boolean
countingBytes
(package private) boolean
expectLength
protected boolean
logDebug
protected SerialSystemConnectionMemo
memo
(package private) SerialSensorManager
mSensorManager
(package private) int
remainingBytes
(package private) SerialTrafficController
self
(package private) boolean
sendInterlock
Fields 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, WAITMSGREPLYSTATE, WAITREPLYINNORMMODESTATE, WAITREPLYINPROGMODESTATE, waitTimePoll, xmtException, xmtRunnable, xmtThread
-
Constructor Summary
Constructors Constructor Description SerialTrafficController()
Create a new TrafficController instance. -
Method Summary
Modifier and Type Method Description void
addSerialListener(SerialListener l)
protected boolean
endOfMessage(AbstractMRReply msg)
This is a default, null implementation, which must be overridden in an adapter-specific subclass.protected AbstractMRMessage
enterNormalMode()
Sets the system to normal mode during programming while in IDLESTATE.protected AbstractMRMessage
enterProgMode()
Set the system to programming mode.protected int
enterProgModeDelayTime()
Get the delay (wait time) after enabling the programming track.protected void
forwardMessage(AbstractMRListener client, AbstractMRMessage m)
Forward a SerialMessage to all registered SerialInterface listeners.protected void
forwardReply(AbstractMRListener client, AbstractMRReply r)
Forward a reply to all registered SerialInterface listeners.protected void
forwardToPort(AbstractMRMessage m, AbstractMRListener reply)
Actually transmit the next message to the port.SerialSystemConnectionMemo
getAdapterMemo()
int
getNumberOfIntensitySteps()
Provide the maximum number of dimming steps available.SerialSensorManager
getSensorManager()
SerialMessage
getSerialMessage(int length)
Get a message of a specific length for filling in.protected AbstractMRReply
newReply()
This is a default, null implementation, which must be overridden in an adapter-specific subclass.protected AbstractMRMessage
pollMessage()
Eventually, do initialization if neededprotected AbstractMRListener
pollReplyHandler()
void
removeSerialListener(SerialListener l)
void
sendInsteonSequence(InsteonSequence s, SerialListener l)
Send a sequence of Insteon messages to an adapter.void
sendSerialMessage(SerialMessage m, SerialListener reply)
Forward a preformatted message to the actual interface.void
sendX10Sequence(X10Sequence s, SerialListener l)
Send a sequence of X10 messages to an adapter.void
setAdapterMemo(SerialSystemConnectionMemo adaptermemo)
void
setSensorManager(SerialSensorManager m)
Methods inherited from class jmri.jmrix.AbstractMRTrafficController
addHeaderToOutput, addListener, addTrailerToOutput, canReceive, connectionWarn, connectPort, disconnectPort, distributeReply, finalize, getLastSender, getPortName, getSynchronizeRx, handleOneIncomingReply, handleTimeout, hasTimeouts, lengthOfByteStream, loadChars, newRcvNotifier, notifyMessage, notifyReply, portReadyToSend, portWarn, portWarnTCP, programmerIdle, readByteProtected, receiveLoop, recovery, removeListener, reportReceiveLoopException, resetTimeout, sendMessage, setAllowUnexpectedReply, setSynchronizeRx, status, terminate, terminateThreads, transmitLoop, transmitWait, unexpectedReplyStateError, waitForStartOfReply
-
Field Details
-
logDebug
-
mSensorManager
-
memo
-
self
-
sendInterlock
boolean sendInterlock -
expectLength
boolean expectLength -
countingBytes
boolean countingBytes -
remainingBytes
int remainingBytes
-
-
Constructor Details
-
SerialTrafficController
public SerialTrafficController()Create a new TrafficController instance. Simple implementation.
-
-
Method Details
-
sendX10Sequence
Send a sequence of X10 messages to an adapter.Makes them into the local messages and then queues in order.
This is a default, null implementation, which must be overridden in an adapter-specific subclass.
- Parameters:
s
- sequence to sendl
- listener for reply
-
sendInsteonSequence
Send a sequence of Insteon messages to an adapter.Makes them into the local messages and then queues in order.
This is a default, null implementation, which must be overridden in an adapter-specific subclass.
- Parameters:
s
- sequence to sendl
- listener for reply
-
getNumberOfIntensitySteps
Provide the maximum number of dimming steps available.- Returns:
- By default, dimming not available.
-
getSerialMessage
Get a message of a specific length for filling in.This is a default, null implementation, which must be overridden in an adapter-specific subclass.
- Parameters:
length
- message size- Returns:
- null
-
addSerialListener
- Specified by:
addSerialListener
in interfaceSerialInterface
-
removeSerialListener
- Specified by:
removeSerialListener
in interfaceSerialInterface
-
enterProgModeDelayTime
Description copied from class:AbstractMRTrafficController
Get the delay (wait time) after enabling the programming track. Override in subclass to add a longer delay.- Overrides:
enterProgModeDelayTime
in classAbstractMRTrafficController
- Returns:
- 0 as default delay
-
forwardMessage
Forward a SerialMessage to all registered SerialInterface listeners.- Specified by:
forwardMessage
in classAbstractMRTrafficController
- Parameters:
client
- abstract listener.m
- message to forward.
-
forwardReply
Forward a reply to all registered SerialInterface listeners.- Specified by:
forwardReply
in classAbstractMRTrafficController
-
setSensorManager
-
getSensorManager
-
pollMessage
Eventually, do initialization if needed- Specified by:
pollMessage
in classAbstractMRTrafficController
- Returns:
- Formatted poll message
-
pollReplyHandler
- Specified by:
pollReplyHandler
in classAbstractMRTrafficController
-
sendSerialMessage
Forward a preformatted message to the actual interface.- Specified by:
sendSerialMessage
in interfaceSerialInterface
-
forwardToPort
Description copied from class:AbstractMRTrafficController
Actually transmit the next message to the port.- Overrides:
forwardToPort
in classAbstractMRTrafficController
- Parameters:
m
- the message to sendreply
- the Listener sending the message, often provided as 'this'- See Also:
AbstractMRTrafficController.sendMessage(AbstractMRMessage, AbstractMRListener)
-
enterProgMode
Description copied from class:AbstractMRTrafficController
Set the system to programming mode.- Specified by:
enterProgMode
in classAbstractMRTrafficController
- Returns:
- any message that needs to be returned to the Command Station to change modes. If no message is needed, returns null.
- See Also:
AbstractMRTrafficController.enterNormalMode()
-
enterNormalMode
Description copied from class:AbstractMRTrafficController
Sets the system to normal mode during programming while in IDLESTATE. IfAbstractMRTrafficController.programmerIdle()
returns true, enterNormalMode() is called after a timeout.- Specified by:
enterNormalMode
in classAbstractMRTrafficController
- Returns:
- any message that needs to be returned to the Command Station to change modes. If no message is needed, returns null.
- See Also:
AbstractMRTrafficController.enterProgMode()
-
setAdapterMemo
-
getAdapterMemo
-
endOfMessage
This is a default, null implementation, which must be overridden in an adapter-specific subclass.- Specified by:
endOfMessage
in classAbstractMRTrafficController
-
newReply
This is a default, null implementation, which must be overridden in an adapter-specific subclass.- Specified by:
newReply
in classAbstractMRTrafficController
-