This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Binding and Short Address Problems

Other Parts Discussed in Thread: CC2430, Z-STACK

Using Z-Stack 1.4.3 on a CC2430, indirect messaging always appears to use a short address that is looked up in the Address Manager.  The problem is, when a binding entry points to a device whose short address changes (for example when there is an address conflict in a ZigBee Pro network), indirect messaging will send the message to the old short address that is stored in the Address Manager.  Is there a way to force indirect messaging to use the long address rather than the short address?  Or is there a way to keep the Address Manager up-to-date?

 

I had posted this as a reply to this post: http://e2e.ti.com/support/low_power_rf/f/160/p/18439/71057.aspx#71057 [FAQ: Binding (Z-Stack, ZigBee)] and I do not know how to delete it so I apologize for cross-posting.

  • Hi Z.Eng:

    An end device announce triggered from the device that changed its short address should allow the binding entry to be updated.

    Description from the Z-stack API document:

    ZDP_DeviceAnnce()

    This function builds and sends a Device_annce command for ZigBee end device to notify other ZigBee devices on
    the network that the end device has joined or rejoined the network. The command contains the device’s new 16-bit
    NWK address and its 64-bit IEEE address, as well as the capabilities of the ZigBee device. It is sent out as broadcast
    message.

    On receipt of the Device_annce, all receivers shall check all internal references to the IEEE address supplied in the
    announce, and substitute the corresponding NWK address with the new one. No response will be sent back for
    Device_annce

    Hope this helps.

    -- DoubleO

     

  • Thanks for the info DoubleO, however, consider the scenario where a sleepy End Device (say an HA On/Off Switch) is bound to a Router (which is an HA On/Off Output device) and the Router's short address changes.

     

    In the spec, it says that for the Device_annce Command: "This command may also be invoked by ZigBee routers upon join or rejoin as part of NWK address conflict resolution. The destination addressing on this primitive is broadcast to all devices for which macRxOnWhenIdle = TRUE."

     

    Sleepy end devices have macRxOnWhenIdle = FALSE so they would not receive the message.  How would the binding entry be updated in this case?

     

    Thanks,

    Z.Eng

     

  • Well, in case anyone is also wondering about this, I ended up using group binding instead because I could not find a solution for when short addresses change.  However, group binding does not appear persisted in the binding table in ZStack 1.4.3 so I had to persist it myself and load the binding table upon startup.