Skip to content

Commit a83f695

Browse files
committed
Implement cmd default response handler
1 parent 54488a4 commit a83f695

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

libraries/Zigbee/src/Zigbee_ep.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,13 @@ void Zigbee_EP::setManufacturerAndModel(const char *name, const char *model) {
4747
memcpy(zb_model + 1, model, length);
4848
zb_model[length + 1] = '\0';
4949

50+
// Get the basic cluster and update the manufacturer and model attributes
5051
esp_zb_attribute_list_t *basic_cluster = esp_zb_cluster_list_get_cluster(_cluster_list, ESP_ZB_ZCL_CLUSTER_ID_BASIC, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE);
5152
esp_zb_basic_cluster_add_attr(basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MANUFACTURER_NAME_ID, (void *)zb_name);
5253
esp_zb_basic_cluster_add_attr(basic_cluster, ESP_ZB_ZCL_ATTR_BASIC_MODEL_IDENTIFIER_ID, (void *)zb_model);
5354

55+
//NOTE:
56+
// esp_zb_cluster_add_attr function
5457
}
5558

5659
void Zigbee_EP::readManufacturerAndModel(uint8_t endpoint, uint16_t short_addr) {
@@ -95,5 +98,3 @@ void Zigbee_EP::attribute_read_cmd(uint16_t cluster_id, const esp_zb_zcl_attribu
9598
}
9699
}
97100
}
98-
//NOTE:
99-
// esp_zb_cluster_add_attr function

libraries/Zigbee/src/Zigbee_handlers.cpp

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,20 @@
66
static esp_err_t zb_attribute_set_handler(const esp_zb_zcl_set_attr_value_message_t *message);
77
static esp_err_t zb_attribute_reporting_handler(const esp_zb_zcl_report_attr_message_t *message);
88
static esp_err_t zb_cmd_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_resp_message_t *message);
9+
static esp_err_t zb_cmd_default_resp_handler(esp_zb_zcl_cmd_default_resp_message_t *message);
910

1011
// Zigbee action handlers
1112
static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id, const void *message) {
1213
esp_err_t ret = ESP_OK;
1314
/* TODO:
14-
Implement handlers for different Zigbee actions (callback_id's)
15+
Implement handlers for different Zigbee actions (callback_id's) here and call the respective EP's method
1516
*/
16-
// NOTE: Implement all Zigbee actions that can be handled by the Zigbee_Core class, or just call user defined callback function and let the user handle the action and read the message properly
17-
// NOTE: This may me harder for users, to know what callback_id's are available and what message type is received
1817
switch (callback_id) {
1918
case ESP_ZB_CORE_SET_ATTR_VALUE_CB_ID: ret = zb_attribute_set_handler((esp_zb_zcl_set_attr_value_message_t *)message); break;
2019
case ESP_ZB_CORE_REPORT_ATTR_CB_ID: ret = zb_attribute_reporting_handler((esp_zb_zcl_report_attr_message_t *)message); break;
2120
case ESP_ZB_CORE_CMD_READ_ATTR_RESP_CB_ID: ret = zb_cmd_read_attr_resp_handler((esp_zb_zcl_cmd_read_attr_resp_message_t *)message); break;
2221
// case ESP_ZB_CORE_CMD_REPORT_CONFIG_RESP_CB_ID: ret = zb_configure_report_resp_handler((esp_zb_zcl_cmd_config_report_resp_message_t *)message); break;
23-
case ESP_ZB_CORE_CMD_DEFAULT_RESP_CB_ID: log_i("Received default response"); break;
22+
case ESP_ZB_CORE_CMD_DEFAULT_RESP_CB_ID: ret = zb_cmd_default_resp_handler((esp_zb_zcl_cmd_default_resp_message_t *)message); break;
2423
default: log_w("Receive unhandled Zigbee action(0x%x) callback", callback_id); break;
2524
}
2625
return ret;
@@ -34,7 +33,7 @@ static esp_err_t zb_attribute_set_handler(const esp_zb_zcl_set_attr_value_messag
3433
log_e("Received message: error status(%d)", message->info.status);
3534
}
3635

37-
log_i(
36+
log_v(
3837
"Received message: endpoint(%d), cluster(0x%x), attribute(0x%x), data size(%d)", message->info.dst_endpoint, message->info.cluster, message->attribute.id,
3938
message->attribute.data.size
4039
);
@@ -55,7 +54,7 @@ static esp_err_t zb_attribute_reporting_handler(const esp_zb_zcl_report_attr_mes
5554
if (message->status != ESP_ZB_ZCL_STATUS_SUCCESS) {
5655
log_e("Received message: error status(%d)", message->status);
5756
}
58-
log_i(
57+
log_v(
5958
"Received report from address(0x%x) src endpoint(%d) to dst endpoint(%d) cluster(0x%x)", message->src_address.u.short_addr, message->src_endpoint,
6059
message->dst_endpoint, message->cluster
6160
);
@@ -75,7 +74,7 @@ static esp_err_t zb_cmd_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_re
7574
if (message->info.status != ESP_ZB_ZCL_STATUS_SUCCESS) {
7675
log_e("Received message: error status(%d)", message->info.status);
7776
}
78-
log_i(
77+
log_v(
7978
"Read attribute response: from address(0x%x) src endpoint(%d) to dst endpoint(%d) cluster(0x%x)", message->info.src_address.u.short_addr,
8079
message->info.src_endpoint, message->info.dst_endpoint, message->info.cluster
8180
);
@@ -84,7 +83,7 @@ static esp_err_t zb_cmd_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_re
8483
if (message->info.dst_endpoint == (*it)->_endpoint) {
8584
esp_zb_zcl_read_attr_resp_variable_t *variable = message->variables;
8685
while (variable) {
87-
log_i(
86+
log_v(
8887
"Read attribute response: status(%d), cluster(0x%x), attribute(0x%x), type(0x%x), value(%d)", variable->status, message->info.cluster,
8988
variable->attribute.id, variable->attribute.data.type, variable->attribute.data.value ? *(uint8_t *)variable->attribute.data.value : 0
9089
);
@@ -98,3 +97,17 @@ static esp_err_t zb_cmd_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_re
9897
}
9998
return ESP_OK;
10099
}
100+
101+
static esp_err_t zb_cmd_default_resp_handler(esp_zb_zcl_cmd_default_resp_message_t *message) {
102+
if (!message) {
103+
log_e("Empty message");
104+
}
105+
if (message->info.status != ESP_ZB_ZCL_STATUS_SUCCESS) {
106+
log_e("Received message: error status(%d)", message->info.status);
107+
}
108+
log_v(
109+
"Received default response: from address(0x%x), src_endpoint(%d) to dst_endpoint(%d), cluster(0x%x) with status 0x%x", message->info.src_address.u.short_addr,
110+
message->info.src_endpoint, message->info.dst_endpoint, message->info.cluster, message->status_code
111+
);
112+
return ESP_OK;
113+
}

0 commit comments

Comments
 (0)