教程part1中task1中第4步。多了一个#endif(32行),导致编译不通过。删除之后,编程成功,但运行绑定之后,系统死机
case zstackmsg_CmdIDs_ZDO_DEVICE_ANNOUNCE: #if defined (Z_POWER_TEST) #if defined (POWER_TEST_POLL_DATA) { zstackmsg_zdoDeviceAnnounceInd_t *pInd; pInd = (zstackmsg_zdoDeviceAnnounceInd_t*)pMsg; // save the short address of the ZED to send ZCL test data powerTestZEDAddr = pInd->req.srcAddr; // start periodic timer for sending ZCL data to zed OsalPortTimers_startReloadTimer(appServiceTaskId, SAMPLEAPP_POWER_TEST_ZCL_DATA_EVT, Z_POWER_TEST_DATA_TX_INTERVAL); } #endif #else { zstackmsg_zdoDeviceAnnounceInd_t *pInd; pInd = (zstackmsg_zdoDeviceAnnounceInd_t*)pMsg; zstack_zdoActiveEndpointReq_t pReq; pReq.dstAddr = pInd->req.srcAddr; pReq.nwkAddrOfInterest = pInd->req.devAddr; shortAddr = pInd->req.srcAddr; memcpy(bindAddr, &(pInd->req.devExtAddr), Z_EXTADDR_LEN); Zstackapi_ZdoActiveEndpointReq(appServiceTaskId, &pReq); } #endif break; //此处多了endif!!!!!!!!!!!!!编译不通过。 #endif //... break; case zstackmsg_CmdIDs_ZDO_SIMPLE_DESC_RSP: { zstackmsg_zdoSimpleDescRspInd_t *pInd; pInd = (zstackmsg_zdoSimpleDescRspInd_t*)pMsg; for (uint8_t i = 0; i < pInd->rsp.simpleDesc.n_outputClusters; i++) { if (*(pInd->rsp.simpleDesc.pOutputClusters) == ZCL_CLUSTER_ID_GEN_ON_OFF) { zstack_sysNwkInfoReadRsp_t pRsp; Zstackapi_sysNwkInfoReadReq(appServiceTaskId, &pRsp); zstack_zdoBindReq_t pReq; pReq.nwkAddr = pRsp.nwkAddr; pReq.bindInfo.clusterID = ZCL_CLUSTER_ID_GEN_ON_OFF; pReq.bindInfo.srcEndpoint = SAMPLELIGHT_ENDPOINT; pReq.bindInfo.dstAddr.addrMode = (zstack_AFAddrMode)Addr64Bit; pReq.bindInfo.dstAddr.endpoint = pInd->rsp.simpleDesc.endpoint; EP = pInd->rsp.simpleDesc.endpoint; memcpy(pReq.bindInfo.dstAddr.addr.extAddr, &bindAddr, Z_EXTADDR_LEN); memcpy(pReq.bindInfo.srcAddr, &(pRsp.ieeeAddr), Z_EXTADDR_LEN); Zstackapi_ZdoBindReq(appServiceTaskId, &pReq); } pInd->rsp.simpleDesc.pOutputClusters++; } } break; case zstackmsg_CmdIDs_ZDO_ACTIVE_EP_RSP: { zstackmsg_zdoActiveEndpointsRspInd_t *pInd; pInd = (zstackmsg_zdoActiveEndpointsRspInd_t*)pMsg; zstack_zdoSimpleDescReq_t pReq; pReq.dstAddr = pInd->rsp.srcAddr; pReq.nwkAddrOfInterest = pInd->rsp.nwkAddrOfInterest; for (uint8_t i = 0; i < pInd->rsp.n_activeEPList; i++) { pReq.endpoint = pInd->rsp.pActiveEPList[i]; Zstackapi_ZdoSimpleDescReq(appServiceTaskId, &pReq); } } break;