Other Parts Discussed in Thread: Z-STACK
Thread 中讨论的其他器件:Z-stack
客户正在测试 Zstackapi_puseResumeDeviceReq API、以便暂停和恢复终端器件。 他们能够使用此 API 暂停器件、如果器件暂停后立即调用 Zstackapi_puseResumeDeviceReq、器件将顺利重新加入网络。 但是、 如果器 件暂停约12-13分钟、则在调用 Zstackapi_puseResumeDeviceReq 后、终端器件将需要18分钟才能重新加入。
根据监听器登录附件、当问题发生时、终端设备可以发送信标请求、协调器以信标:NwkClosed 进行响应。 但之后、终端设备不会立即发送重新加入请求、并且设备状态会保持在 UART UI 的"发现"状态。 大约18分钟后、终端设备最终会发出重新加入请求、并能够成功重新加入。
正常暂停和恢复:

当问题发生时:



我正在尝试对此进行调试、但对 Zstackapi_pauseResumeDeviceReq 的 工作原理了解有限。 请帮助您了解从何处开始调试此问题。 SDK 5.30中的 zc_light 和 zed_SW 示例可能重现此问题、并进行了一些修改、以便能够使用 LaunchPad 上的按钮调用 API:
static void zclSampleSw_processKey(uint8_t key, Button_EventMask buttonEvents)
{
if (buttonEvents & Button_EV_CLICKED)
{
if(key == CONFIG_BTN_LEFT)
{
// Use left button for pause
zstack_pauseResumeDeviceReq_t zstack_pauseResumeDeviceReq = { 0 };
zstack_pauseResumeDeviceReq.pause = true;
Zstackapi_pauseResumeDeviceReq(appServiceTaskId, &zstack_pauseResumeDeviceReq);
}
if(key == CONFIG_BTN_RIGHT)
{
// Right button for resume
zstack_pauseResumeDeviceReq_t zstack_pauseResumeDeviceReq = { 0 };
zstack_pauseResumeDeviceReq.pause = false;
Zstackapi_pauseResumeDeviceReq(appServiceTaskId, &zstack_pauseResumeDeviceReq);
}
}
}
谢谢。
此致、
水阳