Skip to content

Commit 8be83cd

Browse files
authored
Update ZigbeeHandlers.cpp
1 parent efb3393 commit 8be83cd

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

libraries/Zigbee/src/ZigbeeHandlers.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ static esp_err_t zb_attribute_reporting_handler(const esp_zb_zcl_report_attr_mes
1010
static esp_err_t zb_cmd_read_attr_resp_handler(const esp_zb_zcl_cmd_read_attr_resp_message_t *message);
1111
static esp_err_t zb_configure_report_resp_handler(const esp_zb_zcl_cmd_config_report_resp_message_t *message);
1212
static esp_err_t zb_cmd_default_resp_handler(const esp_zb_zcl_cmd_default_resp_message_t *message);
13+
static esp_err_t zb_cmd_ias_zone_status_change_handler(const esp_zb_zcl_ias_zone_status_change_notification_message_t *message);
1314

1415
// Zigbee action handlers
1516
[[maybe_unused]]
@@ -21,6 +22,7 @@ static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id,
2122
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;
2223
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;
2324
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;
25+
case ESP_ZB_CORE_CMD_IAS_ZONE_ZONE_STATUS_CHANGE_NOT_ID: ret = zb_cmd_ias_zone_status_change_handler((esp_zb_zcl_ias_zone_status_change_notification_message_t *)message);
2426
default: log_w("Receive unhandled Zigbee action(0x%x) callback", callback_id); break;
2527
}
2628
return ret;
@@ -138,4 +140,25 @@ static esp_err_t zb_cmd_default_resp_handler(const esp_zb_zcl_cmd_default_resp_m
138140
return ESP_OK;
139141
}
140142

143+
static esp_err_t zb_cmd_ias_zone_status_change_handler(const esp_zb_zcl_ias_zone_status_change_notification_message_t *message) {
144+
if (!message) {
145+
log_e("Empty message");
146+
}
147+
if (message->info.status != ESP_ZB_ZCL_STATUS_SUCCESS) {
148+
log_e("Received message: error status(%d)", message->info.status);
149+
}
150+
log_v(
151+
"IAS Zone Status Notification: from address(0x%x) src endpoint(%d) to dst endpoint(%d) cluster(0x%x)", message->info.src_address.u.short_addr,
152+
message->info.src_endpoint, message->info.dst_endpoint, message->info.cluster
153+
);
154+
155+
for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects.begin(); it != Zigbee.ep_objects.end(); ++it) {
156+
if (message->info.dst_endpoint == (*it)->getEndpoint()) {
157+
158+
(*it)->zbIASZoneStatusChangeNotification(message);
159+
}
160+
}
161+
return ESP_OK;
162+
}
163+
141164
#endif //SOC_IEEE802154_SUPPORTED && CONFIG_ZB_ENABLED

0 commit comments

Comments
 (0)