TI的朋友们你好
我是Z-Stack 1.0.2的协议栈,我在SampleRemote里面看到了在TouchLink后,新的灯设备会被分配一个短地址,1是自己,其他节点按照2,3,4这样往下分配的:
static ZStatus_t initiatorSendNwkStartReq( zclLLScanRsp_t *pRsp )
{
....其他代码....
pParams->nwkAddr = zll_PopNwkAddress();
if ( pParams->nwkAddr == 0 )
{
pParams->nwkAddr = osal_rand();
}
// update address for app notification
selectedTarget.newNwkAddr = pParams->nwkAddr;
....其他代码....
}
uint16 zll_PopNwkAddress( void )
{
if ( ( zllFreeNwkAddrBegin == 0 ) || ( zllFreeNwkAddrBegin > zllFreeNwkAddrEnd ) )
{
return ( 0 );
}
return ( zllFreeNwkAddrBegin++ );//从0x0002到0xFFF7往下分配
}
这个地址也会被发往灯设备。
1. 那么问题来了,我在initiatorScanRspCB里,即扫描信道处理函数里,会发现afAddrType_t *srcAddr 里有设备的原短地址。
这个地址是u16类型,而且永远是固定的(Mac地址),为什么不用这个地址来进行组网后的控制与通信?
2. 信道扫描到的设备短地址永远固定,那么它是不是唯一的?不会有重复或冲突?
3. 我可不可以不让遥控器自动分配地址,每次用扫描到的设备短地址进行分配?
非常感谢!