********************************************************************************
                          Zigbee Tips and Behavior
********************************************************************************

 * If a coordinator leaves a network, a router will not be able to reassociate
   to any network, even if the original coordinator forms a network with the
   same PAN ID.  A router node can be forced to reassociate by issuing a Network
   Reset 0 command (ATNR 0).

 * Zigbee coordinators currently allow only 8 devices to directly join.  The
   connections are permanent and in order to allow different nodes to
   join a network reset "NR 0" command must be issued at the coordinator.
   Router nodes are required in order to connect more than 8 nodes to a
   network.

 * The Rabbit is currently unable to wake up from sleep on IO input to the XBEE
   module. Sleeps can only be terminated by received RF messages or a timeout.

 * Sleep mode is currently delayed at start time by at least 2 seconds of
   full power execution. Messages may arrive in this time and must be processed
   immediately or be lost. Any serial communication or RF activity during this 2
   second period will also reset the timer resulting in greater than 2 seconds
   till sleep.

 * When the Rabbit wakes up full initialization and network discovery will be
   performed taking at least another 6 seconds. Short sleeps won’t be efficient.

 * When an End Device wakes up from sleep mode the wake up message will begin
   processing inside of zigbee_init(). Ensure that all data is initialized prior
   to zigbee_init() for message processing.

 * The macros ZB_JOINING() and ZB_ND_RUNNING() call zb_tick() but do not
   present the return code to the application for processing.

 * A wake up message from End Device sleep will be received during
   zigbee_init() but not immediately presented to the application.

 * Changing network and sleep mode parameters can cause a network reset. Network
   resets place the XBee module into an indeterminate state. While the rabbit
   library attempts to detect this, the exact timing and duration is impossible
   to predict. Changing compiled in library parameters may cause errors on the
   first run, following runs should be fine.

 * Sending too many broadcast messages will fill buffers on the XBee module,
   causing timeouts until it can finish processing and flush the buffers.

 * Each broadcast message is buffered and retransmitted for 4 seconds. There is
   finite buffer room, and larger broadcasts will cause the radio to run out of
   space sooner. A separate buffer tracks the last 8 broadcasts, storing each
   entry for 8 seconds.

 * Broadcast messages are received by all nodes on the network and transmitted
   to the rabbit library. If they aren’t properly addressed towards that node
   (endpoint/cluster) they will fall through to the general message handler or
   returned from zb_tick().

 * If profile checking is enabled, every node must have the endpoint definition
   of nodes it wants to communicate with. If a given node doesn’t implement
   functionality of that endpoint it can leave cluster functions undefined, but
   the profile number must be included.

 * Network Discovery is performed once at program startup. For a coordinator
   this will often mean that no nodes will be detected as endpoints and routers
   have not had the chance to join. Once routers and endpoints have joined, the
   coordinator application can either initiate ND again using AT commands or
   restart to get new node information.

 * Certain radio values are programmed into the rabbit library as constants or
   read in during zigbee_init(). NT and ST should not be modified by the
   application at runtime.



