读取自身设备连接的子节点
在zstack中,读取父设备的网络短地址很方便,可以用现成的函数extern uint16 NLME_GetCoordShortAddr( void );,或者直接拷贝osal_memcpy(pValue, &_NIB.nwkCoordAddress, sizeof(uint16));
但是目前我想要读取设备下的子设备的短地址该怎么读呢?
比如有一个协调器,下面连了两个路由,我要如何才能在协调器程序里边读到连接在上面的两个路由的短地址?
如果你知道长地址的话,你可以通过下面函数来做。
afStatus_t ZDP_NwkAddrReq( uint8 *IEEEAddress, byte ReqType,
byte StartIndex, byte SecurityEnable )
如果是子节点的话,入网的时候直接有保存的
在Association list里面读取就可以了,
/*
* Search the Device list using extended Address.
*/
extern associated_devices_t *AssocGetWithExt( byte *extAddr );
信息都保存在AssociatedDevList[x]数组中。
谢谢VV的回答。如你所述,我现在直接读取的 AssociatedDevList[].shortAddr 的值。目前遇到的问题就是关联表中的地址有可能是曾经在网络中的节点,而现在已经掉网了。而我是需要滤除这些节点的。目前采用的方法是每次读取这个关联表的时候,顺便读取AssociatedDevList[].age的值,如果这个值大于某个设定的值,我就认为是已经掉网了。
请问大家,这样做是否可行?或者还有更好的办法?
可以的