edu.uiuc.cs.seclab.modem.xbee
Class XBeeModem

java.lang.Object
  extended by edu.uiuc.cs.seclab.modem.SerialModem
      extended by edu.uiuc.cs.seclab.modem.xbee.XBeeModem
All Implemented Interfaces:
Modem, SerialModemRecvListener, MaxstreamModem, gnu.io.CommPortOwnershipListener, gnu.io.SerialPortEventListener, java.util.EventListener

public class XBeeModem
extends SerialModem
implements MaxstreamModem, SerialModemRecvListener


Nested Class Summary
protected  class XBeeModem.ApiEscapedState
           
protected  class XBeeModem.ApiState
          API mode with unescaped characters
protected  class XBeeModem.ModemState
           
private  class XBeeModem.OutgoingTxn
           
private  class XBeeModem.OutgoingTxnCoord
           
protected  class XBeeModem.PassThruState
          Pass-thru mode
 
Field Summary
protected  java.util.HashMap<XBee64Address,XBee16Address> addrCache
          Cache of addresses used by Series 2 modems to associate 16-bit network addresses with 64-bit ZigBee addresses, to avoid the overhead of spurious routing requests.
static java.util.List<java.lang.Byte> BAD_FRAME_IDS
           
protected  java.util.List<XBeeModemDebugListener> debugListeners
           
static int DEFL_MAX_OUTGOING_TXNS
           
static int DEFL_OUTGOING_WAIT_TM
          Wait for ten seconds before resending a transaction
static int DEFL_RETRY_CNT
           
static int MAX_FRAME_ID
           
static int MIN_FRAME_ID
          If frame ID is set to 0, no response will be returned
static int MIN_FW
          Minimum firmware revision required by this driver
protected  XBeeModem.OutgoingTxnCoord outTxnCoord
           
protected  java.util.List<XBeeModemRecvListener> rxers
           
protected  boolean series2
          Set if this is a Series 2 modem
protected  XBeeModem.ModemState state
           
 
Fields inherited from class edu.uiuc.cs.seclab.modem.SerialModem
incoming, is, lastTxTime, notifier, open, os, portId, sPort
 
Fields inherited from interface gnu.io.CommPortOwnershipListener
PORT_OWNED, PORT_OWNERSHIP_REQUESTED, PORT_UNOWNED
 
Constructor Summary
XBeeModem(boolean series2_, SerialParams comPort)
          Initialize an XBee-PRO modem on a serial port
XBeeModem(boolean series2_, gnu.io.SerialPort port)
          Initialize an XBee-PRO on a serial port that is already open
 
Method Summary
 void addDebugListener(XBeeModemDebugListener listener)
           
 void addRecvListener(XBeeModemRecvListener rxer)
           
private  void commonInit()
           
 java.util.List<XBeeModemDebugListener> getDebugListeners()
           
 void handleModemString(java.lang.StringBuilder s)
           
 boolean isSeries2()
           
private  void notifyDebugListeners(XBeeModemDebugEvent ev)
           
 void removeDebugListener(XBeeModemDebugListener listener)
           
 void removeRecvListener(XBeeModemRecvListener rxer)
           
 void reset()
          Reset module
 void send(ModemPacket pkt_)
          Convert data packet to API packet and send
 int sendCmd(XBeeAtCmd cmd, XBeeAtCmd.Mode mode)
           
 void sendCmds(java.util.Collection<XBeeAtCmd> cmds, XBeeAtCmd.Mode mode)
           
 
Methods inherited from class edu.uiuc.cs.seclab.modem.SerialModem
addDebugListener, addRecvListener, closeConnection, initPort, isOpen, ownershipChange, removeDebugListener, removeRecvListener, sendBreak, serialEvent, setConnectionParameters
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

addrCache

protected java.util.HashMap<XBee64Address,XBee16Address> addrCache
Cache of addresses used by Series 2 modems to associate 16-bit network addresses with 64-bit ZigBee addresses, to avoid the overhead of spurious routing requests.


BAD_FRAME_IDS

public static final java.util.List<java.lang.Byte> BAD_FRAME_IDS

debugListeners

protected java.util.List<XBeeModemDebugListener> debugListeners

DEFL_MAX_OUTGOING_TXNS

public static final int DEFL_MAX_OUTGOING_TXNS
See Also:
Constant Field Values

DEFL_OUTGOING_WAIT_TM

public static final int DEFL_OUTGOING_WAIT_TM
Wait for ten seconds before resending a transaction

See Also:
Constant Field Values

DEFL_RETRY_CNT

public static final int DEFL_RETRY_CNT
See Also:
Constant Field Values

MAX_FRAME_ID

public static final int MAX_FRAME_ID
See Also:
Constant Field Values

MIN_FRAME_ID

public static final int MIN_FRAME_ID
If frame ID is set to 0, no response will be returned

See Also:
Constant Field Values

MIN_FW

public static final int MIN_FW
Minimum firmware revision required by this driver

See Also:
Constant Field Values

outTxnCoord

protected XBeeModem.OutgoingTxnCoord outTxnCoord

rxers

protected java.util.List<XBeeModemRecvListener> rxers

series2

protected boolean series2
Set if this is a Series 2 modem


state

protected XBeeModem.ModemState state
Constructor Detail

XBeeModem

public XBeeModem(boolean series2_,
                 SerialParams comPort)
          throws ModemException,
                 java.io.IOException
Initialize an XBee-PRO modem on a serial port

Parameters:
comPort -
modParams -
updateParams -
storeParams -
Throws:
ModemException
java.io.IOException

XBeeModem

public XBeeModem(boolean series2_,
                 gnu.io.SerialPort port)
          throws ModemException,
                 java.io.IOException
Initialize an XBee-PRO on a serial port that is already open

Parameters:
serialPort -
Throws:
ModemException
java.io.IOException
Method Detail

addDebugListener

public void addDebugListener(XBeeModemDebugListener listener)

addRecvListener

public void addRecvListener(XBeeModemRecvListener rxer)

commonInit

private void commonInit()

getDebugListeners

public java.util.List<XBeeModemDebugListener> getDebugListeners()

handleModemString

public void handleModemString(java.lang.StringBuilder s)
Specified by:
handleModemString in interface SerialModemRecvListener

isSeries2

public boolean isSeries2()

notifyDebugListeners

private void notifyDebugListeners(XBeeModemDebugEvent ev)

removeDebugListener

public void removeDebugListener(XBeeModemDebugListener listener)

removeRecvListener

public void removeRecvListener(XBeeModemRecvListener rxer)

reset

public void reset()
           throws ModemException,
                  java.io.IOException
Reset module

Throws:
java.io.IOException
ModemException

send

public void send(ModemPacket pkt_)
          throws ModemException
Convert data packet to API packet and send

Specified by:
send in interface Modem
Overrides:
send in class SerialModem
Throws:
ModemException
java.io.IOException

sendCmd

public int sendCmd(XBeeAtCmd cmd,
                   XBeeAtCmd.Mode mode)
            throws ModemException,
                   java.io.IOException
Throws:
ModemException
java.io.IOException

sendCmds

public void sendCmds(java.util.Collection<XBeeAtCmd> cmds,
                     XBeeAtCmd.Mode mode)
              throws ModemException,
                     java.io.IOException
Throws:
ModemException
java.io.IOException