@@ -9,6 +9,7 @@ static esp_err_t zb_attribute_set_handler(const esp_zb_zcl_set_attr_value_messag
9
9
static esp_err_t zb_attribute_reporting_handler (const esp_zb_zcl_report_attr_message_t *message);
10
10
static esp_err_t zb_cmd_read_attr_resp_handler (const esp_zb_zcl_cmd_read_attr_resp_message_t *message);
11
11
static esp_err_t zb_configure_report_resp_handler (const esp_zb_zcl_cmd_config_report_resp_message_t *message);
12
+ static esp_err_t zb_cmd_ias_zone_status_change_handler (const esp_zb_zcl_ias_zone_status_change_notification_message_t *message);
12
13
static esp_err_t zb_cmd_default_resp_handler (const esp_zb_zcl_cmd_default_resp_message_t *message);
13
14
14
15
// Zigbee action handlers
@@ -20,8 +21,11 @@ static esp_err_t zb_action_handler(esp_zb_core_action_callback_id_t callback_id,
20
21
case ESP_ZB_CORE_REPORT_ATTR_CB_ID: ret = zb_attribute_reporting_handler ((esp_zb_zcl_report_attr_message_t *)message); break ;
21
22
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 ;
22
23
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: ret = zb_cmd_default_resp_handler ((esp_zb_zcl_cmd_default_resp_message_t *)message); break ;
24
- default : log_w (" Receive unhandled Zigbee action(0x%x) callback" , callback_id); break ;
24
+ case ESP_ZB_CORE_CMD_IAS_ZONE_ZONE_STATUS_CHANGE_NOT_ID:
25
+ ret = zb_cmd_ias_zone_status_change_handler ((esp_zb_zcl_ias_zone_status_change_notification_message_t *)message);
26
+ break ;
27
+ 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 ;
28
+ default : log_w (" Receive unhandled Zigbee action(0x%x) callback" , callback_id); break ;
25
29
}
26
30
return ret;
27
31
}
@@ -132,6 +136,28 @@ static esp_err_t zb_configure_report_resp_handler(const esp_zb_zcl_cmd_config_re
132
136
return ESP_OK;
133
137
}
134
138
139
+ static esp_err_t zb_cmd_ias_zone_status_change_handler (const esp_zb_zcl_ias_zone_status_change_notification_message_t *message) {
140
+ if (!message) {
141
+ log_e (" Empty message" );
142
+ return ESP_FAIL;
143
+ }
144
+ if (message->info .status != ESP_ZB_ZCL_STATUS_SUCCESS) {
145
+ log_e (" Received message: error status(%d)" , message->info .status );
146
+ return ESP_ERR_INVALID_ARG;
147
+ }
148
+ log_v (
149
+ " 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 ,
150
+ message->info .src_endpoint , message->info .dst_endpoint , message->info .cluster
151
+ );
152
+
153
+ for (std::list<ZigbeeEP *>::iterator it = Zigbee.ep_objects .begin (); it != Zigbee.ep_objects .end (); ++it) {
154
+ if (message->info .dst_endpoint == (*it)->getEndpoint ()) {
155
+ (*it)->zbIASZoneStatusChangeNotification (message);
156
+ }
157
+ }
158
+ return ESP_OK;
159
+ }
160
+
135
161
static esp_err_t zb_cmd_default_resp_handler (const esp_zb_zcl_cmd_default_resp_message_t *message) {
136
162
if (!message) {
137
163
log_e (" Empty message" );
0 commit comments