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.
the parent can,t remove the inative children device from the AssociatedDevList automatically if the parent use the NV_RESTORE.so whenever any device joined to this parent router devcie before ,it will hold a space of the AssociatedDevList.
and so ,i just find this discusstion on this forum. it is " How to Remove End-Device Children When The Parent Child Association Capacity Goes Full?"
and now i can remove the inactive enddevice from the parent AssociatedDevList .i use this API " NLME_RemoveChild( addrEntry.extAddr, true );".yes it works.
but i find i can't remove the router child device from a parent device AssociatedDevList .and the API "NLME_RemoveChild" just adapt to the enddevice from the API documence
and i try many methods to remove the inactive router device from a parent device . but failed . i just use "NLME_RemoveChild",yes i can remove the space on the AssociatedDevList .but when the router child device power on again ,it will resume to the network ,and it just become the children of this parent device before.and i find that the child can send data to the parent ,because in his AssociatedDevList ,it have it's parent . but in parent device's AssociatedDevList,it have no this router children . so the parent can't send data to the child router device .i must force a new join on the child .it will be ok. that is inapplicable. so if i can't remove the router child device .the parent just can contain six router who joind this parent ever before.
i just use the AssocRemove() API ,but i find that this API just can remove the space on the AssociatedDevList .but when this removed device power on again .it can't use previous short adress again . i mean . for example a enddevice join a coordinator .it will get a short adress 796F.on 2007 profile.and when the enddevice powerdown ,and i force the coordinator to remove the space on the AssociatedDevList by the API AssocRemove() .yes it can remove it .but when the enddevcie poweron again ,and join the coordinator by a new join .it will get a short adress of 7970. so i think the 796F adress is not release by the coordinator though the the coordinater remove it from the AssociatedDevList .
i am very puzzled with these question about the AssociatedDevList ,addresslist and so on ,because the codes is not open about this list .so i can,t understand it .
please if some on know some about it ,give me some advice .thank you
Hi zhong,
I’m not sure I understand your problem exactly, but have you tried using NLME_LeaveReq() or ZDP_MgmtLeaveReq() to remove children instead of just removing them from the association list? It will remove parent’s information from router child’s association as well.
Regarding the end device address, it is natural that a newly joining device gets a new address. Joining child can get the same address as it had before only if it was not removed from the parent’s association list. So, in your case, because you removed a child from the parent’s association list, it will get a new address at the new joining process.
- Cetri
thank you cetri
now i use the NLME_LeaveReq to remove inactive enddevice from the parent's AssociatedDevList and it can work ,thank you .but it is just useful on pro.
if i use it on 2007.something wrong will happen that i can,t understand. such as repeated short adress ,or rejoin failure and so on when many enddevices change the parent synchronously
and about the remove router child on 2007 .when i use this API to remove the router child on 2007 . something happened .if a router parent has removed a router child from his AssociatedDevList ,and the short adress has gone in the AssociatedDevList .and now ,i power on the router child again,and then because the router child will resume to the parent.and use Orphan join to join this parent directly without discovery the network. and then it get former adress again .but i find the parent can't add the adress to the AssociatedDevList sucessfully.and the router child can send the message to the parent,but parent can not send message to the router child
.and about the remove enddevices on 2007 . i have two routers ,14 enddevices .if i add all enddeivce to a router ,and the AssociatedDevList is full on the router parent .if i power down this router parent , and these 14 enddevices will rejoin to anthor router ,and change the parent,and then i power on former parent again.and the former parent start to clear the AssociatedDevList one by one by the NLME_LeaveReq API. this will take some minutes and then when the former parent have not remove all record in AssociatedDevList completely .for example ,just remove 7 record ,and last 7 record still stay on the AssociatedDevList .then now ,i power down the new parent,and the all 14 enddevices will choose the former parent again by rejoin .and may be it can work ,but maybe something is wrong .some enddevice get the same short adress ,such as the former router get two 0x1430 short adress enddevice on the AssociatedDevList .i mean ,there is two same record on the former parent AssociatedDevList ( i view it from the Serial COM or breakpoints ) ,sometimes some enddevcie can not rejoin successfully.it discovery network failure.the state "ret" is not successful
so ,i now use the PRO .it has the adress conflict mechanism and can work fine and i just remove the enddevicesnow ,and don not to remove the router child ..
thank you cetri