Package jmri.jmrix.sprog
Class SprogTrafficController
java.lang.Object
jmri.jmrix.sprog.SprogTrafficController
- All Implemented Interfaces:
Runnable,SprogInterface
Converts Stream-based I/O to/from Sprog messages. The "SprogInterface" side
sends/receives message objects. The connection to a SprogPortController is
via a pair of *Streams, which then carry sequences of characters for
transmission. Note that this processing is handled in an independent thread.
Rewritten during 4.11.x series. Create a high priority thread for the tc to move everything off the swing thread. Use a blocking queue to handle asynchronous messages from multiple sources.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Vector<SprogListener>(package private) DataInputStream(package private) SprogListener(package private) OutputStreamprotected static SprogTrafficController(package private) BlockingQueue<jmri.jmrix.sprog.SprogTrafficController.MessageTuple>int -
Constructor Summary
ConstructorsConstructorDescriptionSprogTrafficController(SprogSystemConnectionMemo adaptermemo) Create a new SprogTrafficController instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidMake connection to existing PortController object.voidBreak connection to existing SprogPortController object.voiddispose()(package private) booleanendReply(SprogReply msg) protected SerialDriverAdapterGet the port controller, as a SerialDriverAdapter.voidHandle an incoming reply.booleanbooleanbooleanCheck if the Sprog TC Thread ( started on construction of SprogTrafficController ) is alive.booleanprotected voidnotifyMessage(SprogMessage m, SprogListener originator) protected voidprotected voidnotifyReply(SprogReply r, SprogListener lastSender) voidvoidReset timeout to default depending on current modevoidrun()Block until a message is available from the queue, send it to the interface and then block until reply is received or a timeout occurs.voidEnqueue a preformatted message to be sent to the actual interfacevoidsendSprogMessage(SprogMessage m, SprogListener replyTo) Enqueue a preformatted message to be sent to the actual interfacevoidForward a preformatted message to the interface.voidsetAdapterMemo(SprogSystemConnectionMemo adaptermemo) voidvoidsetTimeout(int t) booleanstatus()Test operational status of interface.
-
Field Details
-
lastSender
-
timeout
-
cmdListeners
-
sendQueue
BlockingQueue<jmri.jmrix.sprog.SprogTrafficController.MessageTuple> sendQueue -
self
-
istream
-
ostream
-
-
Constructor Details
-
SprogTrafficController
Create a new SprogTrafficController instance.- Parameters:
adaptermemo- the associated SystemConnectionMemo
-
-
Method Details
-
status
Description copied from interface:SprogInterfaceTest operational status of interface.- Specified by:
statusin interfaceSprogInterface- Returns:
- true if interface implementation is operational.
-
isTcThreadAlive
Check if the Sprog TC Thread ( started on construction of SprogTrafficController ) is alive. For testing purposes.- Returns:
- true if alive, else false.
-
addSprogListener
- Specified by:
addSprogListenerin interfaceSprogInterface
-
removeSprogListener
- Specified by:
removeSprogListenerin interfaceSprogInterface
-
resetTimeout
Reset timeout to default depending on current mode -
setTimeout
-
getSprogState
-
setSprogState
-
isNormalMode
-
isSIIBootMode
-
isV4BootMode
-
notifyMessage
-
notifyReply
-
notifyReply
-
sendSprogMessage
Enqueue a preformatted message to be sent to the actual interface- Parameters:
m- The message to be forwarded
-
sendSprogMessage
Enqueue a preformatted message to be sent to the actual interface- Specified by:
sendSprogMessagein interfaceSprogInterface- Parameters:
m- Message to sendreplyTo- Who is sending the message
-
run
Block until a message is available from the queue, send it to the interface and then block until reply is received or a timeout occurs. This will be a very long timeout to allow for page mode programming operations in SPROG programmer mode. -
sendToInterface
Forward a preformatted message to the interface.- Parameters:
m- The message to be forwarded
-
connectPort
Make connection to existing PortController object.- Parameters:
p- The port controller
-
getController
Get the port controller, as a SerialDriverAdapter.- Returns:
- the port controller
-
disconnectPort
Break connection to existing SprogPortController object.Once broken, attempts to send via "message" member will fail.
- Parameters:
p- the connection to break
-
setAdapterMemo
-
getAdapterMemo
-
endReply
-
handleOneIncomingReply
Handle an incoming reply. -
dispose
-