客户正在使用 TI15.4、并对临界情况有疑问:如果收集器由于某种原因关闭并替换为具有相同 PAN ID 和通道的新收集器、如何使孤立的传感器加入新收集器?
我从用户指南中了解到、当接收到来自收集器关联表中未包含的传感器的数据请求时、收集器有责任解除传感器的关联。 我尝试执行此操作、但遇到了问题。
为了实现这一点,我在 从“未知”设备接收孤立通知时调用了 ApiMac_mlmeDisassociateReq():
static void orphanIndCb(ApiMac_mlmeOrphanInd_t *pData)
{
...
if(Csf_getDevice(&devAddr, &item))
{
...
}
#ifdef DISASSOCIATE_UNKNOWN_DEVICE
else
{
// Assume the sensor is a sleepy device
Cllc_sendDisassociationRequestWithExtAddr(&devAddr.addr.extAddr, false);
}
#endif // DISASSOCIATE_UNKNOWN_DEVICE
...
}
void Cllc_sendDisassociationRequestWithExtAddr(ApiMac_sAddrExt_t *pExtAddr,bool rxOnIdle)
{
volatile ApiMac_status_t status;
ApiMac_mlmeDisassociateReq_t disassocReq;
memset(&disassocReq, 0, sizeof(ApiMac_mlmeDisassociateReq_t));
disassocReq.deviceAddress.addrMode = ApiMac_addrType_extended;
memcpy(disassocReq.deviceAddress.addr.extAddr, pExtAddr, sizeof(ApiMac_sAddrExt_t));
disassocReq.devicePanId = coordInfoBlock.panID;
disassocReq.disassociateReason = ApiMac_disassocateReason_coord;
if(rxOnIdle == false)
{ /* Sleep device */
disassocReq.txIndirect = true;
}
else
{ /* Non-sleep device */
disassocReq.txIndirect = false;
}
status = ApiMac_mlmeDisassociateReq(&disassocReq);
}
我使用了一个收集器和一个传感器来测试外壳。 传感器加入收集器的 PAN ID 后、我关闭收集器并等待传感器成为孤立状态。 我可以看到传感器按预期发送孤立通知。 之后、我对收集器执行出厂复位、 形成网络并打开允许加入、但收集器未响应通知:

仔细检查代码后、我意识到取消关联请求是一个间接命令、仅在传感器轮询后发送。 但传感器仅发送孤立通知、不会在孤立模式下发送数据请求。 所以我被困在这里、不知道接下来该怎么做...
请建议在这种情况下如何解除传感器的关联、或者是否有方法使传感器加入新的收集器而不断开它们的关联?
此致、
水阳