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.

CC2530: Out of the network issue on Zstack3.0.2

Part Number: CC2530
Other Parts Discussed in Thread: Z-STACK

Hi team,

Here're few questions from the customer may need your help:

1)The customer wants the parent node to force a device that has dropped (no messages, child, low-power terminal) out of the network and only clear the information about the individual child nodes that the parent node records and  then enables the subnodes to be networked after calling bdb_resetLocalAction(), what should they do? For example, delete the corresponding device after a heartbeat packet has not been received for a long time.

Cause of problem: When the parent uses this function NLME_LeaveReq() to take the child out of the network, the child is powered down and cannot request data from the parent node. Messages sent to the end device require the terminal to request data from the parent node, so the parent node cannot issue a Leave instruction.

2) The parent node stores the data sent to the child node and waits for the child node to request the data and issue it. Where are these data stored? How to tell the application that data has been successfully released after a child node poll?

Cause of problem: While data is sent, it is returned successfully, but the data is actually stored in the parent node and is waiting for the child node to poll.

Could you help check this case? Thanks.

Best Regards,

Cherry

  • Hi Cherry,

    What Z-Stack version are they using?  Answers can vary depending on which solution is supported.

    1) This is done automatically by child age management which can be configured by changing the NWK_END_DEV_TIMEOUT_DEFAULT and NWK_END_DEVICE_LEAVE_TIMEOUT values in ZGlobals.h for Z-Stack 3.0 projects.  Children who has left the network should be responding to the Leave Request with a Leave command so that parent devices know to officially remove the association table entry.

    2) Outgoing packets are held in the NWK_MAX_DATABUFS_* for a total of NWK_INDIRECT_MSG_TIMEOUT seconds, after which they are aged out and removed from the buffers.  It is possible to use the AF_DATA_CONFIRM_CMD case in ZDApp.c to confirm which packets are sent out by tracking the transID values.

    Regards,
    Ryan

  • Hi Ryan,

    Thanks for your help.

    What Z-Stack version are they using? 

    3.0.2.

    1) This is done automatically by child age management which can be configured by changing the NWK_END_DEV_TIMEOUT_DEFAULT and NWK_END_DEVICE_LEAVE_TIMEOUT values in ZGlobals.h for Z-Stack 3.0 projects.  Children who has left the network should be responding to the Leave Request with a Leave command so that parent devices know to officially remove the association table entry.

    The customer's understanding is as follows: modifying the Nwk_end_device_slave_timeout parameter is equal to modify the maximum wait time for the heartbeat packet. If a device is dropped/damaged and cannot send a heartbeat packet, the parent node automatically removes some information after expiration. Is that right? 

    But a dropped/damaged device cannot respond to the leave command, how to get the parent device to officially delete the association table entry? This is what the customer wants to implement.

    Thanks and regards,

    Cherry

  • The device is asked to leave after NWK_END_DEV_TIMEOUT_DEFAULT and removed from association tables after NWK_END_DEVICE_LEAVE_TIMEOUT.  Thus if any end devices which poll slower than NWK_END_DEVICE_LEAVE_TIMEOUT will not receive a Leave Request since it is no longer recognized by the parent device.  If they are monitoring End Device responsiveness through their application then they could also use AssocRemove to remove association entries on their own.

    Regards,
    Ryan

  • Make sure your device does factory reset to erase previous network information after send leave request.