更新时间:2024-11-20 08:51:25下载pdf
Zigbee Specific 类的命令通过 dev_msg_recv_callback()
来接收,开关例子如下:
ZCL_CMD_RET_T dev_msg_recv_callback(dev_msg_t *dev_msg)
{
ZCL_CMD_RET_T result = ZCL_CMD_RET_SUCCESS;
switch (dev_msg->cluster) {
case CLUSTER_PRIVATE_TUYA_CLUSTER_ID: { //私有数据处理
uint8_t len = dev_msg->data.bare_data.len;
uint8_t *data = dev_msg->data.bare_data.data;
//TODO: 私有协议处理
break;
}
//标准数据处理
case CLUSTER_ON_OFF_CLUSTER_ID: {
attr_value_t *attr_list = dev_msg->data.attr_data.attr_value;
uint8_t attr_sums = dev_msg->data.attr_data.attr_value_sums;
uint8_t i;
for(i=0; i<attr_sums; i++) {
switch(attr_list[i].cmd) {
case CMD_OFF_COMMAND_ID: {
//TODO:关命令
break;
}
case CMD_ON_COMMAND_ID: {
//TODO:开命令
break;
}
case CMD_TOGGLE_COMMAND_ID: {
//TODO:取反命令
break;
}
default: {
break;
}
}
break;
}
}
default:
// Unrecognized cluster ID, error status will apply.
break;
}
return result;
}
Zigbee Global 类的 Write 命令通过 dev_msg_write_attr_callback_ext
或者 dev_msg_write_attr_callback
来通知应用层。
void dev_msg_write_attr_callback(uint8_t endpoint, CLUSTER_ID_T cluster, uint16_t attr_id)
{
//TODO: 远程写属性成功后掉用该函数
return;
}
void dev_msg_write_attr_callback_ext(
uint8_t endpoint,
CLUSTER_ID_T cluster,
uint16_t attr_id,
uint8_t mask,
uint16_t manufacturer_code,
uint8_t type,
uint8_t size,
uint8_t* value)
{
//TODO: 远程写属性成功后掉用该函数,附带了原始数据参数
return;
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈