你好。 我已经 移除了示例应用程序的 UI 和 UART 组件、以降低功耗并实现 uC 睡眠。 执行此操作时、将删除所有调试功能、并且无法通过按下侧边按钮来触发配对。 为了解决这一问题、我实施了调试例程作为按钮回调、如下所示:
static uint16_t bdbCommissioningModes = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; static void commissioningBtnCallback(Button_Handle _buttonHandle, Button_EventMask _buttonEvents) { if ((_buttonEvents & Button_EV_CLICKED) && (_buttonHandle == gLeftButtonHandle)) { zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; zstack_bdbStartCommissioningReq.commissioning_mode = bdbCommissioningModes; Zstackapi_bdbStartCommissioningReq(appServiceTaskId, &zstack_bdbStartCommissioningReq); } } void configureCommissioningCb() { Button_Params bparams; Button_Params_init(&bparams); gLeftButtonHandle = Button_open(CONFIG_BTN_LEFT, &bparams); Button_setCallback(gLeftButtonHandle, commissioningBtnCallback); }
按钮回调正常运行并正确触发、但是我最终卡在 sendReqDefaultRsp ,即:
while(!gotRsp) { // Wait for the response message OsalPort_blockOnEvent(Task_self()); pCmdStatus = (zstackmsg_genericReq_t*)OsalPort_msgFindDequeue(appServiceTaskId, pMsg->hdr.event); if(pCmdStatus) { gotRsp = true; } }
似乎该应用程序等待从未送达的响应。 我的调试请求配置中是否缺少某些内容?