Send indirect messages

To send an indirect message, ensure that the previous requirements are met and transmit normally. The indirect messaging coordinator queues the message until the end device requests data or the message is in the indirect queue for 2.5 times the value of SP. If 2.5 * SP is longer than 65 seconds, then 65 seconds is the limit the indirect message waits for a poll before it is discarded. This means that if the coordinator is sending data to the end device, the end device should poll the coordinator every 65 seconds to avoid losing data, regardless of the value of SP.

Ensure that the message is sent to the addressed specified by MY (16-bit Source Address) on the end device. If MY on the end device is 0xFFFF or 0xFFFE, then you must use the 64-bit address, otherwise use the value of MY. Even though an end device configured with a short address always receives direct transmissions destined to its 64-bit address, it will not receive an indirect message directed at its 64-bit address if it is configured to use a 16-bit address.

If the indirect messaging coordinator is operating in API mode, then after transmitting an indirect message the usual TX status frame (Extended Transmit Status - 0x8B or Transmit Status - 0x89) is not immediately generated by the device. If the end device polls for the data within the timeout (2.5 * SP or 65 seconds), then a TX status frame with status 0x00 (message sent) is sent. If the message is discarded due to the timeout expiring, the status frame is 0x03 (message purged).

After receiving a poll request and transmitting data to an end device, the indirect messaging coordinator sends all messages directly until ST time has elapsed. This is because after receiving RF data, the end device stays awake for ST time if configured in Cyclic Sleep mode (SM = 4). After ST time has elapsed, messages are sent indirectly again.

The Coordinator currently is able to retain up to five indirect messages.