Package jmri.jmrix.ieee802154.xbee
Class XBeeTrafficController
java.lang.Object
jmri.jmrix.AbstractMRTrafficController
jmri.jmrix.AbstractMRNodeTrafficController
jmri.jmrix.ieee802154.IEEE802154TrafficController
jmri.jmrix.ieee802154.xbee.XBeeTrafficController
- All Implemented Interfaces:
com.digi.xbee.api.listeners.IDataReceiveListener,com.digi.xbee.api.listeners.IModemStatusReceiveListener,com.digi.xbee.api.listeners.IPacketReceiveListener,IEEE802154Interface,XBeeInterface
public class XBeeTrafficController
extends IEEE802154TrafficController
implements com.digi.xbee.api.listeners.IPacketReceiveListener, com.digi.xbee.api.listeners.IModemStatusReceiveListener, com.digi.xbee.api.listeners.IDataReceiveListener, XBeeInterface
Traffic Controller interface for communicating with XBee devices directly
using the XBee API.
-
Nested Class Summary
Nested classes/interfaces inherited from class jmri.jmrix.AbstractMRTrafficController
AbstractMRTrafficController.RcvNotifier, AbstractMRTrafficController.XmtNotifier -
Field Summary
Fields inherited from class jmri.jmrix.ieee802154.IEEE802154TrafficController
logDebugFields inherited from class jmri.jmrix.AbstractMRNodeTrafficController
curSerialNodeIndex, maxNode, minNode, nodeArray, numNodesFields 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, xmtThread -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidMake connection to an existing PortController object.voiddataReceived(com.digi.xbee.api.models.XBeeMessage xbm) voiddeleteNode(XBeeNode node) protected AbstractMRMessageSets the system to normal mode during programming while in IDLESTATE.protected AbstractMRMessageSet the system to programming mode.protected voidforwardMessage(AbstractMRListener client, AbstractMRMessage m) Forward a XBeeMessage to all registered XBeeInterface listeners.protected voidforwardReply(AbstractMRListener client, AbstractMRReply r) Forward a reply to all registered XBeeInterface listeners.protected voidforwardToPort(AbstractMRMessage m, AbstractMRListener reply) Actually transmit the next message to the port.getIEEE802154Message(int length) Get a message of a specific length for filling in.getNodeFromName(String Name) Public method to identify an XBeeNode from its node identifiergetNodeFromXBeeDevice(com.digi.xbee.api.RemoteXBeeDevice device) Public method to identify an XBeeNode from its RemoteXBeeDevice object.com.digi.xbee.api.XBeeDevicegetXBee()voidmodemStatusEventReceived(com.digi.xbee.api.models.ModemStatusEvent modemStatusEvent) newNode()Build a new IEEE802154 Node.protected AbstractMRReplynewReply()Get a message of zero length.voidpacketReceived(com.digi.xbee.api.packet.XBeePacket response) protected AbstractMRMessageInvoked if it's appropriate to do low-priority polling of the command station, this should return the next message to send, or null if the TC should just sleep.protected AbstractMRListenervoidHandle incoming characters.voidregisterNode(AbstractNode node) Register a node.voidprotected voidsendMessage(AbstractMRMessage m, AbstractMRListener reply) This is invoked with messages to be forwarded to the port.voidprotected voidMethods inherited from class jmri.jmrix.ieee802154.IEEE802154TrafficController
addIEEE802154Listener, addTrailerToOutput, deleteNode, endOfMessage, enterProgModeDelayTime, getAdapterMemo, getNodeFromAddress, getNodeFromAddress, getNodeFromAddress, removeIEEE802154Listener, sendIEEE802154Message, setAdapterMemo, waitForStartOfReplyMethods inherited from class jmri.jmrix.AbstractMRNodeTrafficController
deleteNode, getMustInit, getNode, getNodeFromAddress, getNumNodes, init, setMustInit, setMustInitMethods inherited from class jmri.jmrix.AbstractMRTrafficController
addConsoleListener, addHeaderToOutput, addListener, canReceive, connectionWarn, disconnectPort, distributeReply, getLastSender, getPortName, getSynchronizeRx, handleOneIncomingReply, handleTimeout, hasTimeouts, lengthOfByteStream, loadChars, newRcvNotifier, notifyMessage, notifyReply, portReadyToSend, portWarn, portWarnTCP, programmerIdle, readByteProtected, recovery, removeListener, reportReceiveLoopException, resetTimeout, setAllowUnexpectedReply, setSynchronizeRx, status, terminateThreads, transmitLoop, transmitWait, unexpectedReplyStateError, warnOnTimeout
-
Constructor Details
-
XBeeTrafficController
public XBeeTrafficController()
-
-
Method Details
-
getIEEE802154Message
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.
- Overrides:
getIEEE802154Messagein classIEEE802154TrafficController- Parameters:
length- length for new message- Returns:
- null since this method should be over-ridden
-
newReply
Get a message of zero length.- Specified by:
newReplyin classAbstractMRTrafficController
-
connectPort
Make connection to an existing PortController object.- Overrides:
connectPortin classAbstractMRTrafficController- Parameters:
p- the PortController
-
forwardToPort
Actually transmit the next message to the port.- Overrides:
forwardToPortin classIEEE802154TrafficController- Parameters:
m- the message to sendreply- the Listener sending the message, often provided as 'this'- See Also:
-
pollMessage
Invoked if it's appropriate to do low-priority polling of the command station, this should return the next message to send, or null if the TC should just sleep.- Overrides:
pollMessagein classIEEE802154TrafficController- Returns:
- Formatted poll message
-
pollReplyHandler
- Overrides:
pollReplyHandlerin classIEEE802154TrafficController
-
enterProgMode
Description copied from class:AbstractMRTrafficControllerSet the system to programming mode.- Overrides:
enterProgModein classIEEE802154TrafficController- Returns:
- any message that needs to be returned to the Command Station to change modes. If no message is needed, returns null.
- See Also:
-
enterNormalMode
Description copied from class:AbstractMRTrafficControllerSets the system to normal mode during programming while in IDLESTATE. IfAbstractMRTrafficController.programmerIdle()returns true, enterNormalMode() is called after a timeout.- Overrides:
enterNormalModein classIEEE802154TrafficController- Returns:
- any message that needs to be returned to the Command Station to change modes. If no message is needed, returns null.
- See Also:
-
receiveLoop
Description copied from class:AbstractMRTrafficControllerHandle incoming characters. This is a permanent loop, looking for input messages in character form on the stream connected to the PortController viaAbstractMRTrafficController.connectPort(AbstractPortController).Each turn of the loop is the receipt of a single message.
- Overrides:
receiveLoopin classAbstractMRTrafficController
-
registerNode
Register a node.- Overrides:
registerNodein classAbstractMRNodeTrafficController- Parameters:
node- the node object to register
-
deleteNode
-
packetReceived
- Specified by:
packetReceivedin interfacecom.digi.xbee.api.listeners.IPacketReceiveListener
-
modemStatusEventReceived
- Specified by:
modemStatusEventReceivedin interfacecom.digi.xbee.api.listeners.IModemStatusReceiveListener
-
dataReceived
- Specified by:
dataReceivedin interfacecom.digi.xbee.api.listeners.IDataReceiveListener
-
newNode
Description copied from class:IEEE802154TrafficControllerBuild a new IEEE802154 Node. Must be implemented by derived classes- Specified by:
newNodein classIEEE802154TrafficController- Returns:
- new IEEE802154Node.
-
addXBeeListener
- Specified by:
addXBeeListenerin interfaceXBeeInterface
-
removeXBeeListener
- Specified by:
removeXBeeListenerin interfaceXBeeInterface
-
sendXBeeMessage
- Specified by:
sendXBeeMessagein interfaceXBeeInterface
-
sendMessage
This is invoked with messages to be forwarded to the port. It queues them, then notifies the transmission thread.- Overrides:
sendMessagein classAbstractMRTrafficController- Parameters:
m- the message to sendreply- the Listener sending the message, often provided as 'this'- See Also:
-
forwardMessage
Forward a XBeeMessage to all registered XBeeInterface listeners.- Overrides:
forwardMessagein classIEEE802154TrafficController- Parameters:
client- abstract listener.m- message to forward.
-
forwardReply
Forward a reply to all registered XBeeInterface listeners.- Overrides:
forwardReplyin classIEEE802154TrafficController
-
getNodeFromName
Public method to identify an XBeeNode from its node identifier- Parameters:
Name- the node identifier search string.- Returns:
- the node if found, or null otherwise.
-
getNodeFromXBeeDevice
Public method to identify an XBeeNode from its RemoteXBeeDevice object.- Parameters:
device- the RemoteXBeeDevice to search for.- Returns:
- the node if found, or null otherwise.
-
getXBee
-
terminate
- Overrides:
terminatein classAbstractMRTrafficController
-