本帖最后由 ckjboy2003 于 2015-7-27 13:58 编辑
Hi, 第一次来到这裡发言, 很高兴可以找到这个讨论 zigbee 的地方
我遇到一个问题, 尝试解决一个多星期但还是没有结果, 所以到这裡发问
在 Zigbee 裡头, IAS ZONE cluster 的注册是在那裡做的呢?
一般流程是这样
1. server ( IAS Zone Device ) 发 enroll request 给 client ( Coordinator ), CIE 所注册的 callback ( enrollReq() ) 应该要被呼叫到
2. client 发 enroll request Resp 给 IAS Zone device
3. 完成注册, 这一个 ZONE device 只对这个 CIE 做发报的动作
以标准 ZCL Report 来说, 它可以在 cluster 创建的时候就做注册的行为, 如以下代码,
struct ZbZclClusterT*
ZbAppZclOnOffSensorAlloc(struct ZigBeeT * zb, ZbAppZclOnOffSensorCallbackT callback,
void * arg)
{
ZbAppZclOnOffSensorClusterT * sensorPtr;
/* Allocate. */
sensorPtr = (ZbAppZclOnOffSensorClusterT *)malloc(sizeof(ZbAppZclOnOffSensorClusterT));
sensorPtr->cluster.zb = zb;
sensorPtr->cluster.clusterId = ZB_ZCL_CLUSTER_MEASURE_TEMPERATUTE;
sensorPtr->cluster.mfrCode = 0x0000;
memcpy(sensorPtr->attrList, zbZclOnOffSensorAttributes, sizeof(zbZclOnOffSensorAttributes));
sensorPtr->cluster.attributeList = sensorPtr->attrList;
sensorPtr->cluster.minSecurity = ZB_APS_STATUS_UNSECURED;
sensorPtr->cluster.maxAsduLength = ZB_APS_CONST_MAX_PAYLOAD_SIZE;
sensorPtr->cluster.read = NULL;
sensorPtr->cluster.write = NULL;
sensorPtr->cluster.report = ZbZclReportFunc; // 这裡做注册, end device 只要是走标准 ZCL report 发报就可取得资讯
sensorPtr->cluster.command = NULL;
sensorPtr->cluster.cleanup = ZbAppZclOnOffSensorCleanup;
/* Initializte the attributes. */
sensorPtr->temp = 0;
/* Application callbacks*/
sensorPtr->callback = callback;
sensorPtr->arg = arg;
return &sensorPtr->cluster;
} /* End - ZbAppZclOnOffSensorAlloc() */
但 IAS Zone 这一个 EnrollRequest callback function 到底应该在那裡注册呢?
( 我知道这个问题应该会有人说查 SDK, 厂商的 SDK 并没有提到这一部份, 我是用 Exegin 的 zigbee module )
请大侠指导啊
Zigbee module: Exegin