协议栈默认的开关只有两个状态:开或者关
我们目前的开关是三路的(有三个按键),按照默认的协议智能三个要么一起开要么一起关,
可有时只需要开关某一路,我是否可以把数据类型改为ZCL_DATATYPE_UINT8,这样sever端根据收到的数据去判断
// *** On / Off Cluster Attributes ***
{
ZCL_CLUSTER_ID_GEN_ON_OFF,
{
// Attribute record
ATTRID_ON_OFF,
ZCL_DATATYPE_UINT8,//默认为ZCL_DATATYPE_BOOLEAN,
ACCESS_CONTROL_READ,
(void *)&zclSampleSw_OnOff
}
},
YiKai Chen:
作成3個endpoint就可以分开开关
user5367314:
回复 YiKai Chen:
那协调器发送控制命令后,开关那边收到后会进入zclSampleSw_OnOffCB( uint8 cmd )
通过该函数无法判断是开哪个开关吧
Alvin Chen:
你可以增加endpoint 来控制,如果你不会添加endpoint 可以参考下面注册一个endpoint 以及各种回调仿照原来light 即可。
//Register EndpointzclSampleLightEpDesc2.endPoint = SAMPLELIGHT2_ENDPOINT;zclSampleLightEpDesc2.simpleDesc = &zclSampleLight2_SimpleDesc;zclport_registerEndpoint(id, &zclSampleLightEpDesc2);// Register the ZCL General Cluster Library callback functionszclGeneral_RegisterCmdCallbacks( SAMPLELIGHT2_ENDPOINT, &zclSampleLight2_CmdCallbacks );// Register the application's attribute list and reset to default valueszclSampleLight2_ResetAttributesToDefaultValues();zcl_registerAttrList( SAMPLELIGHT2_ENDPOINT, zclSampleLight2_NumAttributes, zclSampleLight2_Attrs );zcl_registerCmdList( SAMPLELIGHT2_ENDPOINT, zclSampleLight2_zclCmdsArraySize, zclSampleLight2_Cmds );zclSampleLight2_initializeClocks();
Alvin Chen:
回复 user5367314:
每个endpoint 的回调是不同的,回调也是要注册的,你先去看看demo 是怎么注册的。